Tcl Library Source Code

Changes On Branch dtplite-split
Login

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

Changes In Branch dtplite-split Excluding Merge-Ins

This is equivalent to a diff from af93fee3ff to 144d28a944

2013-02-22
23:29
Merged documentation work back, making it official. check-in: a9a4f9bff3 user: andreask tags: trunk
23:27
Fixed missing dtplite doc pages Closed-Leaf check-in: 144d28a944 user: andreask tags: dtplite-split
23:06
Fix home path check-in: 0e6f170b00 user: andreask tags: dtplite-split
08:23
Correcting the behaviour of several rounding procedures in the decimal package (Mark Alston). Bumping the version to 1.0.3 check-in: de243d3fe1 user: markus tags: trunk
2013-02-21
22:52
Start on splitting the dtplite app into an app-as-package and application shim using that. check-in: 122389b86b user: andreask tags: dtplite-split
2013-02-19
22:36
Tweaked installer, followup to [3286b5637f]. Result of manpage installation is now identical to before the [3286b5637f] change, while keeping the use of the embedded docs as source for it. check-in: af93fee3ff user: andreask tags: trunk
2013-02-16
00:30
Added various generated distribution files to the checkout. This makes a fossil zip/tar snapshot identical to a regular distribution. check-in: be4305ec3d user: andreask tags: trunk

Changes to apps/dtplite.

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
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
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
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
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
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
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
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
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
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
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
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
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
# Meta description  This application is a simple processor
# Meta description  for documents written in the doctools
# Meta description  markup language. It covers the most
# Meta description  common use cases, but is not as
# Meta description  configurable as its big brother dtp.
# Meta category     Processing doctools documents
# Meta subject      doctools doctoc docidx
# Meta require      {doctools 1}
# Meta require      {doctools::idx 1}
# Meta require      {doctools::toc 1}
# Meta require      fileutil
# Meta require      textutil::repeat
# Meta author       Andreas Kupries
# Meta license      BSD
# @@ Meta End

package provide dtplite 1.0.4

# dtp lite - Lightweight DocTools Processor
# ======== = ==============================
#
# Use cases
# ---------
#
# (1)	Validation of a single manpage, i.e. checking that it is valid
#	doctools format.
#
# (1a)	Getting a preliminary version of the formatted output, for
#	display in a browser, nroff, etc., proofreading the
#	formatting.
#
# (2)	Generate documentation for a single package, i.e. all the
#	manpages, plus index and table of contents.
#
# (3)	Generation of unified documentation for several
#	packages. Especially unified keyword index and table of
#	contents. This may additionally generate per-package TOCs
#	as well (Per-package indices don't make sense IMHO).
#
# Command syntax
# --------------
#
# Ad 1)	dtplite -o output format file
#
#	The option -o specifies where to write the output to. Using
#	the string "-" as name of the output file causes the tool to
#	write the generated data to stdout. If $output is a directory
#	then a file named [[file rootname $file].$format] is written
#	to the directory.

# Ad 1a)	dtplite validate file
#
#	The "validate" format does not generate output at all, only
#	syntax checking is performed.
#
# Ad 2)	dtplite -o output format directory
#
#	I.e. we distinguish (2) from (1) by the type of the input,
#	file, or directory. In this situation output has to be a
#	directory. Use the path "." to place the results into the
#	current directory.
#
#	We locate _all_ files under directory, i.e. all subdirectories
#	are scanned as well. We replicate the found directory
#	structure in the output (See example below). The index and
#	table of contents are written to the toplevel directory in the
#	output. The names are hardwired to "toc.$format" and
#	"index.$format".
#
# Ad 3)	dtplite -merge -o output format directory
#
#	This can be treated as special case of (2). The -merge option
#	tells it that the output is nested one level deeper, to keep a
#	global toc and index in the toplevel and to merge the package
#	toc and index into them.
#
#	This way the global documents are built up incrementally. This
#	can help us in a future extended installer as well!, extending
#	a global documentation tree of all installed packages.
#
# Additional features.
#
# *	As described above the format name is used as the extension
#	for the generated files. Does it make sense to introduce an
#	option with which we can overide this, or should we simply
#	extect that a calling script does a proper renaming of all the
#	files ?  ... The option is better. In HTML output we have
#	links between the files, and renaming from the outside just
#	breaks the links. This option is '-ext'. It is ignored if the
#	output is a single file (fully specified via -o), or stdout.
#
#	-ext extension
#
# *	Most of the formats don't need much/none of customizability.
#	I.e. text, nroff, wiki, tmml, ...  For HTML however some
#	degree of customizability is required for good output.  What
#	should we given to the user ?
#
#	- Allow setting of a stylesheet.
#	- Allow integration of custom body header and footer html.
#	- Allow additional links for the navigation bar.
#
#	Note: The tool generates standard navigation bars to link the
#	all tocs, indices, and pages together.
#
#	-style file
#	-header file
#	-footer file
#	-nav label url
#
# *	The application may mis-detect files as doctools input.
#	And we cannot always mark them as non-doctools because
#	they may be such. Test cases, for example. To exclude
#	these we have the option '-exclude' taking a glob pattern.
#	Multiple uses of the option accumulate.
#
#	-exclude glob
#
# *	For tcllib itself we have external tools generating a nicer
#	TOC. Use option -toc to specify the doctoc file to use instead
#	of generating our own.
#
#	-toc path
#
# That should be enough to allow the creation of good looking formatted
# documentation without getting overly complex in both implementation
# and use.

package require doctools      1.4.11 ; # 'image' support, -ibase support
package require doctools::idx 1.0.4 ;
package require doctools::toc 1.1.3 ;
package require fileutil
package require textutil::repeat

# ### ### ### ######### ######### #########
## Internal data and status

namespace eval ::dtplite {

    # Path to where the output goes to. This is a file in case of mode
    # 'file', irrelevant for mode 'file.stdout', and the directory for
    # all the generated files for the two directory modes. Specified
    # through the mandatory option '-o'.

    variable  output ""

    # Path to where the documents to convert come from. This is a
    # single file in the case of the two file modes, and a directory
    # for the directory modes. In the later case all files under that
    # directory are significant, including links, if identifiable as
    # in doctools format (fileutil::fileType). Specified through the
    # last argument on the command line. The relative path of a file
    # under 'input' also becomes its relative path under 'output'.

    variable  input  ""

    # The extension to use for the generated files. Ignored by the
    # file modes, as for them they either don't generate a file, or
    # know its full name already, i.e. including any wanted
    # extension. Set via option '-ext'. Defaults to the format name if
    # '-ext' was not used.

    variable  ext    ""

    # Optional. HTML specific, requires engine parameter 'meta'. Path
    # to a stylesheet file to use in the output. The file modes link
    # to it using the original location, but the directory modes copy
    # the file into the 'output' and link it there (to make the
    # 'output' more selfcontained). Initially set via option '-style'.

    variable  style  ""

    # Optional. Path to a file. Contents of the file are assigned to
    # engine parameter 'header', if present. If navigation buttons
    # were defined their HTML will be appended to the file contents
    # before doing the assignment. A specification is ignored if the
    # engine does not support the parameter 'header'. Set via option
    # '-header'.

    variable  header ""

    # Like header, but for the document footer, and no navigation bar
    # insert. Set via option '-footer', requires engine parameter
    # 'footer'.

    variable  footer ""

    # List of buttons/links for a navigation bar. No navigation bar is
    # created if this is empty. HTML specific, requires engine
    # parameter 'header' (The navigation bar is merged with the
    # 'header' data, see above). Each element of the list is a
    # 2-element list, containing the button label and url, in this
    # order. Initial data comes from the command line, via option
    # '-nav'. The commands 'Navbutton(Push|Pop)' then allow the
    # programmatic addition and removal of buttons at the left (stack
    # like, top at index 0). This is used for the insertion of links
    # to TOC and Index into each document, if applicable.

    variable  nav    {}

    # An array caching the result of merging header and navbar data,
    # keyed by the navbar definition (list). This allows us to quickly
    # access the complete header for a navbar, without having to
    # generate it over and over again. Its usefulness is a bit limited
    # by the fact that the navbar itself can be generated on a
    # file-by-file basis (required to get the relative links
    # correct. It helps only if the generated navbars are identical to
    # each other.

    variable  navcache
    array set navcache {}

    # The name of the format to convert the doctools documents
    # into. Set via the next-to-last argument on the command
    # line. Used as extension for the generated files as well by the
    # directory modes, and if not overridden via '-ext'. See 'ext'
    # above.

    variable  format ""

    # Boolean flag. Set by the option '-merge'. Ignored when a file
    # mode is detected, but for a directory it determines the
    # difference between the two directory modes, i.e. plain
    # generation, or incremental merging of many inputs into one
    # output.

    variable  merge  0

    # Boolean flag. Automatically set by code distinguishing between
    # file and directory modes. Set for a the file modes, unset for
    # the directory modes.

    variable  single 1

    # Boolean flag. Automatically set by the code processing the '-o'
    # option. Set if output is '-', unset otherwise. Ignored for the
    # directory modes. Distinguished between the two file modes, i.e.
    # writing to a file (unset), or stdout (set).

    variable  stdout 0

    # Name of the found processing mode. Derived from the values of
    # the three boolean flags (merge, single, stdout). This value is
    # used during the dispatch to the command implementing the mode,
    # after processing the command line.
    #
    # Possible/Legal values:	Meaning
    # ---------------------	-------
    # File			File mode. Write result to a file.
    # File.Stdout		File mode. Write result to stdout.
    # Directory			Directory mode. Plain processing of one set.
    # Directory.Merge		Directory mode. Merging of multiple sets into
    #				one output.
    # ---------------------	-------

    variable  mode   ""

    # Name of the module currently processed. Derived from the 'input'
    # (last element of this path, without extension).

    variable  module ""

    # Crossreference data. Extracted from the processed documents, a
    # rearrangement and filtration of the full meta data (See 'meta'
    # below). Relevant only to the directory modes. I.e. the file
    # modes don't bother with its extraction and use.

    variable  xref
    array set xref   {}

    # Index data. Mapping from keyword (label) to the name of its
    # anchor in the index output. Requires support for the engine
    # parameter 'kwid' in the index engine.

    variable  kwid
    array set kwid {}

    # Cache. This array maps from the path of an input file/document
    # (relative to 'input'), to the paths of the file to generate
    # (relative to 'output', including extension and such). In other
    # words we derive the output paths from the inputs only once and
    # then simply get them here.

    variable  out
    array set out  {}

    # Meta data cache. Stores the meta data extracted from the input
    # files/documents, per input. The meta data is a dictionary and
    # processed several ways to get: Crossreferences (See 'xref'
    # above), Table Of Contents, and Keyword Index. The last two are
    # not cached, but ephemeral.

    variable  meta
    array set meta {}

    # Cache of input documents. When we read an input file we store
    # its contents here, keyed by path (relative to 'input') so that
    # we don't have to go to the disk when we we need the file again.
    # The directory modes need each input twice, for metadata
    # extraction, and the actual conversion.

    variable  data
    array set data {}

    # Database of image files for use by dt_imap.

    variable  imap
    array set imap {}

    # Database of exclusion patterns. Files matching these are not
    # manpages. For example, test files for doctools itself may fall
    # under this.

    variable excl {}

    # Path of a user specified table of contents (doctoc format).

    variable utoc {}
}

# ### ### ### ######### ######### #########
## External data and status
#
## Only the directory merge mode uses external data, saving the
## internal representations of current toc, index. and xref
## information for use by future mergers. It uses three files,
## described below. The files are created if they don't exist.
## Remove them when the merging is complete.
#
## .toc
## Contains the current full toc in form of a dictionary.
#  Keys are division labels, values the lists of toc items.
#
## .idx
## Contains the current full index, plus keyword id map.  Is a list of
#  three elements, index, start id for new kwid entries, and the
#  keyword id map (kwid). Index and Kwid are both dictionaries, keyed
#  by keywords. Index value is a list of 2-tuples containing symbolic
#  file plus label, in this order. Kwid value is the id of the anchor
#  for that keyword in the index.
#
## .xrf
## Contains the current cross reference database, a dictionary. Keys
#  are tags the formatter can search for (keywords, keywrds with
#  prefixes, keywords with suffixces), values a list containing either
#  the file to refer to to, or both file and an anchor in that
#  file. The latter is for references into the index.

# ### ### ### ######### ######### #########
## Option processing.
## Validate command line.
## Full command line syntax.
##
# dtplite	-o outputpath	\
#		?-merge?	\
#		?-ext ext?	\
#		?-style file?	\
#		?-header file?	\
#		?-footer file?	\
#		?-nav label url?... \
#		?-exclude glob?... \
#		?-toc path? \
#		format inputpath
##

proc ::dtplite::processCmdline {} {
    global argv

    variable output ; variable style  ; variable stdout
    variable format ; variable header ; variable single
    variable input  ; variable footer ; variable mode
    variable ext    ; variable nav    ; variable merge
    variable module ; variable excl   ; variable utoc

    # Process the options, perform basic validation.

    while {[llength $argv]} {
	set opt [lindex $argv 0]
	if {![string match "-*" $opt]} break

	if {[string equal $opt "-o"]} {
	    if {[llength $argv] < 2} Usage
	    set output [lindex $argv 1]
	    set argv   [lrange $argv 2 end]
	} elseif {[string equal $opt "-merge"]} {
	    set merge 1
	    set argv [lrange $argv 1 end]
	} elseif {[string equal $opt "-ext"]} {
	    if {[llength $argv] < 2} Usage
	    set ext  [lindex $argv 1]
	    set argv [lrange $argv 2 end]
	} elseif {[string equal $opt "-toc"]} {
	    if {[llength $argv] < 2} Usage
	    set utoc [lindex $argv 1]
	    set argv [lrange $argv 2 end]
	} elseif {[string equal $opt "-exclude"]} {
	    if {[llength $argv] < 2} Usage
	    lappend excl [lindex $argv 1]
	    set argv [lrange $argv 2 end]
	} elseif {[string equal $opt "-style"]} {
	    if {[llength $argv] < 2} Usage
	    set style [lindex $argv 1]
	    set argv  [lrange $argv 2 end]
	} elseif {[string equal $opt "-header"]} {
	    if {[llength $argv] < 2} Usage
	    set header [lindex $argv 1]
	    set argv   [lrange $argv 2 end]
	} elseif {[string equal $opt "-footer"]} {
	    if {[llength $argv] < 2} Usage
	    set footer [lindex $argv 1]
	    set argv   [lrange $argv 2 end]
	} elseif {[string equal $opt "-nav"]} {
	    if {[llength $argv] < 3} Usage
	    lappend nav [lrange $argv 1 2]
	    set argv    [lrange $argv 3 end]
	} else {
	    Usage
	}
    }

    # Additional validation, and extraction of the non-option
    # arguments.

    if {[llength $argv] != 2} Usage

    set format [lindex $argv 0]
    set input  [lindex $argv 1]

    if {[string equal $format validate]} {
	set format null
    }

    # Final validation across the whole configuration.

    if {[string equal $format ""]} {
	ArgError "Illegal empty format specification"

    } else {
	# Early check: Is the chosen format ok ? For this we have
	# create and configure a doctools object.

	doctools::new dt
	if {[catch {dt configure -format $format}]} {
	    ArgError "Unknown format \"$format\""
	}
	dt configure -deprecated 1

	# Check style, header, and footer options, if present.

	CheckInsert header {Header file}
	CheckInsert footer {Footer file}

	if {[llength $nav] && ![in [dt parameters] header]} {
	    ArgError "-nav not supported by format \"$format\""
	}
	if {![string equal $style ""]} {
	    if {![in [dt parameters] meta]} {
		ArgError "-style not supported by format \"$format\""
	    } elseif {![file exists $style]} {
		ArgError "Unable to find style file \"$style\""
	    }
	}
    }

    # Set up an extension based on the format, if no extension was
    # specified.  also compute the name of the module, based on the
    # input. [SF Tcllib Bug 1111364]. Has to come before the line
    # marked with a [*], or a filename without extension is created.

    if {[string equal $ext ""]} {
	set ext $format
    }

    CheckInput $input {Input path}
    if {[file isfile $input]} {
	# Input file. Merge mode is not possible. Output can be file
	# or directory, or "-" for stdout. The output may exist, but
	# does not have to. The directory it is in however does have
	# to exist, and has to be writable (if the output does not
	# exist yet). An existing output has to be writable.

	if {$merge} {
	    ArgError "-merge illegal when processing a single input file."
	}
	if {![string equal $output "-"]} {
	    CheckTheOutput

	    # If the output is an existing directory then we have to
	    # ensure that the actual output is a file in that
	    # directory, and we derive its name from the name of the
	    # input file (and -ext, if present).

	    if {[file isdirectory $output]} {
		# [*] [SF Tcllib Bug 1111364]
		set output [file join $output [file tail [Output $input]]]
	    }
	} else {
	    set stdout 1
	}
    } else {
	# Input directory. Merge mode is possible. Output has to be a
	# directory. The output may exist, but does not have to. The
	# directory it is in however does have to exist. An existing
	# output has to be writable.

	set single 0
	CheckTheOutput 1
    }

    # Determine the operation mode from the flags

    if {$single} {
	if {$stdout} {
	    set mode File.Stdout
	} else {
	    set mode File
	}
    } elseif {$merge} {
	set mode Directory.Merge
    } else {
	set mode Directory
    }

    set module [file rootname [file tail [file normalize $input]]]
    return
}

# ### ### ### ######### ######### #########
## Option processing.
## Helpers: Generation of error messages.
## I.  General usage/help message.
## II. Specific messages.
#
# Both write their messages to stderr and then
# exit the application with status 1.
##

proc ::dtplite::Usage {} {
    global argv0
    puts stderr "$argv0 wrong#args, expected:\
	    -o outputpath ?-merge? ?-ext ext?\
	    ?-style file? ?-header file?\
	    ?-footer file? ?-nav label url?...\
	    format inputpath"
    exit 1
}

proc ::dtplite::ArgError {text} {
    global argv0
    puts stderr "$argv0: $text"
    exit 1
}

proc in {list item} {
    expr {([lsearch -exact $list $item] >= 0)}
}

# ### ### ### ######### ######### #########
## Helper commands. File paths.
## Conversion of relative paths
## to absolute ones for input
## and output. Derivation of
## output file name from input.

proc ::dtplite::Pick {f} {
    variable input
    return [file join $input $f]
}

proc ::dtplite::Output {f} {
    variable ext
    return [file rootname $f].$ext
}

proc ::dtplite::At {f} {
    variable output
    set of     [file normalize [file join $output $f]]
    file mkdir [file dirname $of]
    return $of
}

# ### ### ### ######### ######### #########
## Check existence and permissions of an input/output file or
## directory.

proc ::dtplite::CheckInput {f label} {
    if {![file exists $f]} {
	ArgError "Unable to find $label \"$f\""
    } elseif {![file readable $f]} {
	ArgError "$label \"$f\" not readable (permission denied)"
    }
    return
}

proc ::dtplite::CheckTheOutput {{needdir 0}} {
    variable output
    variable format

    if {[string equal $format null]} {
	# The format does not generate output, so not specifying an
	# output file is ok for that case.
	return
    }

    if {[string equal $output ""]} {
	ArgError "No output path specified"
    }

    set base [file dirname $output]
    if {[string equal $base ""]} {set base [pwd]}

    if {![file exists $output]} {
	if {![file exists $base]} {
	    ArgError "Output base path \"$base\" not found"
	}
	if {![file writable $base]} {
	    ArgError "Output base path \"$base\" not writable (permission denied)"
	}
    } else {
	if {![file writable $output]} {
	    ArgError "Output path \"$output\" not writable (permission denied)"
	}
	if {$needdir && ![file isdirectory $output]} {
	    ArgError "Output path \"$output\" not a directory"
	}
    }
    return
}

proc ::dtplite::CheckInsert {option label} {
    variable format
    variable $option
    upvar 0  $option opt

    if {![string equal $opt ""]} {
	if {![in [dt parameters] $option]} {
	    ArgError "-$option not supported by format \"$format\""
	}
	CheckInput $opt $label
	set opt [Get $opt]
    }
    return
}

# ### ### ### ######### ######### #########
## Helper commands. File reading and writing.

proc ::dtplite::Get {f} {
    variable data
    if {[info exists data($f)]} {return $data($f)}
    return [set data($f) [fileutil::cat $f]]
}

proc ::dtplite::Write {f data} {
    # An empty filename is acceptable, the format will be 'null'
    if {[string equal $f ""]} return
    fileutil::writeFile $f $data
    return
}

# ### ### ### ######### ######### #########
## Dump accumulated warnings.

proc ::dtplite::Warnings {} {
    set warnings [dt warnings]
    if {[llength $warnings] > 0} {
	puts stderr [join $warnings \n]
    }
    return
}

# ### ### ### ######### ######### #########
## Configuation phase, validate command line.

::dtplite::processCmdline

# ### ### ### ######### ######### #########
## We can assume that we have from here on a command 'dt', which is a
## doctools object command, and already configured for the format to
## generate.
# ### ### ### ######### ######### #########

# ### ### ### ######### ######### #########
## Commands implementing the main functionality.

proc ::dtplite::Do.File {} {
    # Process a single input file, write the result to a single outut file.

    variable input
    variable output

    SinglePrep
    Write $output [dt format [Get $input]]
    Warnings
    return
}

proc ::dtplite::Do.File.Stdout {} {
    # Process a single input file, write the result to stdout.

    variable input

    SinglePrep
    puts  stdout [dt format [Get $input]]
    close stdout
    Warnings
    return
}

proc ::dtplite::Do.Directory {} {
    # Process a directory of input files, through all subdirectories.
    # Generate index and toc, but no merging with an existing index
    # and toc. I.e. any existing index and toc files are overwritten.

    variable input
    variable out
    variable module
    variable meta
    variable format
    variable utoc

    # Phase 0. Find the documents to convert.
    # Phase I. Collect meta data, and compute the map from input to
    # ........ output files. This is also the map for the symbolic
    # ........ references. We extend an existing map (required for use
    # ........ in merge op.
    # Phase II. Build index and toc information from the meta data.
    # Phase III. Convert each file, using index, toc and meta
    # .......... information.

    MapImages
    set files [LocateManpages $input]
    if {![llength $files]} {
	ArgError "Module \"$module\" has no files to process."
    }

    MetadataGet $files
    StyleMakeLocal

    if {$utoc ne {}} {
	if {[file exists $utoc]} {
	    set utoc [Get $utoc]
	}
	TocWrite toc index $utoc
    } else {
	TocWrite toc index [TocGenerate [TocGet $module toc]]
    }
    IdxWrite index toc [IdxGenerate $module [IdxGet]]

    dt configure -module $module
    XrefGet
    XrefSetup   dt
    FooterSetup dt
    MapSetup    dt

    foreach f [lsort -dict $files] {
	puts stdout \t$f

	set o $out($f)
	dt configure -file [At $o] -ibase $input/$f

	NavbuttonPush {Keyword Index}     [Output index] $o
	NavbuttonPush {Table Of Contents} [Output toc]   $o
	HeaderSetup dt
	NavbuttonPop
	NavbuttonPop
	StyleSetup dt $o

	if {[string equal $format null]} {
	    dt format [Get [Pick $f]]
	} else {
	    Write [At $o] [dt format [Get [Pick $f]]]
	}
	Warnings
    }
    return
}

proc ::dtplite::Do.Directory.Merge {} {
    # See Do.Directory, but merge the TOC/Index information from this
    # set of input files into an existing TOC/Index.

    variable input
    variable out
    variable module
    variable meta
    variable output
    variable format
    variable utoc

    # Phase 0. Find the documents to process.
    # Phase I. Collect meta data, and compute the map from input to
    # ........ output files. This is also the map for the symbolic
    # ........ references. We extend an existing map (required for use
    # ........ in merge op.
    # Phase II. Build module local toc from the meta data, insert it
    # ......... into the main toc as well, and generate a global
    # ......... index.
    # Phase III. Process each file, using cross references, and links
    # .......... to boths tocs and the index.

    MapImages
    set files [LocateManpages $input]
    if {![llength $files]} {
	ArgError "Module \"$module\" has no files to process."
    }

    MetadataGet $files $module
    StyleMakeLocal     $module

    set localtoc [TocGet $module $module/toc]
    TocWrite $module/toc index [TocGenerate $localtoc] [TocMap $localtoc]
    if {$utoc ne {}} {
	if {[file exists $utoc]} {
	    set utoc [Get $utoc]
	}
	TocWrite toc index $utoc
    } else {
	TocWrite toc index [TocGenerate [TocMergeSaved $localtoc]]
    }
    IdxWrite index toc [IdxGenerate {} [IdxGetSaved index]]

    dt configure -module $module
    XrefGetSaved
    XrefSetup   dt
    FooterSetup dt
    MapSetup    dt

    foreach f [lsort -dict $files] {
	puts stdout \t$f

	set o $out($f)
	dt configure -file [At $o] -ibase $input/$f

	NavbuttonPush {Keyword Index}          [Output index]       $o
	NavbuttonPush {Table Of Contents}      [Output $module/toc] $o
	NavbuttonPush {Main Table Of Contents} [Output toc]         $o
	HeaderSetup dt
	NavbuttonPop
	NavbuttonPop
	NavbuttonPop
	StyleSetup dt $o

	if {[string equal $format null]} {
	    dt format [Get [Pick $f]]
	} else {
	    Write [At $o] [dt format [Get [Pick $f]]]
	}
	Warnings
    }
    return
}

# ### ### ### ######### ######### #########
## Helper commands. Preparations shared between the two file modes.

proc ::dtplite::SinglePrep {} {
    variable input
    variable module

    MapImages
    StyleSetup  dt
    HeaderSetup dt
    FooterSetup dt
    MapSetup    dt

    dt configure -module $module -file $input
    return
}

# ### ### ### ######### ######### #########
## Get the base meta data out of the listed documents.

proc ::dtplite::MetadataGet {files {floc {}}} {
    # meta :: map (symbolicfile -> metadata)
    # metadata = dict (key -> value)
    # key      = set { desc, fid, file, keywords,
    #                  module, section, see_also,
    #                  shortdesc, title, version }
    # desc      :: string 'document title'
    # fid       :: string           'file name, without path/extension'
    # file      :: string           'file name, without path'
    # keywords  :: list (string...) 'key phrases'
    # module    :: string           'module the file is in'
    # section   :: string           'manpage section'
    # see_also  :: list (string...) 'related files'
    # shortdesc :: string           'module description'
    # title     :: string           'manpage file name intended'
    # version   :: string           'file/package version'
    variable meta
    variable input
    variable out

    doctools::new meta -format list -deprecated 1
    foreach f $files {
	meta configure -file $input/$f
	set o [Output [file join $floc files $f]]
	set out($f)  $o
	set meta($o) [lindex [string trim [meta format [Get [Pick $f]]]] 1]
    }
    meta destroy
    return
}

# ### ### ### ######### ######### #########
## Handling Tables of Contents:
## - Get them out of the base meta data.
## - As above, and merging them with global toc.
## - Conversion of internals into doctoc.
## - Processing doctoc into final formatting.

proc ::dtplite::TocGet {desc {f toc}} {
    # Generate the intermediate form of a TOC for the current document
    # set. This generates a single division.

    # Get toc out of the meta data.
    variable meta
    set res {}
    foreach {k item} [array get meta] {
	lappend res [TocItem $k $item]
    }
    return [list $desc [list $f $res]]
}

proc ::dtplite::TocMap {toc {base {}}} {
    if {$base == {}} {
	set base  [lindex [lindex $toc 1] 0]
    }
    set items [lindex [lindex $toc 1] 1]

    set res {}
    foreach i $items {
	foreach {f label desc} $i break
	lappend res $f [fileutil::relativeUrl $base $f]
    }
    return $res
}

proc ::dtplite::TocItem {f meta} {
    array set md $meta
    set desc    $md(desc)
    set label   $md(title)
    return [list $f $label $desc]
}

proc ::dtplite::TocMergeSaved {sub} {
    # sub is the TOC of the current doc set (local toc). Merge this
    # into the main toc (as read from the saved global state), and
    # return the resulting internal rep for further processing.

    set fqn [At .toc]
    if {[file exists $fqn]} {
	array set _ [Get $fqn]
    }
    array set _ $sub
    set thetoc [array get _]

    # Save extended toc for next merge.
    Write $fqn $thetoc

    return $thetoc
}

proc ::dtplite::TocGenerate {data} {
    # Handling single and multiple divisions.
    # single div => div is full toc
    # multi div  => place divs into the toc in alpha order.
    #
    # Sort toc (each division) by label (index 1).
    # Write as doctoc.

    array set toc $data

    TagsBegin
    if {[array size toc] < 2} {
	# Empty, or single division. The division is the TOC, toplevel.

	unset toc
	set desc [lindex $data 0]
	set data [lindex [lindex $data 1] 1]
	TocAlign mxf mxl $data

	Tag+ toc_begin [list {Table Of Contents} $desc]
	foreach item [lsort -dict -index 1 $data] {
	    foreach {symfile label desc} $item break
	    Tag+ item \
		    [FmtR mxf $symfile] \
		    [FmtR mxl $label] \
		    [list $desc]
	}
    } else {
	Tag+ toc_begin [list {Table Of Contents} Modules]
	foreach desc [lsort -dict [array names toc]] {
	    foreach {ref div} $toc($desc) break
	    TocAlign mxf mxl $div

	    Tag+ division_start [list $desc [Output $ref]]
	    foreach item [lsort -dict -index 1 $div] {
		foreach {symfile label desc} $item break
		Tag+ item \
			[FmtR mxf $symfile] \
			[FmtR mxl $label] \
			[list $desc]
	    }
	    Tag+ division_end
	}
    }

    Tag+ toc_end

    #puts ____________________\n[join $lines \n]\n_________________________
    return [join $lines \n]\n
}

proc ::dtplite::TocWrite {ftoc findex text {map {}}} {
    variable format

    if {[string equal $format null]} return
    Write [At .tocdoc] $text

    set ft [Output $ftoc]

    doctools::toc::new toc -format $format -file $ft

    NavbuttonPush {Keyword Index} [Output $findex] $ftoc
    HeaderSetup  toc
    NavbuttonPop
    FooterSetup  toc
    StyleSetup   toc $ftoc

    foreach {k v} $map {toc map $k $v}

    Write [At $ft] [toc format $text]
    toc destroy
    return
}

proc ::dtplite::TocAlign {fv lv div} {
    upvar 1 $fv mxf $lv mxl
    set mxf 0
    set mxl 0
    foreach item $div {
	foreach {symfile label desc} $item break
	Max mxf $symfile
	Max mxl $label
    }
    return
}

# ### ### ### ######### ######### #########
## Handling Keyword Indices:
## - Get them out of the base meta data.
## - As above, and merging them with global index.
## - Conversion of internals into docidx.
## - Processing docidx into final formatting.

proc ::dtplite::IdxGet {{f index}} {
    # Get index out of the meta data.
    array set keys {}
    array set kdup {}
    return [lindex [IdxExtractMeta] 1]
}

proc ::dtplite::IdxGetSaved {{f index}} {
    # Get index out of the meta data, merge into global state.
    variable meta
    variable kwid

    array set keys {}
    array set kwid {}
    array set kdup {}
    set start 0

    set fqn [At .idx]
    if {[file exists $fqn]} {
	foreach {kw kd start ki} [Get $fqn] break
	array set keys $kw
	array set kwid $ki
	array set kdup $kd
    }

    foreach {start theindex} [IdxExtractMeta $start] break

    # Save extended index for next merge.
    Write $fqn [list $theindex [array get kdup] $start [array get kwid]]

    return $theindex
}

proc ::dtplite::IdxExtractMeta {{start 0}} {
    # Get index out of the meta data.
    variable meta
    variable kwid

    upvar keys keys kdup kdup
    foreach {k item} [array get meta] {
	foreach {symfile keywords label} [IdxItem $k $item] break
	# Store inverted file - keyword relationship
	# Kdup is used to prevent entering of duplicates.
	# Checks full (keyword file label).
	foreach k $keywords {
	    set kx [list $k $symfile $label]
	    if {![info exists kdup($kx)]} {
		lappend keys($k) [list $symfile $label]
		set kdup($kx) .
	    }
	    if {[info exist kwid($k)]} continue
	    set kwid($k) key$start
	    incr start
	}
    }
    return [list $start [array get keys]]
}

proc ::dtplite::IdxItem {f meta} {
    array set md $meta
    set keywords $md(keywords)
    set title    $md(title)
    return [list $f $keywords $title]
}

proc ::dtplite::IdxGenerate {desc data} {
    # Sort by keyword label.
    # Write as docidx.

    array set keys $data

    TagsBegin
    Tag+ index_begin [list {Keyword Index} $desc]

    foreach k [lsort -dict [array names keys]] {
	IdxAlign mxf $keys($k)

	Tag+ key [list $k]
	foreach v [lsort -dict -index 1 $keys($k)] {
	    foreach {file label} $v break
	    Tag+ manpage [FmtR mxf $file] [list $label]
	}
    }

    Tag+ index_end
    #puts ____________________\n[join $lines \n]\n_________________________
    return [join $lines \n]\n
}

proc ::dtplite::IdxWrite {findex ftoc text} {
    variable format

    if {[string equal $format null]} return
    Write [At .idxdoc] $text

    set fi [Output $findex]

    doctools::idx::new idx -format $format -file $fi

    NavbuttonPush {Table Of Contents} [Output $ftoc] $findex
    HeaderSetup   idx
    NavbuttonPop
    FooterSetup   idx
    StyleSetup    idx $findex
    XrefSetupKwid idx

    Write [At $fi] [idx format $text]
    idx destroy
    return
}

proc ::dtplite::IdxAlign {v keys} {
    upvar 1 $v mxf
    set mxf 0
    foreach item $keys {
	foreach {symfile label} $item break
	Max mxf $symfile
    }
    return
}

# ### ### ### ######### ######### #########
## Column sizing

proc ::dtplite::Max {v str} {
    upvar 1 $v max
    set l [string length [list $str]]
    if {$max < $l} {set max $l}
    return
}

proc ::dtplite::FmtR {v str} {
    upvar 1 $v max
    return [list $str][textutil::repeat::blank \
	    [expr {$max - [string length [list $str]]}]]
}

# ### ### ### ######### ######### #########
## Code generation.

proc ::dtplite::Tag {n args} {
    if {[llength $args]} {
	return "\[$n [join $args]\]"
    } else {
	return "\[$n\]"
    }
    #return \[[linsert $args 0 $n]\]
}

proc ::dtplite::Tag+ {n args} {
    upvar 1 lines lines
    lappend lines [eval [linsert $args 0 ::dtplite::Tag $n]]
    return
}

proc ::dtplite::TagsBegin {} {
    upvar 1 lines lines
    set lines {}
    return
}

# ### ### ### ######### ######### #########
## Collect all files for possible use as image

proc ::dtplite::MapImages {} {
    variable input
    variable output
    variable single
    variable stdout

    # Ignore images when writing results to a pipe.
    if {$stdout} return

    set out  [file normalize $output]
    set path [file normalize $input]
    set res  {}

    if {$single} {
	# output is file, image directory is sibling to it.
	set imgbase [file join [file dirname $output] image]
	# input to search is director the input file is in, and below
	set path    [file dirname $path]
    } else {
	# output is directory, image directory is inside.
	set imgbase [file join $out image]
    }

    set n [llength [file split $path]]

    foreach f [::fileutil::find $path] {
	MapImage \
	    [::fileutil::stripN $f $n] \
	    $f [file join $imgbase [file tail $f]]
    }
    return
}

proc ::dtplite::MapImage {path orig dest} {
    # A file a/b/x.y is stored under
    # a/b/x.y, b/x.y, and x.y

    variable imap
    set plist [file split $path]
    while {[llength $plist]} {
	set imap([join $plist /]) [list $orig $dest]
	set plist [lrange $plist 1 end]
    }
    return
}

proc ::dtplite::MapSetup {dt} {
    # imap :: map (symbolicfile -> list (originpath,destpath)))
    variable imap
    # Skip if no data available

    #puts MIS|[array size imap]|
    if {![array size imap]} return

    foreach sf [array names imap] {
	foreach {origin destination} $imap($sf) break
	$dt img $sf $origin $destination
    }
    return
}

# ### ### ### ######### ######### #########
## Find the documents to process.

proc ::dtplite::LocateManpages {path} {
    set path [file normalize $path]
    set n    [llength [file split $path]]
    set res  {}
    foreach f [::fileutil::find $path ::dtplite::IsDoctools] {
	lappend res [::fileutil::stripN $f $n]
    }
    return $res
}

proc ::dtplite::IsDoctools {f} {
    set res [expr {[in [::fileutil::fileType $f] doctools] && ![Excluded [file normalize $f]]}]
    #puts ...$f\t$res\t|[fileutil::fileType $f]|\texcluded=[Excluded [file normalize $f]]\tin.[pwd]
    return $res
}

proc ::dtplite::Excluded {f} {
    variable excl
    foreach p $excl {
	if {[string match $p $f]} {return 1}
    }
    return 0
}

# ### ### ### ######### ######### #########
## Handling a style sheet
## - Decoupling output from input location.
## - Generate HTML to insert into a generated document.

proc ::dtplite::StyleMakeLocal {{pfx {}}} {
    variable style
    if {[string equal $style ""]} return
    set base [file join $pfx [file tail $style]]

    # TODO input == output does what here ?

    file copy -force $style [At $base]
    set style $base
    return
}

proc ::dtplite::StyleSetup {o {f {}}} {
    variable style
    if {[string equal $style ""]}   return
    if {![in [$o parameters] meta]} return

    if {![string equal $f ""]} {
	set dst [fileutil::relativeUrl $f $style]
    } else {
	set dst $style
    }
    set value "<link\
	    rel=\"stylesheet\"\
	    href=\"$dst\"\
	    type=\"text/css\">"

    $o setparam meta $value
    return
}

# ### ### ### ######### ######### #########
## Handling the cross references
## - Getting them out of the base meta data.
## - ditto, plus merging with saved xref information.
## - Insertion into processor, cached list.
## - Setting up the keyword-2-anchor map.

proc ::dtplite::XrefGet {} {
    variable meta
    variable xref
    variable kwid

    array set keys {}
    foreach {symfile item} [array get meta] {
	array set md $item
	# Cross-references ... File based, see-also

	set t  $md(title)
	set ts ${t}($md(section))
	set td $md(desc)

	set xref(sa,$t)  [set _ [list $symfile]]
	set xref(sa,$ts) $_
	set xref($t)     $_ ; # index on manpage file name
	set xref($ts)    $_ ; # ditto, with section added
	set xref($td)    $_ ; # index on document title

	# Store an inverted file - keyword relationship, for the index
	foreach kw $md(keywords) {
	    lappend keys($kw) $symfile
	}
    }

    set if [Output index]
    foreach k [array names keys] {
	if {[info exists xref(kw,$k)]} continue

	set frag $kwid($k)
	set xref(kw,$k) [set _ [list $if $frag]]
	set xref($k)    $_
    }
    return
}

proc ::dtplite::XrefGetSaved {} {
    # xref :: map (xrefid -> list (symbolicfile))
    variable  xref
    array set xref {}

    # Load old cross references, from a previous run
    set fqn [At .xrf]
    if {[file exists $fqn]} {
	array set xref [set s [Get $fqn]]
    }

    # Add any new cross references ...
    XrefGet
    Write $fqn [array get xref]
    return
}

proc ::dtplite::XrefSetup {o} {
    # xref :: map (xrefid -> list (symbolicfile))
    variable xref
    # Skip if no data available
    if {![array size xref]}         return
    # Skip if backend doesn't support an index
    if {![in [$o parameters] xref]} return

    # Transfer index data to the backend. The data we keep has to be
    # re-formatted from a dict into a list of tuples with leading
    # xrefid.

    # xrefl :: list (list (xrefid symbolicfile...)...)
    variable xrefl
    if {![info exist xrefl]} {
	set xrefl {}
	foreach k [array names xref] {
	    lappend xrefl [linsert $xref($k) 0 $k]
	    set f [lindex $xref($k) 0]
	    dt map $f [At $f]
	}
    }
    $o setparam xref $xrefl
    return
}

proc ::dtplite::XrefSetupKwid {o} {
    # kwid :: map (label -> anchorname)
    variable kwid
    # Skip if no data available
    if {![array size kwid]}         return
    # Skip if backend doesn't support an index
    if {![in [$o parameters] kwid]} return
    # Transfer index data to the backend
    $o setparam kwid [array get kwid]
    return
}

# ### ### ### ######### ######### #########
## Extending and shrinking the navigation bar.

proc ::dtplite::NavbuttonPush {label file ref} {
    # nav = list (list (label reference) ...)
    variable nav
    set      nav [linsert $nav 0 [list $label [fileutil::relativeUrl $ref $file]]]
    return
}

proc ::dtplite::NavbuttonPop {} {
    # nav = list (list (label reference) ...)
    variable nav
    set      nav [lrange $nav 1 end]
    return
}

# ### ### ### ######### ######### #########
## Header/Footer mgmt
## Header is merged from regular header, plus nav bar.
## Caching the merge result for quicker future access.

proc ::dtplite::HeaderSetup {o} {
    variable header
    variable nav
    variable navcache

    if {[string equal $header ""] && ![llength $nav]} return
    if {![in [$o parameters] header]}                 return

    if {![info exists navcache($nav)]} {
	set sep 0
	set hdr ""
	if {![string equal $header ""]} {
	    append hdr $header
	    set sep 1
	}
	if {[llength $nav]} {
	    if {$sep} {append hdr <br>\n}
	    append hdr <hr>\ \[\n

	    set first 1
	    foreach item $nav {
		if {!$first} {append hdr "| "} else {append hdr "  "}
		set first 0
		foreach {label url} $item break
		append hdr "<a href=\"" $url "\">" $label "</a>\n"
	    }
	    append hdr \]\ <hr>\n
	}
	set navcache($nav) $hdr
    } else {
	set hdr $navcache($nav)
    }

    $o setparam header $hdr
    return
}

proc ::dtplite::FooterSetup {o} {
    variable footer
    if {[string equal $footer ""]}    return
    if {![in [$o parameters] footer]} return
    $o setparam footer $footer
    return
}

# ### ### ### ######### ######### #########
## Invoking the functionality.

if {[catch {
    set mode $::dtplite::mode
    ::dtplite::Do.$mode
} msg]} {
    ## puts $::errorInfo
    ::dtplite::ArgError $msg
}

# ### ### ### ######### ######### #########
exit







|
<
<
<
<




|



<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<

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



9
10
11
12
13
14
15
16




17
18
19
20
21
22
23
24







































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































25















































































































































































































































































































































































26




27
28
29
# Meta description  This application is a simple processor
# Meta description  for documents written in the doctools
# Meta description  markup language. It covers the most
# Meta description  common use cases, but is not as
# Meta description  configurable as its big brother dtp.
# Meta category     Processing doctools documents
# Meta subject      doctools doctoc docidx
# Meta require      {dtplite 1.0.4}




# Meta author       Andreas Kupries
# Meta license      BSD
# @@ Meta End

package require dtplite 1.0.4

# dtp lite - Lightweight DocTools Processor
# ======== = ==============================























































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































exit [dtplite::do $argv]





# ### ### ### ######### ######### #########
exit

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.TP
[2]
The following directory structure is created when processing a single
set of input documents.  The file extension used is for output in
HTML, but that is not relevant to the structure and was just used to
have proper file names.
.CS


    output/
        toc.html
        index.html
        files/
            path/to/FOO.html

.CE
.IP
The last line in the example shows the document
generated for a file FOO located at
.CS


    inputdirectory/path/to/FOO

.CE
.TP
[3]
When merging many packages into a unified set of documents the
generated directory structure is a bit deeper:
.CS


    output
        .toc
        .idx
        .tocdoc
        .idxdoc
        .xrf
        toc.html
        index.html
        FOO1/
            ...
        FOO2/
            toc.html
            files/
                path/to/BAR.html

.CE
.IP
Each of the directories FOO1, ... contains the documents generated for
the package FOO1, ... and follows the structure shown for use case
[2]. The only exception is that there is no per-package index.
.sp
The files "\fI.toc\fR", "\fI.idx\fR", and "\fI.xrf\fR" contain the







<
<
|
|
|
|
|
<





<
<
|
<






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







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
.TP
[2]
The following directory structure is created when processing a single
set of input documents.  The file extension used is for output in
HTML, but that is not relevant to the structure and was just used to
have proper file names.
.CS


output/
toc.html
index.html
files/
path/to/FOO.html

.CE
.IP
The last line in the example shows the document
generated for a file FOO located at
.CS


inputdirectory/path/to/FOO

.CE
.TP
[3]
When merging many packages into a unified set of documents the
generated directory structure is a bit deeper:
.CS


output
\.toc
\.idx
\.tocdoc
\.idxdoc
\.xrf
toc.html
index.html
FOO1/
\...
FOO2/
toc.html
files/
path/to/BAR.html

.CE
.IP
Each of the directories FOO1, ... contains the documents generated for
the package FOO1, ... and follows the structure shown for use case
[2]. The only exception is that there is no per-package index.
.sp
The files "\fI.toc\fR", "\fI.idx\fR", and "\fI.xrf\fR" contain the
557
558
559
560
561
562
563
564
565
.SH KEYWORDS
HTML, TMML, conversion, docidx, doctoc, doctools, manpage, markup, nroff
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2004 Andreas Kupries <[email protected]>

.fi







<

547
548
549
550
551
552
553

554
.SH KEYWORDS
HTML, TMML, conversion, docidx, doctoc, doctools, manpage, markup, nroff
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2004 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
350
351
352
353
354
355
356
357
358
.SH KEYWORDS
application, client, name service
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2007-2008 Andreas Kupries <[email protected]>

.fi







<

349
350
351
352
353
354
355

356
.SH KEYWORDS
application, client, name service
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2007-2008 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
308
309
310
311
312
313
314
315
316
.SH KEYWORDS
application, name service, server
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2007-2008 Andreas Kupries <[email protected]>

.fi







<

307
308
309
310
311
312
313

314
.SH KEYWORDS
application, name service, server
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2007-2008 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
311
312
313
314
315
316
317
318
319
.SH KEYWORDS
application, client, name service
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2008 Andreas Kupries <[email protected]>

.fi







<

310
311
312
313
314
315
316

317
.SH KEYWORDS
application, client, name service
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2008 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
[file dirname $output] has to exist and must be a writable
directory, as the application will create the fileto write to.
.sp
If the argument is missing \fB-\fR is assumed.
.RE
.PP
.SS OPERATION
... reading ... transforming ... writing - plugins - pipeline ...
.SS OPTIONS
This section describes all the options available to the user of the
application. Options are always processed in order. I.e. of both
\fB--help\fR and \fB--version\fR are specified the option
encountered first has precedence.
.PP
Unknown options specified before any of the options \fB-rd\fR,







|







296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
[file dirname $output] has to exist and must be a writable
directory, as the application will create the fileto write to.
.sp
If the argument is missing \fB-\fR is assumed.
.RE
.PP
.SS OPERATION
\... reading ... transforming ... writing - plugins - pipeline ...
.SS OPTIONS
This section describes all the options available to the user of the
application. Options are always processed in order. I.e. of both
\fB--help\fR and \fB--version\fR are specified the option
encountered first has precedence.
.PP
Unknown options specified before any of the options \fB-rd\fR,
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
them, and was not superceded by a plugin option coming after.
.PP
Default options are used if and only if the command line did not
contain any options at all. They will set the application up as a
PEG-based parser generator. The exact list of options is
.PP
.CS

-c peg
.CE
.PP
And now the recognized options and their arguments, if they have any:
.PP
.TP
\fB--help\fR







<







318
319
320
321
322
323
324

325
326
327
328
329
330
331
them, and was not superceded by a plugin option coming after.
.PP
Default options are used if and only if the command line did not
contain any options at all. They will set the application up as a
PEG-based parser generator. The exact list of options is
.PP
.CS

-c peg
.CE
.PP
And now the recognized options and their arguments, if they have any:
.PP
.TP
\fB--help\fR
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
.TP
\fIpeg\fR
It sets the application up as a parser generator accepting parsing
expression grammars and writing a packrat parser in Tcl. The actual
arguments it specifies are:
.sp
.CS


	--reset
	--append
	--reader    peg
	--transform reach
	--transform use
	--writer    me

.CE
.sp
.RE
.TP
\fB-r\fR \fIname\fR
Readers. The name of the package for the plugin \fIname\fR is
"page::reader::\fIname\fR".







<
<
|
|
|
|
|
|
<







457
458
459
460
461
462
463


464
465
466
467
468
469

470
471
472
473
474
475
476
.TP
\fIpeg\fR
It sets the application up as a parser generator accepting parsing
expression grammars and writing a packrat parser in Tcl. The actual
arguments it specifies are:
.sp
.CS


--reset
--append
--reader    peg
--transform reach
--transform use
--writer    me

.CE
.sp
.RE
.TP
\fB-r\fR \fIname\fR
Readers. The name of the package for the plugin \fIname\fR is
"page::reader::\fIname\fR".
640
641
642
643
644
645
646
647
648
.SH KEYWORDS
parser generator, text processing
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT
.nf
Copyright (c) 2005 Andreas Kupries <[email protected]>

.fi







<

635
636
637
638
639
640
641

642
.SH KEYWORDS
parser generator, text processing
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT
.nf
Copyright (c) 2005 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
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
.nf
Copyright (c) 2005 Andreas Kupries <[email protected]>

.fi







|





<

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

404
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
.nf
Copyright (c) 2005 Andreas Kupries <[email protected]>

.fi

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

219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







219
220
221
222
223
224
225

226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
the output. Errors in encryption affect the current block and the next
block after which the cipher will correct itself. CBC is the most
commonly used mode in software encryption. This is the default mode
of operation for this module.
.PP
.SH EXAMPLES
.CS


% set nil_block [string repeat \\\\0 16]
% aes::aes -hex -mode cbc -dir encrypt -key $nil_block $nil_block
66e94bd4ef8a2c3b884cfa59ca342b2e

.CE
.CS


set Key [aes::Init cbc $sixteen_bytes_key_data $sixteen_byte_iv]
append ciphertext [aes::Encrypt $Key $plaintext]
append ciphertext [aes::Encrypt $Key $additional_plaintext]
aes::Final $Key

.CE
.SH REFERENCES
.IP [1]
"Advanced Encryption Standard",
Federal Information Processing Standards Publication 197, 2001
(\fIhttp://csrc.nist.gov/publications/fips/fips197/fips-197.pdf\fR)
.PP







<
<



<


<
<




<







338
339
340
341
342
343
344


345
346
347

348
349


350
351
352
353

354
355
356
357
358
359
360
the output. Errors in encryption affect the current block and the next
block after which the cipher will correct itself. CBC is the most
commonly used mode in software encryption. This is the default mode
of operation for this module.
.PP
.SH EXAMPLES
.CS


% set nil_block [string repeat \\\\0 16]
% aes::aes -hex -mode cbc -dir encrypt -key $nil_block $nil_block
66e94bd4ef8a2c3b884cfa59ca342b2e

.CE
.CS


set Key [aes::Init cbc $sixteen_bytes_key_data $sixteen_byte_iv]
append ciphertext [aes::Encrypt $Key $plaintext]
append ciphertext [aes::Encrypt $Key $additional_plaintext]
aes::Final $Key

.CE
.SH REFERENCES
.IP [1]
"Advanced Encryption Standard",
Federal Information Processing Standards Publication 197, 2001
(\fIhttp://csrc.nist.gov/publications/fips/fips197/fips-197.pdf\fR)
.PP
380
381
382
383
384
385
386
387
388
aes, block cipher, data integrity, encryption, security
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2005, Pat Thoyts <[email protected]>
Copyright (c) 2012, Andreas Kupries <[email protected]>

.fi







<

373
374
375
376
377
378
379

380
aes, block cipher, data integrity, encryption, security
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2005, Pat Thoyts <[email protected]>
Copyright (c) 2012, Andreas Kupries <[email protected]>

.fi

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

1
2
3
4
5
6
7
8
9
10
'\"
'\" Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/man/files/modules/amazon-s3/S3.n' by tcllib/doctools with format 'nroff'
'\" Copyright (c) Copyright 2006,2008 Darren New. All Rights Reserved. See LICENSE.TXT for terms.
'\"
'\" 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
'\"
'\" Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/man/files/modules/amazon-s3/S3.n' by tcllib/doctools with format 'nroff'
'\" 2006,2008 Darren New. All Rights Reserved. See LICENSE.TXT for terms.
'\"
'\" 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",
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
.SH COMMANDS
This package provides several separate levels of complexity.
.IP \(bu
The lowest level simply takes arguments to be sent to the service,
sends them, retrieves the result, and provides it to the caller.
\fINote:\fR This layer allows both synchronous and event-driven
processing. It depends on the MD5 and SHA1 and base64 packages
from Tcllib (available at \fIhttp://tcllib.sourceforge.net/\fR).
Note that \fBS3::Configure\fR is required for \fBS3::REST\fR to
work due to the authentication portion, so we put that in the "lowest level."
.IP \(bu
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 \fBTclXML\fR package as well as the
included \fBxsxp\fR package. These packages are package required when







|







364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
.SH COMMANDS
This package provides several separate levels of complexity.
.IP \(bu
The lowest level simply takes arguments to be sent to the service,
sends them, retrieves the result, and provides it to the caller.
\fINote:\fR This layer allows both synchronous and event-driven
processing. It depends on the MD5 and SHA1 and base64 packages
from Tcllib (available at \fIhttp://core.tcl.tk/tcllib/\fR).
Note that \fBS3::Configure\fR is required for \fBS3::REST\fR to
work due to the authentication portion, so we put that in the "lowest level."
.IP \(bu
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 \fBTclXML\fR package as well as the
included \fBxsxp\fR package. These packages are package required when
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
.TP
\fB-prefix\fR
This names the prefix that will be added to all resources.
That is, it is the remote equivalent of \fB-directory\fR.
If it is not specified, the root of the bucket will be treated
as the remote directory. An example may clarify.
.CS


S3::Push -bucket test -directory /tmp/xyz -prefix hello/world

.CE
.IP
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 \fB-prefix\fR option, /tmp/xyz/pdq.html would be stored







<
<

<







1251
1252
1253
1254
1255
1256
1257


1258

1259
1260
1261
1262
1263
1264
1265
.TP
\fB-prefix\fR
This names the prefix that will be added to all resources.
That is, it is the remote equivalent of \fB-directory\fR.
If it is not specified, the root of the bucket will be treated
as the remote directory. An example may clarify.
.CS


S3::Push -bucket test -directory /tmp/xyz -prefix hello/world

.CE
.IP
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 \fB-prefix\fR option, /tmp/xyz/pdq.html would be stored
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
\fB-delete\fR \fItrue\fR to delete files that have been
deleted from one place but not the other yet not copying
changed files is untested.
.PP
.SH "USAGE SUGGESTIONS"
To fetch a "directory" out of a bucket, make changes, and store it back:
.CS


file mkdir ./tempfiles
S3::Pull -bucket sample -prefix of/interest -directory ./tempfiles \\
  -timestamp aws
do_my_process ./tempfiles other arguments
S3::Push -bucket sample -prefix of/interest -directory ./tempfiles \\
  -compare newer -delete true

.CE
.PP
To delete files locally that were deleted off of S3 but not otherwise
update files:
.CS


S3::Pull -bucket sample -prefix of/interest -directory ./myfiles \\
  -compare never -delete true

.CE
.SH "FUTURE DEVELOPMENTS"
The author intends to work on several additional projects related to
this package, in addition to finishing the unfinished features.
.PP
First, a command-line program allowing browsing of buckets and
transfer of files from shell scripts and command prompts is useful.







<
<


|


|
<





<
<

|
<







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
\fB-delete\fR \fItrue\fR to delete files that have been
deleted from one place but not the other yet not copying
changed files is untested.
.PP
.SH "USAGE SUGGESTIONS"
To fetch a "directory" out of a bucket, make changes, and store it back:
.CS


file mkdir ./tempfiles
S3::Pull -bucket sample -prefix of/interest -directory ./tempfiles \\
-timestamp aws
do_my_process ./tempfiles other arguments
S3::Push -bucket sample -prefix of/interest -directory ./tempfiles \\
-compare newer -delete true

.CE
.PP
To delete files locally that were deleted off of S3 but not otherwise
update files:
.CS


S3::Pull -bucket sample -prefix of/interest -directory ./myfiles \\
-compare never -delete true

.CE
.SH "FUTURE DEVELOPMENTS"
The author intends to work on several additional projects related to
this package, in addition to finishing the unfinished features.
.PP
First, a command-line program allowing browsing of buckets and
transfer of files from shell scripts and command prompts is useful.
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
package and/or documentation.
.SH KEYWORDS
amazon, cloud, s3
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) Copyright 2006,2008 Darren New. All Rights Reserved. See LICENSE.TXT for terms.

.fi







|
<

1579
1580
1581
1582
1583
1584
1585
1586

1587
package and/or documentation.
.SH KEYWORDS
amazon, cloud, s3
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
2006,2008 Darren New. All Rights Reserved. See LICENSE.TXT for terms.

.fi

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

1
2
3
4
5
6
7
8
9
10
'\"
'\" Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/man/files/modules/amazon-s3/xsxp.n' by tcllib/doctools with format 'nroff'
'\" Copyright (c) Copyright 2006 Darren New. All Rights Reserved.
'\"
'\" 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
'\"
'\" Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/man/files/modules/amazon-s3/xsxp.n' by tcllib/doctools with format 'nroff'
'\" 2006 Darren New. All Rights Reserved.
'\"
'\" 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",
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
%PCDATA?
is like %PCDATA, but returns an empty string if
no PCDATA is found.
.RE
.sp
For example, to fetch the first bold text from the fifth paragraph of the body of your HTML file,
.CS

xsxp::fetch $pxml {html body p#4 b} %PCDATA
.CE
.sp
.TP
\fBxsxp::fetchall\fR \fIpxml_list\fR \fIpath\fR ?\fIpart\fR?
This iterates over each PXML in \fIpxml_list\fR (which must be a list
of pxmls) selecting the indicated path from it, building a new list







<







341
342
343
344
345
346
347

348
349
350
351
352
353
354
%PCDATA?
is like %PCDATA, but returns an empty string if
no PCDATA is found.
.RE
.sp
For example, to fetch the first bold text from the fifth paragraph of the body of your HTML file,
.CS

xsxp::fetch $pxml {html body p#4 b} %PCDATA
.CE
.sp
.TP
\fBxsxp::fetchall\fR \fIpxml_list\fR \fIpath\fR ?\fIpart\fR?
This iterates over each PXML in \fIpxml_list\fR (which must be a list
of pxmls) selecting the indicated path from it, building a new list
380
381
382
383
384
385
386
387
388
389
package and/or documentation.
.SH KEYWORDS
dom, parser, xml
.SH CATEGORY
Text processing
.SH COPYRIGHT
.nf
Copyright (c) Copyright 2006 Darren New. All Rights Reserved.

.fi







|
<

378
379
380
381
382
383
384
385

386
package and/or documentation.
.SH KEYWORDS
dom, parser, xml
.SH CATEGORY
Text processing
.SH COPYRIGHT
.nf
2006 Darren New. All Rights Reserved.

.fi

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

220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







220
221
222
223
224
225
226

227
228
229
230
231
232
233
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
709
710
711
712
713
714
715
716
717
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2004 Andreas Kupries <[email protected]>
Copyright (c) 2004 Jochen Loewer <[email protected]>
Copyright (c) 2004-2011 Michael Schlenker <[email protected]>

.fi







<

708
709
710
711
712
713
714

715
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2004 Andreas Kupries <[email protected]>
Copyright (c) 2004 Jochen Loewer <[email protected]>
Copyright (c) 2004-2011 Michael Schlenker <[email protected]>

.fi

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

1
2
3
4
5
6
7
8
9
10
'\"
'\" Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/man/files/modules/base32/base32.n' by tcllib/doctools with format 'nroff'
'\" Copyright (c) Public domain
'\"
'\" 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
'\"
'\" Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/man/files/modules/base32/base32.n' by tcllib/doctools with format 'nroff'
'\" Public domain
'\"
'\" 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",
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.SH "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).
.CS


	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

.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
.nf
Copyright (c) Public domain

.fi







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














|
<

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
.SH "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).
.CS


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

.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
.nf
Public domain

.fi

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

1
2
3
4
5
6
7
8
9
10
'\"
'\" Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/man/files/modules/base32/base32core.n' by tcllib/doctools with format 'nroff'
'\" Copyright (c) Public domain
'\"
'\" 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
'\"
'\" Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/man/files/modules/base32/base32core.n' by tcllib/doctools with format 'nroff'
'\" Public domain
'\"
'\" 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",
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
304
305
306
307
308
309
310
311
312
313
package and/or documentation.
.SH KEYWORDS
base32
.SH CATEGORY
Text processing
.SH COPYRIGHT
.nf
Copyright (c) Public domain

.fi







|
<

303
304
305
306
307
308
309
310

311
package and/or documentation.
.SH KEYWORDS
base32
.SH CATEGORY
Text processing
.SH COPYRIGHT
.nf
Public domain

.fi

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

1
2
3
4
5
6
7
8
9
10
'\"
'\" Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/man/files/modules/base32/base32hex.n' by tcllib/doctools with format 'nroff'
'\" Copyright (c) Public domain
'\"
'\" 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
'\"
'\" Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/man/files/modules/base32/base32hex.n' by tcllib/doctools with format 'nroff'
'\" Public domain
'\"
'\" 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",
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.SH "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.
.CS


	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

.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
.nf
Copyright (c) Public domain

.fi







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














|
<

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
.SH "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.
.CS


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

.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
.nf
Public domain

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
\fB::ascii85::decode\fR \fIstring\fR
Ascii85 decodes the given \fIstring\fR and returns the binary data.
The decoder ignores whitespace in the string, as well as tabs and
newlines.
.PP
.SH EXAMPLES
.CS


% ascii85::encode "Hello, world"
87cURD_*#TDfTZ)

.CE
.CS


% ascii85::encode [string repeat xyz 24]
G^4U[H$X^\\H?a^]G^4U[H$X^\\H?a^]G^4U[H$X^\\H?a^]G^4U[H$X^\\H?a^]G^4U[H$X^\\H?a^]G
^4U[H$X^\\H?a^]
% ascii85::encode -wrapchar "" [string repeat xyz 24]
G^4U[H$X^\\H?a^]G^4U[H$X^\\H?a^]G^4U[H$X^\\H?a^]G^4U[H$X^\\H?a^]G^4U[H$X^\\H?a^]G^4U[H$X^\\H?a^]

.CE
.CS


# NOTE: ascii85 encodes BINARY strings.
% set chemical [encoding convertto utf-8 "C\\u2088H\\u2081\\u2080N\\u2084O\\u2082"]
% set encoded [ascii85::encode $chemical]
6fN]R8E,5Pidu\\UiduhZidua
% set caffeine [encoding convertfrom utf-8 [ascii85::decode $encoded]]

.CE
.SH REFERENCES
.IP [1]
\fIhttp://en.wikipedia.org/wiki/Ascii85\fR
.IP [2]
Postscript Language Reference Manual, 3rd Edition, page 131.
\fIhttp://www.adobe.com/devnet/postscript/pdfs/PLRM.pdf\fR







<
<


<


<
<





<


<
<





<







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
\fB::ascii85::decode\fR \fIstring\fR
Ascii85 decodes the given \fIstring\fR and returns the binary data.
The decoder ignores whitespace in the string, as well as tabs and
newlines.
.PP
.SH EXAMPLES
.CS


% ascii85::encode "Hello, world"
87cURD_*#TDfTZ)

.CE
.CS


% ascii85::encode [string repeat xyz 24]
G^4U[H$X^\\H?a^]G^4U[H$X^\\H?a^]G^4U[H$X^\\H?a^]G^4U[H$X^\\H?a^]G^4U[H$X^\\H?a^]G
^4U[H$X^\\H?a^]
% ascii85::encode -wrapchar "" [string repeat xyz 24]
G^4U[H$X^\\H?a^]G^4U[H$X^\\H?a^]G^4U[H$X^\\H?a^]G^4U[H$X^\\H?a^]G^4U[H$X^\\H?a^]G^4U[H$X^\\H?a^]

.CE
.CS


# NOTE: ascii85 encodes BINARY strings.
% set chemical [encoding convertto utf-8 "C\\u2088H\\u2081\\u2080N\\u2084O\\u2082"]
% set encoded [ascii85::encode $chemical]
6fN]R8E,5Pidu\\UiduhZidua
% set caffeine [encoding convertfrom utf-8 [ascii85::decode $encoded]]

.CE
.SH REFERENCES
.IP [1]
\fIhttp://en.wikipedia.org/wiki/Ascii85\fR
.IP [2]
Postscript Language Reference Manual, 3rd Edition, page 131.
\fIhttp://www.adobe.com/devnet/postscript/pdfs/PLRM.pdf\fR
318
319
320
321
322
323
324
325
326
.SH KEYWORDS
ascii85, encoding
.SH CATEGORY
Text processing
.SH COPYRIGHT
.nf
Copyright (c) 2010, Emiliano Gavilán

.fi







<

308
309
310
311
312
313
314

315
.SH KEYWORDS
ascii85, encoding
.SH CATEGORY
Text processing
.SH COPYRIGHT
.nf
Copyright (c) 2010, Emiliano Gavilán

.fi

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

219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







219
220
221
222
223
224
225

226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.TP
\fB::base64::decode\fR \fIstring\fR
Base64 decodes the given \fIstring\fR and returns the binary data.
The decoder ignores whitespace in the string.
.PP
.SH EXAMPLES
.CS


% base64::encode "Hello, world"
SGVsbG8sIHdvcmxk

.CE
.CS


% base64::encode [string repeat xyz 20]
eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6
eHl6eHl6eHl6
% base64::encode -wrapchar "" [string repeat xyz 20]
eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6

.CE
.CS


# 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]]

.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
.nf
Copyright (c) 2000, Eric Melski
Copyright (c) 2001, Miguel Sofer

.fi







<
<


<


<
<





<


<
<





<
















<

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
.TP
\fB::base64::decode\fR \fIstring\fR
Base64 decodes the given \fIstring\fR and returns the binary data.
The decoder ignores whitespace in the string.
.PP
.SH EXAMPLES
.CS


% base64::encode "Hello, world"
SGVsbG8sIHdvcmxk

.CE
.CS


% base64::encode [string repeat xyz 20]
eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6
eHl6eHl6eHl6
% base64::encode -wrapchar "" [string repeat xyz 20]
eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6

.CE
.CS


# 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]]

.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
.nf
Copyright (c) 2000, Eric Melski
Copyright (c) 2001, Miguel Sofer

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
pattern expressed as an octal string. To change the default of 0644
you can set this option. For instance, 0755 would be suitable for an
executable. See \fBchmod(1)\fR.
.PP
.SH EXAMPLES
.PP
.CS


% set d [uuencode::encode "Hello World!"]
2&5L;&\\\\@5V]R;&0A





.CE
.PP
.CS


% uuencode::uudecode $d
Hello World!

.CE
.PP
.CS


% set d [uuencode::uuencode -name hello.txt "Hello World"]
begin 644 hello.txt
+2&5L;&\\@5V]R;&0`
`
end

.CE
.PP
.CS


% uuencode::uudecode $d
{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
.nf
Copyright (c) 2002, Pat Thoyts

.fi







<
<


|
>
>
>
>



<
<
<
<
<
<
<
<
<
<





<



<
<


<















<

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
pattern expressed as an octal string. To change the default of 0644
you can set this option. For instance, 0755 would be suitable for an
executable. See \fBchmod(1)\fR.
.PP
.SH EXAMPLES
.PP
.CS


% set d [uuencode::encode "Hello World!"]
2&5L;&\\\\@5V]R;&0A
.CE
.PP
.CS
% uuencode::uudecode $d
Hello World!
.CE
.PP
.CS










% set d [uuencode::uuencode -name hello.txt "Hello World"]
begin 644 hello.txt
+2&5L;&\\@5V]R;&0`
`
end

.CE
.PP
.CS


% uuencode::uudecode $d
{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
.nf
Copyright (c) 2002, Pat Thoyts

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
-crc32 boolean
The yEnc specification recommends the inclusion of a cyclic redundancy
check value in the footer. Use this option to change the default from
\fItrue\fR to \fIfalse\fR.
.PP
.PP
.CS


% set d [yencode::yencode -file testfile.txt]
=ybegin line=128 size=584 name=testfile.txt
 -o- data not shown -o-
=yend size=584 crc32=ded29f4f

.CE
.SH REFERENCES
.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
.nf
Copyright (c) 2002, Pat Thoyts

.fi







<
<


|

<



















<

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
-crc32 boolean
The yEnc specification recommends the inclusion of a cyclic redundancy
check value in the footer. Use this option to change the default from
\fItrue\fR to \fIfalse\fR.
.PP
.PP
.CS


% set d [yencode::yencode -file testfile.txt]
=ybegin line=128 size=584 name=testfile.txt
-o- data not shown -o-
=yend size=584 crc32=ded29f4f

.CE
.SH REFERENCES
.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
.nf
Copyright (c) 2002, Pat Thoyts

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
536
537
538
539
540
541
542
543
544
.SH KEYWORDS
BitTorrent, bee, bittorrent, serialization, torrent
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2004 Andreas Kupries <[email protected]>

.fi







<

535
536
537
538
539
540
541

542
.SH KEYWORDS
BitTorrent, bee, bittorrent, serialization, torrent
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2004 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
478
479
480
481
482
483
484
485
486
.SH KEYWORDS
benchmark, merging, normalization, performance, testing
.SH CATEGORY
Benchmark tools
.SH COPYRIGHT
.nf
Copyright (c) 2007-2008 Andreas Kupries <[email protected]>

.fi







<

477
478
479
480
481
482
483

484
.SH KEYWORDS
benchmark, merging, normalization, performance, testing
.SH CATEGORY
Benchmark tools
.SH COPYRIGHT
.nf
Copyright (c) 2007-2008 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
288
289
290
291
292
293
294
295
296
.SH KEYWORDS
bench language, benchmark, performance, testing
.SH CATEGORY
Benchmark tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi







<

287
288
289
290
291
292
293

294
.SH KEYWORDS
bench language, benchmark, performance, testing
.SH CATEGORY
Benchmark tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
of benchmarks.
A document written in this language is a Tcl script and has the same
syntax.
.PP
.SS BASICS
One of the most simplest benchmarks which can be written in bench is
.CS


bench -desc LABEL -body {
    set a b
}

.CE
This code declares a benchmark named \fBLABEL\fR which measures the
time it takes to assign a value to a variable. The Tcl code doing this
assignment is the \fB-body\fR of the benchmark.
.SS "PRE- AND POSTPROCESSING"
Our next example demonstrates how to declare \fIinitialization\fR and
\fIcleanup\fR code, i.e. code computing information for the use of
the \fB-body\fR, and for releasing such resources after the
measurement is done.
They are the \fB-pre\fR- and the \fB-post\fR-body, respectively.
.PP
In our example, directly drawn from the benchmark suite of Tcllib's
\fBaes\fR package, the concrete initialization code constructs the
key schedule used by the encryption command whose speed we measure,
and the cleanup code releases any resources bound to that schedule.
.CS


bench -desc "AES-${len} ECB encryption core" \fB-pre\fR {
    set key [aes::Init ecb $k $i]
} -body {
    aes::Encrypt $key $p
} \fB-post\fR {
    aes::Final $key
}

.CE
.SS "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 \fB-body\fR.
.PP







<
<

|

<
















<
<

|

|

|

<







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
of benchmarks.
A document written in this language is a Tcl script and has the same
syntax.
.PP
.SS BASICS
One of the most simplest benchmarks which can be written in bench is
.CS


bench -desc LABEL -body {
set a b
}

.CE
This code declares a benchmark named \fBLABEL\fR which measures the
time it takes to assign a value to a variable. The Tcl code doing this
assignment is the \fB-body\fR of the benchmark.
.SS "PRE- AND POSTPROCESSING"
Our next example demonstrates how to declare \fIinitialization\fR and
\fIcleanup\fR code, i.e. code computing information for the use of
the \fB-body\fR, and for releasing such resources after the
measurement is done.
They are the \fB-pre\fR- and the \fB-post\fR-body, respectively.
.PP
In our example, directly drawn from the benchmark suite of Tcllib's
\fBaes\fR package, the concrete initialization code constructs the
key schedule used by the encryption command whose speed we measure,
and the cleanup code releases any resources bound to that schedule.
.CS


bench -desc "AES-${len} ECB encryption core" \fB-pre\fR {
set key [aes::Init ecb $k $i]
} -body {
aes::Encrypt $key $p
} \fB-post\fR {
aes::Final $key
}

.CE
.SS "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 \fB-body\fR.
.PP
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
above to demonstrate the necessity for the advanced initialization and
cleanup. Its concrete initialization code constructs a variable
refering to a set with specific properties (The set has a string
representation, which is shared) affecting the speed of the inclusion
command, and the cleanup code releases the temporary variables created
by this initialization.
.CS


bench -desc "set include, missing <SC> x$times $n" \fB-ipre\fR {
    set A $sx($times,$n)
    set B $A
} -body {
    struct::set include A x
} \fB-ipost\fR {
    unset A B
}

.CE
.SH "FURTHER READING"
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.







<
<

|
|

|

|

<







326
327
328
329
330
331
332


333
334
335
336
337
338
339
340

341
342
343
344
345
346
347
above to demonstrate the necessity for the advanced initialization and
cleanup. Its concrete initialization code constructs a variable
refering to a set with specific properties (The set has a string
representation, which is shared) affecting the speed of the inclusion
command, and the cleanup code releases the temporary variables created
by this initialization.
.CS


bench -desc "set include, missing <SC> x$times $n" \fB-ipre\fR {
set A $sx($times,$n)
set B $A
} -body {
struct::set include A x
} \fB-ipost\fR {
unset A B
}

.CE
.SH "FURTHER READING"
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.
366
367
368
369
370
371
372
373
374
.SH KEYWORDS
bench language, benchmark, examples, performance, testing
.SH CATEGORY
Benchmark tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi







<

356
357
358
359
360
361
362

363
.SH KEYWORDS
bench language, benchmark, examples, performance, testing
.SH CATEGORY
Benchmark tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
356
357
358
359
360
361
362
363
364
.SH KEYWORDS
bench language, benchmark, performance, specification, testing
.SH CATEGORY
Benchmark tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi







<

355
356
357
358
359
360
361

362
.SH KEYWORDS
bench language, benchmark, performance, specification, testing
.SH CATEGORY
Benchmark tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
296
297
298
299
300
301
302
303
304
.SH KEYWORDS
benchmark, csv, formatting, human readable, parsing, performance, reading, testing, text
.SH CATEGORY
Benchmark tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi







<

295
296
297
298
299
300
301

302
.SH KEYWORDS
benchmark, csv, formatting, human readable, parsing, performance, reading, testing, text
.SH CATEGORY
Benchmark tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
284
285
286
287
288
289
290
291
292
.SH KEYWORDS
benchmark, csv, formatting, performance, testing
.SH CATEGORY
Benchmark tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi







<

283
284
285
286
287
288
289

290
.SH KEYWORDS
benchmark, csv, formatting, performance, testing
.SH CATEGORY
Benchmark tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
284
285
286
287
288
289
290
291
292
.SH KEYWORDS
benchmark, formatting, human readable, performance, testing, text
.SH CATEGORY
Benchmark tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi







<

283
284
285
286
287
288
289

290
.SH KEYWORDS
benchmark, formatting, human readable, performance, testing, text
.SH CATEGORY
Benchmark tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
389
390
391
392
393
394
395
396
397
.SH KEYWORDS
bibliography, bibtex, parsing, text processing
.SH CATEGORY
Text processing
.SH COPYRIGHT
.nf
Copyright (c) 2005 for documentation, Andreas Kupries <[email protected]>

.fi







<

388
389
390
391
392
393
394

395
.SH KEYWORDS
bibliography, bibtex, parsing, text processing
.SH CATEGORY
Text processing
.SH COPYRIGHT
.nf
Copyright (c) 2005 for documentation, Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
vector should be chosen randomly and transmitted as the first block of
the output. Errors in encryption affect the current block and the next
block after which the cipher will correct itself. CBC is the most
commonly used mode in software encryption.
.PP
.SH EXAMPLES
.CS


% blowfish::blowfish -hex -mode ecb -dir encrypt -key secret01 "hello, world!"
d0d8f27e7a374b9e2dbd9938dd04195a

.CE
.CS


 set Key [blowfish::Init cbc $eight_bytes_key_data $eight_byte_iv]
 append ciphertext [blowfish::Encrypt $Key $plaintext]
 append ciphertext [blowfish::Encrypt $Key $additional_plaintext]
 blowfish::Final $Key

.CE
.SH REFERENCES
.IP [1]
Schneier, B. "Applied Cryptography, 2nd edition", 1996,
ISBN 0-471-11709-9, pub. John Wiley & Sons.
.PP
.SH AUTHORS







<
<


<


<
<
|
|
|
|
<







339
340
341
342
343
344
345


346
347

348
349


350
351
352
353

354
355
356
357
358
359
360
vector should be chosen randomly and transmitted as the first block of
the output. Errors in encryption affect the current block and the next
block after which the cipher will correct itself. CBC is the most
commonly used mode in software encryption.
.PP
.SH EXAMPLES
.CS


% blowfish::blowfish -hex -mode ecb -dir encrypt -key secret01 "hello, world!"
d0d8f27e7a374b9e2dbd9938dd04195a

.CE
.CS


set Key [blowfish::Init cbc $eight_bytes_key_data $eight_byte_iv]
append ciphertext [blowfish::Encrypt $Key $plaintext]
append ciphertext [blowfish::Encrypt $Key $additional_plaintext]
blowfish::Final $Key

.CE
.SH REFERENCES
.IP [1]
Schneier, B. "Applied Cryptography, 2nd edition", 1996,
ISBN 0-471-11709-9, pub. John Wiley & Sons.
.PP
.SH AUTHORS
378
379
380
381
382
383
384
385
386
.SH KEYWORDS
block cipher, blowfish, cryptography, encryption, security
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2003, Pat Thoyts <[email protected]>

.fi







<

371
372
373
374
375
376
377

378
.SH KEYWORDS
block cipher, blowfish, cryptography, encryption, security
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2003, Pat Thoyts <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
367
368
369
370
371
372
373
374
375
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 <[email protected]>

.fi







<

366
367
368
369
370
371
372

373
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 <[email protected]>

.fi

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
This command returns the "sanitized" version of \fIargv0\fR.  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.
.PP
.SH EXAMPLES
.CS


        set options {
            {a          "set the atime only"}
            {m          "set the mtime only"}
            {c          "do not create non-existent files"}
            {r.arg  ""  "use time from ref_file"}
            {t.arg  -1  "use specified time"}
        }
        set usage ": MyCommandName \\[options] filename ...\\noptions:"
        array set params [::cmdline::getoptions argv $options $usage]

        if {  $params(a) } { set set_atime "true" }
        set has_t [expr {$params(t) != -1}]
        set has_r [expr {[string length $params(r)] > 0}]
        if {$has_t && $has_r} {
            return -code error "Cannot specify both -r and -t"
        } elseif {$has_t} {
	    ...
        }

.CE
.PP
This example, taken (and slightly modified) from the package
\fBfileutil\fR, 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.







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







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
This command returns the "sanitized" version of \fIargv0\fR.  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.
.PP
.SH EXAMPLES
.CS


set options {
{a          "set the atime only"}
{m          "set the mtime only"}
{c          "do not create non-existent files"}
{r.arg  ""  "use time from ref_file"}
{t.arg  -1  "use specified time"}
}
set usage ": MyCommandName \\[options] filename ...\\noptions:"
array set params [::cmdline::getoptions argv $options $usage]

if {  $params(a) } { set set_atime "true" }
set has_t [expr {$params(t) != -1}]
set has_r [expr {[string length $params(r)] > 0}]
if {$has_t && $has_r} {
return -code error "Cannot specify both -r and -t"
} elseif {$has_t} {
\...
}

.CE
.PP
This example, taken (and slightly modified) from the package
\fBfileutil\fR, 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.

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

220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







220
221
222
223
224
225
226

227
228
229
230
231
232
233
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
result, \fBcomm\fR works with multiple interpreters, works on
Windows and Macintosh systems, and provides control over the remote
execution path.
.PP
These commands work just like \fBsend\fR and \fBwinfo interps\fR :
.PP
.CS


    ::comm::comm send ?-async? id cmd ?arg arg ...?
    ::comm::comm interps

.CE
.PP
This is all that is really needed to know in order to use
\fBcomm\fR
.SS COMMANDS
The package initializes \fB::comm::comm\fR as the default \fIchan\fR.
.PP







<
<
|
|
<







295
296
297
298
299
300
301


302
303

304
305
306
307
308
309
310
result, \fBcomm\fR works with multiple interpreters, works on
Windows and Macintosh systems, and provides control over the remote
execution path.
.PP
These commands work just like \fBsend\fR and \fBwinfo interps\fR :
.PP
.CS


::comm::comm send ?-async? id cmd ?arg arg ...?
::comm::comm interps

.CE
.PP
This is all that is really needed to know in order to use
\fBcomm\fR
.SS COMMANDS
The package initializes \fB::comm::comm\fR as the default \fIchan\fR.
.PP
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
particular command, try the same thing with Tk's send and see if the
result is different.  If there is a problem, please report it.  For
instance, there was had one report that this command produced an
error.  Note that the equivalent \fBsend\fR command also produces the
same error.
.PP
.CS


    % ::comm::comm send id llength {a b c}
    wrong # args: should be "llength list"
    % send name llength {a b c}
    wrong # args: should be "llength list"

.CE
.PP
The \fBeval\fR hook (described below) can be used to change from
\fBsend\fR's double eval semantics to single eval semantics.
.SS "MULTIPLE CHANNELS"
.PP
More than one \fBcomm\fR channel (or \fIlistener\fR) can be created







<
<
|
|
|
|
<







360
361
362
363
364
365
366


367
368
369
370

371
372
373
374
375
376
377
particular command, try the same thing with Tk's send and see if the
result is different.  If there is a problem, please report it.  For
instance, there was had one report that this command produced an
error.  Note that the equivalent \fBsend\fR command also produces the
same error.
.PP
.CS


% ::comm::comm send id llength {a b c}
wrong # args: should be "llength list"
% send name llength {a b c}
wrong # args: should be "llength list"

.CE
.PP
The \fBeval\fR hook (described below) can be used to change from
\fBsend\fR's double eval semantics to single eval semantics.
.SS "MULTIPLE CHANNELS"
.PP
More than one \fBcomm\fR channel (or \fIlistener\fR) can be created
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
\fB::comm::comm channels\fR
This lists all the channels allocated in this Tcl interpreter.
.PP
.PP
The default configuration parameters for a new channel are:
.PP
.CS


    "-port 0 -local 1 -listen 0 -silent 0"

.CE
.PP
The default channel \fB::comm::comm\fR is created with:
.PP
.CS


    "::comm::comm new ::comm::comm -port 0 -local 1 -listen 1 -silent 0"

.CE
.SS "CHANNEL CONFIGURATION"
.PP
The \fBconfig\fR method acts similar to \fBfconfigure\fR in that it
sets or queries configuration variables associated with a channel.
.TP
\fB::comm::comm config\fR







<
<
|
<





<
<
|
<







389
390
391
392
393
394
395


396

397
398
399
400
401


402

403
404
405
406
407
408
409
\fB::comm::comm channels\fR
This lists all the channels allocated in this Tcl interpreter.
.PP
.PP
The default configuration parameters for a new channel are:
.PP
.CS


"-port 0 -local 1 -listen 0 -silent 0"

.CE
.PP
The default channel \fB::comm::comm\fR is created with:
.PP
.CS


"::comm::comm new ::comm::comm -port 0 -local 1 -listen 1 -silent 0"

.CE
.SS "CHANNEL CONFIGURATION"
.PP
The \fBconfig\fR method acts similar to \fBfconfigure\fR in that it
sets or queries configuration variables associated with a channel.
.TP
\fB::comm::comm config\fR
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
itself, including closing the listening socket.  Special code allows
the default \fB::comm::comm\fR channel to be closed such that the
\fB::comm::comm\fR command it is not destroyed.  Doing so closes the
listening socket, preventing both incoming and outgoing commands on
the channel.  This sequence reinitializes the default channel:
.sp
.CS


    "::comm::comm destroy; ::comm::comm new ::comm::comm"

.CE
.PP
.PP
When a remote connection is lost (because the remote exited or called
\fBshutdown\fR), \fBcomm\fR can invoke an application callback.
This can be used to cleanup or restart an ancillary process, for
instance.  See the \fIlost\fR callback below.







<
<
|
<







534
535
536
537
538
539
540


541

542
543
544
545
546
547
548
itself, including closing the listening socket.  Special code allows
the default \fB::comm::comm\fR channel to be closed such that the
\fB::comm::comm\fR command it is not destroyed.  Doing so closes the
listening socket, preventing both incoming and outgoing commands on
the channel.  This sequence reinitializes the default channel:
.sp
.CS


"::comm::comm destroy; ::comm::comm new ::comm::comm"

.CE
.PP
.PP
When a remote connection is lost (because the remote exited or called
\fBshutdown\fR), \fBcomm\fR can invoke an application callback.
This can be used to cleanup or restart an ancillary process, for
instance.  See the \fIlost\fR callback below.
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
\fBchan\fR, \fBid\fR
.sp
This hook is invoked before making a connection to the remote named in
\fIid\fR.  An error return (via \fBerror\fR) will abort the connection
attempt with the error.  Example:
.sp
.CS


    % ::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
    %

.CE
.TP
\fBconnected\fR
Variables:
\fBchan\fR, \fBfid\fR, \fBid\fR, \fBhost\fR, and \fBport\fR.
.sp
This hook is invoked immediately after making a remote connection to







<
<
|
|
|
|
|
|
|
|
<







583
584
585
586
587
588
589


590
591
592
593
594
595
596
597

598
599
600
601
602
603
604
\fBchan\fR, \fBid\fR
.sp
This hook is invoked before making a connection to the remote named in
\fIid\fR.  An error return (via \fBerror\fR) will abort the connection
attempt with the error.  Example:
.sp
.CS


% ::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
%

.CE
.TP
\fBconnected\fR
Variables:
\fBchan\fR, \fBfid\fR, \fBid\fR, \fBhost\fR, and \fBport\fR.
.sp
This hook is invoked immediately after making a remote connection to
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
Hook invoked when receiving an incoming connection, allowing arbitrary
authentication over socket named by \fIfid\fR.  An error return (via
\fBerror\fR) will close the connection with the error.  Note that the
peer is named by \fIremport\fR and \fIaddr\fR but that the remote
\fIid\fR is still unknown.  Example:
.sp
.CS


    ::comm::comm hook incoming {
        if {[string match 127.0.0.1 $addr]} {
            error "I don't talk to myself"
        }
    }

.CE
.TP
\fBeval\fR
Variables:
\fBchan\fR, \fBid\fR, \fBcmd\fR, and \fBbuffer\fR.
.sp
This hook is invoked after collecting a complete script from a remote







<
<
|
|
|
|
|
<







616
617
618
619
620
621
622


623
624
625
626
627

628
629
630
631
632
633
634
Hook invoked when receiving an incoming connection, allowing arbitrary
authentication over socket named by \fIfid\fR.  An error return (via
\fBerror\fR) will close the connection with the error.  Note that the
peer is named by \fIremport\fR and \fIaddr\fR but that the remote
\fIid\fR is still unknown.  Example:
.sp
.CS


::comm::comm hook incoming {
if {[string match 127.0.0.1 $addr]} {
error "I don't talk to myself"
}
}

.CE
.TP
\fBeval\fR
Variables:
\fBchan\fR, \fBid\fR, \fBcmd\fR, and \fBbuffer\fR.
.sp
This hook is invoked after collecting a complete script from a remote
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
.sp
Examples:
.RS
.IP [1]
augmenting a command
.sp
.CS


    % ::comm::comm send [::comm::comm self] pid
    5013
    % ::comm::comm hook eval {puts "going to execute $buffer"}
    % ::comm::comm send [::comm::comm self] pid
    going to execute pid
    5013

.CE
.IP [2]
short circuiting a command
.sp
.CS


    % ::comm::comm hook eval {puts "would have executed $buffer"; return 0}
    % ::comm::comm send [::comm::comm self] pid
    would have executed pid
    0

.CE
.IP [3]
Replacing double eval semantics
.sp
.CS


    % ::comm::comm send [::comm::comm self] llength {a b c}
    wrong # args: should be "llength list"
    % ::comm::comm hook eval {return [uplevel #0 $buffer]}
    return [uplevel #0 $buffer]
    % ::comm::comm send [::comm::comm self] llength {a b c}
    3

.CE
.IP [4]
Using a slave interpreter
.sp
.CS


    % interp create foo
    % ::comm::comm hook eval {return [foo eval $buffer]}
    % ::comm::comm send [::comm::comm self] set myvar 123
    123
    % set myvar
    can't read "myvar": no such variable
    % foo eval set myvar
    123

.CE
.IP [5]
Using a slave interpreter (double eval)
.sp
.CS


    % ::comm::comm hook eval {return [eval foo eval $buffer]}

.CE
.IP [6]
Subverting the script to execute
.sp
.CS


    % ::comm::comm hook eval {
        switch -- $buffer {
            a {return A-OK}
            b {return B-OK}
            default {error "$buffer is a no-no"}
        }
    }
    % ::comm::comm send [::comm::comm self] pid
    pid is a no-no
    % ::comm::comm send [::comm::comm self] a
    A-OK

.CE
.RE
.TP
\fBreply\fR
Variables:
\fBchan\fR, \fBid\fR, \fBbuffer\fR, \fBret\fR, and \fBreturn()\fR.
.sp







<
<
|
|
|
|
|
|
<





<
<
|
|
|
|
<





<
<
|
|
|
|
|
|
<





<
<
|
|
|
|
|
|
|
|
<





<
<
|
<





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







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
.sp
Examples:
.RS
.IP [1]
augmenting a command
.sp
.CS


% ::comm::comm send [::comm::comm self] pid
5013
% ::comm::comm hook eval {puts "going to execute $buffer"}
% ::comm::comm send [::comm::comm self] pid
going to execute pid
5013

.CE
.IP [2]
short circuiting a command
.sp
.CS


% ::comm::comm hook eval {puts "would have executed $buffer"; return 0}
% ::comm::comm send [::comm::comm self] pid
would have executed pid
0

.CE
.IP [3]
Replacing double eval semantics
.sp
.CS


% ::comm::comm send [::comm::comm self] llength {a b c}
wrong # args: should be "llength list"
% ::comm::comm hook eval {return [uplevel #0 $buffer]}
return [uplevel #0 $buffer]
% ::comm::comm send [::comm::comm self] llength {a b c}
3

.CE
.IP [4]
Using a slave interpreter
.sp
.CS


% interp create foo
% ::comm::comm hook eval {return [foo eval $buffer]}
% ::comm::comm send [::comm::comm self] set myvar 123
123
% set myvar
can't read "myvar": no such variable
% foo eval set myvar
123

.CE
.IP [5]
Using a slave interpreter (double eval)
.sp
.CS


% ::comm::comm hook eval {return [eval foo eval $buffer]}

.CE
.IP [6]
Subverting the script to execute
.sp
.CS


% ::comm::comm hook eval {
switch -- $buffer {
a {return A-OK}
b {return B-OK}
default {error "$buffer is a no-no"}
}
}
% ::comm::comm send [::comm::comm self] pid
pid is a no-no
% ::comm::comm send [::comm::comm self] a
A-OK

.CE
.RE
.TP
\fBreply\fR
Variables:
\fBchan\fR, \fBid\fR, \fBbuffer\fR, \fBret\fR, and \fBreturn()\fR.
.sp
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
\fBchan\fR, \fBid\fR, and \fBreason\fR.
.sp
This hook is invoked when the connection to \fBid\fR is lost.  Return
value (or thrown error) is ignored.  \fIreason\fR is an explanatory
string indicating why the connection was lost.  Example:
.sp
.CS


    ::comm::comm hook lost {
        global myvar
        if {$myvar(id) == $id} {
            myfunc
            return
        }
    }

.CE
.PP
.SS UNSUPPORTED
.PP
These interfaces may change or go away in subsequence releases.
.TP
\fB::comm::comm remoteid\fR
Returns the \fIid\fR of the sender of the last remote command
executed on this channel.  If used by a proc being invoked remotely,
it must be called before any events are processed.  Otherwise, another
command may get invoked and change the value.
.TP
\fB::comm::comm_send\fR
Invoking this procedure will substitute the Tk \fBsend\fR and
\fBwinfo interps\fR commands with these equivalents that use
\fB::comm::comm\fR.
.sp
.CS


    proc send {args} {
        eval ::comm::comm send $args
    }
    rename winfo tk_winfo
    proc winfo {cmd args} {
        if {![string match in* $cmd]} {
            return [eval [list tk_winfo $cmd] $args]
        }
        return [::comm::comm interps]
    }

.CE
.PP
.SS SECURITY
Starting with version 4.6 of the package an option \fB-socketcmd\fR
is supported, allowing the user of a comm channel to specify which
command to use when opening a socket. Anything which is API-compatible
with the builtin \fB::socket\fR (the default) can be used.
.PP
The envisioned main use is the specification of the \fBtls::socket\fR
command, see package \fBtls\fR, to secure the communication.
.PP
.CS


	# Load and initialize tls
	package require tls
	tls::init  -cafile /path/to/ca/cert -keyfile ...

	# Create secured comm channel
	::comm::comm new SECURE -socketcmd tls::socket -listen 1
	...

.CE
.PP
The sections \fBExecution Environment\fR and \fBCallbacks\fR
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.
.SS "BLOCKING SEMANTICS"







<
<
|
|
|
|
|
|
|
<


















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












<
<
|
|
|
<
|
|
|
<







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
\fBchan\fR, \fBid\fR, and \fBreason\fR.
.sp
This hook is invoked when the connection to \fBid\fR is lost.  Return
value (or thrown error) is ignored.  \fIreason\fR is an explanatory
string indicating why the connection was lost.  Example:
.sp
.CS


::comm::comm hook lost {
global myvar
if {$myvar(id) == $id} {
myfunc
return
}
}

.CE
.PP
.SS UNSUPPORTED
.PP
These interfaces may change or go away in subsequence releases.
.TP
\fB::comm::comm remoteid\fR
Returns the \fIid\fR of the sender of the last remote command
executed on this channel.  If used by a proc being invoked remotely,
it must be called before any events are processed.  Otherwise, another
command may get invoked and change the value.
.TP
\fB::comm::comm_send\fR
Invoking this procedure will substitute the Tk \fBsend\fR and
\fBwinfo interps\fR commands with these equivalents that use
\fB::comm::comm\fR.
.sp
.CS


proc send {args} {
eval ::comm::comm send $args
}
rename winfo tk_winfo
proc winfo {cmd args} {
if {![string match in* $cmd]} {
return [eval [list tk_winfo $cmd] $args]
}
return [::comm::comm interps]
}

.CE
.PP
.SS SECURITY
Starting with version 4.6 of the package an option \fB-socketcmd\fR
is supported, allowing the user of a comm channel to specify which
command to use when opening a socket. Anything which is API-compatible
with the builtin \fB::socket\fR (the default) can be used.
.PP
The envisioned main use is the specification of the \fBtls::socket\fR
command, see package \fBtls\fR, to secure the communication.
.PP
.CS


# Load and initialize tls
package require tls
tls::init  -cafile /path/to/ca/cert -keyfile ...

# Create secured comm channel
::comm::comm new SECURE -socketcmd tls::socket -listen 1
\...

.CE
.PP
The sections \fBExecution Environment\fR and \fBCallbacks\fR
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.
.SS "BLOCKING SEMANTICS"
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
deliver the result it got, but just destroy itself. The future can be
configured with a command to call when the invoker is lost. This
enables the user to implement an early abort of the long-running
operation, should this be supported by it.
.sp
An example:
.CS


# Procedure invoked by remote clients to run database operations.
proc select {sql} {
    # Signal the async generation of the result

    set future [::comm::comm return_async]

    # Generate an async db operation and tell it where to deliver the result.

    set query [db query -command [list $future return] $sql]

    # Tell the database system which query to cancel if the connection
    # goes away while it is running.

    $future configure -command [list db cancel $query]

    # Note: The above will work without problem only if the async
    # query will nover run its completion callback immediately, but
    # only from the eventloop. Because otherwise the future we wish to
    # configure may already be gone. If that is possible use 'catch'
    # to prevent the error from propagating.
    return
}

.CE
.sp
The API of a future object is:
.RS
.TP
\fB$future\fR \fBreturn\fR ?\fB-code\fR \fIcode\fR? ?\fIvalue\fR?
Use this method to tell the future that long-running operation has







<
<


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

<







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
deliver the result it got, but just destroy itself. The future can be
configured with a command to call when the invoker is lost. This
enables the user to implement an early abort of the long-running
operation, should this be supported by it.
.sp
An example:
.CS


# Procedure invoked by remote clients to run database operations.
proc select {sql} {
# Signal the async generation of the result

set future [::comm::comm return_async]

# Generate an async db operation and tell it where to deliver the result.

set query [db query -command [list $future return] $sql]

# Tell the database system which query to cancel if the connection
# goes away while it is running.

$future configure -command [list db cancel $query]

# Note: The above will work without problem only if the async
# query will nover run its completion callback immediately, but
# only from the eventloop. Because otherwise the future we wish to
# configure may already be gone. If that is possible use 'catch'
# to prevent the error from propagating.
return
}

.CE
.sp
The API of a future object is:
.RS
.TP
\fB$future\fR \fBreturn\fR ?\fB-code\fR \fIcode\fR? ?\fIvalue\fR?
Use this method to tell the future that long-running operation has
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
\fBcomm\fR exports itself as a package.  The package version number
is in the form \fImajor . minor\fR, where the major version will
only change when a non-compatible change happens to the API or
protocol.  Minor bug fixes and changes will only affect the minor
version.  To load \fBcomm\fR this command is usually used:
.PP
.CS


    package require comm 3

.CE
.PP
Note that requiring no version (or a specific version) can also be done.
.PP
The revision history of \fBcomm\fR includes these releases:
.TP
4.6.2







<
<
|
<







949
950
951
952
953
954
955


956

957
958
959
960
961
962
963
\fBcomm\fR exports itself as a package.  The package version number
is in the form \fImajor . minor\fR, where the major version will
only change when a non-compatible change happens to the API or
protocol.  Minor bug fixes and changes will only affect the minor
version.  To load \fBcomm\fR this command is usually used:
.PP
.CS


package require comm 3

.CE
.PP
Note that requiring no version (or a specific version) can also be done.
.PP
The revision history of \fBcomm\fR includes these releases:
.TP
4.6.2
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
conditions were not being returned correctly from \fBcomm send\fR.
This has been fixed by removing the extra level of indirection into
the internal procedure \fBcommSend\fR.  Also added propagation of
the \fIerrorCode\fR variable.  This means that these commands return
exactly as they would with \fBsend\fR:
.sp
.CS


    comm send id break
    catch {comm send id break}
    comm send id expr 1 / 0

.CE
.sp
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 \fBcomm config\fR (as this manual page
still listed the defunct \fBcomm init\fR!)
.TP







<
<
|
|
|
<







1085
1086
1087
1088
1089
1090
1091


1092
1093
1094

1095
1096
1097
1098
1099
1100
1101
conditions were not being returned correctly from \fBcomm send\fR.
This has been fixed by removing the extra level of indirection into
the internal procedure \fBcommSend\fR.  Also added propagation of
the \fIerrorCode\fR variable.  This means that these commands return
exactly as they would with \fBsend\fR:
.sp
.CS


comm send id break
catch {comm send id break}
comm send id expr 1 / 0

.CE
.sp
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 \fBcomm config\fR (as this manual page
still listed the defunct \fBcomm init\fR!)
.TP
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
.SH "ON USING OLD VERSIONS OF TCL"
.PP
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:
.PP
.CS


    "comm send $other exit"

.CE
.PP
Always make sure the channel is quiescent before closing/exiting or
use at least Tcl7.6 under Windows.
.PP
Tcl7.6 on the Mac contains several bugs.  It is recommended you use
at least Tcl7.6p2.







<
<
|
<







1192
1193
1194
1195
1196
1197
1198


1199

1200
1201
1202
1203
1204
1205
1206
.SH "ON USING OLD VERSIONS OF TCL"
.PP
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:
.PP
.CS


"comm send $other exit"

.CE
.PP
Always make sure the channel is quiescent before closing/exiting or
use at least Tcl7.6 under Windows.
.PP
Tcl7.6 on the Mac contains several bugs.  It is recommended you use
at least Tcl7.6p2.
1301
1302
1303
1304
1305
1306
1307
1308
1309
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 1995-1998 The Open Group. All Rights Reserved.
Copyright (c) 2003-2004 ActiveState Corporation.
Copyright (c) 2006-2009 Andreas Kupries <[email protected]>

.fi







<

1233
1234
1235
1236
1237
1238
1239

1240
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 1995-1998 The Open Group. All Rights Reserved.
Copyright (c) 2003-2004 ActiveState Corporation.
Copyright (c) 2006-2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
This emulates the Tcl "eval" semantics.
In most cases it is best to have only one word in the list, a list
containing the exact command.
.sp
Examples:
.sp
.CS


    (a)     {send 1 {{array get tcl_platform}}}
    (b)     {send 1 {array get tcl_platform}}
    (c)     {send 1 {array {get tcl_platform}}}

    are all valid representations of the same command. They are
    generated via

    (a')    send {array get tcl_platform}
    (b')    send array get tcl_platform
    (c')    send array {get tcl_platform}

    respectively

.CE
.sp
Note that (a), generated by (a'), is the usual form, if only single
commands are sent by the client.
For example constructed using \fBlist\fR, if the command contains
variable arguments. Like
.sp
.CS


    send [list array get $the_variable]

.CE
.sp
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.
.RS
.TP







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








<
<
|
<







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
This emulates the Tcl "eval" semantics.
In most cases it is best to have only one word in the list, a list
containing the exact command.
.sp
Examples:
.sp
.CS


(a)     {send 1 {{array get tcl_platform}}}
(b)     {send 1 {array get tcl_platform}}
(c)     {send 1 {array {get tcl_platform}}}

are all valid representations of the same command. They are
generated via

(a')    send {array get tcl_platform}
(b')    send array get tcl_platform
(c')    send array {get tcl_platform}

respectively

.CE
.sp
Note that (a), generated by (a'), is the usual form, if only single
commands are sent by the client.
For example constructed using \fBlist\fR, if the command contains
variable arguments. Like
.sp
.CS


send [list array get $the_variable]

.CE
.sp
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.
.RS
.TP
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
is highly restricted.
It has to be a syntactically valid Tcl \fBreturn\fR command. This
contains result code, value, error code, and error info.
.sp
Examples:
.sp
.CS


    {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}}}

.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
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2005 Docs. Andreas Kupries <[email protected]>

.fi







<
<
|
|
<


















<

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
is highly restricted.
It has to be a syntactically valid Tcl \fBreturn\fR command. This
contains result code, value, error code, and error info.
.sp
Examples:
.sp
.CS


{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}}}

.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
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2005 Docs. Andreas Kupries <[email protected]>

.fi

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
combination with [\fBnamespace import\fR], it is possible to
use enabled \fBassert\fR commands in some namespaces and disabled
\fBassert\fR commands in other namespaces at the same time.  This
capability is useful so that debugging efforts can be independently
controlled module by module.
.sp
.CS


% package require control
% control::control assert enabled 1
% namespace eval one namespace import ::control::assert
% control::control assert enabled 0
% namespace eval two namespace import ::control::assert
% one::assert {1 == 0}
assertion failed: 1 == 0
% two::assert {1 == 0}

.CE
.TP
\fBcontrol::do\fR \fIbody\fR ?\fIoption test\fR?
The \fBdo\fR command evaluates the script \fIbody\fR repeatedly
\fIuntil\fR the expression \fItest\fR becomes true or as long as
(\fIwhile\fR) \fItest\fR is true, depending on the value of
\fIoption\fR being \fBuntil\fR or \fBwhile\fR. If







<
<








<







313
314
315
316
317
318
319


320
321
322
323
324
325
326
327

328
329
330
331
332
333
334
combination with [\fBnamespace import\fR], it is possible to
use enabled \fBassert\fR commands in some namespaces and disabled
\fBassert\fR commands in other namespaces at the same time.  This
capability is useful so that debugging efforts can be independently
controlled module by module.
.sp
.CS


% package require control
% control::control assert enabled 1
% namespace eval one namespace import ::control::assert
% control::control assert enabled 0
% namespace eval two namespace import ::control::assert
% one::assert {1 == 0}
assertion failed: 1 == 0
% two::assert {1 == 0}

.CE
.TP
\fBcontrol::do\fR \fIbody\fR ?\fIoption test\fR?
The \fBdo\fR command evaluates the script \fIbody\fR repeatedly
\fIuntil\fR the expression \fItest\fR becomes true or as long as
(\fIwhile\fR) \fItest\fR is true, depending on the value of
\fIoption\fR being \fBuntil\fR or \fBwhile\fR. If
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
arguments for any value of \fI$code\fR other than \fIok\fR.  In this
way, the commands of the \fBcontrol\fR package are limited as compared
to Tcl's built-in control flow commands (such as \fBif\fR,
\fBwhile\fR, etc.) and those control flow commands that can be
provided by packages coded in C.  An example of this difference:
.PP
.CS


% package require control
% proc a {} {while 1 {return -code error a}}
% proc b {} {control::do {return -code error b} while 1}
% catch a
1
% catch b
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







<
<







<







352
353
354
355
356
357
358


359
360
361
362
363
364
365

366
367
368
369
370
371
372
arguments for any value of \fI$code\fR other than \fIok\fR.  In this
way, the commands of the \fBcontrol\fR package are limited as compared
to Tcl's built-in control flow commands (such as \fBif\fR,
\fBwhile\fR, etc.) and those control flow commands that can be
provided by packages coded in C.  An example of this difference:
.PP
.CS


% package require control
% proc a {} {while 1 {return -code error a}}
% proc b {} {control::do {return -code error b} while 1}
% catch a
1
% catch b
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

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
284
285
286
287
288
289
290
291
292
.SH KEYWORDS
after, channel, coroutine, events, exit, gets, global, green threads, read, threads, update, vwait
.SH CATEGORY
Coroutine
.SH COPYRIGHT
.nf
Copyright (c) 2010-2011 Andreas Kupries <[email protected]>

.fi







<

283
284
285
286
287
288
289

290
.SH KEYWORDS
after, channel, coroutine, events, exit, gets, global, green threads, read, threads, update, vwait
.SH CATEGORY
Coroutine
.SH COPYRIGHT
.nf
Copyright (c) 2010-2011 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
342
343
344
345
346
347
348
349
350
.SH KEYWORDS
after, channel, coroutine, events, exit, gets, global, green threads, read, threads, update, vwait
.SH CATEGORY
Coroutine
.SH COPYRIGHT
.nf
Copyright (c) 2010-2011 Andreas Kupries <[email protected]>

.fi







<

341
342
343
344
345
346
347

348
.SH KEYWORDS
after, channel, coroutine, events, exit, gets, global, green threads, read, threads, update, vwait
.SH CATEGORY
Coroutine
.SH COPYRIGHT
.nf
Copyright (c) 2010-2011 Andreas Kupries <[email protected]>

.fi

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
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.
.PP
.SH EXAMPLES
.PP
.CS


% crc::cksum "Hello, World!"
2609532967

.CE
.PP
.CS


% crc::cksum -format 0x%X "Hello, World!"
0x9B8A5027

.CE
.PP
.CS


% crc::cksum -file cksum.tcl
1828321145

.CE
.PP
.CS


% set tok [crc::CksumInit]
% crc::CksumUpdate $tok "Hello, "
% crc::CksumUpdate $tok "World!"
% crc::CksumFinal $tok
2609532967

.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
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2002, Pat Thoyts

.fi







<
<


<



<
<


<



<
<


<



<
<





<



















<

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
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.
.PP
.SH EXAMPLES
.PP
.CS


% crc::cksum "Hello, World!"
2609532967

.CE
.PP
.CS


% crc::cksum -format 0x%X "Hello, World!"
0x9B8A5027

.CE
.PP
.CS


% crc::cksum -file cksum.tcl
1828321145

.CE
.PP
.CS


% set tok [crc::CksumInit]
% crc::CksumUpdate $tok "Hello, "
% crc::CksumUpdate $tok "World!"
% crc::CksumFinal $tok
2609532967

.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
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2002, Pat Thoyts

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.TP
--
Terminate option processing.
.PP
.SH EXAMPLES
.PP
.CS


% crc::crc16 "Hello, World!"
64077

.CE
.PP
.CS


% crc::crc-ccitt "Hello, World!"
26586

.CE
.PP
.CS


% crc::crc16 -format 0x%X "Hello, World!"
0xFA4D

.CE
.PP
.CS


% crc::crc16 -file crc16.tcl
51675

.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
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2002, Pat Thoyts

.fi







<
<


<



<
<


<



<
<


<



<
<


<



















<

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
.TP
--
Terminate option processing.
.PP
.SH EXAMPLES
.PP
.CS


% crc::crc16 "Hello, World!"
64077

.CE
.PP
.CS


% crc::crc-ccitt "Hello, World!"
26586

.CE
.PP
.CS


% crc::crc16 -format 0x%X "Hello, World!"
0xFA4D

.CE
.PP
.CS


% crc::crc16 -file crc16.tcl
51675

.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
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2002, Pat Thoyts

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
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.
.PP
.SH EXAMPLES
.PP
.CS


% crc::crc32 "Hello, World!"
3964322768

.CE
.PP
.CS


% crc::crc32 -format 0x%X "Hello, World!"
0xEC4AC3D0

.CE
.PP
.CS


% crc::crc32 -file crc32.tcl
483919716

.CE
.PP
.CS


% set tok [crc::Crc32Init]
% crc::Crc32Update $tok "Hello, "
% crc::Crc32Update $tok "World!"
% crc::Crc32Final $tok
3964322768

.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
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2002, Pat Thoyts

.fi







<
<


<



<
<


<



<
<


<



<
<





<



















<

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
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.
.PP
.SH EXAMPLES
.PP
.CS


% crc::crc32 "Hello, World!"
3964322768

.CE
.PP
.CS


% crc::crc32 -format 0x%X "Hello, World!"
0xEC4AC3D0

.CE
.PP
.CS


% crc::crc32 -file crc32.tcl
483919716

.CE
.PP
.CS


% set tok [crc::Crc32Init]
% crc::Crc32Update $tok "Hello, "
% crc::Crc32Update $tok "World!"
% crc::Crc32Final $tok
3964322768

.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
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2002, Pat Thoyts

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.TP
-format \fIstring\fR
Return the checksum using an alternative format template.
.PP
.SH EXAMPLES
.PP
.CS


% crc::sum "Hello, World!"
37287





.CE
.PP
.CS


% crc::sum -format 0x%X "Hello, World!"
0x91A7

.CE
.PP
.CS


% crc::sum -file sum.tcl
13392

.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
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2002, Pat Thoyts <[email protected]>

.fi







<
<


|
>
>
>
>



<
<
<
<
<
<
<
<
<
<


<



















<

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
.TP
-format \fIstring\fR
Return the checksum using an alternative format template.
.PP
.SH EXAMPLES
.PP
.CS


% crc::sum "Hello, World!"
37287
.CE
.PP
.CS
% crc::sum -format 0x%X "Hello, World!"
0x91A7
.CE
.PP
.CS










% crc::sum -file sum.tcl
13392

.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
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2002, Pat Thoyts <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.PP
The alternate format is activated through specification of the option
\fB-alternate\fR to the various split commands.
.SH EXAMPLE
Using the regular format the record
.PP
.CS


123,"123,521.2","Mary says ""Hello, I am Mary""",""

.CE
.PP
is parsed into the items
.PP
.CS


a) 123
b) 123,521.2
c) Mary says "Hello, I am Mary"
d) "

.CE
.PP
Using the alternate format the result is
.PP
.CS


a) 123
b) 123,521.2
c) Mary says "Hello, I am Mary"
d) (the empty string)

.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
Text processing
.SH COPYRIGHT
.nf
Copyright (c) 2002-2013 Andreas Kupries <[email protected]>

.fi







<
<

<





<
<




<





<
<




<



















<

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
.PP
The alternate format is activated through specification of the option
\fB-alternate\fR to the various split commands.
.SH EXAMPLE
Using the regular format the record
.PP
.CS


123,"123,521.2","Mary says ""Hello, I am Mary""",""

.CE
.PP
is parsed into the items
.PP
.CS


a) 123
b) 123,521.2
c) Mary says "Hello, I am Mary"
d) "

.CE
.PP
Using the alternate format the result is
.PP
.CS


a) 123
b) 123,521.2
c) Mary says "Hello, I am Mary"
d) (the empty string)

.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
Text processing
.SH COPYRIGHT
.nf
Copyright (c) 2002-2013 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
OFB is similar to CFB except that the output of the cipher is fed back
into the next round and not the xor'd plain text. This means that
errors only affect a single block but the cipher is more vulnerable to
attack.
.PP
.SH EXAMPLES
.CS


% set ciphertext [DES::des -mode cbc -dir encrypt -key $secret $plaintext]
% set plaintext [DES::des -mode cbc -dir decrypt -key $secret $ciphertext]

.CE
.CS


set iv [string repeat \\\\0 8]
set Key [DES::Init cbc \\\\0\\\\1\\\\2\\\\3\\\\4\\\\5\\\\6\\\\7 $iv]
set ciphertext [DES::Encrypt $Key "somedata"]
append ciphertext [DES::Encrypt $Key "moredata"]
DES::Reset $Key $iv
set plaintext [DES::Decrypt $Key $ciphertext]
DES::Final $Key

.CE
.SH REFERENCES
.IP [1]
"Data Encryption Standard",
Federal Information Processing Standards Publication 46-3, 1999,
(\fIhttp://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf\fR)
.IP [2]







<
<


<


<
<







<







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
OFB is similar to CFB except that the output of the cipher is fed back
into the next round and not the xor'd plain text. This means that
errors only affect a single block but the cipher is more vulnerable to
attack.
.PP
.SH EXAMPLES
.CS


% set ciphertext [DES::des -mode cbc -dir encrypt -key $secret $plaintext]
% set plaintext [DES::des -mode cbc -dir decrypt -key $secret $ciphertext]

.CE
.CS


set iv [string repeat \\\\0 8]
set Key [DES::Init cbc \\\\0\\\\1\\\\2\\\\3\\\\4\\\\5\\\\6\\\\7 $iv]
set ciphertext [DES::Encrypt $Key "somedata"]
append ciphertext [DES::Encrypt $Key "moredata"]
DES::Reset $Key $iv
set plaintext [DES::Decrypt $Key $ciphertext]
DES::Final $Key

.CE
.SH REFERENCES
.IP [1]
"Data Encryption Standard",
Federal Information Processing Standards Publication 46-3, 1999,
(\fIhttp://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf\fR)
.IP [2]
411
412
413
414
415
416
417
418
419
.SH KEYWORDS
3DES, DES, block cipher, data integrity, encryption, security
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2005, Pat Thoyts <[email protected]>

.fi







<

404
405
406
407
408
409
410

411
.SH KEYWORDS
3DES, DES, block cipher, data integrity, encryption, security
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2005, Pat Thoyts <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
/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.
.PP
.SH EXAMPLES
.PP
.CS


% set tok [dns::resolve www.tcl.tk]
::dns::1
% dns::status $tok
ok
% dns::address $tok
199.175.6.239
% dns::name $tok
www.tcl.tk
% dns::cleanup $tok

.CE
.PP
Using DNS URIs as queries:
.CS


% set tok [dns::resolve "dns:tcl.tk;type=MX"]
% set tok [dns::resolve "dns://l.root-servers.net/www.tcl.tk"]

.CE
.PP
Reverse address lookup:
.CS


% set tok [dns::resolve 127.0.0.1]
::dns::1
% dns::name $tok
localhost
% dns::cleanup $tok

.CE
.SH REFERENCES
.IP [1]
Mockapetris, P., "Domain Names - Concepts and Facilities",
RFC 1034, November 1987.
(\fIhttp://www.ietf.org/rfc/rfc1034.txt\fR)
.IP [2]







<
<









<




<
<


<




<
<





<







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
/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.
.PP
.SH EXAMPLES
.PP
.CS


% set tok [dns::resolve www.tcl.tk]
::dns::1
% dns::status $tok
ok
% dns::address $tok
199.175.6.239
% dns::name $tok
www.tcl.tk
% dns::cleanup $tok

.CE
.PP
Using DNS URIs as queries:
.CS


% set tok [dns::resolve "dns:tcl.tk;type=MX"]
% set tok [dns::resolve "dns://l.root-servers.net/www.tcl.tk"]

.CE
.PP
Reverse address lookup:
.CS


% set tok [dns::resolve 127.0.0.1]
::dns::1
% dns::name $tok
localhost
% dns::cleanup $tok

.CE
.SH REFERENCES
.IP [1]
Mockapetris, P., "Domain Names - Concepts and Facilities",
RFC 1034, November 1987.
(\fIhttp://www.ietf.org/rfc/rfc1034.txt\fR)
.IP [2]
497
498
499
500
501
502
503
504
505
.SH KEYWORDS
DNS, domain name service, resolver, rfc 1034, rfc 1035, rfc 1886
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2002, Pat Thoyts

.fi







<

487
488
489
490
491
492
493

494
.SH KEYWORDS
DNS, domain name service, resolver, rfc 1034, rfc 1035, rfc 1886
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2002, Pat Thoyts

.fi

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

219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







219
220
221
222
223
224
225

226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
\fB::ip::prefixToNative\fR \fIprefix\fR
This command converts the string \fIprefix\fR 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.
.sp
.CS


   % ip::prefixToNative 1.1.1.0/24
   0x01010100 0xffffff00

.CE
.TP
\fB::ip::nativeToPrefix\fR \fInativeList\fR|\fInative\fR ?\fB-ipv4\fR?
This command converts from native (hex) form to dotted form.
It is the complement of \fB::ip::prefixToNative\fR.
.sp
.RS







<
<
|
|
<







348
349
350
351
352
353
354


355
356

357
358
359
360
361
362
363
\fB::ip::prefixToNative\fR \fIprefix\fR
This command converts the string \fIprefix\fR 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.
.sp
.CS


% ip::prefixToNative 1.1.1.0/24
0x01010100 0xffffff00

.CE
.TP
\fB::ip::nativeToPrefix\fR \fInativeList\fR|\fInative\fR ?\fB-ipv4\fR?
This command converts from native (hex) form to dotted form.
It is the complement of \fB::ip::prefixToNative\fR.
.sp
.RS
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
.RE
.sp
The command returns a list of addresses in dotted form if it was
called with a list of addresses. Otherwise a single address in dotted
form is returned.
.sp
.CS


   % ip::nativeToPrefix {0x01010100 0xffffff00} -ipv4
   1.1.1.0/24

.CE
.TP
\fB::ip::intToString\fR \fInumber\fR ?\fB-ipv4\fR?
This command converts from an ip address specified as integer number
to dotted form.
.sp
.CS


       ip::intToString 4294967295
       255.255.255.255

.CE
.TP
\fB::ip::toInteger\fR \fIipaddr\fR
This command converts a dotted form ip into an integer number.
.sp
.CS


   % ::ip::toInteger 1.1.1.0
   16843008

.CE
.TP
\fB::ip::toHex\fR \fIipaddr\fR
This command converts dotted form ip into a hexadecimal number.
.sp
.CS


   % ::ip::toHex 1.1.1.0
   0x01010100

.CE
.TP
\fB::ip::maskToInt\fR \fIipmask\fR
This command convert an ipmask in either dotted (255.255.255.0) form
or mask length form (24) into an integer number.
.sp
.CS


   ::ip::maskToInt 24
   4294967040

.CE
.TP
\fB::ip::broadcastAddress\fR \fIprefix\fR ?\fB-ipv4\fR?
This commands returns a broadcast address in dotted form for the given
route \fIprefix\fR, either in the form "addr/mask", or in native
form. The result is in dotted form.
.sp
.CS


   ::ip::broadcastAddress 1.1.1.0/24
   1.1.1.255

   ::ip::broadcastAddress {0x01010100 0xffffff00}
   0x010101ff

.CE
.TP
\fB::ip::maskToLength\fR \fIdottedMask\fR|\fIintegerMask\fR|\fIhexMask\fR ?\fB-ipv4\fR?
This command converts the dotted or integer form of an ipmask to
the mask length form.
.sp
.CS


   ::ip::maskToLength 0xffffff00 -ipv4
   24

   % ::ip::maskToLength 255.255.255.0
   24

.CE
.TP
\fB::ip::lengthToMask\fR \fImaskLength\fR ?\fB-ipv4\fR?
This command converts an ipmask in mask length form to its dotted
form.
.sp
.CS


   ::ip::lengthToMask 24
   255.255.255.0

.CE
.TP
\fB::ip::nextNet\fR \fIipaddr\fR \fIipmask\fR ?\fIcount\fR? ?\fB-ipv4\fR?
This command returns an ipaddress in the same position in the
\fIcount\fR next network. The default value for \fIcount\fR is
\fB1\fR.
.sp
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.
.sp
The result is in hex form.
.TP
\fB::ip::isOverlap\fR \fIprefix\fR \fIprefix\fR...
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.
.sp
.CS


  % ::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

.CE
.TP
\fB::ip::isOverlapNative\fR ?\fB-all\fR? ?\fB-inline\fR? ?\fB-ipv4\fR? \fIhexipaddr\fR \fIhexipmask\fR \fIhexiplist\fR
This command is similar to \fB::ip::isOverlap\fR, however the
arguments are in the native form, and the form of the result is under
greater control of the caller.
If the option \fB-all\fR is specified it checks all addresses for







<
<
|
|
<







<
<
|
|
<






<
<
|
|
<






<
<
|
|
<







<
<
|
|
<








<
<
|
|
<
|
|
<







<
<
|
|
<
|
|
<







<
<
|
|
<




















<
<
|
|
<
|
|
<







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
.RE
.sp
The command returns a list of addresses in dotted form if it was
called with a list of addresses. Otherwise a single address in dotted
form is returned.
.sp
.CS


% ip::nativeToPrefix {0x01010100 0xffffff00} -ipv4
1.1.1.0/24

.CE
.TP
\fB::ip::intToString\fR \fInumber\fR ?\fB-ipv4\fR?
This command converts from an ip address specified as integer number
to dotted form.
.sp
.CS


ip::intToString 4294967295
255.255.255.255

.CE
.TP
\fB::ip::toInteger\fR \fIipaddr\fR
This command converts a dotted form ip into an integer number.
.sp
.CS


% ::ip::toInteger 1.1.1.0
16843008

.CE
.TP
\fB::ip::toHex\fR \fIipaddr\fR
This command converts dotted form ip into a hexadecimal number.
.sp
.CS


% ::ip::toHex 1.1.1.0
0x01010100

.CE
.TP
\fB::ip::maskToInt\fR \fIipmask\fR
This command convert an ipmask in either dotted (255.255.255.0) form
or mask length form (24) into an integer number.
.sp
.CS


::ip::maskToInt 24
4294967040

.CE
.TP
\fB::ip::broadcastAddress\fR \fIprefix\fR ?\fB-ipv4\fR?
This commands returns a broadcast address in dotted form for the given
route \fIprefix\fR, either in the form "addr/mask", or in native
form. The result is in dotted form.
.sp
.CS


::ip::broadcastAddress 1.1.1.0/24
1.1.1.255

::ip::broadcastAddress {0x01010100 0xffffff00}
0x010101ff

.CE
.TP
\fB::ip::maskToLength\fR \fIdottedMask\fR|\fIintegerMask\fR|\fIhexMask\fR ?\fB-ipv4\fR?
This command converts the dotted or integer form of an ipmask to
the mask length form.
.sp
.CS


::ip::maskToLength 0xffffff00 -ipv4
24

% ::ip::maskToLength 255.255.255.0
24

.CE
.TP
\fB::ip::lengthToMask\fR \fImaskLength\fR ?\fB-ipv4\fR?
This command converts an ipmask in mask length form to its dotted
form.
.sp
.CS


::ip::lengthToMask 24
255.255.255.0

.CE
.TP
\fB::ip::nextNet\fR \fIipaddr\fR \fIipmask\fR ?\fIcount\fR? ?\fB-ipv4\fR?
This command returns an ipaddress in the same position in the
\fIcount\fR next network. The default value for \fIcount\fR is
\fB1\fR.
.sp
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.
.sp
The result is in hex form.
.TP
\fB::ip::isOverlap\fR \fIprefix\fR \fIprefix\fR...
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.
.sp
.CS


% ::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

.CE
.TP
\fB::ip::isOverlapNative\fR ?\fB-all\fR? ?\fB-inline\fR? ?\fB-ipv4\fR? \fIhexipaddr\fR \fIhexipmask\fR \fIhexiplist\fR
This command is similar to \fB::ip::isOverlap\fR, however the
arguments are in the native form, and the form of the result is under
greater control of the caller.
If the option \fB-all\fR is specified it checks all addresses for
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
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
.TP
-all -inline
A list containing the prefixes of all overlaps found, or an empty list
if there are none.
.RE
.sp
.CS


  % ::ip::isOverlapNative 0x01010100 0xffffff00 {{0x02010001 0xffffffff}}
  0

  % ::ip::isOverlapNative 0x01010100 0xffffff00 {{0x02010001 0xffffffff} {0x01010101 0xffffffff}}
  2

.CE
.TP
\fB::ip::ipToLayer2Multicast\fR \fIipaddr\fR
This command an converts ipv4 address in dotted form into a layer 2
multicast address, also in dotted form.
.sp
.CS


  % ::ip::ipToLayer2Multicast 224.0.0.2
  01.00.5e.00.00.02

.CE
.TP
\fB::ip::ipHostFromPrefix\fR \fIprefix\fR ?\fB-exclude\fR \fIprefixExcludeList\fR?
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 \fIprefixExcludeList\fR.
The result is an ip address in dotted form.
.sp
.CS


  %::ip::ipHostFromPrefix  1.1.1.5/24
  1.1.1.1

  %::ip::ipHostFromPrefix  1.1.1.1/32
  1.1.1.1

.CE
.TP
\fB::ip::reduceToAggregates\fR \fIprefixlist\fR
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.
.sp
.CS


  % ::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

.CE
.TP
\fB::ip::longestPrefixMatch\fR \fIipaddr\fR \fIprefixlist\fR ?\fB-ipv4\fR?
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.
.sp
.CS


  % ::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

.CE
.TP
\fB::ip::collapse\fR \fIprefixlist\fR
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.
.sp
This is different from \fB::ip::reduceToAggregates\fR 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.
.sp
.CS


% ::ip::collapse {1.2.2.0/24 1.2.3.0/24}
1.2.2.0/23

.CE
.TP
\fB::ip::subtract\fR \fIprefixlist\fR
This command takes a list of prefixes, some of which are prefixed by a
dash. These latter \fInegative\fR prefixes are used to punch holes
into the ranges described by the other, \fIpositive\fR,
prefixes. I.e. the negative prefixes are subtracted frrom the positive
ones, resulting in a larger list of describes describing the covered
ranges only as positives.
.PP
.SH EXAMPLES
.PP
.CS


% ip::version ::1
6
% ip::version 127.0.0.1
4

.CE
.CS


% ip::normalize 127/8
127.0.0.0/8
% ip::contract 192.168.0.0
192.168
%
% ip::normalize fec0::1
fec0:0000:0000:0000:0000:0000:0000:0001
% ip::contract fec0:0000:0000:0000:0000:0000:0000:0001
fec0::1

.CE
.CS


% ip::equal 192.168.0.4/16 192.168.0.0/16
1
% ip::equal fec0::1/10 fec0::fe01/10
1

.CE
.SH REFERENCES
.IP [1]
Postel, J. "Internet Protocol." RFC 791,  September 1981,
(\fIhttp://www.ietf.org/rfc/rfc791.txt\fR)
.IP [2]
Hinden, R. and Deering, S.,







<
<
|
|
<
|
|
<







<
<
|
|
<









<
<
|
|
<
|
|
<









<
<
|
|
<











<
<
|
|
<













<
<


<













<
<




<


<
<









<


<
<




<







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
594


595
596
597
598

599
600
601
602
603
604
605
.TP
-all -inline
A list containing the prefixes of all overlaps found, or an empty list
if there are none.
.RE
.sp
.CS


% ::ip::isOverlapNative 0x01010100 0xffffff00 {{0x02010001 0xffffffff}}
0

% ::ip::isOverlapNative 0x01010100 0xffffff00 {{0x02010001 0xffffffff} {0x01010101 0xffffffff}}
2

.CE
.TP
\fB::ip::ipToLayer2Multicast\fR \fIipaddr\fR
This command an converts ipv4 address in dotted form into a layer 2
multicast address, also in dotted form.
.sp
.CS


% ::ip::ipToLayer2Multicast 224.0.0.2
01.00.5e.00.00.02

.CE
.TP
\fB::ip::ipHostFromPrefix\fR \fIprefix\fR ?\fB-exclude\fR \fIprefixExcludeList\fR?
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 \fIprefixExcludeList\fR.
The result is an ip address in dotted form.
.sp
.CS


%::ip::ipHostFromPrefix  1.1.1.5/24
1.1.1.1

%::ip::ipHostFromPrefix  1.1.1.1/32
1.1.1.1

.CE
.TP
\fB::ip::reduceToAggregates\fR \fIprefixlist\fR
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.
.sp
.CS


% ::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

.CE
.TP
\fB::ip::longestPrefixMatch\fR \fIipaddr\fR \fIprefixlist\fR ?\fB-ipv4\fR?
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.
.sp
.CS


% ::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

.CE
.TP
\fB::ip::collapse\fR \fIprefixlist\fR
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.
.sp
This is different from \fB::ip::reduceToAggregates\fR 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.
.sp
.CS


% ::ip::collapse {1.2.2.0/24 1.2.3.0/24}
1.2.2.0/23

.CE
.TP
\fB::ip::subtract\fR \fIprefixlist\fR
This command takes a list of prefixes, some of which are prefixed by a
dash. These latter \fInegative\fR prefixes are used to punch holes
into the ranges described by the other, \fIpositive\fR,
prefixes. I.e. the negative prefixes are subtracted frrom the positive
ones, resulting in a larger list of describes describing the covered
ranges only as positives.
.PP
.SH EXAMPLES
.PP
.CS


% ip::version ::1
6
% ip::version 127.0.0.1
4

.CE
.CS


% ip::normalize 127/8
127.0.0.0/8
% ip::contract 192.168.0.0
192.168
%
% ip::normalize fec0::1
fec0:0000:0000:0000:0000:0000:0000:0001
% ip::contract fec0:0000:0000:0000:0000:0000:0000:0001
fec0::1

.CE
.CS


% ip::equal 192.168.0.4/16 192.168.0.0/16
1
% ip::equal fec0::1/10 fec0::fe01/10
1

.CE
.SH REFERENCES
.IP [1]
Postel, J. "Internet Protocol." RFC 791,  September 1981,
(\fIhttp://www.ietf.org/rfc/rfc791.txt\fR)
.IP [2]
Hinden, R. and Deering, S.,
685
686
687
688
689
690
691
692
693
internet address, ip, ipv4, ipv6, rfc 3513
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2004, Pat Thoyts
Copyright (c) 2005 Aamer Akhter <[email protected]>

.fi







<

622
623
624
625
626
627
628

629
internet address, ip, ipv4, ipv6, rfc 3513
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2004, Pat Thoyts
Copyright (c) 2005 Aamer Akhter <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
The basic unit \fBdocstrip\fR operates on are the \fIlines\fR 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 \fIcode lines\fR (which are copied and
do not begin with a percent character) and \fIcomment lines\fR
(which begin with a percent character and are not copied).
.CS


   docstrip::extract [join {
     {% comment}
     {% more comment !"#$%&/(}
     {some command}
     { % blah $blah "Not a comment."}
     {% abc; this is comment}
     {# def; this is code}
     {ghi}
     {% jkl}
   } \\n] {}

.CE
returns the same sequence of lines as
.CS


   join {
     {some command}
     { % blah $blah "Not a comment."}
     {# def; this is code}
     {ghi} ""
   } \\n

.CE
It does not matter to \fBdocstrip\fR what format is used for the
documentation in the comment lines, but in order to do better than
plain text comments, one typically uses some markup language. Most
commonly LaTeX is used, as that is a very established standard and
also provides the best support for mathematical formulae, but the
\fBdocstrip::util\fR package also gives some support for







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



<
<
|
|
|
|
|
|
<







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
The basic unit \fBdocstrip\fR operates on are the \fIlines\fR 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 \fIcode lines\fR (which are copied and
do not begin with a percent character) and \fIcomment lines\fR
(which begin with a percent character and are not copied).
.CS


docstrip::extract [join {
{% comment}
{% more comment !"#$%&/(}
{some command}
{ % blah $blah "Not a comment."}
{% abc; this is comment}
{# def; this is code}
{ghi}
{% jkl}
} \\n] {}

.CE
returns the same sequence of lines as
.CS


join {
{some command}
{ % blah $blah "Not a comment."}
{# def; this is code}
{ghi} ""
} \\n

.CE
It does not matter to \fBdocstrip\fR what format is used for the
documentation in the comment lines, but in order to do better than
plain text comments, one typically uses some markup language. Most
commonly LaTeX is used, as that is a very established standard and
also provides the best support for mathematical formulae, but the
\fBdocstrip::util\fR package also gives some support for
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
category is by far the most common.
.PP
Ordinary guard lines conditions extraction of the code line(s) they
guard by the value of a boolean expression; the guarded block of
code lines will only be included if the expression evaluates to true.
The syntax of an ordinary guard line is one of
.CS


    '%' '<' STARSLASH EXPRESSION '>'
    '%' '<' PLUSMINUS EXPRESSION '>' CODE

.CE
where
.CS


    STARSLASH  ::=  '*' | '/'
    PLUSMINUS  ::=  | '+' | '-'
    EXPRESSION ::= SECONDARY | SECONDARY ',' EXPRESSION
                 | SECONDARY '|' EXPRESSION
    SECONDARY  ::= PRIMARY | PRIMARY '&' SECONDARY
    PRIMARY    ::= TERMINAL | '!' PRIMARY | '(' EXPRESSION ')'
    CODE       ::= { any character except end-of-line }

.CE
Comma and vertical bar both denote 'or'. Ampersand denotes 'and'.
Exclamation mark denotes 'not'. A TERMINAL can be any nonempty string
of characters not containing '>', '&', '|', comma, '(', or ')',
although the \fBdocstrip\fR manual is a bit restrictive and only
guarantees proper operation for strings of letters (although even
the LaTeX core sources make heavy use also of digits in TERMINALs).
The second argument of \fBdocstrip::extract\fR is the list of those
TERMINALs that should count as having the value 'true'; all other
TERMINALs count as being 'false' when guard expressions are evaluated.
.PP
In the case of a '%<*\fIEXPRESSION\fR>' guard, the lines guarded are
all lines up to the next '%</\fIEXPRESSION\fR>' guard with the same
\fIEXPRESSION\fR (compared as strings). The blocks of code delimited
by such '*' and '/' guard lines must be properly nested.
.CS


   set text [join {
      {begin}
      {%<*foo>}
      {1}
      {%<*bar>}
      {2}
      {%</bar>}
      {%<*!bar>}
      {3}
      {%</!bar>}
      {4}
      {%</foo>}
      {5}
      {%<*bar>}
      {6}
      {%</bar>}
      {end}
   } \\n]
   set res [docstrip::extract $text foo]
   append res [docstrip::extract $text {foo bar}]
   append res [docstrip::extract $text bar]

.CE
sets $res to the result of
.CS


   join {
      {begin}
      {1}
      {3}
      {4}
      {5}
      {end}
      {begin}
      {1}
      {2}
      {4}
      {5}
      {6}
      {end}
      {begin}
      {5}
      {6}
      {end} ""
   } \\n

.CE
In guard lines without a '*', '/', '+', or '-' modifier after the
\'%<', the guard applies only to the CODE following the '>' on that
single line. A '+' modifier is equivalent to no modifier. A '-'
modifier is like the case with no modifier, but the expression is
implicitly negated, i.e., the CODE of a '%<-' guard line is only
included if the expression evaluates to false.
.PP
Metacomment lines are "comment lines which should not be stripped
away", but be extracted like code lines; these are sometimes used for
copyright notices and similar material. The '%%' prefix is however
not kept, but substituted by the current \fB-metaprefix\fR, which
is customarily set to some "comment until end of line" character (or
character sequence) of the language of the code being extracted.
.CS


   set text [join {
      {begin}
      {%<foo> foo}
      {%<+foo>plusfoo}
      {%<-foo>minusfoo}
      {middle}
      {%% some metacomment}
      {%<*foo>}
      {%%another metacomment}
      {%</foo>}
      {end}
   } \\n]
   set res [docstrip::extract $text foo -metaprefix {# }]
   append res [docstrip::extract $text bar -metaprefix {#}]

.CE
sets $res to the result of
.CS


   join {
      {begin}
      { foo}
      {plusfoo}
      {middle}
      {#  some metacomment}
      {# another metacomment}
      {end}
      {begin}
      {minusfoo}
      {middle}
      {# some metacomment}
      {end} ""
   } \\n

.CE
Verbatim guards can be used to force code line
interpretation of a block of lines even if some of them happen to look
like any other type of lines to docstrip. A verbatim guard has the
form '%<<\fIEND-TAG\fR' and the verbatim block is terminated by the
first line that is exactly '%\fIEND-TAG\fR'.
.CS


   set text [join {
      {begin}
      {%<*myblock>}
      {some stupid()}
      {   #computer<program>}
      {%<<QQQ-98765}
      {% These three lines are copied verbatim (including percents}
      {%% even if -metaprefix is something different than %%).}
      {%</myblock>}
      {%QQQ-98765}
      {   using*strange@programming<language>}
      {%</myblock>}
      {end}
   } \\n]
   set res [docstrip::extract $text myblock -metaprefix {# }]
   append res [docstrip::extract $text {}]

.CE
sets $res to the result of
.CS


   join {
      {begin}
      {some stupid()}
      {   #computer<program>}
      {% These three lines are copied verbatim (including percents}
      {%% even if -metaprefix is something different than %%).}
      {%</myblock>}
      {   using*strange@programming<language>}
      {end}
      {begin}
      {end} ""
   } \\n

.CE
The processing of verbatim guards takes place also inside blocks of
lines which due to some outer block guard will not be copied.
.PP
The final piece of \fBdocstrip\fR 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







<
<
|
|
<



<
<
|
|
|
|
|
|
|
<
















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



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















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



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







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



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







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
category is by far the most common.
.PP
Ordinary guard lines conditions extraction of the code line(s) they
guard by the value of a boolean expression; the guarded block of
code lines will only be included if the expression evaluates to true.
The syntax of an ordinary guard line is one of
.CS


\'%' '<' STARSLASH EXPRESSION '>'
\'%' '<' PLUSMINUS EXPRESSION '>' CODE

.CE
where
.CS


STARSLASH  ::=  '*' | '/'
PLUSMINUS  ::=  | '+' | '-'
EXPRESSION ::= SECONDARY | SECONDARY ',' EXPRESSION
| SECONDARY '|' EXPRESSION
SECONDARY  ::= PRIMARY | PRIMARY '&' SECONDARY
PRIMARY    ::= TERMINAL | '!' PRIMARY | '(' EXPRESSION ')'
CODE       ::= { any character except end-of-line }

.CE
Comma and vertical bar both denote 'or'. Ampersand denotes 'and'.
Exclamation mark denotes 'not'. A TERMINAL can be any nonempty string
of characters not containing '>', '&', '|', comma, '(', or ')',
although the \fBdocstrip\fR manual is a bit restrictive and only
guarantees proper operation for strings of letters (although even
the LaTeX core sources make heavy use also of digits in TERMINALs).
The second argument of \fBdocstrip::extract\fR is the list of those
TERMINALs that should count as having the value 'true'; all other
TERMINALs count as being 'false' when guard expressions are evaluated.
.PP
In the case of a '%<*\fIEXPRESSION\fR>' guard, the lines guarded are
all lines up to the next '%</\fIEXPRESSION\fR>' guard with the same
\fIEXPRESSION\fR (compared as strings). The blocks of code delimited
by such '*' and '/' guard lines must be properly nested.
.CS


set text [join {
{begin}
{%<*foo>}
{1}
{%<*bar>}
{2}
{%</bar>}
{%<*!bar>}
{3}
{%</!bar>}
{4}
{%</foo>}
{5}
{%<*bar>}
{6}
{%</bar>}
{end}
} \\n]
set res [docstrip::extract $text foo]
append res [docstrip::extract $text {foo bar}]
append res [docstrip::extract $text bar]

.CE
sets $res to the result of
.CS


join {
{begin}
{1}
{3}
{4}
{5}
{end}
{begin}
{1}
{2}
{4}
{5}
{6}
{end}
{begin}
{5}
{6}
{end} ""
} \\n

.CE
In guard lines without a '*', '/', '+', or '-' modifier after the
\'%<', the guard applies only to the CODE following the '>' on that
single line. A '+' modifier is equivalent to no modifier. A '-'
modifier is like the case with no modifier, but the expression is
implicitly negated, i.e., the CODE of a '%<-' guard line is only
included if the expression evaluates to false.
.PP
Metacomment lines are "comment lines which should not be stripped
away", but be extracted like code lines; these are sometimes used for
copyright notices and similar material. The '%%' prefix is however
not kept, but substituted by the current \fB-metaprefix\fR, which
is customarily set to some "comment until end of line" character (or
character sequence) of the language of the code being extracted.
.CS


set text [join {
{begin}
{%<foo> foo}
{%<+foo>plusfoo}
{%<-foo>minusfoo}
{middle}
{%% some metacomment}
{%<*foo>}
{%%another metacomment}
{%</foo>}
{end}
} \\n]
set res [docstrip::extract $text foo -metaprefix {# }]
append res [docstrip::extract $text bar -metaprefix {#}]

.CE
sets $res to the result of
.CS


join {
{begin}
{ foo}
{plusfoo}
{middle}
{#  some metacomment}
{# another metacomment}
{end}
{begin}
{minusfoo}
{middle}
{# some metacomment}
{end} ""
} \\n

.CE
Verbatim guards can be used to force code line
interpretation of a block of lines even if some of them happen to look
like any other type of lines to docstrip. A verbatim guard has the
form '%<<\fIEND-TAG\fR' and the verbatim block is terminated by the
first line that is exactly '%\fIEND-TAG\fR'.
.CS


set text [join {
{begin}
{%<*myblock>}
{some stupid()}
{   #computer<program>}
{%<<QQQ-98765}
{% These three lines are copied verbatim (including percents}
{%% even if -metaprefix is something different than %%).}
{%</myblock>}
{%QQQ-98765}
{   using*strange@programming<language>}
{%</myblock>}
{end}
} \\n]
set res [docstrip::extract $text myblock -metaprefix {# }]
append res [docstrip::extract $text {}]

.CE
sets $res to the result of
.CS


join {
{begin}
{some stupid()}
{   #computer<program>}
{% These three lines are copied verbatim (including percents}
{%% even if -metaprefix is something different than %%).}
{%</myblock>}
{   using*strange@programming<language>}
{end}
{begin}
{end} ""
} \\n

.CE
The processing of verbatim guards takes place also inside blocks of
lines which due to some outer block guard will not be copied.
.PP
The final piece of \fBdocstrip\fR 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
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
LaTeX-based "\fI.dtx\fR" files.
.PP
Master source files with "\fI.dtx\fR" extension are usually set up so
that they can be typeset directly by \fBlatex\fR without any
support from other files. This is achieved by beginning the file
with the lines
.CS


   % \\iffalse
   %<*driver>
   \\documentclass{tclldoc}
   \\begin{document}
   \\DocInput{\fIfilename.dtx\fR}
   \\end{document}
   %</driver>
   % \\fi

.CE
or some variation thereof. The trick is that the file gets read twice.
With normal LaTeX reading rules, the first two lines are comments and
therefore ignored. The third line is the document preamble, the fourth
line begins the document body, and the sixth line ends the document,
so LaTeX stops there — non-comments below that point in
the file are never subjected to the normal LaTeX reading rules. Before







<
<
|
|
|
|
|
|
|
|
<







606
607
608
609
610
611
612


613
614
615
616
617
618
619
620

621
622
623
624
625
626
627
LaTeX-based "\fI.dtx\fR" files.
.PP
Master source files with "\fI.dtx\fR" extension are usually set up so
that they can be typeset directly by \fBlatex\fR without any
support from other files. This is achieved by beginning the file
with the lines
.CS


% \\iffalse
%<*driver>
\\documentclass{tclldoc}
\\begin{document}
\\DocInput{\fIfilename.dtx\fR}
\\end{document}
%</driver>
% \\fi

.CE
or some variation thereof. The trick is that the file gets read twice.
With normal LaTeX reading rules, the first two lines are comments and
therefore ignored. The third line is the document preamble, the fourth
line begins the document body, and the sixth line ends the document,
so LaTeX stops there — non-comments below that point in
the file are never subjected to the normal LaTeX reading rules. Before
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
It is not necessary to use the tclldoc document class, but that does
provide a number of features that are convenient for "\fI.dtx\fR"
files containing Tcl code. More information on this matter can be
found in the references above.
.SH "SEE ALSO"
docstrip_util
.SH KEYWORDS
.dtx, LaTeX, docstrip, documentation, literate programming, source
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2003–2010 Lars Hellström <Lars dot Hellstrom at residenset dot net>

.fi







|





<

644
645
646
647
648
649
650
651
652
653
654
655
656

657
It is not necessary to use the tclldoc document class, but that does
provide a number of features that are convenient for "\fI.dtx\fR"
files containing Tcl code. More information on this matter can be
found in the references above.
.SH "SEE ALSO"
docstrip_util
.SH KEYWORDS
\\.dtx, LaTeX, docstrip, documentation, literate programming, source
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2003–2010 Lars Hellström <Lars dot Hellstrom at residenset dot net>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
This supports both the style of collecting all catalogue lines in one
place and the style of putting each catalogue line in close proximity
of the code that it declares.
.PP
Putting catalogue entries next to the code they declare may look as
follows
.CS


%    First there's the catalogue entry
%    \\begin{tcl}
%<docstrip.tcl::catalogue>pkgProvide foo::bar 1.0 {foobar load}
%    \\end{tcl}
%    second a metacomment used to include a copyright message
%    \\begin{macrocode}
%<*foobar>
%% This file is placed in the public domain.
%    \\end{macrocode}
%    third the package implementation
%    \\begin{tcl}
namespace eval foo::bar {
   # ... some clever piece of Tcl code elided ...
%    \\end{tcl}
%    which at some point may have variant code to make use of a
%    |load|able extension
%    \\begin{tcl}
%<*load>
   load [file rootname [info script]][info sharedlibextension]
%</load>
%<*!load>
   # ... even more clever scripted counterpart of the extension
   # also elided ...
%</!load>
}
%</foobar>
%    \\end{tcl}
%    and that's it!

.CE
The corresponding set-up with \fBpkgIndex\fR would be
.CS


%    First there's the catalogue entry
%    \\begin{tcl}
%<docstrip.tcl::catalogue>pkgIndex foobar load
%    \\end{tcl}
%    second a metacomment used to include a copyright message
%    \\begin{tcl}
%<*foobar>
%% This file is placed in the public domain.
%    \\end{tcl}
%    third the package implementation
%    \\begin{tcl}
package provide foo::bar 1.0
namespace eval foo::bar {
   # ... some clever piece of Tcl code elided ...
%    \\end{tcl}
%    which at some point may have variant code to make use of a
%    |load|able extension
%    \\begin{tcl}
%<*load>
   load [file rootname [info script]][info sharedlibextension]
%</load>
%<*!load>
   # ... even more clever scripted counterpart of the extension
   # also elided ...
%</!load>
}
%</foobar>
%    \\end{tcl}
%    and that's it!

.CE
.TP
\fBdocstrip::util::index_from_catalogue\fR \fIdir\fR \fIpattern\fR ?\fIoption\fR \fIvalue\fR ...?
This command is a sibling of the standard \fBpkg_mkIndex\fR
command, in that it adds package entries to "\fIpkgIndex.tcl\fR"
files. The difference is that it indexes \fBdocstrip\fR-style
source files rather than raw "\fI.tcl\fR" or loadable library files.







<
<












|





|


|
|





<



<
<













|





|


|
|





<







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
This supports both the style of collecting all catalogue lines in one
place and the style of putting each catalogue line in close proximity
of the code that it declares.
.PP
Putting catalogue entries next to the code they declare may look as
follows
.CS


%    First there's the catalogue entry
%    \\begin{tcl}
%<docstrip.tcl::catalogue>pkgProvide foo::bar 1.0 {foobar load}
%    \\end{tcl}
%    second a metacomment used to include a copyright message
%    \\begin{macrocode}
%<*foobar>
%% This file is placed in the public domain.
%    \\end{macrocode}
%    third the package implementation
%    \\begin{tcl}
namespace eval foo::bar {
# ... some clever piece of Tcl code elided ...
%    \\end{tcl}
%    which at some point may have variant code to make use of a
%    |load|able extension
%    \\begin{tcl}
%<*load>
load [file rootname [info script]][info sharedlibextension]
%</load>
%<*!load>
# ... even more clever scripted counterpart of the extension
# also elided ...
%</!load>
}
%</foobar>
%    \\end{tcl}
%    and that's it!

.CE
The corresponding set-up with \fBpkgIndex\fR would be
.CS


%    First there's the catalogue entry
%    \\begin{tcl}
%<docstrip.tcl::catalogue>pkgIndex foobar load
%    \\end{tcl}
%    second a metacomment used to include a copyright message
%    \\begin{tcl}
%<*foobar>
%% This file is placed in the public domain.
%    \\end{tcl}
%    third the package implementation
%    \\begin{tcl}
package provide foo::bar 1.0
namespace eval foo::bar {
# ... some clever piece of Tcl code elided ...
%    \\end{tcl}
%    which at some point may have variant code to make use of a
%    |load|able extension
%    \\begin{tcl}
%<*load>
load [file rootname [info script]][info sharedlibextension]
%</load>
%<*!load>
# ... even more clever scripted counterpart of the extension
# also elided ...
%</!load>
}
%</foobar>
%    \\end{tcl}
%    and that's it!

.CE
.TP
\fBdocstrip::util::index_from_catalogue\fR \fIdir\fR \fIpattern\fR ?\fIoption\fR \fIvalue\fR ...?
This command is a sibling of the standard \fBpkg_mkIndex\fR
command, in that it adds package entries to "\fIpkgIndex.tcl\fR"
files. The difference is that it indexes \fBdocstrip\fR-style
source files rather than raw "\fI.tcl\fR" or loadable library files.
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
An existing file of the same name as one to be created will be
overwritten.
.TP
\fBdocstrip::util::classical_preamble\fR \fImetaprefix\fR \fImessage\fR \fItarget\fR ?\fIsource\fR \fIterminals\fR ...?
This command returns a preamble in the classical
\fBdocstrip\fR style
.CS


##
## This is `TARGET',
## generated by the docstrip::util package.
##
## The original source files were:
##
## SOURCE (with options: `foo,bar')
##
## Some message line 1
## line2
## line3

.CE
.IP
if called as
.CS


docstrip::util::classical_preamble {##}\\
  "\\nSome message line 1\\nline2\\nline3" TARGET SOURCE {foo bar}

.CE
.IP
The command supports preambles for files generated from multiple
sources, even though \fBmodules_from_catalogue\fR at present does
not need that.
.TP
\fBdocstrip::util::classical_postamble\fR \fImetaprefix\fR \fImessage\fR \fItarget\fR ?\fIsource\fR \fIterminals\fR ...?
This command returns a postamble in the classical
\fBdocstrip\fR style
.CS


## Some message line 1
## line2
## line3
##
## End of file `TARGET'.

.CE
.IP
if called as
.CS


docstrip::util::classical_postamble {##}\\
  "Some message line 1\\nline2\\nline3" TARGET SOURCE {foo bar}

.CE
.IP
In other words, the \fIsource\fR and \fIterminals\fR arguments are
ignored, but supported for symmetry with \fBclassical_preamble\fR.
.TP
\fBdocstrip::util::packages_provided\fR \fItext\fR ?\fIsetup-script\fR?
This command returns a list where every even index element is the







<
<











<




<
<

|
<










<
<





<




<
<

|
<







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
An existing file of the same name as one to be created will be
overwritten.
.TP
\fBdocstrip::util::classical_preamble\fR \fImetaprefix\fR \fImessage\fR \fItarget\fR ?\fIsource\fR \fIterminals\fR ...?
This command returns a preamble in the classical
\fBdocstrip\fR style
.CS


##
## This is `TARGET',
## generated by the docstrip::util package.
##
## The original source files were:
##
## SOURCE (with options: `foo,bar')
##
## Some message line 1
## line2
## line3

.CE
.IP
if called as
.CS


docstrip::util::classical_preamble {##}\\
"\\nSome message line 1\\nline2\\nline3" TARGET SOURCE {foo bar}

.CE
.IP
The command supports preambles for files generated from multiple
sources, even though \fBmodules_from_catalogue\fR at present does
not need that.
.TP
\fBdocstrip::util::classical_postamble\fR \fImetaprefix\fR \fImessage\fR \fItarget\fR ?\fIsource\fR \fIterminals\fR ...?
This command returns a postamble in the classical
\fBdocstrip\fR style
.CS


## Some message line 1
## line2
## line3
##
## End of file `TARGET'.

.CE
.IP
if called as
.CS


docstrip::util::classical_postamble {##}\\
"Some message line 1\\nline2\\nline3" TARGET SOURCE {foo bar}

.CE
.IP
In other words, the \fIsource\fR and \fIterminals\fR arguments are
ignored, but supported for symmetry with \fBclassical_preamble\fR.
.TP
\fBdocstrip::util::packages_provided\fR \fItext\fR ?\fIsetup-script\fR?
This command returns a list where every even index element is the
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
context of the \fBpackages_provided\fR procedure just before the
\fItext\fR is processed. At that time, the name of the slave
command for the safe interpreter that will do this processing is
kept in the local variable \fBc\fR. To for example copy the
contents of the \fB::env\fR array to the safe interpreter, one
might use a \fIsetup-script\fR of
.CS

  $c eval [list array set env [array get ::env]]
.CE
.PP
.SH "SOURCE PROCESSING COMMANDS"
Unlike the previous group of commands, which would use
\fBdocstrip::extract\fR to extract some code lines and then process
those further, the following commands operate on text consisting of
all types of lines.







<
|







602
603
604
605
606
607
608

609
610
611
612
613
614
615
616
context of the \fBpackages_provided\fR procedure just before the
\fItext\fR is processed. At that time, the name of the slave
command for the safe interpreter that will do this processing is
kept in the local variable \fBc\fR. To for example copy the
contents of the \fB::env\fR array to the safe interpreter, one
might use a \fIsetup-script\fR of
.CS

$c eval [list array set env [array get ::env]]
.CE
.PP
.SH "SOURCE PROCESSING COMMANDS"
Unlike the previous group of commands, which would use
\fBdocstrip::extract\fR to extract some code lines and then process
those further, the following commands operate on text consisting of
all types of lines.
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
\fBemph\fRasised.
.RE
.IP
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
%   must be integers and returns their greatest common divisor.
proc gcd {a b} {
%   The first step is to take the absolute values of the arguments.
%   This relieves us of having to worry about how signs will be treated
%   by the remainder operation.
   set a [expr {abs($a)}]
   set b [expr {abs($b)}]
%   The next line does all of Euclid's algorithm! We can make do
%   without a temporary variable, since $a is substituted before the
%   [lb]set a $b[rb] and thus continues to hold a reference to the
%   "old" value of [var a].
   while {$b>0} { set b [expr { $a % [set a $b] }] }
%   In Tcl 8.3 we might want to use [cmd set] instead of [cmd return]
%   to get the slight advantage of byte-compilation.
%<tcl83>  set a
%<!tcl83>   return $a
}
% [list_end]
%
% [manpage_end]

.CE
.IP
If the above text is fed through \fBdocstrip::util::ddt2man\fR then
the result will be a syntactically correct \fBdoctools\fR
manpage, even though its purpose is a bit different.
.sp
It is suggested that master source code files with \fBdoctools\fR







<
<













|
|




|








<







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
\fBemph\fRasised.
.RE
.IP
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
%   must be integers and returns their greatest common divisor.
proc gcd {a b} {
%   The first step is to take the absolute values of the arguments.
%   This relieves us of having to worry about how signs will be treated
%   by the remainder operation.
set a [expr {abs($a)}]
set b [expr {abs($b)}]
%   The next line does all of Euclid's algorithm! We can make do
%   without a temporary variable, since $a is substituted before the
%   [lb]set a $b[rb] and thus continues to hold a reference to the
%   "old" value of [var a].
while {$b>0} { set b [expr { $a % [set a $b] }] }
%   In Tcl 8.3 we might want to use [cmd set] instead of [cmd return]
%   to get the slight advantage of byte-compilation.
%<tcl83>  set a
%<!tcl83>   return $a
}
% [list_end]
%
% [manpage_end]

.CE
.IP
If the above text is fed through \fBdocstrip::util::ddt2man\fR then
the result will be a syntactically correct \fBdoctools\fR
manpage, even though its purpose is a bit different.
.sp
It is suggested that master source code files with \fBdoctools\fR
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
a comment in the header of each hunk specifies which case is at
hand. It is normally necessary to manually review both the return
value from \fBpatch\fR and the patched text itself, as this command
cannot adjust comment lines to match new content.
.sp
An example use would look like
.CS


set sourceL [split [docstrip::util::thefile from.dtx] \\n]
set terminals {foo bar baz}
set fromtext [docstrip::util::thefile from.tcl]
set difftext [exec diff --unified from.tcl to.tcl]
set leftover [docstrip::util::patch sourceL $terminals $fromtext\\
  [docstrip::util::import_unidiff $difftext] -metaprefix {#}]
set F [open to.dtx w]; puts $F [join $sourceL \\n]; close $F
return $leftover

.CE
.IP
Here, "\fIfrom.dtx\fR" was used as source for "\fIfrom.tcl\fR", which
someone modified into "\fIto.tcl\fR". We're trying to construct a
"\fIto.dtx\fR" which can be used as source for "\fIto.tcl\fR".
.TP
\fBdocstrip::util::thefile\fR \fIfilename\fR ?\fIoption\fR \fIvalue\fR ...?







<
<





|


<







807
808
809
810
811
812
813


814
815
816
817
818
819
820
821

822
823
824
825
826
827
828
a comment in the header of each hunk specifies which case is at
hand. It is normally necessary to manually review both the return
value from \fBpatch\fR and the patched text itself, as this command
cannot adjust comment lines to match new content.
.sp
An example use would look like
.CS


set sourceL [split [docstrip::util::thefile from.dtx] \\n]
set terminals {foo bar baz}
set fromtext [docstrip::util::thefile from.tcl]
set difftext [exec diff --unified from.tcl to.tcl]
set leftover [docstrip::util::patch sourceL $terminals $fromtext\\
[docstrip::util::import_unidiff $difftext] -metaprefix {#}]
set F [open to.dtx w]; puts $F [join $sourceL \\n]; close $F
return $leftover

.CE
.IP
Here, "\fIfrom.dtx\fR" was used as source for "\fIfrom.tcl\fR", which
someone modified into "\fIto.tcl\fR". We're trying to construct a
"\fIto.dtx\fR" which can be used as source for "\fIto.tcl\fR".
.TP
\fBdocstrip::util::thefile\fR \fIfilename\fR ?\fIoption\fR \fIvalue\fR ...?
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
is \fB-\fR for lines only in the "from" file, \fB+\fR for lines
that are only in the "to" file, and \fB0\fR for lines that are
in both.
.PP
.SH "SEE ALSO"
docstrip, doctools, doctools_fmt
.SH KEYWORDS
.ddt, Tcl module, catalogue, diff, docstrip, doctools, documentation, literate programming, module, package indexing, patch, source
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2003–2010 Lars Hellström <Lars dot Hellstrom at residenset dot net>

.fi







|





<

851
852
853
854
855
856
857
858
859
860
861
862
863

864
is \fB-\fR for lines only in the "from" file, \fB+\fR for lines
that are only in the "to" file, and \fB0\fR for lines that are
in both.
.PP
.SH "SEE ALSO"
docstrip, doctools, doctools_fmt
.SH KEYWORDS
\\.ddt, Tcl module, catalogue, diff, docstrip, doctools, documentation, literate programming, module, package indexing, patch, source
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2003–2010 Lars Hellström <Lars dot Hellstrom at residenset dot net>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
describing the date of the entry, its author, and the comments made,
in this order. The last item in each element/entry, the comments, is a
list of sections. Each section is described by a list containing two
elements, a list of file names, and a string containing the true
comment associated with the files of the section.
.sp
.CS


    {
	{
	    date
	    author
	    {
		{
		    {file ...}
		    commenttext
		}
		...
	    }
	}
	{...}
    }

.CE
.TP
\fB::doctools::changelog::flatten\fR \fIentries\fR
This command converts a list of entries as generated by
\fBchange::scan\fR above into a simpler list of plain
text blocks each containing all the information of a
single entry.







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







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
describing the date of the entry, its author, and the comments made,
in this order. The last item in each element/entry, the comments, is a
list of sections. Each section is described by a list containing two
elements, a list of file names, and a string containing the true
comment associated with the files of the section.
.sp
.CS
{
{


date
author
{
{
{file ...}
commenttext
}
\...
}
}
{...}
}

.CE
.TP
\fB::doctools::changelog::flatten\fR \fIentries\fR
This command converts a list of entries as generated by
\fBchange::scan\fR above into a simpler list of plain
text blocks each containing all the information of a
single entry.
328
329
330
331
332
333
334
335
336
.SH KEYWORDS
changelog, doctools, emacs
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2003-2013 Andreas Kupries <[email protected]>

.fi







<

324
325
326
327
328
329
330

331
.SH KEYWORDS
changelog, doctools, emacs
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2003-2013 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
325
326
327
328
329
330
331
332
333
.SH KEYWORDS
changelog, cvs, cvs log, emacs, log
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2003-2008 Andreas Kupries <[email protected]>

.fi







<

324
325
326
327
328
329
330

331
.SH KEYWORDS
changelog, cvs, cvs log, emacs, log
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2003-2008 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
559
560
561
562
563
564
565
566
567
.SH KEYWORDS
HTML, TMML, conversion, docidx, documentation, index, keyword index, latex, manpage, markup, nroff, wiki
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2003-2010 Andreas Kupries <[email protected]>

.fi







<

558
559
560
561
562
563
564

565
.SH KEYWORDS
HTML, TMML, conversion, docidx, documentation, index, keyword index, latex, manpage, markup, nroff, wiki
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2003-2010 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
311
312
313
314
315
316
317
318
319
.SH KEYWORDS
index, keyword index, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi







<

310
311
312
313
314
315
316

317
.SH KEYWORDS
index, keyword index, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
354
355
356
357
358
359
360
361
362
.SH KEYWORDS
docidx commands, docidx language, docidx markup, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi







<

353
354
355
356
357
358
359

360
.SH KEYWORDS
docidx commands, docidx language, docidx markup, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
283
284
285
286
287
288
289
290
291
.SH KEYWORDS
docidx commands, docidx language, docidx markup, docidx syntax, examples, faq, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi







<

282
283
284
285
286
287
288

289
.SH KEYWORDS
docidx commands, docidx language, docidx markup, docidx syntax, examples, faq, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.PP
Each markup command is a Tcl command surrounded by a matching pair of
\fB[\fR and \fB]\fR. Inside of these delimiters the usual
rules for a Tcl command apply with regard to word quotation, nested
commands, continuation lines, etc. I.e.
.PP
.CS


    ... [key {markup language}] ...

.CE
.CS


  ... [manpage thefile \\\\
          {file description}] ...

.CE
.SS "BASIC STRUCTURE"
The most simple document which can be written in docidx is
.CS


    [index_begin GROUPTITLE TITLE]
    [index_end]

.CE
.PP
Not very useful, but valid. This also shows us that all docidx
documents consist of only one part where we will list all keys and
their references.
.PP
A more useful index will contain at least keywords, or short 'keys',
i.e. the phrases which were indexed. So:
.CS


[index_begin GROUPTITLE TITLE]
[\fBkey markup\fR]
[\fBkey {semantic markup}]\fR]
[\fBkey {docidx markup}\fR]
[\fBkey {docidx language}\fR]
[\fBkey {docidx commands}\fR]
[index_end]

.CE
.PP
In the above example the command \fBkey\fR is used to declare the
keyword phrases we wish to be part of the index.
.PP
However a truly useful index does not only list the keyword phrases,
but will also contain references to documents associated with the
keywords. Here is a made-up index for all the manpages in the module
\fIbase64\fR:
.CS


[index_begin tcllib/base64 {De- & Encoding}]
[key base64]
[\fBmanpage base64\fR]
[key encoding]
[\fBmanpage base64\fR]
[\fBmanpage uuencode\fR]
[\fBmanpage yencode\fR]
[key uuencode]
[\fBmanpage uuencode\fR]
[key yEnc]
[\fBmanpage yencode\fR]
[key ydecode]
[\fBmanpage yencode\fR]
[key yencode]
[\fBmanpage yencode\fR]
[index_end]

.CE
.PP
In the above example the command \fBmanpage\fR is used to insert
references to documents, using symbolic file names, with each command
belonging to the last \fBkey\fR command coming before it.
.PP
The other command to insert references is \fBurl\fR. In contrast to







<
<
|
<


<
<
|
|
<




<
<
|
|
<









<
<







<










<
<
















<







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
.PP
Each markup command is a Tcl command surrounded by a matching pair of
\fB[\fR and \fB]\fR. Inside of these delimiters the usual
rules for a Tcl command apply with regard to word quotation, nested
commands, continuation lines, etc. I.e.
.PP
.CS


\... [key {markup language}] ...

.CE
.CS


\... [manpage thefile \\\\
{file description}] ...

.CE
.SS "BASIC STRUCTURE"
The most simple document which can be written in docidx is
.CS


[index_begin GROUPTITLE TITLE]
[index_end]

.CE
.PP
Not very useful, but valid. This also shows us that all docidx
documents consist of only one part where we will list all keys and
their references.
.PP
A more useful index will contain at least keywords, or short 'keys',
i.e. the phrases which were indexed. So:
.CS


[index_begin GROUPTITLE TITLE]
[\fBkey markup\fR]
[\fBkey {semantic markup}]\fR]
[\fBkey {docidx markup}\fR]
[\fBkey {docidx language}\fR]
[\fBkey {docidx commands}\fR]
[index_end]

.CE
.PP
In the above example the command \fBkey\fR is used to declare the
keyword phrases we wish to be part of the index.
.PP
However a truly useful index does not only list the keyword phrases,
but will also contain references to documents associated with the
keywords. Here is a made-up index for all the manpages in the module
\fIbase64\fR:
.CS


[index_begin tcllib/base64 {De- & Encoding}]
[key base64]
[\fBmanpage base64\fR]
[key encoding]
[\fBmanpage base64\fR]
[\fBmanpage uuencode\fR]
[\fBmanpage yencode\fR]
[key uuencode]
[\fBmanpage uuencode\fR]
[key yEnc]
[\fBmanpage yencode\fR]
[key ydecode]
[\fBmanpage yencode\fR]
[key yencode]
[\fBmanpage yencode\fR]
[index_end]

.CE
.PP
In the above example the command \fBmanpage\fR is used to insert
references to documents, using symbolic file names, with each command
belonging to the last \fBkey\fR command coming before it.
.PP
The other command to insert references is \fBurl\fR. In contrast to
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
document.
.PP
Instead of only whitespace the two templating commands \fBinclude\fR
and \fBvset\fR are also allowed, to enable the writer to either set
and/or import configuration settings relevant to the table of
contents. I.e. it is possible to write
.CS


[\fBinclude FILE\fR]
[\fBvset VAR VALUE\fR]
[index_begin GROUPTITLE TITLE]
...
[index_end]

.CE
Even more important, these two commands are allowed anywhere where a
markup command is allowed, without regard for any other
structure.
.CS


[index_begin GROUPTITLE TITLE]
[\fBinclude FILE\fR]
[\fBvset VAR VALUE\fR]
...
[index_end]

.CE
The only restriction \fBinclude\fR 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 \fBindex_begin\fR may contain only the templating
commands \fBvset\fR and \fBinclude\fR, a file included after a key
may contain only manape or url references, and other keys, etc.
.SS 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 \fB[\fR and \fB]\fR.
These commands, \fBlb\fR and \fBrb\fR respectively, are required
because our use of [ and ] to bracket markup commands makes it
impossible to directly use [ and ] within the text.
.PP
Our example of their use are the sources of the last sentence in the
previous paragraph, with some highlighting added.
.CS


  ...
  These commands, [cmd lb] and [cmd lb] respectively, are required
  because our use of [\fBlb\fR] and [\fBrb\fR] to bracket markup commands makes it
  impossible to directly use [\fBlb\fR] and [\fBrb\fR] within the text.
  ...

.CE
.SH "FURTHER READING"
Now that this document has been digested the reader, assumed to be a
\fIwriter\fR of documentation should be fortified enough to be able
to understand the formal \fIdocidx language syntax\fR
specification as well. From here on out the
\fIdocidx language command reference\fR will also serve as the







<
<



|

<





<
<



|

<

















<
<
|
|
|
|
|
<







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
document.
.PP
Instead of only whitespace the two templating commands \fBinclude\fR
and \fBvset\fR are also allowed, to enable the writer to either set
and/or import configuration settings relevant to the table of
contents. I.e. it is possible to write
.CS


[\fBinclude FILE\fR]
[\fBvset VAR VALUE\fR]
[index_begin GROUPTITLE TITLE]
\...
[index_end]

.CE
Even more important, these two commands are allowed anywhere where a
markup command is allowed, without regard for any other
structure.
.CS


[index_begin GROUPTITLE TITLE]
[\fBinclude FILE\fR]
[\fBvset VAR VALUE\fR]
\...
[index_end]

.CE
The only restriction \fBinclude\fR 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 \fBindex_begin\fR may contain only the templating
commands \fBvset\fR and \fBinclude\fR, a file included after a key
may contain only manape or url references, and other keys, etc.
.SS 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 \fB[\fR and \fB]\fR.
These commands, \fBlb\fR and \fBrb\fR respectively, are required
because our use of [ and ] to bracket markup commands makes it
impossible to directly use [ and ] within the text.
.PP
Our example of their use are the sources of the last sentence in the
previous paragraph, with some highlighting added.
.CS


\...
These commands, [cmd lb] and [cmd lb] respectively, are required
because our use of [\fBlb\fR] and [\fBrb\fR] to bracket markup commands makes it
impossible to directly use [\fBlb\fR] and [\fBrb\fR] within the text.
\...

.CE
.SH "FURTHER READING"
Now that this document has been digested the reader, assumed to be a
\fIwriter\fR of documentation should be fortified enough to be able
to understand the formal \fIdocidx language syntax\fR
specification as well. From here on out the
\fIdocidx language command reference\fR will also serve as the
426
427
428
429
430
431
432
433
434
.SH KEYWORDS
docidx commands, docidx language, docidx markup, docidx syntax, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007-2009 Andreas Kupries <[email protected]>

.fi







<

401
402
403
404
405
406
407

408
.SH KEYWORDS
docidx commands, docidx language, docidx markup, docidx syntax, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007-2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.IP [1]
The construct { X } stands for zero or more occurrences of X.
.IP [2]
The construct [ X ] stands for zero or one occurrence of X.
.PP
The syntax:
.CS


index     = defs
            INDEX_BEGIN
            [ contents ]
            INDEX_END
            { <WHITE> }

defs      = { INCLUDE | VSET | <WHITE> }
contents  = keyword { keyword }

keyword   = defs KEY ref { ref }
ref       = MANPAGE | URL | defs

.CE
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.
.IP [1]
The arguments of all markup commands have to be plain text, and/or text
markup commands, i.e. one of







<
<

|
|
|
|
<


<


<







285
286
287
288
289
290
291


292
293
294
295
296

297
298

299
300

301
302
303
304
305
306
307
.IP [1]
The construct { X } stands for zero or more occurrences of X.
.IP [2]
The construct [ X ] stands for zero or one occurrence of X.
.PP
The syntax:
.CS


index     = defs
INDEX_BEGIN
[ contents ]
INDEX_END
{ <WHITE> }

defs      = { INCLUDE | VSET | <WHITE> }
contents  = keyword { keyword }

keyword   = defs KEY ref { ref }
ref       = MANPAGE | URL | defs

.CE
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.
.IP [1]
The arguments of all markup commands have to be plain text, and/or text
markup commands, i.e. one of
330
331
332
333
334
335
336
337
338
.SH KEYWORDS
docidx commands, docidx language, docidx markup, docidx syntax, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007-2009 Andreas Kupries <[email protected]>

.fi







<

324
325
326
327
328
329
330

331
.SH KEYWORDS
docidx commands, docidx language, docidx markup, docidx syntax, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007-2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.IP [4]
query and initialize engine parameters
.PP
.PP
After the plugin has been loaded and the frontend commands are
established the commands will be called in the following sequence:
.CS


    idx_numpasses -> n
    idx_listvariables -> vars

    idx_varset var1 value1
    idx_varset var2 value2
    ...
    idx_varset varK valueK
    idx_initialize
    idx_setup 1
    ...
    idx_setup 2
    ...
    ...
    idx_setup n
    ...
    idx_postprocess
    idx_shutdown
    ...

.CE
I.e. first the number of passes and the set of available engine
parameters is established, followed by calls setting the
parameters. That second part is optional.
.PP
After that the plugin is initialized, the specified number of passes
executed, the final result run through a global post processing step







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







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
.IP [4]
query and initialize engine parameters
.PP
.PP
After the plugin has been loaded and the frontend commands are
established the commands will be called in the following sequence:
.CS


idx_numpasses -> n
idx_listvariables -> vars

idx_varset var1 value1
idx_varset var2 value2
\...
idx_varset varK valueK
idx_initialize
idx_setup 1
\...
idx_setup 2
\...
\...
idx_setup n
\...
idx_postprocess
idx_shutdown
\...

.CE
I.e. first the number of passes and the set of available engine
parameters is established, followed by calls setting the
parameters. That second part is optional.
.PP
After that the plugin is initialized, the specified number of passes
executed, the final result run through a global post processing step
608
609
610
611
612
613
614
615
616
.SH KEYWORDS
formatting engine, index, index formatter, keywords, markup, plugin, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi







<

603
604
605
606
607
608
609

610
.SH KEYWORDS
formatting engine, index, index formatter, keywords, markup, plugin, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
559
560
561
562
563
564
565
566
567
.SH KEYWORDS
HTML, TMML, conversion, doctoc, documentation, latex, manpage, markup, nroff, table of contents, toc, wiki
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2003-2010 Andreas Kupries <[email protected]>

.fi







<

558
559
560
561
562
563
564

565
.SH KEYWORDS
HTML, TMML, conversion, doctoc, documentation, latex, manpage, markup, nroff, table of contents, toc, wiki
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2003-2010 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
310
311
312
313
314
315
316
317
318
.SH KEYWORDS
markup, semantic markup, table of contents, toc
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi







<

309
310
311
312
313
314
315

316
.SH KEYWORDS
markup, semantic markup, table of contents, toc
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
361
362
363
364
365
366
367
368
369
.SH KEYWORDS
doctoc commands, doctoc language, doctoc markup, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi







<

360
361
362
363
364
365
366

367
.SH KEYWORDS
doctoc commands, doctoc language, doctoc markup, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
283
284
285
286
287
288
289
290
291
.SH KEYWORDS
doctoc commands, doctoc language, doctoc markup, doctoc syntax, examples, faq, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi







<

282
283
284
285
286
287
288

289
.SH KEYWORDS
doctoc commands, doctoc language, doctoc markup, doctoc syntax, examples, faq, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.PP
Each markup command is a Tcl command surrounded by a matching pair of
\fB[\fR and \fB]\fR. Inside of these delimiters the usual
rules for a Tcl command apply with regard to word quotation, nested
commands, continuation lines, etc. I.e.
.PP
.CS


    ... [division_start {Appendix 1}] ...

.CE
.CS


  ... [item thefile \\\\
          label {file description}] ...

.CE
.SS "BASIC STRUCTURE"
The most simple document which can be written in doctoc is
.CS


    [toc_begin GROUPTITLE TITLE]
    [toc_end]

.CE
This also shows us that all doctoc documents consist of only one
part where we will list \fIitems\fR and \fIdivisions\fR.
.PP
The user is free to mix these as she sees fit. This is a change from
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.







<
<
|
<


<
<
|
|
<




<
<
|
|
<







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
.PP
Each markup command is a Tcl command surrounded by a matching pair of
\fB[\fR and \fB]\fR. Inside of these delimiters the usual
rules for a Tcl command apply with regard to word quotation, nested
commands, continuation lines, etc. I.e.
.PP
.CS


\... [division_start {Appendix 1}] ...

.CE
.CS


\... [item thefile \\\\
label {file description}] ...

.CE
.SS "BASIC STRUCTURE"
The most simple document which can be written in doctoc is
.CS


[toc_begin GROUPTITLE TITLE]
[toc_end]

.CE
This also shows us that all doctoc documents consist of only one
part where we will list \fIitems\fR and \fIdivisions\fR.
.PP
The user is free to mix these as she sees fit. This is a change from
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.
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
Symbolic names are used to preserve the convertibility of this format
to any output format. The actual name of any file will be inserted by
the chosen formatting engine when converting the input, based on a
mapping from symbolic to actual names given to the engine.
.PP
Here a made up example for a table of contents of this document:
.CS


[toc_begin Doctoc {Language Introduction}]
[\fBitem 1 DESCRIPTION\fR]
[\fBitem 1.1 {Basic structure}\fR]
[\fBitem 1.2 Items\fR]
[\fBitem 1.3 Divisions\fR]
[\fBitem 2 {FURTHER READING}\fR]
[toc_end]

.CE
.SS DIVISIONS
One thing of notice in the last example in the previous section is
that the referenced sections actually had a nested structure,
something which was expressed in the item labels, by using a common
prefix for all the sections nested under section 1.
.PP







<
<







<







293
294
295
296
297
298
299


300
301
302
303
304
305
306

307
308
309
310
311
312
313
Symbolic names are used to preserve the convertibility of this format
to any output format. The actual name of any file will be inserted by
the chosen formatting engine when converting the input, based on a
mapping from symbolic to actual names given to the engine.
.PP
Here a made up example for a table of contents of this document:
.CS


[toc_begin Doctoc {Language Introduction}]
[\fBitem 1 DESCRIPTION\fR]
[\fBitem 1.1 {Basic structure}\fR]
[\fBitem 1.2 Items\fR]
[\fBitem 1.3 Divisions\fR]
[\fBitem 2 {FURTHER READING}\fR]
[toc_end]

.CE
.SS DIVISIONS
One thing of notice in the last example in the previous section is
that the referenced sections actually had a nested structure,
something which was expressed in the item labels, by using a common
prefix for all the sections nested under section 1.
.PP
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
.TP
\fBdivision_end\fR
This command closes the last opened and not yet closed division.
.PP
.PP
Using this we can recast the last example like this
.CS


[toc_begin Doctoc {Language Introduction}]
[\fBdivision_start DESCRIPTION\fR]
[item 1 {Basic structure}]
[item 2 Items]
[item 3 Divisions]
[\fBdivision_end\fR]
[\fBdivision_start {FURTHER READING}\fR]
[\fBdivision_end\fR]
[toc_end]

.CE
.PP
Or, to demonstrate deeper nesting
.CS


[toc_begin Doctoc {Language Introduction}]
[\fBdivision_start DESCRIPTION\fR]
[\fBdivision_start {Basic structure}\fR]
[item 1 Do]
[item 2 Re]
[\fBdivision_end\fR]
[\fBdivision_start Items\fR]
[item a Fi]
[item b Fo]
[item c Fa]
[\fBdivision_end\fR]
[\fBdivision_start Divisions\fR]
[item 1 Sub]
[item 1 Zero]
[\fBdivision_end\fR]
[\fBdivision_end\fR]
[\fBdivision_start {FURTHER READING}\fR]
[\fBdivision_end\fR]
[toc_end]

.CE
And do not forget, it is possible to freely mix items and divisions,
and to have empty divisions.
.CS


[toc_begin Doctoc {Language Introduction}]
[item 1 Do]
[\fBdivision_start DESCRIPTION\fR]
[\fBdivision_start {Basic structure}\fR]
[item 2 Re]
[\fBdivision_end\fR]
[item a Fi]
[\fBdivision_start Items\fR]
[item b Fo]
[item c Fa]
[\fBdivision_end\fR]
[\fBdivision_start Divisions\fR]
[\fBdivision_end\fR]
[\fBdivision_end\fR]
[\fBdivision_start {FURTHER READING}\fR]
[\fBdivision_end\fR]
[toc_end]

.CE
.SS "ADVANCED STRUCTURE"
In all previous examples we fudged a bit regarding the markup actually
allowed to be used before the \fBtoc_begin\fR command opening the
document.
.PP
Instead of only whitespace the two templating commands \fBinclude\fR
and \fBvset\fR are also allowed, to enable the writer to either set
and/or import configuration settings relevant to the table of
contents. I.e. it is possible to write
.CS


[\fBinclude FILE\fR]
[\fBvset VAR VALUE\fR]
[toc_begin GROUPTITLE TITLE]
...
[toc_end]

.CE
Even more important, these two commands are allowed anywhere where a
markup command is allowed, without regard for any other
structure.
.CS


[toc_begin GROUPTITLE TITLE]
[\fBinclude FILE\fR]
[\fBvset VAR VALUE\fR]
...
[toc_end]

.CE
The only restriction \fBinclude\fR 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 \fBtoc_begin\fR may contain only the templating
commands \fBvset\fR and \fBinclude\fR, a file included in a division
may contain only items or divisions commands, etc.
.SS 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 \fB[\fR and \fB]\fR.
These commands, \fBlb\fR and \fBrb\fR respectively, are required
because our use of [ and ] to bracket markup commands makes it
impossible to directly use [ and ] within the text.
.PP
Our example of their use are the sources of the last sentence in the
previous paragraph, with some highlighting added.
.CS


  ...
  These commands, [cmd lb] and [cmd lb] respectively, are required
  because our use of [\fBlb\fR] and [\fBrb\fR] to bracket markup commands makes it
  impossible to directly use [\fBlb\fR] and [\fBrb\fR] within the text.
  ...

.CE
.SH "FURTHER READING"
Now that this document has been digested the reader, assumed to be a
\fIwriter\fR of documentation should be fortified enough to be able
to understand the formal \fIdoctoc language syntax\fR
specification as well. From here on out the
\fIdoctoc language command reference\fR will also serve as the







<
<









<




<
<



















<




<
<

















<











<
<



|

<





<
<



|

<

















<
<
|
|
|
|
|
<







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
.TP
\fBdivision_end\fR
This command closes the last opened and not yet closed division.
.PP
.PP
Using this we can recast the last example like this
.CS


[toc_begin Doctoc {Language Introduction}]
[\fBdivision_start DESCRIPTION\fR]
[item 1 {Basic structure}]
[item 2 Items]
[item 3 Divisions]
[\fBdivision_end\fR]
[\fBdivision_start {FURTHER READING}\fR]
[\fBdivision_end\fR]
[toc_end]

.CE
.PP
Or, to demonstrate deeper nesting
.CS


[toc_begin Doctoc {Language Introduction}]
[\fBdivision_start DESCRIPTION\fR]
[\fBdivision_start {Basic structure}\fR]
[item 1 Do]
[item 2 Re]
[\fBdivision_end\fR]
[\fBdivision_start Items\fR]
[item a Fi]
[item b Fo]
[item c Fa]
[\fBdivision_end\fR]
[\fBdivision_start Divisions\fR]
[item 1 Sub]
[item 1 Zero]
[\fBdivision_end\fR]
[\fBdivision_end\fR]
[\fBdivision_start {FURTHER READING}\fR]
[\fBdivision_end\fR]
[toc_end]

.CE
And do not forget, it is possible to freely mix items and divisions,
and to have empty divisions.
.CS


[toc_begin Doctoc {Language Introduction}]
[item 1 Do]
[\fBdivision_start DESCRIPTION\fR]
[\fBdivision_start {Basic structure}\fR]
[item 2 Re]
[\fBdivision_end\fR]
[item a Fi]
[\fBdivision_start Items\fR]
[item b Fo]
[item c Fa]
[\fBdivision_end\fR]
[\fBdivision_start Divisions\fR]
[\fBdivision_end\fR]
[\fBdivision_end\fR]
[\fBdivision_start {FURTHER READING}\fR]
[\fBdivision_end\fR]
[toc_end]

.CE
.SS "ADVANCED STRUCTURE"
In all previous examples we fudged a bit regarding the markup actually
allowed to be used before the \fBtoc_begin\fR command opening the
document.
.PP
Instead of only whitespace the two templating commands \fBinclude\fR
and \fBvset\fR are also allowed, to enable the writer to either set
and/or import configuration settings relevant to the table of
contents. I.e. it is possible to write
.CS


[\fBinclude FILE\fR]
[\fBvset VAR VALUE\fR]
[toc_begin GROUPTITLE TITLE]
\...
[toc_end]

.CE
Even more important, these two commands are allowed anywhere where a
markup command is allowed, without regard for any other
structure.
.CS


[toc_begin GROUPTITLE TITLE]
[\fBinclude FILE\fR]
[\fBvset VAR VALUE\fR]
\...
[toc_end]

.CE
The only restriction \fBinclude\fR 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 \fBtoc_begin\fR may contain only the templating
commands \fBvset\fR and \fBinclude\fR, a file included in a division
may contain only items or divisions commands, etc.
.SS 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 \fB[\fR and \fB]\fR.
These commands, \fBlb\fR and \fBrb\fR respectively, are required
because our use of [ and ] to bracket markup commands makes it
impossible to directly use [ and ] within the text.
.PP
Our example of their use are the sources of the last sentence in the
previous paragraph, with some highlighting added.
.CS


\...
These commands, [cmd lb] and [cmd lb] respectively, are required
because our use of [\fBlb\fR] and [\fBrb\fR] to bracket markup commands makes it
impossible to directly use [\fBlb\fR] and [\fBrb\fR] within the text.
\...

.CE
.SH "FURTHER READING"
Now that this document has been digested the reader, assumed to be a
\fIwriter\fR of documentation should be fortified enough to be able
to understand the formal \fIdoctoc language syntax\fR
specification as well. From here on out the
\fIdoctoc language command reference\fR will also serve as the
497
498
499
500
501
502
503
504
505
.SH KEYWORDS
doctoc commands, doctoc language, doctoc markup, doctoc syntax, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi







<

466
467
468
469
470
471
472

473
.SH KEYWORDS
doctoc commands, doctoc language, doctoc markup, doctoc syntax, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.IP [1]
The construct { X } stands for zero or more occurrences of X.
.IP [2]
The construct [ X ] stands for zero or one occurrence of X.
.PP
The syntax:
.CS


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

.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
.nf
Copyright (c) 2007-2009 Andreas Kupries <[email protected]>

.fi







<
<

|
|
|
|
<


<

<

|
|
<















<

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
.IP [1]
The construct { X } stands for zero or more occurrences of X.
.IP [2]
The construct [ X ] stands for zero or one occurrence of X.
.PP
The syntax:
.CS


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

.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
.nf
Copyright (c) 2007-2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.IP [4]
query and initialize engine parameters
.PP
.PP
After the plugin has been loaded and the frontend commands are
established the commands will be called in the following sequence:
.CS


    toc_numpasses -> n
    toc_listvariables -> vars

    toc_varset var1 value1
    toc_varset var2 value2
    ...
    toc_varset varK valueK
    toc_initialize
    toc_setup 1
    ...
    toc_setup 2
    ...
    ...
    toc_setup n
    ...
    toc_postprocess
    toc_shutdown
    ...

.CE
I.e. first the number of passes and the set of available engine
parameters is established, followed by calls setting the
parameters. That second part is optional.
.PP
After that the plugin is initialized, the specified number of passes
executed, the final result run through a global post processing step







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







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
.IP [4]
query and initialize engine parameters
.PP
.PP
After the plugin has been loaded and the frontend commands are
established the commands will be called in the following sequence:
.CS


toc_numpasses -> n
toc_listvariables -> vars

toc_varset var1 value1
toc_varset var2 value2
\...
toc_varset varK valueK
toc_initialize
toc_setup 1
\...
toc_setup 2
\...
\...
toc_setup n
\...
toc_postprocess
toc_shutdown
\...

.CE
I.e. first the number of passes and the set of available engine
parameters is established, followed by calls setting the
parameters. That second part is optional.
.PP
After that the plugin is initialized, the specified number of passes
executed, the final result run through a global post processing step
608
609
610
611
612
613
614
615
616
.SH KEYWORDS
formatting engine, markup, plugin, semantic markup, table of contents, toc, toc formatter
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi







<

603
604
605
606
607
608
609

610
.SH KEYWORDS
formatting engine, markup, plugin, semantic markup, table of contents, toc, toc formatter
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
667
668
669
670
671
672
673
674
675
.SH KEYWORDS
HTML, TMML, conversion, documentation, manpage, markup, nroff
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2003-2013 Andreas Kupries <[email protected]>

.fi







<

666
667
668
669
670
671
672

673
.SH KEYWORDS
HTML, TMML, conversion, documentation, manpage, markup, nroff
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2003-2013 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
309
310
311
312
313
314
315
316
317
.SH KEYWORDS
markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi







<

308
309
310
311
312
313
314

315
.SH KEYWORDS
markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
774
775
776
777
778
779
780
781
782
.SH KEYWORDS
doctools commands, doctools language, doctools markup, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007-2010 Andreas Kupries <[email protected]>

.fi







<

773
774
775
776
777
778
779

780
.SH KEYWORDS
doctools commands, doctools language, doctools markup, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007-2010 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
281
282
283
284
285
286
287
288
289
.SH KEYWORDS
doctools commands, doctools language, doctools markup, doctools syntax, examples, faq, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi







<

280
281
282
283
284
285
286

287
.SH KEYWORDS
doctools commands, doctools language, doctools markup, doctools syntax, examples, faq, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.PP
Each markup command is a Tcl command surrounded by a matching pair of
\fB[\fR and \fB]\fR. Inside of these delimiters the usual
rules for a Tcl command apply with regard to word quotation, nested
commands, continuation lines, etc. I.e.
.PP
.CS


  ... [list_begin enumerated] ...

.CE
.CS


  ... [call [cmd foo] \\\\
          [arg bar]] ...

.CE
.CS


  ... [term {complex concept}] ...

.CE
.CS


  ... [opt "[arg key] [arg value]"] ...

.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
closing commands we have only \fIwhitespace\fR.







<
<
|
<


<
<
|
|
<


<
<
|
<


<
<
|
<




<
<
|
|
|
<







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
.PP
Each markup command is a Tcl command surrounded by a matching pair of
\fB[\fR and \fB]\fR. Inside of these delimiters the usual
rules for a Tcl command apply with regard to word quotation, nested
commands, continuation lines, etc. I.e.
.PP
.CS


\... [list_begin enumerated] ...

.CE
.CS


\... [call [cmd foo] \\\\
[arg bar]] ...

.CE
.CS


\... [term {complex concept}] ...

.CE
.CS


\... [opt "[arg key] [arg value]"] ...

.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
closing commands we have only \fIwhitespace\fR.
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
any order.
However for \fBtitledesc\fR and \fBmoddesc\fR only the last occurrence
is taken. For the other two the specified information is accumulated,
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]
[\fBcomment { ... }\fR]

.CE
.SS "ADVANCED STRUCTURE"
In the simple examples of the last section we fudged a bit regarding
the markup actually allowed to be used before the \fBmanpage_begin\fR
command opening the document.
.PP
Instead of only whitespace the two templating commands \fBinclude\fR
and \fBvset\fR 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
.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
the included file must be valid at the place of the inclusion. I.e. a
file included before \fBmanpage_begin\fR may contain only the
templating commands \fBvset\fR and \fBinclude\fR, a file included in
the header may contain only header commands, etc.
.SS "TEXT STRUCTURE"







<
<








<



<
<
|
|
|
|
<









<
<










<











<
<





<





<
<





<







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
any order.
However for \fBtitledesc\fR and \fBmoddesc\fR only the last occurrence
is taken. For the other two the specified information is accumulated,
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]
[\fBcomment { ... }\fR]

.CE
.SS "ADVANCED STRUCTURE"
In the simple examples of the last section we fudged a bit regarding
the markup actually allowed to be used before the \fBmanpage_begin\fR
command opening the document.
.PP
Instead of only whitespace the two templating commands \fBinclude\fR
and \fBvset\fR 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
.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
the included file must be valid at the place of the inclusion. I.e. a
file included before \fBmanpage_begin\fR may contain only the
templating commands \fBvset\fR and \fBinclude\fR, a file included in
the header may contain only header commands, etc.
.SS "TEXT STRUCTURE"
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
The simplest way of structuring the body is through the introduction
of paragraphs. The command for doing so is \fBpara\fR. Each occurrence
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 \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]

.CE
Empty paragraphs are ignored.
.PP
A structure coarser than paragraphs are sections, which allow the
writer to split a document into larger, and labeled, pieces. The
command for doing so is \fBsection\fR. Each occurrence of this command
closes the previous section and automatically opens the next,
including its first paragraph. The first section is automatically
opened at the beginning of the body, by \fBdescription\fR (This
section is labeled "DESCRIPTION"). In the same manner the last section
automatically ends at \fBmanpage_end\fR.
.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]
 ...
[manpage_end]

.CE
Between sections and paragraphs we have subsections, to split sections.
The command for doing so is \fBsubsection\fR. Each occurrence of this
command closes the previous subsection and automatically opens the
next, including its first paragraph. A subsection is automatically
opened at the beginning of the body, by \fBdescription\fR, and at the
beginning of each section. In the same manner the last subsection
automatically ends at \fBmanpage_end\fR.
.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]
 ...
[\fBsubsection {Sub 2}\fR]
 ...
[section {Section B}]
 ...
[manpage_end]

.CE
.SS "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.
.PP
While most often this is just the unadorned content of the document we
do have situations where we wish to highlight parts of it as some type







<
<


|

|

|

<















<
<


|

|

|

|

<












<
<


|

|

|

|

|

|

<







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
The simplest way of structuring the body is through the introduction
of paragraphs. The command for doing so is \fBpara\fR. Each occurrence
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 \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]

.CE
Empty paragraphs are ignored.
.PP
A structure coarser than paragraphs are sections, which allow the
writer to split a document into larger, and labeled, pieces. The
command for doing so is \fBsection\fR. Each occurrence of this command
closes the previous section and automatically opens the next,
including its first paragraph. The first section is automatically
opened at the beginning of the body, by \fBdescription\fR (This
section is labeled "DESCRIPTION"). In the same manner the last section
automatically ends at \fBmanpage_end\fR.
.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]
\...
[manpage_end]

.CE
Between sections and paragraphs we have subsections, to split sections.
The command for doing so is \fBsubsection\fR. Each occurrence of this
command closes the previous subsection and automatically opens the
next, including its first paragraph. A subsection is automatically
opened at the beginning of the body, by \fBdescription\fR, and at the
beginning of each section. In the same manner the last subsection
automatically ends at \fBmanpage_end\fR.
.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]
\...
[\fBsubsection {Sub 2}\fR]
\...
[section {Section B}]
\...
[manpage_end]

.CE
.SS "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.
.PP
While most often this is just the unadorned content of the document we
do have situations where we wish to highlight parts of it as some type
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
.PP
The example demonstrating the use of text markup is an excerpt from
the \fIdoctools language command reference\fR, with some
highlighting added.
It shows their use within a block of text, as the arguments of a list
item command (\fBcall\fR), and our ability to nest them.
.CS


  ...
  [call [\fBcmd arg_def\fR] [\fBarg type\fR] [\fBarg name\fR]] [\fBopt\fR [\fBarg mode\fR]]]

  Text structure. List element. Argument list. Automatically closes the
  previous list element. Specifies the data-[\fBarg type\fR] of the described
  argument of a command, its [\fBarg name\fR] and its i/o-[\fBarg mode\fR]. The
  latter is optional.
  ...

.CE
.SS 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 \fB[\fR
and \fB]\fR.
These commands, \fBlb\fR and \fBrb\fR respectively, are required
because our use of [ and ] to bracket markup commands makes it
impossible to directly use [ and ] within the text.
.PP
Our example of their use are the sources of the last sentence in the
previous paragraph, with some highlighting added.
.CS


  ...
  These commands, [cmd lb] and [cmd lb] respectively, are required
  because our use of [\fBlb\fR] and [\fBrb\fR] to bracket markup commands makes it
  impossible to directly use [\fBlb\fR] and [\fBrb\fR] within the text.
  ...

.CE
.SS CROSS-REFERENCES
The last two commands we have to discuss are for the declaration of
cross-references between documents, explicit and implicit. They are
\fBkeywords\fR and \fBsee_also\fR. 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







<
<
|
|
<
|
|
|
|
|
<














<
<
|
|
|
|
|
<







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
.PP
The example demonstrating the use of text markup is an excerpt from
the \fIdoctools language command reference\fR, with some
highlighting added.
It shows their use within a block of text, as the arguments of a list
item command (\fBcall\fR), and our ability to nest them.
.CS


\...
[call [\fBcmd arg_def\fR] [\fBarg type\fR] [\fBarg name\fR]] [\fBopt\fR [\fBarg mode\fR]]]

Text structure. List element. Argument list. Automatically closes the
previous list element. Specifies the data-[\fBarg type\fR] of the described
argument of a command, its [\fBarg name\fR] and its i/o-[\fBarg mode\fR]. The
latter is optional.
\...

.CE
.SS 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 \fB[\fR
and \fB]\fR.
These commands, \fBlb\fR and \fBrb\fR respectively, are required
because our use of [ and ] to bracket markup commands makes it
impossible to directly use [ and ] within the text.
.PP
Our example of their use are the sources of the last sentence in the
previous paragraph, with some highlighting added.
.CS


\...
These commands, [cmd lb] and [cmd lb] respectively, are required
because our use of [\fBlb\fR] and [\fBrb\fR] to bracket markup commands makes it
impossible to directly use [\fBlb\fR] and [\fBrb\fR] within the text.
\...

.CE
.SS CROSS-REFERENCES
The last two commands we have to discuss are for the declaration of
cross-references between documents, explicit and implicit. They are
\fBkeywords\fR and \fBsee_also\fR. 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
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
defined by the main content, or considers them as meta data which
should be in the header, etc.
.PP
Our example shows the sources for the cross-references of this
document, with some highlighting added. Incidentally they are found
at the end of the body.
.CS


  ...
  [\fBsee_also doctools_intro\fR]
  [\fBsee_also doctools_lang_syntax\fR]
  [\fBsee_also doctools_lang_cmdref\fR]
  [\fBkeywords markup {semantic markup}\fR]
  [\fBkeywords {doctools markup} {doctools language}\fR]
  [\fBkeywords {doctools syntax} {doctools commands}\fR]
  [manpage_end]

.CE
.SS EXAMPLES
Where ever we can write plain text we can write examples too. For
simple examples we have the command \fBexample\fR 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
2-command combination \fBexample_begin\fR / \fBexample_end\fR instead.
.PP
The first opens an example block, the other closes it, and in between
we can write plain text and use all the regular text markup commands.
Note that text structure commands are not allowed. This also means
that it is not possible to embed examples and lists within an example.
On the other hand, we \fIcan\fR use templating commands within
example blocks to read their contents from a file (Remember section
\fBAdvanced structure\fR).
.PP
The source for the very first example in this document (see section
\fBFundamentals\fR), with some highlighting added, is
.CS


  [\fBexample\fR {
    ... [list_begin enumerated] ...
  }]

.CE
Using \fBexample_begin\fR / \fBexample_end\fR this would look like
.CS


  [\fBexample_begin\fR]
    ... [list_begin enumerated] ...
  [\fBexample_end\fR]

.CE
.SS LISTS
Where ever we can write plain text we can write lists too. The main
commands are \fBlist_begin\fR to start a list, and \fBlist_end\fR 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
existing list item commands are allowed within the list to start list







<
<
|
|
|
|
|
|
|
|
<



















<
<
|
|
|
<



<
<
|
|
|
<







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
defined by the main content, or considers them as meta data which
should be in the header, etc.
.PP
Our example shows the sources for the cross-references of this
document, with some highlighting added. Incidentally they are found
at the end of the body.
.CS


\...
[\fBsee_also doctools_intro\fR]
[\fBsee_also doctools_lang_syntax\fR]
[\fBsee_also doctools_lang_cmdref\fR]
[\fBkeywords markup {semantic markup}\fR]
[\fBkeywords {doctools markup} {doctools language}\fR]
[\fBkeywords {doctools syntax} {doctools commands}\fR]
[manpage_end]

.CE
.SS EXAMPLES
Where ever we can write plain text we can write examples too. For
simple examples we have the command \fBexample\fR 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
2-command combination \fBexample_begin\fR / \fBexample_end\fR instead.
.PP
The first opens an example block, the other closes it, and in between
we can write plain text and use all the regular text markup commands.
Note that text structure commands are not allowed. This also means
that it is not possible to embed examples and lists within an example.
On the other hand, we \fIcan\fR use templating commands within
example blocks to read their contents from a file (Remember section
\fBAdvanced structure\fR).
.PP
The source for the very first example in this document (see section
\fBFundamentals\fR), with some highlighting added, is
.CS


[\fBexample\fR {
\... [list_begin enumerated] ...
}]

.CE
Using \fBexample_begin\fR / \fBexample_end\fR this would look like
.CS


[\fBexample_begin\fR]
\... [list_begin enumerated] ...
[\fBexample_end\fR]

.CE
.SS LISTS
Where ever we can write plain text we can write lists too. The main
commands are \fBlist_begin\fR to start a list, and \fBlist_end\fR 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
existing list item commands are allowed within the list to start list
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
\fIwidget option (declaration) list\fR. It is a specialized form of
a term definition list where the term is the name of a configuration
option for a widget, with its name and class in the option database.
.PP
Our example is the source of the definition list in the previous
paragraph, with most of the content in the middle removed.
.CS


  ...
  [\fBlist_begin\fR definitions]
  [\fBdef\fR [const arg]]

  ([cmd arg_def]) This opens an argument (declaration) list. It is a
  specialized form of a definition list where the term is an argument
  name, with its type and i/o-mode.

  [\fBdef\fR [const itemized]]

  ([cmd item])
  This opens a general itemized list.

  ...
  [\fBdef\fR [const tkoption]]

  ([cmd tkoption_def]) This opens a widget option (declaration) list. It
  is a specialized form of a definition list where the term is the name
  of a configuration option for a widget, with its name and class in the
  option database.

  [\fBlist_end\fR]
  ...

.CE
Note that a list cannot begin in one (sub)section and end in
another. Differently said, (sub)section breaks are not allowed within
lists and list items. An example of this \fIillegal\fR construct is
.CS


  ...
  [list_begin itemized]
  [item]
  ...
  [\fBsection {ILLEGAL WITHIN THE LIST}\fR]
  ...
  [list_end]
  ...

.CE
.SH "FURTHER READING"
Now that this document has been digested the reader, assumed to be a
\fIwriter\fR of documentation should be fortified enough to be able
to understand the formal \fIdoctools language syntax\fR
specification as well. From here on out the
\fIdoctools language command reference\fR will also serve as the







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





<
<
|
|
|
|
|
|
|
|
<







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
\fIwidget option (declaration) list\fR. It is a specialized form of
a term definition list where the term is the name of a configuration
option for a widget, with its name and class in the option database.
.PP
Our example is the source of the definition list in the previous
paragraph, with most of the content in the middle removed.
.CS


\...
[\fBlist_begin\fR definitions]
[\fBdef\fR [const arg]]

([cmd arg_def]) This opens an argument (declaration) list. It is a
specialized form of a definition list where the term is an argument
name, with its type and i/o-mode.

[\fBdef\fR [const itemized]]

([cmd item])
This opens a general itemized list.

\...
[\fBdef\fR [const tkoption]]

([cmd tkoption_def]) This opens a widget option (declaration) list. It
is a specialized form of a definition list where the term is the name
of a configuration option for a widget, with its name and class in the
option database.

[\fBlist_end\fR]
\...

.CE
Note that a list cannot begin in one (sub)section and end in
another. Differently said, (sub)section breaks are not allowed within
lists and list items. An example of this \fIillegal\fR construct is
.CS


\...
[list_begin itemized]
[item]
\...
[\fBsection {ILLEGAL WITHIN THE LIST}\fR]
\...
[list_end]
\...

.CE
.SH "FURTHER READING"
Now that this document has been digested the reader, assumed to be a
\fIwriter\fR of documentation should be fortified enough to be able
to understand the formal \fIdoctools language syntax\fR
specification as well. From here on out the
\fIdoctools language command reference\fR will also serve as the
820
821
822
823
824
825
826
827
828
.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 <[email protected]>

.fi







<

752
753
754
755
756
757
758

759
.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 <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
The construct [ X ] stands for zero or one occurrence of X.
.IP [3]
The construct LIST_BEGIN<X> stands for the markup command
\fBlist_begin\fR with \fBX\fR as its type argument.
.PP
The syntax:
.CS


manpage = defs
          MANPAGE_BEGIN
          header
          DESCRIPTION
          body
          MANPAGE_END
          { <WHITE> }

defs    = { INCLUDE | VSET | <WHITE> }

header  = { TITLEDESC | MODDESC | COPYRIGHT | REQUIRE | defs | xref }

xref    = KEYWORDS | SEE_ALSO | CATEGORY

body    = paras { SECTION    sbody  }
sbody   = paras { SUBSECTION ssbody }
ssbody  = paras

paras   = tblock { (PARA | NL) tblock }

tblock  = { <TEXT> | defs | markup | xref | an_example | a_list }

markup  = ARG     | CLASS | CMD     | CONST     | EMPH   | FILE
        | FUN     | LB    | METHOD  | NAMESPACE | OPT    | OPTION
        | PACKAGE | RB    | SECTREF | STRONG    | SYSCMD | TERM
        | TYPE    | URI   | USAGE   | VAR       | WIDGET

example = EXAMPLE
        | EXAMPLE_BEGIN extext EXAMPLE_END

extext  = { <TEXT> | defs | markup }

a_list  = LIST_BEGIN<arguments>   argd_list   LIST_END
        | LIST_BEGIN<commands>    cmdd_list   LIST_END
        | LIST_BEGIN<definitions> def_list    LIST_END
        | LIST_BEGIN<enumerated>  enum_list   LIST_END
        | LIST_BEGIN<itemized>    item_list   LIST_END
        | LIST_BEGIN<options>     optd_list   LIST_END
        | LIST_BEGIN<tkoptions>   tkoptd_list LIST_END

argd_list   = [ <WHITE> ] { ARG_DEF      paras }
cmdd_list   = [ <WHITE> ] { CMD_DEF      paras }
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 }

.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
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi







<
<

|
|
|
|
|
|
<

<

<

<



<

<

<

|
|
|
<

|
<

<

|
|
|
|
|
|
<







<















<

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
The construct [ X ] stands for zero or one occurrence of X.
.IP [3]
The construct LIST_BEGIN<X> stands for the markup command
\fBlist_begin\fR with \fBX\fR as its type argument.
.PP
The syntax:
.CS


manpage = defs
MANPAGE_BEGIN
header
DESCRIPTION
body
MANPAGE_END
{ <WHITE> }

defs    = { INCLUDE | VSET | <WHITE> }

header  = { TITLEDESC | MODDESC | COPYRIGHT | REQUIRE | defs | xref }

xref    = KEYWORDS | SEE_ALSO | CATEGORY

body    = paras { SECTION    sbody  }
sbody   = paras { SUBSECTION ssbody }
ssbody  = paras

paras   = tblock { (PARA | NL) tblock }

tblock  = { <TEXT> | defs | markup | xref | an_example | a_list }

markup  = ARG     | CLASS | CMD     | CONST     | EMPH   | FILE
| FUN     | LB    | METHOD  | NAMESPACE | OPT    | OPTION
| PACKAGE | RB    | SECTREF | STRONG    | SYSCMD | TERM
| TYPE    | URI   | USAGE   | VAR       | WIDGET

example = EXAMPLE
| EXAMPLE_BEGIN extext EXAMPLE_END

extext  = { <TEXT> | defs | markup }

a_list  = LIST_BEGIN<arguments>   argd_list   LIST_END
| LIST_BEGIN<commands>    cmdd_list   LIST_END
| LIST_BEGIN<definitions> def_list    LIST_END
| LIST_BEGIN<enumerated>  enum_list   LIST_END
| LIST_BEGIN<itemized>    item_list   LIST_END
| LIST_BEGIN<options>     optd_list   LIST_END
| LIST_BEGIN<tkoptions>   tkoptd_list LIST_END

argd_list   = [ <WHITE> ] { ARG_DEF      paras }
cmdd_list   = [ <WHITE> ] { CMD_DEF      paras }
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 }

.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
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.IP [4]
query and initialize engine parameters
.PP
.PP
After the plugin has been loaded and the frontend commands are
established the commands will be called in the following sequence:
.CS


    fmt_numpasses -> n
    fmt_listvariables -> vars

    fmt_varset var1 value1
    fmt_varset var2 value2
    ...
    fmt_varset varK valueK
    fmt_initialize
    fmt_setup 1
    ...
    fmt_setup 2
    ...
    ...
    fmt_setup n
    ...
    fmt_postprocess
    fmt_shutdown
    ...

.CE
I.e. first the number of passes and the set of available engine
parameters is established, followed by calls setting the
parameters. That second part is optional.
.PP
After that the plugin is initialized, the specified number of passes
executed, the final result run through a global post processing step







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







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
.IP [4]
query and initialize engine parameters
.PP
.PP
After the plugin has been loaded and the frontend commands are
established the commands will be called in the following sequence:
.CS


fmt_numpasses -> n
fmt_listvariables -> vars

fmt_varset var1 value1
fmt_varset var2 value2
\...
fmt_varset varK valueK
fmt_initialize
fmt_setup 1
\...
fmt_setup 2
\...
\...
fmt_setup n
\...
fmt_postprocess
fmt_shutdown
\...

.CE
I.e. first the number of passes and the set of available engine
parameters is established, followed by calls setting the
parameters. That second part is optional.
.PP
After that the plugin is initialized, the specified number of passes
executed, the final result run through a global post processing step
676
677
678
679
680
681
682
683
684
.SH KEYWORDS
document, formatter, formatting engine, manpage, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007-2010 Andreas Kupries <[email protected]>

.fi







<

671
672
673
674
675
676
677

678
.SH KEYWORDS
document, formatter, formatting engine, manpage, markup, semantic markup
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2007-2010 Andreas Kupries <[email protected]>

.fi

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

219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







219
220
221
222
223
224
225

226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
311
312
313
314
315
316
317
318
319
HTML, TMML, conversion, manpage, markup, nroff
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2002 Andreas Kupries <[email protected]>
Copyright (c) 2003 Andreas Kupries <[email protected]>

.fi







<

310
311
312
313
314
315
316

317
HTML, TMML, conversion, manpage, markup, nroff
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2002 Andreas Kupries <[email protected]>
Copyright (c) 2003 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
274
275
276
277
278
279
280
281
282
.SH KEYWORDS
CSS, HTML, doctools, export, plugin, style
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

273
274
275
276
277
278
279

280
.SH KEYWORDS
CSS, HTML, doctools, export, plugin, style
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
274
275
276
277
278
279
280
281
282
.SH KEYWORDS
doctools, export, macros, man_macros, nroff, plugin
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

273
274
275
276
277
278
279

280
.SH KEYWORDS
doctools, export, macros, man_macros, nroff, plugin
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
400
401
402
403
404
405
406
407
408
.SH KEYWORDS
Tcl syntax, command, doctools, parser, subst, word
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

399
400
401
402
403
404
405

406
.SH KEYWORDS
Tcl syntax, command, doctools, parser, subst, word
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
295
296
297
298
299
300
301
302
303
.SH KEYWORDS
catalog package, docidx, doctoc, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

294
295
296
297
298
299
300

301
.SH KEYWORDS
catalog package, docidx, doctoc, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
618
619
620
621
622
623
624
625
626
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

617
618
619
620
621
622
623

624
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
632
633
634
635
636
637
638
639
640
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

631
632
633
634
635
636
637

638
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
426
427
428
429
430
431
432
433
434
.SH KEYWORDS
docidx, doctools, export, index, serialization
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

425
426
427
428
429
430
431

432
.SH KEYWORDS
docidx, doctools, export, index, serialization
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
511
512
513
514
515
516
517
518
519
.SH KEYWORDS
HTML, doctools, export, index, serialization
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

510
511
512
513
514
515
516

517
.SH KEYWORDS
HTML, doctools, export, index, serialization
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.PP
.SH "JSON NOTATION OF KEYWORD INDICES"
The JSON format used for keyword indices is a direct translation of
the \fBKeyword index serialization format\fR, mapping Tcl
dictionaries as JSON objects and Tcl lists as JSON arrays.
For example, the Tcl serialization
.CS


doctools::idx {
	label {Keyword Index}
	keywords {
		changelog  {changelog.man cvs.man}
		conversion {doctools.man docidx.man doctoc.man apps/dtplite.man mpexpand.man}
		cvs        cvs.man
	}
	references {
		apps/dtplite.man {manpage dtplite}
		changelog.man    {manpage doctools::changelog}
		cvs.man          {manpage doctools::cvs}
		docidx.man       {manpage doctools::idx}
		doctoc.man       {manpage doctools::toc}
		doctools.man     {manpage doctools}
		mpexpand.man     {manpage mpexpand}
	}
	title {}
}

.CE
is equivalent to the JSON string
.CS


{
    "doctools::idx" : {
        "label"      : "Keyword Index",
        "keywords"   : {
            "changelog"  : ["changelog.man","cvs.man"],
            "conversion" : ["doctools.man","docidx.man","doctoc.man","apps\\/dtplite.man","mpexpand.man"],
            "cvs"        : ["cvs.man"],
        },
        "references" : {
            "apps\\/dtplite.man" : ["manpage","dtplite"],
            "changelog.man"     : ["manpage","doctools::changelog"],
            "cvs.man"           : ["manpage","doctools::cvs"],
            "docidx.man"        : ["manpage","doctools::idx"],
            "doctoc.man"        : ["manpage","doctools::toc"],
            "doctools.man"      : ["manpage","doctools"],
            "mpexpand.man"      : ["manpage","mpexpand"]
        },
        "title"      : ""
    }
}

.CE
.SH CONFIGURATION
The JSON export plugin recognizes the following configuration
variables and changes its behaviour as they specify.
.TP
boolean \fIindented\fR
If this flag is set the plugin will break the generated JSON code







<
<

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

<



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

<







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
.PP
.SH "JSON NOTATION OF KEYWORD INDICES"
The JSON format used for keyword indices is a direct translation of
the \fBKeyword index serialization format\fR, mapping Tcl
dictionaries as JSON objects and Tcl lists as JSON arrays.
For example, the Tcl serialization
.CS


doctools::idx {
label {Keyword Index}
keywords {
changelog  {changelog.man cvs.man}
conversion {doctools.man docidx.man doctoc.man apps/dtplite.man mpexpand.man}
cvs        cvs.man
}
references {
apps/dtplite.man {manpage dtplite}
changelog.man    {manpage doctools::changelog}
cvs.man          {manpage doctools::cvs}
docidx.man       {manpage doctools::idx}
doctoc.man       {manpage doctools::toc}
doctools.man     {manpage doctools}
mpexpand.man     {manpage mpexpand}
}
title {}
}

.CE
is equivalent to the JSON string
.CS
{


"doctools::idx" : {
"label"      : "Keyword Index",
"keywords"   : {
"changelog"  : ["changelog.man","cvs.man"],
"conversion" : ["doctools.man","docidx.man","doctoc.man","apps\\/dtplite.man","mpexpand.man"],
"cvs"        : ["cvs.man"],
},
"references" : {
"apps\\/dtplite.man" : ["manpage","dtplite"],
"changelog.man"     : ["manpage","doctools::changelog"],
"cvs.man"           : ["manpage","doctools::cvs"],
"docidx.man"        : ["manpage","doctools::idx"],
"doctoc.man"        : ["manpage","doctools::toc"],
"doctools.man"      : ["manpage","doctools"],
"mpexpand.man"      : ["manpage","mpexpand"]
},
"title"      : ""
}
}

.CE
.SH CONFIGURATION
The JSON export plugin recognizes the following configuration
variables and changes its behaviour as they specify.
.TP
boolean \fIindented\fR
If this flag is set the plugin will break the generated JSON code
443
444
445
446
447
448
449
450
451
.SH KEYWORDS
JSON, doctools, export, index, serialization
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

436
437
438
439
440
441
442

443
.SH KEYWORDS
JSON, doctools, export, index, serialization
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
394
395
396
397
398
399
400
401
402
.SH KEYWORDS
doctools, export, index, nroff, serialization
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

393
394
395
396
397
398
399

400
.SH KEYWORDS
doctools, export, index, nroff, serialization
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
378
379
380
381
382
383
384
385
386
.SH KEYWORDS
doctools, export, index, plain text, serialization
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

377
378
379
380
381
382
383

384
.SH KEYWORDS
doctools, export, index, plain text, serialization
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
391
392
393
394
395
396
397
398
399
.SH KEYWORDS
doctools, export, index, serialization, wiki
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

390
391
392
393
394
395
396

397
.SH KEYWORDS
doctools, export, index, serialization, wiki
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
711
712
713
714
715
716
717
718
719
.SH KEYWORDS
conversion, docidx, documentation, import, index, json, keyword index, manpage, markup, parsing, plugin, reference, url
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

710
711
712
713
714
715
716

717
.SH KEYWORDS
conversion, docidx, documentation, import, index, json, keyword index, manpage, markup, parsing, plugin, reference, url
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
402
403
404
405
406
407
408
409
410
.SH KEYWORDS
deserialization, docidx, doctools, import, index
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

401
402
403
404
405
406
407

408
.SH KEYWORDS
deserialization, docidx, doctools, import, index
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.PP
.SH "JSON NOTATION OF KEYWORD INDICES"
The JSON format used for keyword indices is a direct translation of
the \fBKeyword index serialization format\fR, mapping Tcl
dictionaries as JSON objects and Tcl lists as JSON arrays.
For example, the Tcl serialization
.CS


doctools::idx {
	label {Keyword Index}
	keywords {
		changelog  {changelog.man cvs.man}
		conversion {doctools.man docidx.man doctoc.man apps/dtplite.man mpexpand.man}
		cvs        cvs.man
	}
	references {
		apps/dtplite.man {manpage dtplite}
		changelog.man    {manpage doctools::changelog}
		cvs.man          {manpage doctools::cvs}
		docidx.man       {manpage doctools::idx}
		doctoc.man       {manpage doctools::toc}
		doctools.man     {manpage doctools}
		mpexpand.man     {manpage mpexpand}
	}
	title {}
}

.CE
is equivalent to the JSON string
.CS


{
    "doctools::idx" : {
        "label"      : "Keyword Index",
        "keywords"   : {
            "changelog"  : ["changelog.man","cvs.man"],
            "conversion" : ["doctools.man","docidx.man","doctoc.man","apps\\/dtplite.man","mpexpand.man"],
            "cvs"        : ["cvs.man"],
        },
        "references" : {
            "apps\\/dtplite.man" : ["manpage","dtplite"],
            "changelog.man"     : ["manpage","doctools::changelog"],
            "cvs.man"           : ["manpage","doctools::cvs"],
            "docidx.man"        : ["manpage","doctools::idx"],
            "doctoc.man"        : ["manpage","doctools::toc"],
            "doctools.man"      : ["manpage","doctools"],
            "mpexpand.man"      : ["manpage","mpexpand"]
        },
        "title"      : ""
    }
}

.CE
.SH "KEYWORD INDEX SERIALIZATION FORMAT"
Here we specify the format used by the doctools v2 packages to
serialize keyword indices as immutable values for transport,
comparison, etc.
.PP
We distinguish between \fIregular\fR and \fIcanonical\fR







<
<

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

<



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

<







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
.PP
.SH "JSON NOTATION OF KEYWORD INDICES"
The JSON format used for keyword indices is a direct translation of
the \fBKeyword index serialization format\fR, mapping Tcl
dictionaries as JSON objects and Tcl lists as JSON arrays.
For example, the Tcl serialization
.CS


doctools::idx {
label {Keyword Index}
keywords {
changelog  {changelog.man cvs.man}
conversion {doctools.man docidx.man doctoc.man apps/dtplite.man mpexpand.man}
cvs        cvs.man
}
references {
apps/dtplite.man {manpage dtplite}
changelog.man    {manpage doctools::changelog}
cvs.man          {manpage doctools::cvs}
docidx.man       {manpage doctools::idx}
doctoc.man       {manpage doctools::toc}
doctools.man     {manpage doctools}
mpexpand.man     {manpage mpexpand}
}
title {}
}

.CE
is equivalent to the JSON string
.CS
{


"doctools::idx" : {
"label"      : "Keyword Index",
"keywords"   : {
"changelog"  : ["changelog.man","cvs.man"],
"conversion" : ["doctools.man","docidx.man","doctoc.man","apps\\/dtplite.man","mpexpand.man"],
"cvs"        : ["cvs.man"],
},
"references" : {
"apps\\/dtplite.man" : ["manpage","dtplite"],
"changelog.man"     : ["manpage","doctools::changelog"],
"cvs.man"           : ["manpage","doctools::cvs"],
"docidx.man"        : ["manpage","doctools::idx"],
"doctoc.man"        : ["manpage","doctools::toc"],
"doctools.man"      : ["manpage","doctools"],
"mpexpand.man"      : ["manpage","mpexpand"]
},
"title"      : ""
}
}

.CE
.SH "KEYWORD INDEX SERIALIZATION FORMAT"
Here we specify the format used by the doctools v2 packages to
serialize keyword indices as immutable values for transport,
comparison, etc.
.PP
We distinguish between \fIregular\fR and \fIcanonical\fR
420
421
422
423
424
425
426
427
428
.SH KEYWORDS
JSON, deserialization, doctools, import, index
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

413
414
415
416
417
418
419

420
.SH KEYWORDS
JSON, deserialization, doctools, import, index
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
intended for the markup of \fItables of contents\fR, and of general
documentation, respectively.
They are described in their own sets of documents, starting at
the \fIDocTools - Tables Of Contents\fR and
the \fIDocTools - General\fR, respectively.
.SH "PACKAGE OVERVIEW"
.CS


                                    ~~~~~~~~~~~ doctools::idx ~~~~~~~~~~~
                                   ~~                   |               ~~
                doctools::idx::export ~~~~~~~~~~~~~~~~~ | ~~~~~~~~~~~~~ doctools::idx::import
                        |                               |                       |
        +---------------+-------------------------+     |    +------------------+---------------+-----------------------+---------------+
        |               |                         |     |    |                  |               |                       |               |
doctools::config        =                         |     |    |                  =       doctools::include       doctools::config doctools::paths
                        |                         |     |    |                  |
                doctools::idx::export::<*>        |     |    |          doctools::idx::import::<*>
                        docidx                    |     |    |                  docidx, json
                        json                      |     |    |                  |           \\\\
                        html                      |     |    |          doctools::idx::parse \\\\
                        nroff                     |     |    |                  |             \\\\
                        wiki                      |     |    |  +---------------+              json
                        text                      |     |    |  |               |
                                                doctools::idx::structure        |
                                                                                |
                                                                        +-------+---------------+
                                                                        |                       |
          doctools::html  doctools::html::cssdefaults           doctools::tcl::parse    doctools::msgcat
                |                                                                               |
          doctools::text  doctools::nroff::man_macros                                           =
                                                                                                |
                                                                                        doctools::msgcat::idx::<*>
                                                                                                c, en, de, fr
                                                                                                (fr == en for now)
        ~~      Interoperable objects, without actual package dependencies
        --      Package dependency, higher requires lower package
        =       Dynamic dependency through plugin system
        <*>     Multiple packages following the given form of naming.


.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 <[email protected]>

.fi







<
<
|
|
|
|
|
|

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

















<

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
intended for the markup of \fItables of contents\fR, and of general
documentation, respectively.
They are described in their own sets of documents, starting at
the \fIDocTools - Tables Of Contents\fR and
the \fIDocTools - General\fR, respectively.
.SH "PACKAGE OVERVIEW"
.CS


~~~~~~~~~~~ doctools::idx ~~~~~~~~~~~
~~                   |               ~~
doctools::idx::export ~~~~~~~~~~~~~~~~~ | ~~~~~~~~~~~~~ doctools::idx::import
|                               |                       |
+---------------+-------------------------+     |    +------------------+---------------+-----------------------+---------------+
|               |                         |     |    |                  |               |                       |               |
doctools::config        =                         |     |    |                  =       doctools::include       doctools::config doctools::paths
|                         |     |    |                  |
doctools::idx::export::<*>        |     |    |          doctools::idx::import::<*>
docidx                    |     |    |                  docidx, json
json                      |     |    |                  |           \\\\
html                      |     |    |          doctools::idx::parse \\\\
nroff                     |     |    |                  |             \\\\
wiki                      |     |    |  +---------------+              json
text                      |     |    |  |               |
doctools::idx::structure        |
|
+-------+---------------+
|                       |
doctools::html  doctools::html::cssdefaults           doctools::tcl::parse    doctools::msgcat
|                                                                               |
doctools::text  doctools::nroff::man_macros                                           =
|
doctools::msgcat::idx::<*>
c, en, de, fr
(fr == en for now)
~~      Interoperable objects, without actual package dependencies
--      Package dependency, higher requires lower package
=       Dynamic dependency through plugin system
<*>     Multiple packages following the given form of naming.


.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 <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
283
284
285
286
287
288
289
290
291
.SH KEYWORDS
C, catalog package, docidx, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

282
283
284
285
286
287
288

289
.SH KEYWORDS
C, catalog package, docidx, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
283
284
285
286
287
288
289
290
291
.SH KEYWORDS
DE, catalog package, docidx, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

282
283
284
285
286
287
288

289
.SH KEYWORDS
DE, catalog package, docidx, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
283
284
285
286
287
288
289
290
291
.SH KEYWORDS
EN, catalog package, docidx, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

282
283
284
285
286
287
288

289
.SH KEYWORDS
EN, catalog package, docidx, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
283
284
285
286
287
288
289
290
291
.SH KEYWORDS
FR, catalog package, docidx, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

282
283
284
285
286
287
288

289
.SH KEYWORDS
FR, catalog package, docidx, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
499
500
501
502
503
504
505
506
507
.SH KEYWORDS
docidx, doctools, lexer, parser
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

498
499
500
501
502
503
504

505
.SH KEYWORDS
docidx, doctools, lexer, parser
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
427
428
429
430
431
432
433
434
435
.SH KEYWORDS
deserialization, docidx, doctools, serialization
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

426
427
428
429
430
431
432

433
.SH KEYWORDS
deserialization, docidx, doctools, serialization
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
701
702
703
704
705
706
707
708
709
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

700
701
702
703
704
705
706

707
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
649
650
651
652
653
654
655
656
657
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

648
649
650
651
652
653
654

655
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
453
454
455
456
457
458
459
460
461
.SH KEYWORDS
doctoc, doctools, export, serialization, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

452
453
454
455
456
457
458

459
.SH KEYWORDS
doctoc, doctools, export, serialization, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
503
504
505
506
507
508
509
510
511
.SH KEYWORDS
HTML, doctools, export, serialization, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

502
503
504
505
506
507
508

509
.SH KEYWORDS
HTML, doctools, export, serialization, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.PP
.SH "JSON NOTATION OF TABLES OF CONTENTS"
The JSON format used for tables of contents is a direct translation of
the \fBToC serialization format\fR, mapping Tcl dictionaries as
JSON objects and Tcl lists as JSON arrays.
For example, the Tcl serialization
.CS


doctools::toc {
    items {
        {reference {
	    desc {DocTools - Tables of Contents}
	     id introduction.man
	     label doctools::toc::introduction
	}}
	{division {
	     id processing.man
	     items {
	         {reference {
		     desc {doctoc serialization utilities}
		     id structure.man
		     label doctools::toc::structure
		 }}
		 {reference {
		     desc {Parsing text in doctoc format}
		     id parse.man
		     label doctools::toc::parse
		 }}
	     }
             label Processing
        }}
    }
    label {Table of Contents}
    title TOC
}

.CE
is equivalent to the JSON string
.CS


{
    "doctools::toc" : {
        "items" : [{
            "reference" : {
                "desc"  : "DocTools - Tables of Contents",
                "id"    : "introduction.man",
                "label" : "doctools::toc::introduction"
            }
        },{
            "division" : {
                "id"    : "processing.man",
                "items" : [{
                    "reference" : {
                        "desc"  : "doctoc serialization utilities",
                        "id"    : "structure.man",
                        "label" : "doctools::toc::structure"
                    }
                },{
                    "reference" : {
                        "desc"  : "Parsing text in doctoc format",
                        "id"    : "parse.man",
                        "label" : "doctools::toc::parse"
                    }
                }],
                "label" : "Processing"
            }
        }],
        "label" : "Table of Contents",
        "title" : "TOC"
    }
}

.CE
.SH CONFIGURATION
The JSON export plugin recognizes the following configuration
variables and changes its behaviour as they specify.
.TP
boolean \fIindented\fR
If this flag is set the plugin will break the generated JSON code







<
<

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

<



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

<







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
.PP
.SH "JSON NOTATION OF TABLES OF CONTENTS"
The JSON format used for tables of contents is a direct translation of
the \fBToC serialization format\fR, mapping Tcl dictionaries as
JSON objects and Tcl lists as JSON arrays.
For example, the Tcl serialization
.CS


doctools::toc {
items {
{reference {
desc {DocTools - Tables of Contents}
id introduction.man
label doctools::toc::introduction
}}
{division {
id processing.man
items {
{reference {
desc {doctoc serialization utilities}
id structure.man
label doctools::toc::structure
}}
{reference {
desc {Parsing text in doctoc format}
id parse.man
label doctools::toc::parse
}}
}
label Processing
}}
}
label {Table of Contents}
title TOC
}

.CE
is equivalent to the JSON string
.CS
{


"doctools::toc" : {
"items" : [{
"reference" : {
"desc"  : "DocTools - Tables of Contents",
"id"    : "introduction.man",
"label" : "doctools::toc::introduction"
}
},{
"division" : {
"id"    : "processing.man",
"items" : [{
"reference" : {
"desc"  : "doctoc serialization utilities",
"id"    : "structure.man",
"label" : "doctools::toc::structure"
}
},{
"reference" : {
"desc"  : "Parsing text in doctoc format",
"id"    : "parse.man",
"label" : "doctools::toc::parse"
}
}],
"label" : "Processing"
}
}],
"label" : "Table of Contents",
"title" : "TOC"
}
}

.CE
.SH CONFIGURATION
The JSON export plugin recognizes the following configuration
variables and changes its behaviour as they specify.
.TP
boolean \fIindented\fR
If this flag is set the plugin will break the generated JSON code
491
492
493
494
495
496
497
498
499
.SH KEYWORDS
JSON, doctools, export, serialization, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

484
485
486
487
488
489
490

491
.SH KEYWORDS
JSON, doctools, export, serialization, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
422
423
424
425
426
427
428
429
430
.SH KEYWORDS
doctools, export, nroff, serialization, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

421
422
423
424
425
426
427

428
.SH KEYWORDS
doctools, export, nroff, serialization, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
405
406
407
408
409
410
411
412
413
.SH KEYWORDS
doctools, export, plain text, serialization, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

404
405
406
407
408
409
410

411
.SH KEYWORDS
doctools, export, plain text, serialization, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
411
412
413
414
415
416
417
418
419
.SH KEYWORDS
doctools, export, serialization, table of contents, toc, wiki
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

410
411
412
413
414
415
416

417
.SH KEYWORDS
doctools, export, serialization, table of contents, toc, wiki
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
730
731
732
733
734
735
736
737
738
.SH KEYWORDS
conversion, doctoc, documentation, import, json, manpage, markup, parsing, plugin, reference, table, table of contents, url
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

729
730
731
732
733
734
735

736
.SH KEYWORDS
conversion, doctoc, documentation, import, json, manpage, markup, parsing, plugin, reference, table, table of contents, url
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
430
431
432
433
434
435
436
437
438
.SH KEYWORDS
deserialization, doctoc, doctools, import, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

429
430
431
432
433
434
435

436
.SH KEYWORDS
deserialization, doctoc, doctools, import, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.PP
.SH "JSON NOTATION OF TABLES OF CONTENTS"
The JSON format used for tables of contents is a direct translation of
the \fBToC serialization format\fR, mapping Tcl dictionaries as
JSON objects and Tcl lists as JSON arrays.
For example, the Tcl serialization
.CS


doctools::toc {
    items {
        {reference {
	    desc {DocTools - Tables of Contents}
	     id introduction.man
	     label doctools::toc::introduction
	}}
	{division {
	     id processing.man
	     items {
	         {reference {
		     desc {doctoc serialization utilities}
		     id structure.man
		     label doctools::toc::structure
		 }}
		 {reference {
		     desc {Parsing text in doctoc format}
		     id parse.man
		     label doctools::toc::parse
		 }}
	     }
             label Processing
        }}
    }
    label {Table of Contents}
    title TOC
}

.CE
is equivalent to the JSON string
.CS


{
    "doctools::toc" : {
        "items" : [{
            "reference" : {
                "desc"  : "DocTools - Tables of Contents",
                "id"    : "introduction.man",
                "label" : "doctools::toc::introduction"
            }
        },{
            "division" : {
                "id"    : "processing.man",
                "items" : [{
                    "reference" : {
                        "desc"  : "doctoc serialization utilities",
                        "id"    : "structure.man",
                        "label" : "doctools::toc::structure"
                    }
                },{
                    "reference" : {
                        "desc"  : "Parsing text in doctoc format",
                        "id"    : "parse.man",
                        "label" : "doctools::toc::parse"
                    }
                }],
                "label" : "Processing"
            }
        }],
        "label" : "Table of Contents",
        "title" : "TOC"
    }
}

.CE
.SH "TOC SERIALIZATION FORMAT"
Here we specify the format used by the doctools v2 packages to
serialize tables of contents as immutable values for transport,
comparison, etc.
.PP
We distinguish between \fIregular\fR and \fIcanonical\fR







<
<

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

<



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

<







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
.PP
.SH "JSON NOTATION OF TABLES OF CONTENTS"
The JSON format used for tables of contents is a direct translation of
the \fBToC serialization format\fR, mapping Tcl dictionaries as
JSON objects and Tcl lists as JSON arrays.
For example, the Tcl serialization
.CS


doctools::toc {
items {
{reference {
desc {DocTools - Tables of Contents}
id introduction.man
label doctools::toc::introduction
}}
{division {
id processing.man
items {
{reference {
desc {doctoc serialization utilities}
id structure.man
label doctools::toc::structure
}}
{reference {
desc {Parsing text in doctoc format}
id parse.man
label doctools::toc::parse
}}
}
label Processing
}}
}
label {Table of Contents}
title TOC
}

.CE
is equivalent to the JSON string
.CS
{


"doctools::toc" : {
"items" : [{
"reference" : {
"desc"  : "DocTools - Tables of Contents",
"id"    : "introduction.man",
"label" : "doctools::toc::introduction"
}
},{
"division" : {
"id"    : "processing.man",
"items" : [{
"reference" : {
"desc"  : "doctoc serialization utilities",
"id"    : "structure.man",
"label" : "doctools::toc::structure"
}
},{
"reference" : {
"desc"  : "Parsing text in doctoc format",
"id"    : "parse.man",
"label" : "doctools::toc::parse"
}
}],
"label" : "Processing"
}
}],
"label" : "Table of Contents",
"title" : "TOC"
}
}

.CE
.SH "TOC SERIALIZATION FORMAT"
Here we specify the format used by the doctools v2 packages to
serialize tables of contents as immutable values for transport,
comparison, etc.
.PP
We distinguish between \fIregular\fR and \fIcanonical\fR
468
469
470
471
472
473
474
475
476
.SH KEYWORDS
JSON, deserialization, doctools, import, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

461
462
463
464
465
466
467

468
.SH KEYWORDS
JSON, deserialization, doctools, import, table of contents, toc
.SH CATEGORY
Text formatter plugin
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
intended for the markup of \fIkeyword indices\fR, and of general
documentation, respectively.
They are described in their own sets of documents, starting at
the \fIDocTools - Keyword Indices\fR and
the \fIDocTools - General\fR, respectively.
.SH "PACKAGE OVERVIEW"
.CS


                                    ~~~~~~~~~~~ doctools::toc ~~~~~~~~~~~
                                   ~~                   |               ~~
                doctools::toc::export ~~~~~~~~~~~~~~~~~ | ~~~~~~~~~~~~~ doctools::toc::import
                        |                               |                       |
        +---------------+-------------------------+     |    +------------------+---------------+-----------------------+---------------+
        |               |                         |     |    |                  |               |                       |               |
doctools::config        =                         |     |    |                  =       doctools::include       doctools::config doctools::paths
                        |                         |     |    |                  |
                doctools::toc::export::<*>        |     |    |          doctools::toc::import::<*>
                        doctoc                    |     |    |                  doctoc, json
                        json                      |     |    |                  |           \\\\
                        html                      |     |    |          doctools::toc::parse \\\\
                        nroff                     |     |    |                  |             \\\\
                        wiki                      |     |    |  +---------------+              json
                        text                      |     |    |  |               |
                                                doctools::toc::structure        |
                                                                                |
                                                                        +-------+---------------+
                                                                        |                       |
          doctools::html  doctools::html::cssdefaults           doctools::tcl::parse    doctools::msgcat
                |                                                                               |
          doctools::text  doctools::nroff::man_macros                                           =
                                                                                                |
                                                                                        doctools::msgcat::toc::<*>
                                                                                                c, en, de, fr
                                                                                                (fr == en for now)
        ~~      Interoperable objects, without actual package dependencies
        --      Package dependency, higher requires lower package
        =       Dynamic dependency through plugin system
        <*>     Multiple packages following the given form of naming.


.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 <[email protected]>

.fi







<
<
|
|
|
|
|
|

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

















<

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
intended for the markup of \fIkeyword indices\fR, and of general
documentation, respectively.
They are described in their own sets of documents, starting at
the \fIDocTools - Keyword Indices\fR and
the \fIDocTools - General\fR, respectively.
.SH "PACKAGE OVERVIEW"
.CS


~~~~~~~~~~~ doctools::toc ~~~~~~~~~~~
~~                   |               ~~
doctools::toc::export ~~~~~~~~~~~~~~~~~ | ~~~~~~~~~~~~~ doctools::toc::import
|                               |                       |
+---------------+-------------------------+     |    +------------------+---------------+-----------------------+---------------+
|               |                         |     |    |                  |               |                       |               |
doctools::config        =                         |     |    |                  =       doctools::include       doctools::config doctools::paths
|                         |     |    |                  |
doctools::toc::export::<*>        |     |    |          doctools::toc::import::<*>
doctoc                    |     |    |                  doctoc, json
json                      |     |    |                  |           \\\\
html                      |     |    |          doctools::toc::parse \\\\
nroff                     |     |    |                  |             \\\\
wiki                      |     |    |  +---------------+              json
text                      |     |    |  |               |
doctools::toc::structure        |
|
+-------+---------------+
|                       |
doctools::html  doctools::html::cssdefaults           doctools::tcl::parse    doctools::msgcat
|                                                                               |
doctools::text  doctools::nroff::man_macros                                           =
|
doctools::msgcat::toc::<*>
c, en, de, fr
(fr == en for now)
~~      Interoperable objects, without actual package dependencies
--      Package dependency, higher requires lower package
=       Dynamic dependency through plugin system
<*>     Multiple packages following the given form of naming.


.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 <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
283
284
285
286
287
288
289
290
291
.SH KEYWORDS
C, catalog package, doctoc, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

282
283
284
285
286
287
288

289
.SH KEYWORDS
C, catalog package, doctoc, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
283
284
285
286
287
288
289
290
291
.SH KEYWORDS
DE, catalog package, doctoc, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

282
283
284
285
286
287
288

289
.SH KEYWORDS
DE, catalog package, doctoc, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
283
284
285
286
287
288
289
290
291
.SH KEYWORDS
EN, catalog package, doctoc, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

282
283
284
285
286
287
288

289
.SH KEYWORDS
EN, catalog package, doctoc, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
283
284
285
286
287
288
289
290
291
.SH KEYWORDS
FR, catalog package, doctoc, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

282
283
284
285
286
287
288

289
.SH KEYWORDS
FR, catalog package, doctoc, doctools, i18n, internationalization, l10n, localization, message catalog, message package
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
527
528
529
530
531
532
533
534
535
.SH KEYWORDS
doctoc, doctools, lexer, parser
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

526
527
528
529
530
531
532

533
.SH KEYWORDS
doctoc, doctools, lexer, parser
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
472
473
474
475
476
477
478
479
480
.SH KEYWORDS
deserialization, doctoc, doctools, serialization
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

471
472
473
474
475
476
477

478
.SH KEYWORDS
deserialization, doctoc, doctools, serialization
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Added embedded/man/files/modules/dtplite/dtplite.n.





















































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
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
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
'\"
'\" Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/man/files/modules/dtplite/dtplite.n' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2004 Andreas Kupries <[email protected]>
'\"
'\" 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",
'\"	or "in/out" to describe whether procedure reads or modifies arg,
'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
'\"	needed;  use .AS below instead)
'\"
'\" .AS ?type? ?name?
'\"	Give maximum sizes of arguments for setting tab stops.  Type and
'\"	name are examples of largest possible arguments that will be passed
'\"	to .AP later.  If args are omitted, default tab stops are used.
'\"
'\" .BS
'\"	Start box enclosure.  From here until next .BE, everything will be
'\"	enclosed in one large box.
'\"
'\" .BE
'\"	End of box enclosure.
'\"
'\" .CS
'\"	Begin code excerpt.
'\"
'\" .CE
'\"	End code excerpt.
'\"
'\" .VS ?version? ?br?
'\"	Begin vertical sidebar, for use in marking newly-changed parts
'\"	of man pages.  The first argument is ignored and used for recording
'\"	the version when the .VS was added, so that the sidebars can be
'\"	found and removed when they reach a certain age.  If another argument
'\"	is present, then a line break is forced before starting the sidebar.
'\"
'\" .VE
'\"	End of vertical sidebar.
'\"
'\" .DS
'\"	Begin an indented unfilled display.
'\"
'\" .DE
'\"	End of indented unfilled display.
'\"
'\" .SO
'\"	Start of list of standard options for a Tk widget.  The
'\"	options follow on successive lines, in four columns separated
'\"	by tabs.
'\"
'\" .SE
'\"	End of list of standard options for a Tk widget.
'\"
'\" .OP cmdName dbName dbClass
'\"	Start of description of a specific option.  cmdName gives the
'\"	option's name as specified in the class command, dbName gives
'\"	the option's name in the option database, and dbClass gives
'\"	the option's class in the option database.
'\"
'\" .UL arg1 arg2
'\"	Print arg1 underlined, then print arg2 normally.
'\"
'\" RCS: @(#) $Id: man.macros,v 1.1 2009/01/30 04:56:47 andreas_kupries Exp $
'\"
'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
.if t .wh -1.3i ^B
.nr ^l \n(.l
.ad b
'\"	# Start an argument description
.de AP
.ie !"\\$4"" .TP \\$4
.el \{\
.   ie !"\\$2"" .TP \\n()Cu
.   el          .TP 15
.\}
.ta \\n()Au \\n()Bu
.ie !"\\$3"" \{\
\&\\$1	\\fI\\$2\\fP	(\\$3)
.\".b
.\}
.el \{\
.br
.ie !"\\$2"" \{\
\&\\$1	\\fI\\$2\\fP
.\}
.el \{\
\&\\fI\\$1\\fP
.\}
.\}
..
'\"	# define tabbing values for .AP
.de AS
.nr )A 10n
.if !"\\$1"" .nr )A \\w'\\$1'u+3n
.nr )B \\n()Au+15n
.\"
.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
.nr )C \\n()Bu+\\w'(in/out)'u+2n
..
.AS Tcl_Interp Tcl_CreateInterp in/out
'\"	# BS - start boxed text
'\"	# ^y = starting y location
'\"	# ^b = 1
.de BS
.br
.mk ^y
.nr ^b 1u
.if n .nf
.if n .ti 0
.if n \l'\\n(.lu\(ul'
.if n .fi
..
'\"	# BE - end boxed text (draw box now)
.de BE
.nf
.ti 0
.mk ^t
.ie n \l'\\n(^lu\(ul'
.el \{\
.\"	Draw four-sided box normally, but don't draw top of
.\"	box if the box started on an earlier page.
.ie !\\n(^b-1 \{\
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
.\}
.el \}\
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
.\}
.\}
.fi
.br
.nr ^b 0
..
'\"	# VS - start vertical sidebar
'\"	# ^Y = starting y location
'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
.de VS
.if !"\\$2"" .br
.mk ^Y
.ie n 'mc \s12\(br\s0
.el .nr ^v 1u
..
'\"	# VE - end of vertical sidebar
.de VE
.ie n 'mc
.el \{\
.ev 2
.nf
.ti 0
.mk ^t
\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
.sp -1
.fi
.ev
.\}
.nr ^v 0
..
'\"	# Special macro to handle page bottom:  finish off current
'\"	# box/sidebar if in box/sidebar mode, then invoked standard
'\"	# page bottom macro.
.de ^B
.ev 2
'ti 0
'nf
.mk ^t
.if \\n(^b \{\
.\"	Draw three-sided box if this is the box's first page,
.\"	draw two sides but no top otherwise.
.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
.\}
.if \\n(^v \{\
.nr ^x \\n(^tu+1v-\\n(^Yu
\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
.\}
.bp
'fi
.ev
.if \\n(^b \{\
.mk ^y
.nr ^b 2
.\}
.if \\n(^v \{\
.mk ^Y
.\}
..
'\"	# DS - begin display
.de DS
.RS
.nf
.sp
..
'\"	# DE - end display
.de DE
.fi
.RE
.sp
..
'\"	# SO - start of list of standard options
.de SO
.SH "STANDARD OPTIONS"
.LP
.nf
.ta 4c 8c 12c
.ft B
..
'\"	# SE - end of list of standard options
.de SE
.fi
.ft R
.LP
See the \\fBoptions\\fR manual entry for details on the standard options.
..
'\"	# OP - start of full description for a single option
.de OP
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
'\"	# CE - end code excerpt
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "dtplite" n 1.0 tcllib "Documentation toolbox"
.BS
.SH NAME
dtplite \- Lightweight DocTools Markup Processor
.SH SYNOPSIS
\fBdtplite\fR \fB-o\fR \fIoutput\fR ?options? \fIformat\fR \fIinputfile\fR
.sp
\fBdtplite\fR \fBvalidate\fR \fIinputfile\fR
.sp
\fBdtplite\fR \fB-o\fR \fIoutput\fR ?options? \fIformat\fR \fIinputdirectory\fR
.sp
\fBdtplite\fR \fB-merge\fR \fB-o\fR \fIoutput\fR ?options? \fIformat\fR \fIinputdirectory\fR
.sp
.BE
.SH DESCRIPTION
.PP
The application described by this document, \fBdtplite\fR, is the
successor to the extremely simple \fBmpexpand\fR. Influenced in its
functionality by the \fBdtp\fR doctools processor it is much more
powerful than \fBmpexpand\fR, yet still as easy to use; definitely
easier than \fBdtp\fR with its myriad of subcommands and options.
.PP
\fBdtplite\fR is based upon the package \fBdoctools\fR, like
the other two processors.
.SS "USE CASES"
\fBdtplite\fR was written with the following three use cases in
mind.
.PP
.IP [1]
Validation of a single document, i.e. checking that it was written in
valid doctools format. This mode can also be used to get a preliminary
version of the formatted output for a single document, for display in
a browser, nroff, etc., allowing proofreading of the formatting.
.IP [2]
Generation of the formatted documentation for a single package,
i.e. all the manpages, plus a table of contents and an index of
keywords.
.IP [3]
An extension of the previous mode of operation, a method for the easy
generation of one documentation tree for several packages, and
especially of a unified table of contents and keyword index.
.PP
.PP
Beyond the above we also want to make use of the customization
features provided by the HTML formatter. It is not the only format the
application should be able to generate, but we anticipiate it to be
the most commonly used, and it is one of the few which do provide
customization hooks.
.PP
We allow the caller to specify a header string, footer string, a
stylesheet, and data for a bar of navigation links at the top of the
generated document.
While all can be set as long as the formatting engine provides an
appropriate engine parameter (See section \fBOPTIONS\fR) the last
two have internal processing which make them specific to HTML.
.SS "COMMAND LINE"
.TP
\fBdtplite\fR \fB-o\fR \fIoutput\fR ?options? \fIformat\fR \fIinputfile\fR
This is the form for use case [1]. The \fIoptions\fR will be
explained later, in section \fBOPTIONS\fR.
.RS
.TP
path \fIoutput\fR (in)
This argument specifies where to write the generated document. It can
be the path to a file or directory, or \fB-\fR.
The last value causes the application to write the generated
documented to \fBstdout\fR.
.sp
If the \fIoutput\fR does not exist then [file dirname $output]
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 \fIinputfile\fR,
the \fIformat\fR, and the value given to option \fB-ext\fR (if
present).
.TP
(path|handle) \fIformat\fR (in)
This argument specifies the formatting engine to use when processing
the input, and thus the format of the generated document. See section
\fBFORMATS\fR for the possibilities recognized by the application.
.TP
path \fIinputfile\fR (in)
This argument specifies the path to the file to process. It has to
exist, must be readable, and written in \fIdoctools\fR format.
.RE
.sp
.TP
\fBdtplite\fR \fBvalidate\fR \fIinputfile\fR
This is a simpler form for use case [1]. 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.
.TP
\fBdtplite\fR \fB-o\fR \fIoutput\fR ?options? \fIformat\fR \fIinputdirectory\fR
This is the form for use case [2]. It differs from the form for
use case [1] by having the input documents specified through a
directory instead of a file. The other arguments are identical, except
for \fIoutput\fR, which now has to be the path to an existing and
writable directory.
.sp
The input documents are all files in \fIinputdirectory\fR or any of
its subdirectories which were recognized by \fBfileutil::fileType\fR
as containing text in \fIdoctools\fR format.
.TP
\fBdtplite\fR \fB-merge\fR \fB-o\fR \fIoutput\fR ?options? \fIformat\fR \fIinputdirectory\fR
This is the form for use case [3]. The only difference to the
form for use case [2] is the additional option \fB-merge\fR.
.sp
Each such call will merge the generated documents coming from
processing the input documents under \fIinputdirectory\fR or any of
its subdirectories to the files under \fIoutput\fR. In this manner it
is possible to incrementally build the unified documentation for any
number of packages. Note that it is necessary to run through all the
packages twice to get fully correct cross-references (for formats
supporting them).
.PP
.SS OPTIONS
This section describes all the options available to the user of the
application, with
the exception of the options \fB-o\fR and \fB-merge\fR. These
two were described already, in section \fBCOMMAND LINE\fR.
.PP
.TP
\fB-exclude\fR 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.
.TP
\fB-ext\fR 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 \fIformat\fR as the extension
by default. This option here will override this however, forcing it to
use \fIstring\fR as the file extension. This option is ignored if the
name of the output file is fully specified through option \fB-o\fR.
.sp
When used multiple times only the last definition is relevant.
.TP
\fB-header\fR file
This option can be used if and only if the selected \fIformat\fR
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
\fB<body>\fR.
If navigation buttons are present (see option \fB-nav\fR below),
then the HTML generated for them is appended to the header data
originating here before the final assignment to the parameter.
.sp
When used multiple times only the last definition is relevant.
.TP
\fB-footer\fR file
Like \fB-header\fR, except that: Any navigation buttons are ignored,
the corresponding required engine parameter is named "footer", and the
data is inserted just before the tag \fB</body>\fR.
.sp
When used multiple times only the last definition is relevant.
.TP
\fB-style\fR file
This option can be used if and only if the selected \fIformat\fR
provides an engine parameter named "meta". When specified it will
generate a piece of HTML code declaring the \fIfile\fR as the
stylesheet for the generated document and assign that to the
parameter. The HTML engine will insert this inot the document, just
after the tag \fB<head>\fR.
.sp
When processing an input directory the stylesheet file is copied into
the output directory and the generated HTML will refer to the copy, to
make the result more self-contained. When processing an input file we
have no location to copy the stylesheet to and so just reference it as
specified.
.sp
When used multiple times only the last definition is relevant.
.TP
\fB-toc\fR path
This option specifies a doctoc file to use for the table of contents
instead of generating our own.
.sp
When used multiple times only the last definition is relevant.
.TP
\fB-nav\fR label url
Use this option to specify a navigation button with \fIlabel\fR to
display and the \fIurl\fR to link to. This option can be used if and
only if the selected \fIformat\fR provides an engine parameter named
"header". The HTML generated for this is appended to whatever data we
got from option \fB-header\fR before it is inserted into the
generated documents.
.sp
When used multiple times all definitions are collected and a
navigation bar is created, with the first definition shown at the left
edge and the last definition to the right.
.PP
.SS FORMATS
At first the \fIformat\fR 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.
.PP
\fINote a limitation\fR: If treating the format as path to the tcl
script implementing the engine was sucessful, then this script has to
implement not only the engine API for doctools, i.e.
\fIdoctools_api\fR, but for \fIdoctoc_api\fR and \fIdocidx_api\fR
as well. Otherwise the generation of a table of contents and of a
keyword index will fail.
.PP
List of predefined formats, i.e. as provided by the
package \fBdoctools\fR:
.PP
.TP
\fBnroff\fR
The processor generates *roff output, the standard format for unix
manpages.
.TP
\fBhtml\fR
The processor generates HTML output, for usage in and display by web
browsers. This engine is currently the only one providing the various
engine parameters required for the additional customaization of the
output.
.TP
\fBtmml\fR
The processor generates TMML output, the Tcl Manpage Markup Language,
a derivative of XML.
.TP
\fBlatex\fR
The processor generates LaTeX output.
.TP
\fBwiki\fR
The processor generates Wiki markup as understood by \fBwikit\fR.
.TP
\fBlist\fR
The processor extracts the information provided by \fBmanpage_begin\fR.
This format is used internally to extract the meta data from which
both table of contents and keyword index are derived from.
.TP
\fBnull\fR
The processor does not generate any output. This is equivalent to
\fBvalidate\fR.
.PP
.SS "DIRECTORY STRUCTURES"
In this section we describe the directory structures generated by the
application under \fIoutput\fR when processing all documents in an
\fIinputdirectory\fR. In other words, this is only relevant to the use
cases [2] and [3].
.TP
[2]
The following directory structure is created when processing a single
set of input documents.  The file extension used is for output in
HTML, but that is not relevant to the structure and was just used to
have proper file names.
.CS
output/
toc.html
index.html
files/
path/to/FOO.html
.CE
.IP
The last line in the example shows the document
generated for a file FOO located at
.CS
inputdirectory/path/to/FOO
.CE
.TP
[3]
When merging many packages into a unified set of documents the
generated directory structure is a bit deeper:
.CS
output
\.toc
\.idx
\.tocdoc
\.idxdoc
\.xrf
toc.html
index.html
FOO1/
\...
FOO2/
toc.html
files/
path/to/BAR.html
.CE
.IP
Each of the directories FOO1, ... contains the documents generated for
the package FOO1, ... and follows the structure shown for use case
[2]. The only exception is that there is no per-package index.
.sp
The files "\fI.toc\fR", "\fI.idx\fR", and "\fI.xrf\fR" contain the
internal status of the whole output and will be read and updated by
the next invokation. Their contents will not be documented. Remove
these files when all packages wanted for the output have been
processed, i.e. when the output is complete.
.sp
The files "\fI.tocdoc\fR", and "\fI.idxdoc\fR", are intermediate files
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
.nf
Copyright (c) 2004 Andreas Kupries <[email protected]>
.fi

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
.TP
\fB::fileutil::lexnormalize\fR \fIpath\fR
This command performs purely lexical normalization on the \fIpath\fR and returns
the changed path as its result. Symbolic links in the path are \fInot\fR resolved.
.sp
Examples:
.CS


    fileutil::lexnormalize /foo/./bar
    => /foo/bar

    fileutil::lexnormalize /foo/../bar
    => /bar

.CE
.TP
\fB::fileutil::fullnormalize\fR \fIpath\fR
This command resolves all symbolic links in the \fIpath\fR and returns
the changed path as its result.
In contrast to the builtin \fBfile normalize\fR this command
resolves a symbolic link in the last element of the path as well.







<
<
|
|
<
|
|
<







306
307
308
309
310
311
312


313
314

315
316

317
318
319
320
321
322
323
.TP
\fB::fileutil::lexnormalize\fR \fIpath\fR
This command performs purely lexical normalization on the \fIpath\fR and returns
the changed path as its result. Symbolic links in the path are \fInot\fR resolved.
.sp
Examples:
.CS


fileutil::lexnormalize /foo/./bar
=> /foo/bar

fileutil::lexnormalize /foo/../bar
=> /bar

.CE
.TP
\fB::fileutil::fullnormalize\fR \fIpath\fR
This command resolves all symbolic links in the \fIpath\fR and returns
the changed path as its result.
In contrast to the builtin \fBfile normalize\fR this command
resolves a symbolic link in the last element of the path as well.
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
.sp
The result of \fIfiltercmd\fR is a boolean value that indicates if the
current file should be included in the list of interesting files.
.sp
Example:
.sp
.CS


    # find .tcl files
    package require fileutil
    proc is_tcl {name} {return [string match *.tcl $name]}
    set tcl_files [fileutil::find . is_tcl]

.CE
.TP
\fB::fileutil::findByPattern\fR \fIbasedir\fR ?\fB-regexp\fR|\fB-glob\fR? ?\fB--\fR? \fIpatterns\fR
This command is based upon the \fBTclX\fR command
\fBrecursive_glob\fR, except that it doesn't allow recursion over more
than one directory at a time. It uses \fB::fileutil::find\fR
internally and is thus able to and does follow symbolic links,







<
<
|
|
|
|
<







476
477
478
479
480
481
482


483
484
485
486

487
488
489
490
491
492
493
.sp
The result of \fIfiltercmd\fR is a boolean value that indicates if the
current file should be included in the list of interesting files.
.sp
Example:
.sp
.CS


# find .tcl files
package require fileutil
proc is_tcl {name} {return [string match *.tcl $name]}
set tcl_files [fileutil::find . is_tcl]

.CE
.TP
\fB::fileutil::findByPattern\fR \fIbasedir\fR ?\fB-regexp\fR|\fB-glob\fR? ?\fB--\fR? \fIpatterns\fR
This command is based upon the \fBTclX\fR command
\fBrecursive_glob\fR, except that it doesn't allow recursion over more
than one directory at a time. It uses \fB::fileutil::find\fR
internally and is thus able to and does follow symbolic links,

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
\fBtype?\fR
Returns the current path type limiter.
.PP
.SH EXAMPLES
The following examples assume that the variable \fBF\fR contains a
reference to a multi-file operation object.
.CS


    $F do copy                       \\\\
	the  *.dll                    \\\\
	from c:/TDK/PrivateOpenSSL/bin \\\\
	to   [installdir_of tls]

.CE
.CS


    $F do move      \\\\
	the  *       \\\\
	from /sources \\\\
	into /scratch  \\\\
	but not *.html

    # Alternatively use 'except for *.html'.

.CE
.CS


    $F do           \\\\
	move         \\\\
	the  index    \\\\
	from /sources  \\\\
	into /scratch   \\\\
	as   pkgIndex.tcl

.CE
.CS


    $F do         \\\\
	remove     \\\\
	the *.txt  \\\\
	in /scratch

.CE
Note that the fact that most commands just modify the object state
allows us to use more off forms as specifications instead of just
nearly-natural language sentences.
For example the second example in this section can re-arranged into:
.CS


    $F do            \\\\
	from /sources \\\\
	into /scratch  \\\\
	but not *.html \\\\
	move           \\\\
	the  *

.CE
and the result is not only still a valid specification, but even stays
relatively readable.
.PP
Further note that the information collected by the commands \fBbut\fR,
\fBexcept\fR, and \fBas\fR is automatically reset after the associated
\fBthe\fR was executed. However no other state is reset in that
manner, allowing the user to avoid repetitions of unchanging
information. For example the second and third examples of this section
can be merged and rewritten into the equivalent:
.CS


$F do                   \\\\
    move                 \\\\
    the  *                \\\\
    from /sources          \\\\
    into /scratch           \\\\
    but not *.html not index \\\\
    the  index               \\\\
    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







<
<
|
|
|
|
<


<
<
|
|
|
|
|
<
|
<


<
<
|
|
|
|
|
|
<


<
<
|
|
|
|
<






<
<
|
|
|
|
|
|
<











<
<

|
|
|
|
|
|
|
<












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
\fBtype?\fR
Returns the current path type limiter.
.PP
.SH EXAMPLES
The following examples assume that the variable \fBF\fR contains a
reference to a multi-file operation object.
.CS


$F do copy                       \\\\
the  *.dll                    \\\\
from c:/TDK/PrivateOpenSSL/bin \\\\
to   [installdir_of tls]

.CE
.CS


$F do move      \\\\
the  *       \\\\
from /sources \\\\
into /scratch  \\\\
but not *.html

# Alternatively use 'except for *.html'.

.CE
.CS


$F do           \\\\
move         \\\\
the  index    \\\\
from /sources  \\\\
into /scratch   \\\\
as   pkgIndex.tcl

.CE
.CS


$F do         \\\\
remove     \\\\
the *.txt  \\\\
in /scratch

.CE
Note that the fact that most commands just modify the object state
allows us to use more off forms as specifications instead of just
nearly-natural language sentences.
For example the second example in this section can re-arranged into:
.CS


$F do            \\\\
from /sources \\\\
into /scratch  \\\\
but not *.html \\\\
move           \\\\
the  *

.CE
and the result is not only still a valid specification, but even stays
relatively readable.
.PP
Further note that the information collected by the commands \fBbut\fR,
\fBexcept\fR, and \fBas\fR is automatically reset after the associated
\fBthe\fR was executed. However no other state is reset in that
manner, allowing the user to avoid repetitions of unchanging
information. For example the second and third examples of this section
can be merged and rewritten into the equivalent:
.CS


$F do                   \\\\
move                 \\\\
the  *                \\\\
from /sources          \\\\
into /scratch           \\\\
but not *.html not index \\\\
the  index               \\\\
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

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
absolute location \fIoffset\fR and returns it as its result. The
fetched value is further stored in the numeric buffer.
.sp
If \fIqual\fR is specified it is considered to be a mask and applied
to the fetched value before it is stored and returned. It has to have
the form of a partial Tcl bit-wise expression, i.e.
.CS


	& number

.CE
.IP
For example:
.CS


	Nv lelong 0 &0x8080ffff

.CE
.IP
For the possible types see section \fBNUMERIC TYPES\fR.
.TP
\fB::fileutil::magic::rt::N\fR \fItype\fR \fIoffset\fR \fIcomp\fR \fIval\fR ?\fIqual\fR?
This command behaves mostly like \fB::fileutil::magic::rt::Nv\fR,
except that it compares the fetched and masked value against \fIval\fR
as specified with \fIcomp\fR and returns the result of that
comparison.
.sp
The argument \fIcomp\fR has to contain one of Tcl's comparison
operators, and the comparison made will be
.CS


	<val> <comp> <fetched-and-masked-value>

.CE
.sp
The special comparison operator \fBx\fR signals that no comparison
should be done, or, in other words, that the fetched value will always
match \fIval\fR.
.TP
\fB::fileutil::magic::rt::Nvx\fR \fIatlevel\fR \fItype\fR \fIoffset\fR ?\fIqual\fR?







<
<
|
<




<
<
|
<













<
<
|
<







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
absolute location \fIoffset\fR and returns it as its result. The
fetched value is further stored in the numeric buffer.
.sp
If \fIqual\fR is specified it is considered to be a mask and applied
to the fetched value before it is stored and returned. It has to have
the form of a partial Tcl bit-wise expression, i.e.
.CS


& number

.CE
.IP
For example:
.CS


Nv lelong 0 &0x8080ffff

.CE
.IP
For the possible types see section \fBNUMERIC TYPES\fR.
.TP
\fB::fileutil::magic::rt::N\fR \fItype\fR \fIoffset\fR \fIcomp\fR \fIval\fR ?\fIqual\fR?
This command behaves mostly like \fB::fileutil::magic::rt::Nv\fR,
except that it compares the fetched and masked value against \fIval\fR
as specified with \fIcomp\fR and returns the result of that
comparison.
.sp
The argument \fIcomp\fR has to contain one of Tcl's comparison
operators, and the comparison made will be
.CS


<val> <comp> <fetched-and-masked-value>

.CE
.sp
The special comparison operator \fBx\fR signals that no comparison
should be done, or, in other words, that the fetched value will always
match \fIval\fR.
.TP
\fB::fileutil::magic::rt::Nvx\fR \fIatlevel\fR \fItype\fR \fIoffset\fR ?\fIqual\fR?

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
and looping over multiple generators at once. Writing a generator is also a
simple task, much like writing a normal procedure: simply use the \fBdefine\fR
command to define the generator, and then call \fByield\fR instead of \fBreturn\fR.
For example, we can define a generator for looping through the integers
in a particular range:
.PP
.CS


    generator define range {n m} {
        for {set i $n} {$i <= $m} {incr i} { generator yield $i }
    }
    generator foreach x [range 1 10] {
        puts "x = $x"
    }

.CE
.PP
The above example will print the numbers from 1 to 10 in sequence, as you would
expect. The difference from a normal loop over a list is that the numbers are
only generated as they are needed. If we insert a break into the loop then any
remaining numbers in the sequence would never be generated. To illustrate, we
can define a generator that produces the sequence of natural numbers: an
infinite series. A normal procedure would never return trying to produce this
series as a list. By using a generator we only have to generate those values
which are actually used:
.PP
.CS


    generator define nats {} {
        while 1 { generator yield [incr nat] }
    }
    generator foreach n [nats] {
        if {$n > 100} { break }
    }

.CE
.SH COMMANDS
.TP
\fBgenerator\fR \fBdefine\fR \fIname\fR \fIparams\fR \fIbody\fR
Creates a new generator procedure. The arguments to the command are identical to
those for \fBproc\fR: a \fIname\fR, a list of parameters, and a body. The
parameter list format is identical to a procedure. In particular, default values







<
<
|
|
|
|
|
|
<












<
<
|
|
|
|
|
|
<







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
and looping over multiple generators at once. Writing a generator is also a
simple task, much like writing a normal procedure: simply use the \fBdefine\fR
command to define the generator, and then call \fByield\fR instead of \fBreturn\fR.
For example, we can define a generator for looping through the integers
in a particular range:
.PP
.CS


generator define range {n m} {
for {set i $n} {$i <= $m} {incr i} { generator yield $i }
}
generator foreach x [range 1 10] {
puts "x = $x"
}

.CE
.PP
The above example will print the numbers from 1 to 10 in sequence, as you would
expect. The difference from a normal loop over a list is that the numbers are
only generated as they are needed. If we insert a break into the loop then any
remaining numbers in the sequence would never be generated. To illustrate, we
can define a generator that produces the sequence of natural numbers: an
infinite series. A normal procedure would never return trying to produce this
series as a list. By using a generator we only have to generate those values
which are actually used:
.PP
.CS


generator define nats {} {
while 1 { generator yield [incr nat] }
}
generator foreach n [nats] {
if {$n > 100} { break }
}

.CE
.SH COMMANDS
.TP
\fBgenerator\fR \fBdefine\fR \fIname\fR \fIparams\fR \fIbody\fR
Creates a new generator procedure. The arguments to the command are identical to
those for \fBproc\fR: a \fIname\fR, a list of parameters, and a body. The
parameter list format is identical to a procedure. In particular, default values
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
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
\fBfinally\fR block in the \fBtry\fR command, except that it is tied to the
life-cycle of the generator rather than to a particular scope. For example, if
we create a generator to iterate over the lines in a text file, we can use
\fBfinally\fR to ensure that the file is closed whenever the generator is
destroyed:
.sp
.CS


    generator define lines file {
        set in [open $file]
        # Ensure file is always closed
        generator finally close $in
        while {[gets $in line] >= 0} {
            generator yield $line
        }
    }
    generator foreach line [lines /etc/passwd] {
        puts "[incr count]: $line"
        if {$count > 10} { break }
    }
    # File will be closed even on early exit

.CE
.sp
If you create a generator that consumes another generator (such as the standard
\fBmap\fR and \fBfilter\fR generators defined later), then you should use
a \fBfinally\fR command to ensure that this generator is destroyed when its
parent is. For example, the \fBmap\fR generator is defined as follows:
.sp
.CS


    generator define map {f xs} {
        generator finally generator destroy $xs
        generator foreach x $xs { generator yield [{*}$f $x] }
    }

.CE
.TP
\fBgenerator\fR \fBfrom\fR \fIformat\fR \fIvalue\fR
Creates a generator from a data structure. Currently, supported formats are
\fBlist\fR, \fBdict\fR, or \fBstring\fR. The list format yields each
element in turn. For dictionaries, each key and value are yielded separately.
Finally, strings are yielded a character at a time.
.TP
\fBgenerator\fR \fBto\fR \fIformat\fR \fIgenerator\fR
Converts a generator into a data structure. This is the reverse operation of the
\fBfrom\fR command, and supports the same data structures. The two operations
obey the following identity laws (where \fB=\fR is interpreted
appropriately):
.sp
.CS


    [generator to $fmt [generator from $fmt $value]] = $value
    [generator from $fmt [generator to $fmt $gen]]   = $gen


.CE
.PP
.SH PRELUDE
.PP
The following commands are provided as a standard library of generator
combinators and functions that perform convenience operations on generators. The
functions in this section are loosely modelled on the equivalent functions from
the Haskell Prelude. \fIWarning:\fR most of the functions in this prelude
destroy any generator arguments they are passed as a side-effect. If you want to
have persistent generators, see the streams library.
.TP
\fBgenerator\fR \fBmap\fR \fIfunction\fR \fIgenerator\fR
Apply a function to every element of a generator, returning a new generator of
the results. This is the classic map function from functional programming,
applied to generators. For example, we can generate all the square numbers using
the following code (where \fBnats\fR is defined as earlier):
.sp
.CS


    proc square x { expr {$x * $x} }
    generator foreach n [generator map square [nats]] {
        puts "n = $n"
        if {$n > 1000} { break }
    }

.CE
.TP
\fBgenerator\fR \fBfilter\fR \fIpredicate\fR \fIgenerator\fR
Another classic functional programming gem. This command returns a generator
that yields only those items from the argument generator that satisfy the
predicate (boolean function). For example, if we had a generator \fBemployees\fR
that returned a stream of dictionaries representing people, we could filter all
those whose salaries are above 100,000 dollars (or whichever currency you prefer)
using a simple filter:
.sp
.CS


    proc salary> {amount person} { expr {[dict get $person salary] > $amount} }
    set fat-cats [generator filter {salary> 100000} $employees]

.CE
.TP
\fBgenerator\fR \fBreduce\fR \fIfunction\fR \fIzero\fR \fIgenerator\fR
This is the classic left-fold operation. This command takes a function, an
initial value, and a generator of values. For each element in the generator it
applies the function to the current accumulator value (the \fIzero\fR argument
initially) and that element, and then uses the result as the new accumulator
value. This process is repeated through the entire generator (eagerly) and the
final accumulator value is then returned. If we consider the function to be a
binary operator, and the zero argument to be the left identity element of that
operation, then we can consider the \fBreduce\fR command as \fIfolding\fR
the operator between each successive pair of values in the generator in a
left-associative fashion. For example, the sum of a sequence of numbers can be
calculated by folding a \fB+\fR operator between them, with 0 as the identity:
.sp
.CS


    # sum xs          = reduce + 0 xs
    # sum [range 1 5] = reduce + 0 [range 1 5]
    #                 = reduce + [+ 0 1] [range 2 5]
    #                 = reduce + [+ 1 2] [range 3 5]
    #                 = ...
    #                 = reduce + [+ 10 5] <empty>
    #                 = ((((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]]

.CE
.sp
The \fBreduce\fR 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):
.sp
.CS


    proc * {x y} { expr {$x * $y} }
    proc prod gen { generator reduce * 0 $gen }
    proc fac n { prod [range 1 $n] }

.CE
.sp
However, while the \fBreduce\fR operation is efficient for finite generators,
care should be taken not to apply it to an infinite generator, as this will
result in an infinite loop:
.sp
.CS


    sum [nats]; # Never returns

.CE
.TP
\fBgenerator\fR \fBfoldl\fR \fIfunction\fR \fIzero\fR \fIgenerator\fR
This is an alias for the \fBreduce\fR command.
.TP
\fBgenerator\fR \fBfoldr\fR \fIfunction\fR \fIzero\fR \fIgenerator\fR
This is the right-associative version of \fBreduce\fR. This operation is







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








<
<
|
|
|
|
<















<
<
|
|
<
<


















<
<
|
|
|
|
|
<











<
<
|
|
<
















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








<
<
|
|
|
<







<
<
|
<







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


578
579
580

581
582
583
584
585
586
587


588

589
590
591
592
593
594
595
\fBfinally\fR block in the \fBtry\fR command, except that it is tied to the
life-cycle of the generator rather than to a particular scope. For example, if
we create a generator to iterate over the lines in a text file, we can use
\fBfinally\fR to ensure that the file is closed whenever the generator is
destroyed:
.sp
.CS


generator define lines file {
set in [open $file]
# Ensure file is always closed
generator finally close $in
while {[gets $in line] >= 0} {
generator yield $line
}
}
generator foreach line [lines /etc/passwd] {
puts "[incr count]: $line"
if {$count > 10} { break }
}
# File will be closed even on early exit

.CE
.sp
If you create a generator that consumes another generator (such as the standard
\fBmap\fR and \fBfilter\fR generators defined later), then you should use
a \fBfinally\fR command to ensure that this generator is destroyed when its
parent is. For example, the \fBmap\fR generator is defined as follows:
.sp
.CS


generator define map {f xs} {
generator finally generator destroy $xs
generator foreach x $xs { generator yield [{*}$f $x] }
}

.CE
.TP
\fBgenerator\fR \fBfrom\fR \fIformat\fR \fIvalue\fR
Creates a generator from a data structure. Currently, supported formats are
\fBlist\fR, \fBdict\fR, or \fBstring\fR. The list format yields each
element in turn. For dictionaries, each key and value are yielded separately.
Finally, strings are yielded a character at a time.
.TP
\fBgenerator\fR \fBto\fR \fIformat\fR \fIgenerator\fR
Converts a generator into a data structure. This is the reverse operation of the
\fBfrom\fR command, and supports the same data structures. The two operations
obey the following identity laws (where \fB=\fR is interpreted
appropriately):
.sp
.CS


[generator to $fmt [generator from $fmt $value]] = $value
[generator from $fmt [generator to $fmt $gen]]   = $gen


.CE
.PP
.SH PRELUDE
.PP
The following commands are provided as a standard library of generator
combinators and functions that perform convenience operations on generators. The
functions in this section are loosely modelled on the equivalent functions from
the Haskell Prelude. \fIWarning:\fR most of the functions in this prelude
destroy any generator arguments they are passed as a side-effect. If you want to
have persistent generators, see the streams library.
.TP
\fBgenerator\fR \fBmap\fR \fIfunction\fR \fIgenerator\fR
Apply a function to every element of a generator, returning a new generator of
the results. This is the classic map function from functional programming,
applied to generators. For example, we can generate all the square numbers using
the following code (where \fBnats\fR is defined as earlier):
.sp
.CS


proc square x { expr {$x * $x} }
generator foreach n [generator map square [nats]] {
puts "n = $n"
if {$n > 1000} { break }
}

.CE
.TP
\fBgenerator\fR \fBfilter\fR \fIpredicate\fR \fIgenerator\fR
Another classic functional programming gem. This command returns a generator
that yields only those items from the argument generator that satisfy the
predicate (boolean function). For example, if we had a generator \fBemployees\fR
that returned a stream of dictionaries representing people, we could filter all
those whose salaries are above 100,000 dollars (or whichever currency you prefer)
using a simple filter:
.sp
.CS


proc salary> {amount person} { expr {[dict get $person salary] > $amount} }
set fat-cats [generator filter {salary> 100000} $employees]

.CE
.TP
\fBgenerator\fR \fBreduce\fR \fIfunction\fR \fIzero\fR \fIgenerator\fR
This is the classic left-fold operation. This command takes a function, an
initial value, and a generator of values. For each element in the generator it
applies the function to the current accumulator value (the \fIzero\fR argument
initially) and that element, and then uses the result as the new accumulator
value. This process is repeated through the entire generator (eagerly) and the
final accumulator value is then returned. If we consider the function to be a
binary operator, and the zero argument to be the left identity element of that
operation, then we can consider the \fBreduce\fR command as \fIfolding\fR
the operator between each successive pair of values in the generator in a
left-associative fashion. For example, the sum of a sequence of numbers can be
calculated by folding a \fB+\fR operator between them, with 0 as the identity:
.sp
.CS


# sum xs          = reduce + 0 xs
# sum [range 1 5] = reduce + 0 [range 1 5]
#                 = reduce + [+ 0 1] [range 2 5]
#                 = reduce + [+ 1 2] [range 3 5]
#                 = ...
#                 = reduce + [+ 10 5] <empty>
#                 = ((((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]]

.CE
.sp
The \fBreduce\fR 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):
.sp
.CS


proc * {x y} { expr {$x * $y} }
proc prod gen { generator reduce * 0 $gen }
proc fac n { prod [range 1 $n] }

.CE
.sp
However, while the \fBreduce\fR operation is efficient for finite generators,
care should be taken not to apply it to an infinite generator, as this will
result in an infinite loop:
.sp
.CS


sum [nats]; # Never returns

.CE
.TP
\fBgenerator\fR \fBfoldl\fR \fIfunction\fR \fIzero\fR \fIgenerator\fR
This is an alias for the \fBreduce\fR command.
.TP
\fBgenerator\fR \fBfoldr\fR \fIfunction\fR \fIzero\fR \fIgenerator\fR
This is the right-associative version of \fBreduce\fR. This operation is
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
generator is destroyed.
.TP
\fBgenerator\fR \fBiterate\fR \fIfunction\fR \fIinit\fR
Returns an infinite generator formed by repeatedly applying the function to the
initial argument. For example, the Fibonacci numbers can be defined as follows:
.sp
.CS


    proc fst pair { lindex $pair 0 }
    proc snd pair { lindex $pair 1 }
    proc nextFib ab { list [snd $ab] [expr {[fst $ab] + [snd $ab]}] }
    proc fibs {} { generator map fst [generator iterate nextFib {0 1}] }

.CE
.TP
\fBgenerator\fR \fBlast\fR \fIgenerator\fR
Returns the last element of the generator (if it exists).
.TP
\fBgenerator\fR \fBlength\fR \fIgenerator\fR
Returns the length of the generator, destroying it in the process.







<
<
|
|
|
|
<







661
662
663
664
665
666
667


668
669
670
671

672
673
674
675
676
677
678
generator is destroyed.
.TP
\fBgenerator\fR \fBiterate\fR \fIfunction\fR \fIinit\fR
Returns an infinite generator formed by repeatedly applying the function to the
initial argument. For example, the Fibonacci numbers can be defined as follows:
.sp
.CS


proc fst pair { lindex $pair 0 }
proc snd pair { lindex $pair 1 }
proc nextFib ab { list [snd $ab] [expr {[fst $ab] + [snd $ab]}] }
proc fibs {} { generator map fst [generator iterate nextFib {0 1}] }

.CE
.TP
\fBgenerator\fR \fBlast\fR \fIgenerator\fR
Returns the last element of the generator (if it exists).
.TP
\fBgenerator\fR \fBlength\fR \fIgenerator\fR
Returns the length of the generator, destroying it in the process.
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
\fBgenerator\fR \fBsplitWhen\fR \fIpredicate\fR \fIgenerator\fR
Splits the generator into lists of elements using the predicate to identify
delimiters. The resulting lists are returned as a generator. Elements matching
the delimiter predicate are discarded. For example, to split up a generator
using the string "|" as a delimiter:
.sp
.CS


    set xs [generator from list {a | b | c}]
    generator split {string equal "|"} $xs ;# returns a then b then c

.CE
.TP
\fBgenerator\fR \fBscanl\fR \fIfunction\fR \fIzero\fR \fIgenerator\fR
Similar to \fBfoldl\fR, but returns a generator of all of the intermediate
values for the accumulator argument. The final element of this generator is
equivalent to \fBfoldl\fR called on the same arguments.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
Please report any errors in this document, or in the package it describes, to
\fINeil Madden\fR [mailto:[email protected]].
.SH KEYWORDS
control structure, coroutine, filter, foldl, foldr, foreach, generator, iterator, map, reduce, scanl







<
<
|
|
<












697
698
699
700
701
702
703


704
705

706
707
708
709
710
711
712
713
714
715
716
717
\fBgenerator\fR \fBsplitWhen\fR \fIpredicate\fR \fIgenerator\fR
Splits the generator into lists of elements using the predicate to identify
delimiters. The resulting lists are returned as a generator. Elements matching
the delimiter predicate are discarded. For example, to split up a generator
using the string "|" as a delimiter:
.sp
.CS


set xs [generator from list {a | b | c}]
generator split {string equal "|"} $xs ;# returns a then b then c

.CE
.TP
\fBgenerator\fR \fBscanl\fR \fIfunction\fR \fIzero\fR \fIgenerator\fR
Similar to \fBfoldl\fR, but returns a generator of all of the intermediate
values for the accumulator argument. The final element of this generator is
equivalent to \fBfoldl\fR called on the same arguments.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
Please report any errors in this document, or in the package it describes, to
\fINeil Madden\fR [mailto:[email protected]].
.SH KEYWORDS
control structure, coroutine, filter, foldl, foldr, foreach, generator, iterator, map, reduce, scanl

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
\fImetadata dictionary\fR. \fILatitude\fR and \fIlongitude\fR
are decimal numbers. The \fImetadata dictionary\fR format is
described above. For points in a track, typically there will
always be ele (elevation) and time metadata keys.
.PP
.SH EXAMPLE
.CS


% 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

.CE
.SH REFERENCES
.IP [1]
GPX: the GPS Exchange Format
(\fIhttp://www.topografix.com/gpx.asp\fR)
.IP [2]
GPX 1.1 Schema Documentation (\fIhttp://www.topografix.com/GPX/1/1/\fR)







<
<







|
|

<







356
357
358
359
360
361
362


363
364
365
366
367
368
369
370
371
372

373
374
375
376
377
378
379
\fImetadata dictionary\fR. \fILatitude\fR and \fIlongitude\fR
are decimal numbers. The \fImetadata dictionary\fR format is
described above. For points in a track, typically there will
always be ele (elevation) and time metadata keys.
.PP
.SH EXAMPLE
.CS


% 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

.CE
.SH REFERENCES
.IP [1]
GPX: the GPS Exchange Format
(\fIhttp://www.topografix.com/gpx.asp\fR)
.IP [2]
GPX 1.1 Schema Documentation (\fIhttp://www.topografix.com/GPX/1/1/\fR)
396
397
398
399
400
401
402
403
404
.SH KEYWORDS
gps, gpx
.SH CATEGORY
File formats
.SH COPYRIGHT
.nf
Copyright (c) 2010, Keith Vetter <[email protected]>

.fi







<

392
393
394
395
396
397
398

399
.SH KEYWORDS
gps, gpx
.SH CATEGORY
File formats
.SH COPYRIGHT
.nf
Copyright (c) 2010, Keith Vetter <[email protected]>

.fi

Changes to embedded/man/files/modules/grammar_aycock/aycock.n.

219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







219
220
221
222
223
224
225

226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
extraordinarily complex languages in which ambiguity can be tolerated.
.SH EXAMPLE
The following code demonstrates a trivial desk calculator, admitting
only \fB+\fR, \fB*\fR and parentheses as its operators.  It also
shows the format in which the lexical analyzer is expected to present
terminal symbols to the parser.
.CS


set p [aycock::parser {
    start ::= E {}
    E ::= E + T {expr {[lindex $_ 0] + [lindex $_ 2]}}
    E ::= T {}
    T ::= T * F {expr {[lindex $_ 0] * [lindex $_ 2]}}
    T ::= F {}
    F ::= NUMBER {}
    F ::= ( E ) {lindex $_ 1}
}]
puts [$p parse {(  NUMBER +  NUMBER )  *  ( NUMBER +  NUMBER ) }  {{} 2      {} 3      {} {} {} 7     {} 1      {}}]
$p destroy

.CE
The example, when run, prints \fB40\fR.
.SH KEYWORDS
Aycock, Earley, Horspool, parser, compiler
.SH KEYWORDS
ambiguous, aycock, earley, grammar, horspool, parser, parsing, transducer
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT
.nf
Copyright (c) 2006 by Kevin B. Kenny <[email protected]>
Redistribution permitted under the terms of the Open Publication License <http://www.opencontent.org/openpub/>

.fi







<
<

|
|
|
|
|
|
|



<












<

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
extraordinarily complex languages in which ambiguity can be tolerated.
.SH EXAMPLE
The following code demonstrates a trivial desk calculator, admitting
only \fB+\fR, \fB*\fR and parentheses as its operators.  It also
shows the format in which the lexical analyzer is expected to present
terminal symbols to the parser.
.CS


set p [aycock::parser {
start ::= E {}
E ::= E + T {expr {[lindex $_ 0] + [lindex $_ 2]}}
E ::= T {}
T ::= T * F {expr {[lindex $_ 0] * [lindex $_ 2]}}
T ::= F {}
F ::= NUMBER {}
F ::= ( E ) {lindex $_ 1}
}]
puts [$p parse {(  NUMBER +  NUMBER )  *  ( NUMBER +  NUMBER ) }  {{} 2      {} 3      {} {} {} 7     {} 1      {}}]
$p destroy

.CE
The example, when run, prints \fB40\fR.
.SH KEYWORDS
Aycock, Earley, Horspool, parser, compiler
.SH KEYWORDS
ambiguous, aycock, earley, grammar, horspool, parser, parsing, transducer
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT
.nf
Copyright (c) 2006 by Kevin B. Kenny <[email protected]>
Redistribution permitted under the terms of the Open Publication License <http://www.opencontent.org/openpub/>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
324
325
326
327
328
329
330
331
332
.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
.nf
Copyright (c) 2004 Andreas Kupries <[email protected]>

.fi







<

323
324
325
326
327
328
329

330
.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
.nf
Copyright (c) 2004 Andreas Kupries <[email protected]>

.fi

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

219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







219
220
221
222
223
224
225

226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
395
396
397
398
399
400
401
402
403
automaton, execution, finite automaton, grammar, parsing, regular expression, regular grammar, regular languages, running, state, transducer
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT
.nf
Copyright (c) 2004 Andreas Kupries <[email protected]>
Copyright (c) 2007 Bogdan <[email protected]>

.fi







<

394
395
396
397
398
399
400

401
automaton, execution, finite automaton, grammar, parsing, regular expression, regular grammar, regular languages, running, state, transducer
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT
.nf
Copyright (c) 2004 Andreas Kupries <[email protected]>
Copyright (c) 2007 Bogdan <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
automaton contained in the FA object \fIsrcFA\fR over the automaton
definition in \fIfaName\fR. The old contents of \fIfaName\fR are
deleted by this operation.
.sp
This operation is in effect equivalent to
.sp
.CS


    \fIfaName\fR \fBdeserialize\fR [\fIsrcFA\fR \fBserialize\fR]

.CE
.TP
\fIfaName\fR \fB-->\fR \fIdstFA\fR
This is the reverse assignment operator for automatons. It copies the
automation contained in the object \fIfaName\fR over the automaton
definition in the object \fIdstFA\fR.
The old contents of \fIdstFA\fR are deleted by this operation.
.sp
This operation is in effect equivalent to
.sp
.CS


    \fIdstFA\fR \fBdeserialize\fR [\fIfaName\fR \fBserialize\fR]

.CE
.TP
\fIfaName\fR \fBserialize\fR
This method serializes the automaton stored in \fIfaName\fR. In other
words it returns a tcl \fIvalue\fR completely describing that
automaton.
This allows, for example, the transfer of automatons over arbitrary







<
<
|
<











<
<
|
<







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
automaton contained in the FA object \fIsrcFA\fR over the automaton
definition in \fIfaName\fR. The old contents of \fIfaName\fR are
deleted by this operation.
.sp
This operation is in effect equivalent to
.sp
.CS


\fIfaName\fR \fBdeserialize\fR [\fIsrcFA\fR \fBserialize\fR]

.CE
.TP
\fIfaName\fR \fB-->\fR \fIdstFA\fR
This is the reverse assignment operator for automatons. It copies the
automation contained in the object \fIfaName\fR over the automaton
definition in the object \fIdstFA\fR.
The old contents of \fIdstFA\fR are deleted by this operation.
.sp
This operation is in effect equivalent to
.sp
.CS


\fIdstFA\fR \fBdeserialize\fR [\fIfaName\fR \fBserialize\fR]

.CE
.TP
\fIfaName\fR \fBserialize\fR
This method serializes the automaton stored in \fIfaName\fR. In other
words it returns a tcl \fIvalue\fR completely describing that
automaton.
This allows, for example, the transfer of automatons over arbitrary
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
.RE
.RE
.sp
Assuming the following FA (which describes the life of a truck driver
in a very simple way :)
.sp
.CS


    Drive -- yellow --> Brake -- red --> (Stop) -- red/yellow --> Attention -- green --> Drive
    (...) is the start state.

.CE
.sp
a possible serialization is
.sp
.CS


    grammar::fa \\\\
    {yellow red green red/yellow} \\\\
    {Drive     {0 0 {yellow     Brake}} \\\\
     Brake     {0 0 {red        Stop}} \\\\
     Stop      {1 0 {red/yellow Attention}} \\\\
     Attention {0 0 {green      Drive}}}

.CE
.sp
A possible one, because I did not care about creation order here
.TP
\fIfaName\fR \fBdeserialize\fR \fIserialization\fR
This is the complement to \fBserialize\fR. It replaces the
automaton definition in \fIfaName\fR with the automaton described by







<
<
|
|
<





<
<
|
|
|
|
|
|
<







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
.RE
.RE
.sp
Assuming the following FA (which describes the life of a truck driver
in a very simple way :)
.sp
.CS


Drive -- yellow --> Brake -- red --> (Stop) -- red/yellow --> Attention -- green --> Drive
(...) is the start state.

.CE
.sp
a possible serialization is
.sp
.CS


grammar::fa \\\\
{yellow red green red/yellow} \\\\
{Drive     {0 0 {yellow     Brake}} \\\\
Brake     {0 0 {red        Stop}} \\\\
Stop      {1 0 {red/yellow Attention}} \\\\
Attention {0 0 {green      Drive}}}

.CE
.sp
A possible one, because I did not care about creation order here
.TP
\fIfaName\fR \fBdeserialize\fR \fIserialization\fR
This is the complement to \fBserialize\fR. It replaces the
automaton definition in \fIfaName\fR with the automaton described by
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
one or more transitions.
.TP
\fIfaName\fR \fBunreachable_states\fR
Returns the set of states which are not reachable from any start state
by any number of transitions. This is
.sp
.CS


	 [faName states] - [faName reachable_states]

.CE
.TP
\fIfaName\fR \fBreachable\fR \fIs\fR
A predicate. It tests whether the state \fIs\fR in the FA \fIfaName\fR
can be reached from a start state by one or more transitions.
The result is a boolean value. It will be set to \fBtrue\fR if the
state can be reached, and \fBfalse\fR otherwise.
.TP
\fIfaName\fR \fBuseful_states\fR
Returns the set of states which are able to reach a final state by
one or more transitions.
.TP
\fIfaName\fR \fBunuseful_states\fR
Returns the set of states which are not able to reach a final state by
any number of transitions. This is
.sp
.CS


	 [faName states] - [faName useful_states]

.CE
.TP
\fIfaName\fR \fBuseful\fR \fIs\fR
A predicate. It tests whether the state \fIs\fR in the FA \fIfaName\fR
is able to reach a final state by one or more transitions.
The result is a boolean value. It will be set to \fBtrue\fR if the
state is useful, and \fBfalse\fR otherwise.







<
<
|
<

















<
<
|
<







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
one or more transitions.
.TP
\fIfaName\fR \fBunreachable_states\fR
Returns the set of states which are not reachable from any start state
by any number of transitions. This is
.sp
.CS


[faName states] - [faName reachable_states]

.CE
.TP
\fIfaName\fR \fBreachable\fR \fIs\fR
A predicate. It tests whether the state \fIs\fR in the FA \fIfaName\fR
can be reached from a start state by one or more transitions.
The result is a boolean value. It will be set to \fBtrue\fR if the
state can be reached, and \fBfalse\fR otherwise.
.TP
\fIfaName\fR \fBuseful_states\fR
Returns the set of states which are able to reach a final state by
one or more transitions.
.TP
\fIfaName\fR \fBunuseful_states\fR
Returns the set of states which are not able to reach a final state by
any number of transitions. This is
.sp
.CS


[faName states] - [faName useful_states]

.CE
.TP
\fIfaName\fR \fBuseful\fR \fIs\fR
A predicate. It tests whether the state \fIs\fR in the FA \fIfaName\fR
is able to reach a final state by one or more transitions.
The result is a boolean value. It will be set to \fBtrue\fR if the
state is useful, and \fBfalse\fR otherwise.
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
between the nodes representing s and n resp., labeled with sy. The
start and accepting states are encoded through distinct visual
markers, i.e. they are attributes of the nodes.
.PP
FA's are used to process streams of symbols over Sy.
.PP
A specific FA is said to \fIaccept\fR a finite stream sy_1 sy_2
... sy_n if there is a path in the graph of the FA beginning at a
state in St and ending at a state in Fi whose edges have the labels
sy_1, sy_2, etc. to sy_n.
The set of all strings accepted by the FA is the \fIlanguage\fR of
the FA. One important equivalence is that the set of languages which
can be accepted by an FA is the set of \fIregular languages\fR.
.PP
Another important concept is that of deterministic FAs. A FA is said







|







818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
between the nodes representing s and n resp., labeled with sy. The
start and accepting states are encoded through distinct visual
markers, i.e. they are attributes of the nodes.
.PP
FA's are used to process streams of symbols over Sy.
.PP
A specific FA is said to \fIaccept\fR a finite stream sy_1 sy_2
\... sy_n if there is a path in the graph of the FA beginning at a
state in St and ending at a state in Fi whose edges have the labels
sy_1, sy_2, etc. to sy_n.
The set of all strings accepted by the FA is the \fIlanguage\fR of
the FA. One important equivalence is that the set of languages which
can be accepted by an FA is the set of \fIregular languages\fR.
.PP
Another important concept is that of deterministic FAs. A FA is said
889
890
891
892
893
894
895
896
897
.SH KEYWORDS
automaton, finite automaton, grammar, parsing, regular expression, regular grammar, regular languages, state, transducer
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT
.nf
Copyright (c) 2004-2009 Andreas Kupries <[email protected]>

.fi







<

870
871
872
873
874
875
876

877
.SH KEYWORDS
automaton, finite automaton, grammar, parsing, regular expression, regular grammar, regular languages, state, transducer
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT
.nf
Copyright (c) 2004-2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
653
654
655
656
657
658
659
660
661
.SH KEYWORDS
automaton, finite automaton, grammar, parsing, regular expression, regular grammar, regular languages, state, transducer
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT
.nf
Copyright (c) 2004-2008 Andreas Kupries <[email protected]>

.fi







<

652
653
654
655
656
657
658

659
.SH KEYWORDS
automaton, finite automaton, grammar, parsing, regular expression, regular grammar, regular languages, state, transducer
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT
.nf
Copyright (c) 2004-2008 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
636
637
638
639
640
641
642
643
644
.SH KEYWORDS
assembler, grammar, graph, parsing, tree, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT
.nf
Copyright (c) 2005 Andreas Kupries <[email protected]>

.fi







<

635
636
637
638
639
640
641

642
.SH KEYWORDS
assembler, grammar, graph, parsing, tree, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT
.nf
Copyright (c) 2005 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
336
337
338
339
340
341
342
343
344
.SH KEYWORDS
AST, abstract syntax tree
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT
.nf
Copyright (c) 2005 Andreas Kupries <[email protected]>

.fi







<

335
336
337
338
339
340
341

342
.SH KEYWORDS
AST, abstract syntax tree
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT
.nf
Copyright (c) 2005 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
522
523
524
525
526
527
528
529
530
.SH KEYWORDS
grammar, parsing, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT
.nf
Copyright (c) 2005-2006 Andreas Kupries <[email protected]>

.fi







<

521
522
523
524
525
526
527

528
.SH KEYWORDS
grammar, parsing, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT
.nf
Copyright (c) 2005-2006 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
635
636
637
638
639
640
641
642
643
.SH KEYWORDS
grammar, parsing, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT
.nf
Copyright (c) 2005-2006 Andreas Kupries <[email protected]>

.fi







<

634
635
636
637
638
639
640

641
.SH KEYWORDS
grammar, parsing, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT
.nf
Copyright (c) 2005-2006 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
301
302
303
304
305
306
307
308
309
.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
.nf
Copyright (c) 2005 Andreas Kupries <[email protected]>

.fi







<

300
301
302
303
304
305
306

307
.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
.nf
Copyright (c) 2005 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
589
590
591
592
593
594
595
596
597
.SH KEYWORDS
grammar, parsing, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT
.nf
Copyright (c) 2005 Andreas Kupries <[email protected]>

.fi







<

588
589
590
591
592
593
594

595
.SH KEYWORDS
grammar, parsing, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT
.nf
Copyright (c) 2005 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
318
319
320
321
322
323
324
325
326
.SH KEYWORDS
abstract syntax tree, syntax tree, tree
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT
.nf
Copyright (c) 2005 Andreas Kupries <[email protected]>

.fi







<

317
318
319
320
321
322
323

324
.SH KEYWORDS
abstract syntax tree, syntax tree, tree
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT
.nf
Copyright (c) 2005 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
718
719
720
721
722
723
724
725
726
.SH KEYWORDS
grammar, parsing, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT
.nf
Copyright (c) 2005 Andreas Kupries <[email protected]>

.fi







<

717
718
719
720
721
722
723

724
.SH KEYWORDS
grammar, parsing, virtual machine
.SH CATEGORY
Grammars and finite automata
.SH COPYRIGHT
.nf
Copyright (c) 2005 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/grammar_peg/peg.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
alternative rules R for N, and then replace the nonterminal in A with
the RHS of the chosen rule. Here we can see why the terminal symbols
are called such. They cannot be expanded any further, thus terminate
the process of deriving new expressions.
An example
.PP
.CS


    Rules
      (1)  A <- a B c
      (2a) B <- d B
      (2b) B <- e

    Some derivations, using starting expression A.

      A -/1/-> a B c -/2a/-> a d B c -/2b/-> a d e c

.CE
.PP
A derived expression containing only terminal symbols is a
\fIsentence\fR. The set of all sentences which can be derived from
the start expression is the \fIlanguage\fR of the grammar.
.PP
Some definitions for nonterminals and expressions:







<
<
|
|
|
|
<
|
<
|
<







334
335
336
337
338
339
340


341
342
343
344

345

346

347
348
349
350
351
352
353
alternative rules R for N, and then replace the nonterminal in A with
the RHS of the chosen rule. Here we can see why the terminal symbols
are called such. They cannot be expanded any further, thus terminate
the process of deriving new expressions.
An example
.PP
.CS


Rules
(1)  A <- a B c
(2a) B <- d B
(2b) B <- e

Some derivations, using starting expression A.

A -/1/-> a B c -/2a/-> a d B c -/2b/-> a d e c

.CE
.PP
A derived expression containing only terminal symbols is a
\fIsentence\fR. The set of all sentences which can be derived from
the start expression is the \fIlanguage\fR of the grammar.
.PP
Some definitions for nonterminals and expressions:
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
contained in the grammar object \fIsrcPEG\fR over the grammar
definition in \fIpegName\fR. The old contents of \fIpegName\fR are
deleted by this operation.
.sp
This operation is in effect equivalent to
.sp
.CS


    \fIpegName\fR \fBdeserialize\fR [\fIsrcPEG\fR \fBserialize\fR]

.CE
.TP
\fIpegName\fR \fB-->\fR \fIdstPEG\fR
This is the reverse assignment operator for grammars. It copies the
automation contained in the object \fIpegName\fR over the grammar
definition in the object \fIdstPEG\fR.
The old contents of \fIdstPEG\fR are deleted by this operation.
.sp
This operation is in effect equivalent to
.sp
.CS


    \fIdstPEG\fR \fBdeserialize\fR [\fIpegName\fR \fBserialize\fR]

.CE
.TP
\fIpegName\fR \fBserialize\fR
This method serializes the grammar stored in \fIpegName\fR. In other
words it returns a tcl \fIvalue\fR completely describing that
grammar.
This allows, for example, the transfer of grammars over arbitrary







<
<
|
<











<
<
|
<







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
contained in the grammar object \fIsrcPEG\fR over the grammar
definition in \fIpegName\fR. The old contents of \fIpegName\fR are
deleted by this operation.
.sp
This operation is in effect equivalent to
.sp
.CS


\fIpegName\fR \fBdeserialize\fR [\fIsrcPEG\fR \fBserialize\fR]

.CE
.TP
\fIpegName\fR \fB-->\fR \fIdstPEG\fR
This is the reverse assignment operator for grammars. It copies the
automation contained in the object \fIpegName\fR over the grammar
definition in the object \fIdstPEG\fR.
The old contents of \fIdstPEG\fR are deleted by this operation.
.sp
This operation is in effect equivalent to
.sp
.CS


\fIdstPEG\fR \fBdeserialize\fR [\fIpegName\fR \fBserialize\fR]

.CE
.TP
\fIpegName\fR \fBserialize\fR
This method serializes the grammar stored in \fIpegName\fR. In other
words it returns a tcl \fIvalue\fR completely describing that
grammar.
This allows, for example, the transfer of grammars over arbitrary
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
The last item is a parsing expression, the \fIstart expression\fR
of the grammar.
.RE
.sp
Assuming the following PEG for simple mathematical expressions
.sp
.CS


    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'
    Sign       <- '+' / '-'
    Number     <- Sign? Digit+
    Expression <- '(' Expression ')' / (Factor (MulOp Factor)*)
    MulOp      <- '*' / '/'
    Factor     <- Term (AddOp Term)*
    AddOp      <- '+'/'-'
    Term       <- Number

.CE
.sp
a possible serialization is
.sp
.CS


    grammar::peg \\\\
    {Expression {/ {x ( Expression )} {x Factor {* {x MulOp Factor}}}} \\\\
     Factor     {x Term {* {x AddOp Term}}} \\\\
     Term       Number \\\\
     MulOp      {/ * /} \\\\
     AddOp      {/ + -} \\\\
     Number     {x {? Sign} {+ Digit}} \\\\
     Sign       {/ + -} \\\\
     Digit      {/ 0 1 2 3 4 5 6 7 8 9} \\\\
    } \\\\
    {Expression value     Factor     value \\\\
     Term       value     MulOp      value \\\\
     AddOp      value     Number     value \\\\
     Sign       value     Digit      value \\\\
    }
    Expression

.CE
.sp
A possible one, because the order of the nonterminals in the
dictionary is not relevant.
.TP
\fIpegName\fR \fBdeserialize\fR \fIserialization\fR
This is the complement to \fBserialize\fR. It replaces the grammar







<
<
|
|
|
|
|
|
|
|
<





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







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
The last item is a parsing expression, the \fIstart expression\fR
of the grammar.
.RE
.sp
Assuming the following PEG for simple mathematical expressions
.sp
.CS


Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'
Sign       <- '+' / '-'
Number     <- Sign? Digit+
Expression <- '(' Expression ')' / (Factor (MulOp Factor)*)
MulOp      <- '*' / '/'
Factor     <- Term (AddOp Term)*
AddOp      <- '+'/'-'
Term       <- Number

.CE
.sp
a possible serialization is
.sp
.CS


grammar::peg \\\\
{Expression {/ {x ( Expression )} {x Factor {* {x MulOp Factor}}}} \\\\
Factor     {x Term {* {x AddOp Term}}} \\\\
Term       Number \\\\
MulOp      {/ * /} \\\\
AddOp      {/ + -} \\\\
Number     {x {? Sign} {+ Digit}} \\\\
Sign       {/ + -} \\\\
Digit      {/ 0 1 2 3 4 5 6 7 8 9} \\\\
} \\\\
{Expression value     Factor     value \\\\
Term       value     MulOp      value \\\\
AddOp      value     Number     value \\\\
Sign       value     Digit      value \\\\
}
Expression

.CE
.sp
A possible one, because the order of the nonterminals in the
dictionary is not relevant.
.TP
\fIpegName\fR \fBdeserialize\fR \fIserialization\fR
This is the complement to \fBserialize\fR. It replaces the grammar
811
812
813
814
815
816
817
818
819
.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
.nf
Copyright (c) 2005 Andreas Kupries <[email protected]>

.fi







<

793
794
795
796
797
798
799

800
.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
.nf
Copyright (c) 2005 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/grammar_peg/peg_interp.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
331
332
333
334
335
336
337
338
339
.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
.nf
Copyright (c) 2005-2011 Andreas Kupries <[email protected]>

.fi







<

330
331
332
333
334
335
336

337
.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
.nf
Copyright (c) 2005-2011 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
observer name effectively becomes a unique binding ID.
.sp
It is possible to call \fBhook bind\fR to create or delete a
binding to a \fIsubject\fR and \fIhook\fR while in an observer binding
for that same \fIsubject\fR and \fIhook\fR. The following rules
determine what happens when
.CS


    hook bind $s $h $o $binding

.CE
.IP
is called during the execution of
.CS


    hook call $s $h

.CE
.RS
.IP [1]
No binding is ever called after it is deleted.
.IP [2]
When a binding is called, the most recently given command prefix is
always used.
.IP [3]
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.
.RE
.IP
In particular:
.RS
.IP [1]
If \fB$o\fRs binding to \fB$s\fR and \fB$h\fR is deleted, and
\fB$o\fRs binding has not yet been called during this execution of
.CS


    hook call $s $h

.CE
.IP
it will not be called. (Note that it might already have been called;
and in all likelihood, it is probably deleting itself.)
.IP [2]
If \fB$o\fR changes the command prefix that's bound to \fB$s\fR and
\fB$h\fR, and if \fB$o\fRs binding has not yet been called during
this execution of
.CS


    hook call $s $h

.CE
.IP
the new binding will be called when the time comes. (But again, it is
probably \fB$o\fRs binding that is is making the change.)
.IP [3]
If a new observer is bound to \fB$s\fR and \fB$h\fR, its binding will
not be called until the next invocation of
.CS


    hook call $s $h

.CE
.RE
.TP
\fBhook\fR \fBcall\fR \fIsubject\fR \fIhook\fR ?\fIargs\fR...?
This command is called when the named \fIsubject\fR wishes to call the
named \fIhook\fR. All relevant bindings are called with the specified
arguments in the global namespace. Note that the bindings are called







<
<
|
<




<
<
|
<



















<
<
|
<









<
<
|
<








<
<
|
<







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
observer name effectively becomes a unique binding ID.
.sp
It is possible to call \fBhook bind\fR to create or delete a
binding to a \fIsubject\fR and \fIhook\fR while in an observer binding
for that same \fIsubject\fR and \fIhook\fR. The following rules
determine what happens when
.CS


hook bind $s $h $o $binding

.CE
.IP
is called during the execution of
.CS


hook call $s $h

.CE
.RS
.IP [1]
No binding is ever called after it is deleted.
.IP [2]
When a binding is called, the most recently given command prefix is
always used.
.IP [3]
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.
.RE
.IP
In particular:
.RS
.IP [1]
If \fB$o\fRs binding to \fB$s\fR and \fB$h\fR is deleted, and
\fB$o\fRs binding has not yet been called during this execution of
.CS


hook call $s $h

.CE
.IP
it will not be called. (Note that it might already have been called;
and in all likelihood, it is probably deleting itself.)
.IP [2]
If \fB$o\fR changes the command prefix that's bound to \fB$s\fR and
\fB$h\fR, and if \fB$o\fRs binding has not yet been called during
this execution of
.CS


hook call $s $h

.CE
.IP
the new binding will be called when the time comes. (But again, it is
probably \fB$o\fRs binding that is is making the change.)
.IP [3]
If a new observer is bound to \fB$s\fR and \fB$h\fR, its binding will
not be called until the next invocation of
.CS


hook call $s $h

.CE
.RE
.TP
\fBhook\fR \fBcall\fR \fIsubject\fR \fIhook\fR ?\fIargs\fR...?
This command is called when the named \fIsubject\fR wishes to call the
named \fIhook\fR. All relevant bindings are called with the specified
arguments in the global namespace. Note that the bindings are called
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
.IP [1]
If an observer is forgotten during a call to \fBhook call\fR, any
uncalled binding it might have had to the relevant subject and hook
will \fInot\fR be called subsequently.
.IP [2]
If a subject \fB$s\fR is forgotten during a call to
.CS

hook call $s $h
.CE
.IP
then \fBhook call\fR will return as soon as the current binding
returns.  No further bindings will be called.
.RE
.TP







<







468
469
470
471
472
473
474

475
476
477
478
479
480
481
.IP [1]
If an observer is forgotten during a call to \fBhook call\fR, any
uncalled binding it might have had to the relevant subject and hook
will \fInot\fR be called subsequently.
.IP [2]
If a subject \fB$s\fR is forgotten during a call to
.CS

hook call $s $h
.CE
.IP
then \fBhook call\fR will return as soon as the current binding
returns.  No further bindings will be called.
.RE
.TP
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
the application to trace hook execution for debugging purposes.
.RE
.PP
.SH EXAMPLE
The \fB::model\fR module calls the <Update> hook in response to
commands that change the model's data:
.CS


     hook call ::model <Update>

.CE
The \fB.view\fR megawidget displays the model state, and needs to
know about model updates. Consequently, it subscribes to the ::model's
<Update> hook.
.CS


     hook bind ::model <Update> .view [list .view ModelUpdate]

.CE
When the \fB::model\fR calls the hook, the \fB.view\fRs
ModelUpdate subcommand will be called.
.PP
Later the \fB.view\fR megawidget is destroyed. In its destructor,
it tells the \fIhook\fR that it no longer exists:
.CS


     hook forget .view

.CE
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
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2010, by William H. Duquette

.fi







<
<
|
<





<
<
|
<







<
<
|
<




















<

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
the application to trace hook execution for debugging purposes.
.RE
.PP
.SH EXAMPLE
The \fB::model\fR module calls the <Update> hook in response to
commands that change the model's data:
.CS


hook call ::model <Update>

.CE
The \fB.view\fR megawidget displays the model state, and needs to
know about model updates. Consequently, it subscribes to the ::model's
<Update> hook.
.CS


hook bind ::model <Update> .view [list .view ModelUpdate]

.CE
When the \fB::model\fR calls the hook, the \fB.view\fRs
ModelUpdate subcommand will be called.
.PP
Later the \fB.view\fR megawidget is destroyed. In its destructor,
it tells the \fIhook\fR that it no longer exists:
.CS


hook forget .view

.CE
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
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2010, by William H. Duquette

.fi

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
concatenated to the result value.
.TP
\fB::html::formValue\fR \fIname\fR ?\fIdefvalue\fR?
Return a name and value pair, where the value is initialized from
existing CGI data, if any.  The result has this form:
.sp
.CS


  name="fred" value="freds value"

.CE
.TP
\fB::html::getFormInfo\fR \fIargs\fR
Generate hidden fields to capture form values.  If \fIargs\fR is
empty, then hidden fields are generated for all CGI values.  Otherwise
args is a list of string match patterns for form element names.
.TP







<
<
|
<







458
459
460
461
462
463
464


465

466
467
468
469
470
471
472
concatenated to the result value.
.TP
\fB::html::formValue\fR \fIname\fR ?\fIdefvalue\fR?
Return a name and value pair, where the value is initialized from
existing CGI data, if any.  The result has this form:
.sp
.CS


name="fred" value="freds value"

.CE
.TP
\fB::html::getFormInfo\fR \fIargs\fR
Generate hidden fields to capture form values.  If \fIargs\fR is
empty, then hidden fields are generated for all CGI values.  Otherwise
args is a list of string match patterns for form element names.
.TP

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

Changes to embedded/man/files/modules/http/autoproxy.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.TP
\fB-realm\fR realm
This option is not used.
.PP
.SH EXAMPLES
.PP
.CS


package require autoproxy
autoproxy::init
autoproxy::configure -basic -username ME -password SEKRET
set tok [http::geturl http://wiki.tcl.tk/]
http::data $tok

.CE
.CS


package require http
package require tls
package require autoproxy
autoproxy::init
http::register https 443 autoproxy::tls_socket
set tok [http::geturl https://www.example.com/]

.CE
.SH REFERENCES
.IP [1]
Berners-Lee, T., Fielding R. and Frystyk, H.
"Hypertext Transfer Protocol -- HTTP/1.0",
RFC 1945, May 1996,
(\fIhttp://www.rfc-editor.org/rfc/rfc1945.txt\fR)







<
<





<


<
<






<







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
.TP
\fB-realm\fR realm
This option is not used.
.PP
.SH EXAMPLES
.PP
.CS


package require autoproxy
autoproxy::init
autoproxy::configure -basic -username ME -password SEKRET
set tok [http::geturl http://wiki.tcl.tk/]
http::data $tok

.CE
.CS


package require http
package require tls
package require autoproxy
autoproxy::init
http::register https 443 autoproxy::tls_socket
set tok [http::geturl https://www.example.com/]

.CE
.SH REFERENCES
.IP [1]
Berners-Lee, T., Fielding R. and Frystyk, H.
"Hypertext Transfer Protocol -- HTTP/1.0",
RFC 1945, May 1996,
(\fIhttp://www.rfc-editor.org/rfc/rfc1945.txt\fR)

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
290
291
292
293
294
295
296
297
298
.SH KEYWORDS
ident, identification, rfc 1413
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2004 Reinhard Max <[email protected]>

.fi







<

289
290
291
292
293
294
295

296
.SH KEYWORDS
ident, identification, rfc 1413
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2004 Reinhard Max <[email protected]>

.fi

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
via TSL/SSL if set to true. In this case default connection port
defaults to 993.
.sp
\fINote:\fR
For connecting via SSL the Tcl module \fItls\fR must be already
loaded otherwise an error is raised.
.CS


    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
.CE
.TP
\fB::imap4::login\fR \fIchan\fR \fIuser\fR \fIpass\fR
.sp
Login using the IMAP LOGIN command, 0 is returned on successful login.
.sp
\fIchan\fR - imap channel







<
<
|
|
|







320
321
322
323
324
325
326


327
328
329
330
331
332
333
334
335
336
via TSL/SSL if set to true. In this case default connection port
defaults to 993.
.sp
\fINote:\fR
For connecting via SSL the Tcl module \fItls\fR must be already
loaded otherwise an error is raised.
.CS


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
.CE
.TP
\fB::imap4::login\fR \fIchan\fR \fIuser\fR \fIpass\fR
.sp
Login using the IMAP LOGIN command, 0 is returned on successful login.
.sp
\fIchan\fR - imap channel
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
.sp
\fImboxname\fR - mailbox name, defaults to "*"
.sp
If \fB-inline\fR is specified a compact folderlist is
returned instead of the result code. All flags are converted to
lowercase and leading special characters are removed.
.CS

{{Arc08 noselect} {Arc08/Private {noinferiors unmarked}} {INBOX noinferiors}}
.CE
.TP
\fB::imap4::select\fR \fIchan\fR ?\fImailbox\fR?
.sp
Select a mailbox, 0 is returned on success.
.sp







<







352
353
354
355
356
357
358

359
360
361
362
363
364
365
.sp
\fImboxname\fR - mailbox name, defaults to "*"
.sp
If \fB-inline\fR is specified a compact folderlist is
returned instead of the result code. All flags are converted to
lowercase and leading special characters are removed.
.CS

{{Arc08 noselect} {Arc08/Private {noinferiors unmarked}} {INBOX noinferiors}}
.CE
.TP
\fB::imap4::select\fR \fIchan\fR ?\fImailbox\fR?
.sp
Select a mailbox, 0 is returned on success.
.sp
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
\fIdelim\fR - hierarchy delimiter only,
\fImatch\fR - ref and mbox search patterns (see \fB::imap4::folders\fR),
\fInames\fR - list of folder names only,
\fIflags\fR - list of folder names with flags in format
\fI{ {name {flags}} ... }\fR (see also compact format in function
\fB::imap4::folders\fR).
.CS


{{Arc08 {{\\NoSelect}}} {Arc08/Private {{\\NoInferiors} {\\UnMarked}}} {INBOX {\\NoInferiors}}}

.CE
.TP
\fB::imap4::msginfo\fR \fIchan\fR \fImsgid\fR ?\fIinfo\fR? ?\fIdefval\fR?
.sp
Get information (from previously collected using fetch) from a given
\fImsgid\fR. If the 'info' argument is omitted or a null string,
the list of available information options for the given message is







<
<

<







429
430
431
432
433
434
435


436

437
438
439
440
441
442
443
\fIdelim\fR - hierarchy delimiter only,
\fImatch\fR - ref and mbox search patterns (see \fB::imap4::folders\fR),
\fInames\fR - list of folder names only,
\fIflags\fR - list of folder names with flags in format
\fI{ {name {flags}} ... }\fR (see also compact format in function
\fB::imap4::folders\fR).
.CS


{{Arc08 {{\\NoSelect}}} {Arc08/Private {{\\NoInferiors} {\\UnMarked}}} {INBOX {\\NoInferiors}}}

.CE
.TP
\fB::imap4::msginfo\fR \fIchan\fR \fImsgid\fR ?\fIinfo\fR? ?\fIdefval\fR?
.sp
Get information (from previously collected using fetch) from a given
\fImsgid\fR. If the 'info' argument is omitted or a null string,
the list of available information options for the given message is
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
.sp
In conjunction with OK:
\fIPERMFLAGS\fR, \fIUIDNEXT\fR, \fIUIDVAL\fR, \fIUNSEEN\fR
.sp
Div. states:
\fICURRENT\fR, \fIFOUND\fR, \fIPERM\fR.
.CS


    ::imap4::select $chan INBOX
    puts "[::imap4::mboxinfo $chan exists] mails in INBOX"
.CE
.TP
\fB::imap4::isableto\fR \fIchan\fR ?\fIcapability\fR?
.sp
Test for capability.
It returns 1 if requested capability is supported, 0 otherwise.
If \fIcapability\fR is omitted all capability imap







<
<
|
|







479
480
481
482
483
484
485


486
487
488
489
490
491
492
493
494
.sp
In conjunction with OK:
\fIPERMFLAGS\fR, \fIUIDNEXT\fR, \fIUIDVAL\fR, \fIUNSEEN\fR
.sp
Div. states:
\fICURRENT\fR, \fIFOUND\fR, \fIPERM\fR.
.CS


::imap4::select $chan INBOX
puts "[::imap4::mboxinfo $chan exists] mails in INBOX"
.CE
.TP
\fB::imap4::isableto\fR \fIchan\fR ?\fIcapability\fR?
.sp
Test for capability.
It returns 1 if requested capability is supported, 0 otherwise.
If \fIcapability\fR is omitted all capability imap
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
SMALLER, LARGER, ON, SENTBEFORE, SENTON, SENTSINCE, SINCE,
BEFORE (not implemented),
UID (not implemented)
.sp
\fILogical search conditions:\fR
OR, NOT
.CS

::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
.CE
.TP
\fB::imap4::close\fR \fIchan\fR
.sp







<







570
571
572
573
574
575
576

577
578
579
580
581
582
583
SMALLER, LARGER, ON, SENTBEFORE, SENTON, SENTSINCE, SINCE,
BEFORE (not implemented),
UID (not implemented)
.sp
\fILogical search conditions:\fR
OR, NOT
.CS

::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
.CE
.TP
\fB::imap4::close\fR \fIchan\fR
.sp
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
-FLAGS
Remove the flags in \fIflaglist\fR to the existing flags for the
message.
.RE
.IP
For example:
.CS


	::imap4::store $chan $start_msgid:$end_msgid +FLAGS "Deleted"

.CE
.TP
\fB::imap4::expunge\fR \fIchan\fR
.sp
Permanently removes all messages that have the \\Deleted flag
set from the currently selected mailbox, without the need to close the
connection.







<
<
|
<







636
637
638
639
640
641
642


643

644
645
646
647
648
649
650
-FLAGS
Remove the flags in \fIflaglist\fR to the existing flags for the
message.
.RE
.IP
For example:
.CS


::imap4::store $chan $start_msgid:$end_msgid +FLAGS "Deleted"

.CE
.TP
\fB::imap4::expunge\fR \fIchan\fR
.sp
Permanently removes all messages that have the \\Deleted flag
set from the currently selected mailbox, without the need to close the
connection.
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
A new connection will need to be established to login once
more.
.sp
\fIchan\fR - imap channel
.PP
.SH EXAMPLES
.CS


    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 "$info -> [::imap4::mboxinfo $imap $info]"
    }
    # fetch 3 records inline
    set fields {from: to: subject: size}
    foreach rec [::imap4::fetch $imap :3 -inline {*}$fields] {
        puts -nonewline "#[incr idx])"
        for {set j 0} {$j<[llength $fields]} {incr j} {
            puts "\\t[lindex $fields $j] [lindex $rec $j]"
        }
    }

    # Show all the information available about the message ID 1
    puts "Available info about message 1: [::imap4::msginfo $imap 1]"

    # Use the capability stuff
    puts "Capabilities: [::imap4::isableto $imap]"
    puts "Is able to imap4rev1? [::imap4::isableto $imap imap4rev1]"

    # Cleanup
    ::imap4::cleanup $imap

.CE
.SH REFERENCES
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"







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







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
A new connection will need to be established to login once
more.
.sp
\fIchan\fR - imap channel
.PP
.SH EXAMPLES
.CS


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 "$info -> [::imap4::mboxinfo $imap $info]"
}
# fetch 3 records inline
set fields {from: to: subject: size}
foreach rec [::imap4::fetch $imap :3 -inline {*}$fields] {
puts -nonewline "#[incr idx])"
for {set j 0} {$j<[llength $fields]} {incr j} {
puts "\\t[lindex $fields $j] [lindex $rec $j]"
}
}

# Show all the information available about the message ID 1
puts "Available info about message 1: [::imap4::msginfo $imap 1]"

# Use the capability stuff
puts "Capabilities: [::imap4::isableto $imap]"
puts "Is able to imap4rev1? [::imap4::isableto $imap imap4rev1]"

# Cleanup
::imap4::cleanup $imap

.CE
.SH REFERENCES
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"

Changes to embedded/man/files/modules/inifile/ini.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

Changes to embedded/man/files/modules/interp/deleg_method.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
284
285
286
287
288
289
290
291
292
.SH KEYWORDS
comm, delegation, interpreter, method, snit
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi







<

283
284
285
286
287
288
289

290
.SH KEYWORDS
comm, delegation, interpreter, method, snit
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/interp/deleg_proc.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
282
283
284
285
286
287
288
289
290
.SH KEYWORDS
comm, delegation, interpreter, procedure
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi







<

281
282
283
284
285
286
287

288
.SH KEYWORDS
comm, delegation, interpreter, procedure
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/interp/tcllib_interp.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
303
304
305
306
307
308
309
310
311
.SH KEYWORDS
alias, empty interpreter, interpreter, method, snit
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi







<

302
303
304
305
306
307
308

309
.SH KEYWORDS
alias, empty interpreter, interpreter, method, snit
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

Changes to embedded/man/files/modules/irc/picoirc.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
desired to return a break error code to halt further processing. In
this way the application can override the default send via the
callback procedure.
.PP
.SH CALLBACK
The callback must look like:
.CS


proc Callback {context state args} {
}

.CE
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.
.TP
\fBinit\fR
called just before the socket is created







<
<


<







296
297
298
299
300
301
302


303
304

305
306
307
308
309
310
311
desired to return a break error code to halt further processing. In
this way the application can override the default send via the
callback procedure.
.PP
.SH CALLBACK
The callback must look like:
.CS


proc Callback {context state args} {
}

.CE
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.
.TP
\fBinit\fR
called just before the socket is created

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

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

221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







221
222
223
224
225
226
227

228
229
230
231
232
233
234
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
thumbnail is included in \fIfile\fR, 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
thumbnails that are encoded in either the JFXX or EXIF segments of the
JPEG information. If both are present the EXIF thumbnail will take precedence.
Throws an error if \fIfile\fR is not a JPEG image.
.CS


    set fh [open thumbnail.jpg w+]
    fconfigure $fh -translation binary -encoding binary
    puts -nonewline $fh [::jpeg::getThumbnail photo.jpg]
    close $fh

.CE
.TP
\fB::jpeg::getExif\fR \fIfile\fR ?\fIsection\fR?
\fIsection\fR must be one of \fBmain\fR or \fBthumbnail\fR.
The default is \fBmain\fR.
Returns a dictionary containing the EXIF information for the specified section.
For example:
.sp
.CS


    set exif {
	Make     Canon
	Model    {Canon DIGITAL IXUS}
	DateTime {2001:06:09 15:17:32}
    }

.CE
.IP
Throws an error if \fIfile\fR is not a JPEG image.
.TP
\fB::jpeg::getExifFromChannel\fR \fIchannel\fR ?\fIsection\fR?
This command is as per \fB::jpeg::getExif\fR except that it uses a
previously opened channel.  \fIchannel\fR should be a seekable channel
and \fIsection\fR is as described in the documentation of
\fB::jpeg::getExif\fR
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.
.TP
\fB::jpeg::formatExif\fR \fIkeys\fR
Takes a list of key-value pairs as returned by \fBgetExif\fR and formats
many of the values into a more human readable form. As few as one key-value
may be passed in, the entire exif is not required.
.CS


    foreach {key val} [::jpeg::formatExif [::jpeg::getExif photo.jpg]] {
        puts "$key: $val"
    }

.CE
.sp
.CS


    array set exif [::jpeg::getExif photo.jpg]
    puts "max f-stop: [::jpeg::formatExif [list MaxAperture $exif(MaxAperture)]]

.CE
.TP
\fB::jpeg::exifKeys\fR
Returns a list of the EXIF keys which are currently understood.
There may be keys present in \fBgetExif\fR data that are not understood.
Those keys will appear in a 4 digit hexadecimal format.
.TP







<
<
|
|
|
|
<









<
<
|
|
|
|
|
<



















<
<
|
|
|
<



<
<
|
|
<







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
thumbnail is included in \fIfile\fR, 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
thumbnails that are encoded in either the JFXX or EXIF segments of the
JPEG information. If both are present the EXIF thumbnail will take precedence.
Throws an error if \fIfile\fR is not a JPEG image.
.CS


set fh [open thumbnail.jpg w+]
fconfigure $fh -translation binary -encoding binary
puts -nonewline $fh [::jpeg::getThumbnail photo.jpg]
close $fh

.CE
.TP
\fB::jpeg::getExif\fR \fIfile\fR ?\fIsection\fR?
\fIsection\fR must be one of \fBmain\fR or \fBthumbnail\fR.
The default is \fBmain\fR.
Returns a dictionary containing the EXIF information for the specified section.
For example:
.sp
.CS


set exif {
Make     Canon
Model    {Canon DIGITAL IXUS}
DateTime {2001:06:09 15:17:32}
}

.CE
.IP
Throws an error if \fIfile\fR is not a JPEG image.
.TP
\fB::jpeg::getExifFromChannel\fR \fIchannel\fR ?\fIsection\fR?
This command is as per \fB::jpeg::getExif\fR except that it uses a
previously opened channel.  \fIchannel\fR should be a seekable channel
and \fIsection\fR is as described in the documentation of
\fB::jpeg::getExif\fR
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.
.TP
\fB::jpeg::formatExif\fR \fIkeys\fR
Takes a list of key-value pairs as returned by \fBgetExif\fR and formats
many of the values into a more human readable form. As few as one key-value
may be passed in, the entire exif is not required.
.CS


foreach {key val} [::jpeg::formatExif [::jpeg::getExif photo.jpg]] {
puts "$key: $val"
}

.CE
.sp
.CS


array set exif [::jpeg::getExif photo.jpg]
puts "max f-stop: [::jpeg::formatExif [list MaxAperture $exif(MaxAperture)]]

.CE
.TP
\fB::jpeg::exifKeys\fR
Returns a list of the EXIF keys which are currently understood.
There may be keys present in \fBgetExif\fR data that are not understood.
Those keys will appear in a 4 digit hexadecimal format.
.TP
443
444
445
446
447
448
449
450
451
File formats
.SH COPYRIGHT
.nf
Copyright (c) 2004-2005, Code: Aaron Faupell <[email protected]>
Copyright (c) 2007, Code:  Andreas Kupries <[email protected]>
Copyright (c) 2004-2009, Doc:  Andreas Kupries <[email protected]>
Copyright (c) 2011, Code: Pat Thoyts <[email protected]>

.fi







<

430
431
432
433
434
435
436

437
File formats
.SH COPYRIGHT
.nf
Copyright (c) 2004-2005, Code: Aaron Faupell <[email protected]>
Copyright (c) 2007, Code:  Andreas Kupries <[email protected]>
Copyright (c) 2004-2009, Doc:  Andreas Kupries <[email protected]>
Copyright (c) 2011, Code: Pat Thoyts <[email protected]>

.fi

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

219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







219
220
221
222
223
224
225

226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.PP
.SH EXAMPLES
.PP
An example of a JSON array converted to Tcl.  A JSON array is returned as a
single item with multiple elements.
.PP
.CS

[
    {
       "precision": "zip",
       "Latitude":  37.7668,
       "Longitude": -122.3959,
       "Address":   "",
       "City":      "SAN FRANCISCO",
       "State":     "CA",
       "Zip":       "94107",
       "Country":   "US"
    },
    {
       "precision": "zip",
       "Latitude":  37.371991,
       "Longitude": -122.026020,
       "Address":   "",
       "City":      "SUNNYVALE",
       "State":     "CA",
       "Zip":       "94085",
       "Country":   "US"
    }
]
=>
{Country US Latitude 37.7668 precision zip State CA City {SAN FRANCISCO} Address {} Zip 94107 Longitude -122.3959} {Country US Latitude 37.371991 precision zip State CA City SUNNYVALE Address {} Zip 94085 Longitude -122.026020}

.CE
.PP
An example of a JSON object converted to Tcl.  A JSON object is returned as a
multi-element list (a dict).
.PP
.CS

{
    "Image": {
        "Width":  800,
        "Height": 600,
        "Title":  "View from 15th Floor",
        "Thumbnail": {
            "Url":    "http://www.example.com/image/481989943",
            "Height": 125,
            "Width":  "100"
        },
        "IDs": [116, 943, 234, 38793]
    }
}
=>
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
.nf
Copyright (c) 2006 ActiveState Software Inc.
Copyright (c) 2009 Thomas Maeder, Glue Software Engineering AG

.fi







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



<






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



<
















<

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
.PP
.SH EXAMPLES
.PP
An example of a JSON array converted to Tcl.  A JSON array is returned as a
single item with multiple elements.
.PP
.CS
[

{
"precision": "zip",
"Latitude":  37.7668,
"Longitude": -122.3959,
"Address":   "",
"City":      "SAN FRANCISCO",
"State":     "CA",
"Zip":       "94107",
"Country":   "US"
},
{
"precision": "zip",
"Latitude":  37.371991,
"Longitude": -122.026020,
"Address":   "",
"City":      "SUNNYVALE",
"State":     "CA",
"Zip":       "94085",
"Country":   "US"
}
]
=>
{Country US Latitude 37.7668 precision zip State CA City {SAN FRANCISCO} Address {} Zip 94107 Longitude -122.3959} {Country US Latitude 37.371991 precision zip State CA City SUNNYVALE Address {} Zip 94085 Longitude -122.026020}

.CE
.PP
An example of a JSON object converted to Tcl.  A JSON object is returned as a
multi-element list (a dict).
.PP
.CS
{

"Image": {
"Width":  800,
"Height": 600,
"Title":  "View from 15th Floor",
"Thumbnail": {
"Url":    "http://www.example.com/image/481989943",
"Height": 125,
"Width":  "100"
},
"IDs": [116, 943, 234, 38793]
}
}
=>
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
.nf
Copyright (c) 2006 ActiveState Software Inc.
Copyright (c) 2009 Thomas Maeder, Glue Software Engineering AG

.fi

Changes to embedded/man/files/modules/json/json_write.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
323
324
325
326
327
328
329
330
331
.SH KEYWORDS
data exchange, exchange format, javascript, json
.SH CATEGORY
CGI programming
.SH COPYRIGHT
.nf
Copyright (c) 2009-2013 Andreas Kupries <[email protected]>

.fi







<

322
323
324
325
326
327
328

329
.SH KEYWORDS
data exchange, exchange format, javascript, json
.SH CATEGORY
CGI programming
.SH COPYRIGHT
.nf
Copyright (c) 2009-2013 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.BE
.SH DESCRIPTION
.PP
This package provides two convenience commands to make the writing of
anonymous procedures, i.e. lambdas more \fBproc\fR-like. Instead of,
for example, to write
.CS


     set f {::apply {{x} {
        ....
     }}}

.CE
with its deep nesting of braces, or
.CS


     set f [list ::apply {{x y} {
        ....
     }} $value_for_x]

.CE
with a list command to insert some of the arguments of a partial
application, just write
.CS


     set f [lambda {x} {
        ....
     }]

.CE
and
.CS


     set f [lambda {x y} {
        ....
     } $value_for_x]

.CE
.SH COMMANDS
.TP
\fB::lambda\fR \fIarguments\fR \fIbody\fR ?\fIarg\fR...?
The command constructs an anonymous procedure from the list of
arguments, body script and (optional) predefined argument values and
returns a command prefix representing this anonymous procedure.







<
<
|
|
|
<



<
<
|
|
|
<




<
<
|
|
|
<



<
<
|
|
|
<







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
.BE
.SH DESCRIPTION
.PP
This package provides two convenience commands to make the writing of
anonymous procedures, i.e. lambdas more \fBproc\fR-like. Instead of,
for example, to write
.CS


set f {::apply {{x} {
\....
}}}

.CE
with its deep nesting of braces, or
.CS


set f [list ::apply {{x y} {
\....
}} $value_for_x]

.CE
with a list command to insert some of the arguments of a partial
application, just write
.CS


set f [lambda {x} {
\....
}]

.CE
and
.CS


set f [lambda {x y} {
\....
} $value_for_x]

.CE
.SH COMMANDS
.TP
\fB::lambda\fR \fIarguments\fR \fIbody\fR ?\fIarg\fR...?
The command constructs an anonymous procedure from the list of
arguments, body script and (optional) predefined argument values and
returns a command prefix representing this anonymous procedure.
328
329
330
331
332
333
334
335
336
.SH KEYWORDS
anonymous procedure, callback, command prefix, currying, lambda, partial application, proc
.SH CATEGORY
Utility
.SH COPYRIGHT
.nf
Copyright (c) 2011 Andreas Kupries, BSD licensed

.fi







<

315
316
317
318
319
320
321

322
.SH KEYWORDS
anonymous procedure, callback, command prefix, currying, lambda, partial application, proc
.SH CATEGORY
Utility
.SH COPYRIGHT
.nf
Copyright (c) 2011 Andreas Kupries, BSD licensed

.fi

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

220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







220
221
222
223
224
225
226

227
228
229
230
231
232
233
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
list of \fIattributes\fR was empty all attributes are returned. The
command blocks until it has received all results.
The valid \fIoptions\fR are identical to the options listed for \fB::ldap::searchInit\fR.
.sp
An example of a search expression is
.sp
.CS


    set filterString "|(cn=Linus*)(sn=Torvalds*)"

.CE
.sp
The return value of the command is a list of nested dictionaries. The
first level keys are object identifiers (DNs), second levels keys are
attribute names. In other words, it is in the form
.sp
.CS


    {dn1 {attr1 {val11 val12 ...} attr2 {val21...} ...}} {dn2 {a1 {v11 ...} ...}} ...

.CE
.sp
.TP
\fB::ldap::searchInit\fR \fIhandle\fR \fIbaseObject\fR \fIfilterString\fR \fIattributes\fR \fIoptions\fR
This command initiates a LDAP search below the \fIbaseObject\fR tree
using a complex LDAP search expression \fIfilterString\fR.
The search gets the specified \fIattributes\fR of all matching objects (DNs).







<
<
|
<







<
<
|
<







372
373
374
375
376
377
378


379

380
381
382
383
384
385
386


387

388
389
390
391
392
393
394
list of \fIattributes\fR was empty all attributes are returned. The
command blocks until it has received all results.
The valid \fIoptions\fR are identical to the options listed for \fB::ldap::searchInit\fR.
.sp
An example of a search expression is
.sp
.CS


set filterString "|(cn=Linus*)(sn=Torvalds*)"

.CE
.sp
The return value of the command is a list of nested dictionaries. The
first level keys are object identifiers (DNs), second levels keys are
attribute names. In other words, it is in the form
.sp
.CS


{dn1 {attr1 {val11 val12 ...} attr2 {val21...} ...}} {dn2 {a1 {v11 ...} ...}} ...

.CE
.sp
.TP
\fB::ldap::searchInit\fR \fIhandle\fR \fIbaseObject\fR \fIfilterString\fR \fIattributes\fR \fIoptions\fR
This command initiates a LDAP search below the \fIbaseObject\fR tree
using a complex LDAP search expression \fIfilterString\fR.
The search gets the specified \fIattributes\fR of all matching objects (DNs).
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
Error responses from the server due to wrong arguments or similar things are returned
with the first \fB::ldap::searchNext\fR call and should be checked and dealed with there.
If the list of requested \fIattributes\fR is empty all attributes will be returned.
The parameter \fIoptions\fR specifies the options to be used in the search,
and has the following format:
.sp
.CS


    {-option1 value1 -option2 value2 ... }

.CE
.sp
Following options are available:
.RS
.TP
\fB-scope\fR base one sub
Control the scope of the search to be one of \fBbase\fR, \fBone\fR, or \fBsub\fR,  to  specify  a  base







<
<
|
<







403
404
405
406
407
408
409


410

411
412
413
414
415
416
417
Error responses from the server due to wrong arguments or similar things are returned
with the first \fB::ldap::searchNext\fR call and should be checked and dealed with there.
If the list of requested \fIattributes\fR is empty all attributes will be returned.
The parameter \fIoptions\fR specifies the options to be used in the search,
and has the following format:
.sp
.CS


{-option1 value1 -option2 value2 ... }

.CE
.sp
Following options are available:
.RS
.TP
\fB-scope\fR base one sub
Control the scope of the search to be one of \fBbase\fR, \fBone\fR, or \fBsub\fR,  to  specify  a  base
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
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:
.sp
.CS


    dn {attr1 {val11 val12 ...} attr2 {val21...} ...}

.CE
.sp
The \fB::ldap::searchNext\fR command returns an empty list at the
end of the search.
.sp
.TP
\fB::ldap::searchEnd\fR \fIhandle\fR







<
<
|
<







449
450
451
452
453
454
455


456

457
458
459
460
461
462
463
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:
.sp
.CS


dn {attr1 {val11 val12 ...} attr2 {val21...} ...}

.CE
.sp
The \fB::ldap::searchNext\fR command returns an empty list at the
end of the search.
.sp
.TP
\fB::ldap::searchEnd\fR \fIhandle\fR
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
\fB::ldap::modifyMulti\fR \fIhandle\fR \fIdn\fR \fIattrValToReplace\fR ?\fIattrValToDelete\fR? ?\fIattrValToAdd\fR?
This command modifies the object \fIdn\fR on the ldap server we are
connected to via \fIhandle\fR. It replaces attributes with new values,
deletes attributes, and adds new attributes with new values.
All arguments are lists with the format:
.sp
.CS


    attr1 {val11 val12 ...} attr2 {val21...} ...

.CE
.sp
where each value list may be empty for deleting all attributes.
The optional arguments default to empty lists of attributes to
delete and to add.
.RS
.TP







<
<
|
<







501
502
503
504
505
506
507


508

509
510
511
512
513
514
515
\fB::ldap::modifyMulti\fR \fIhandle\fR \fIdn\fR \fIattrValToReplace\fR ?\fIattrValToDelete\fR? ?\fIattrValToAdd\fR?
This command modifies the object \fIdn\fR on the ldap server we are
connected to via \fIhandle\fR. It replaces attributes with new values,
deletes attributes, and adds new attributes with new values.
All arguments are lists with the format:
.sp
.CS


attr1 {val11 val12 ...} attr2 {val21...} ...

.CE
.sp
where each value list may be empty for deleting all attributes.
The optional arguments default to empty lists of attributes to
delete and to add.
.RS
.TP
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
.PP
.SH EXAMPLES
.PP
A small example, extracted from the test application coming with this
code.
.PP
.CS


    package require ldap

    # Connect, bind, add a new object, modify it in various ways

    set handle [ldap::connect localhost 9009]

    set dn "cn=Manager, o=University of Michigan, c=US"
    set pw secret

    ldap::bind $handle $dn $pw

    set dn "cn=Test User,ou=People,o=University of Michigan,c=US"

    ldap::add $handle $dn {
	objectClass     OpenLDAPperson
	cn              {Test User}
	mail            [email protected]
	uid             testuid
	sn              User
	telephoneNumber +31415926535
	telephoneNumber +27182818285
    }

    set dn "cn=Another User,ou=People,o=University of Michigan,c=US"

    ldap::addMulti $handle $dn {
	objectClass     {OpenLDAPperson}
	cn              {{Anotther User}}
	mail            {[email protected]}
	uid             {testuid}
	sn              {User}
	telephoneNumber {+31415926535 +27182818285}
    }

    # Replace all attributes
    ldap::modify $handle $dn [list drink icetea uid JOLO]

    # Add some more
    ldap::modify $handle $dn {} {} [list drink water  drink orangeJuice pager "+1 313 555 7671"]

    # Delete
    ldap::modify $handle $dn {} [list drink water  pager ""]

    # 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

.CE
.PP
And a another example, a simple query, and processing the
results.
.PP
.CS


    package require ldap
    set handle [ldap::connect ldap.acme.com 389]
    ldap::bind $handle
    set results [ldap::search $handle "o=acme,dc=com" "(uid=jdoe)" {}]
    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] > $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

.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 <[email protected]>
Copyright (c) 2004 Jochen Loewer <[email protected]>
Copyright (c) 2006 Michael Schlenker <[email protected]>

.fi







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






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



















<

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
.PP
.SH EXAMPLES
.PP
A small example, extracted from the test application coming with this
code.
.PP
.CS


package require ldap

# Connect, bind, add a new object, modify it in various ways

set handle [ldap::connect localhost 9009]

set dn "cn=Manager, o=University of Michigan, c=US"
set pw secret

ldap::bind $handle $dn $pw

set dn "cn=Test User,ou=People,o=University of Michigan,c=US"

ldap::add $handle $dn {
objectClass     OpenLDAPperson
cn              {Test User}
mail            [email protected]
uid             testuid
sn              User
telephoneNumber +31415926535
telephoneNumber +27182818285
}

set dn "cn=Another User,ou=People,o=University of Michigan,c=US"

ldap::addMulti $handle $dn {
objectClass     {OpenLDAPperson}
cn              {{Anotther User}}
mail            {[email protected]}
uid             {testuid}
sn              {User}
telephoneNumber {+31415926535 +27182818285}
}

# Replace all attributes
ldap::modify $handle $dn [list drink icetea uid JOLO]

# Add some more
ldap::modify $handle $dn {} {} [list drink water  drink orangeJuice pager "+1 313 555 7671"]

# Delete
ldap::modify $handle $dn {} [list drink water  pager ""]

# 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

.CE
.PP
And a another example, a simple query, and processing the
results.
.PP
.CS


package require ldap
set handle [ldap::connect ldap.acme.com 389]
ldap::bind $handle
set results [ldap::search $handle "o=acme,dc=com" "(uid=jdoe)" {}]
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] > $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

.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 <[email protected]>
Copyright (c) 2004 Jochen Loewer <[email protected]>
Copyright (c) 2006 Michael Schlenker <[email protected]>

.fi

Changes to embedded/man/files/modules/ldap/ldapx.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
the optional argument \fIold\fR is not specified, difference
is computed from the entry and its internal backup (see
section \fBOVERVIEW\fR). Return value is the computed
change list.
.PP
.SS "ENTRY EXAMPLE"
.CS


    package require ldapx

    #
    # Create an entry and fill it as a standard entry with
    # attributes and values
    #
    ::ldapx::entry create e
    e dn "uid=joe,ou=people,o=mycomp"
    e set1 "uid"             "joe"
    e set  "objectClass"     {person anotherObjectClass}
    e set1 "givenName"       "Joe"
    e set1 "sn"              "User"
    e set  "telephoneNumber" {+31415926535 +2182818}
    e set1 "anotherAttr"     "This is a beautiful day, isn't it?"

    puts stdout "e\\n[e print]"

    #
    # Create a second entry as a backup of the first, and
    # make some changes on it.
    # Entry is named automatically by snit.
    #

    set b [::ldapx::entry create %AUTO%]
    e backup $b

    puts stdout "$b\\n[$b print]"

    $b del  "anotherAttr"
    $b del1 "objectClass" "anotherObjectClass"

    #
    # Create a change entry, a compute differences between first
    # and second entry.
    #

    ::ldapx::entry create c
    c diff e $b

    puts stdout "$c\\n[$c print]"

    #
    # Apply changes to first entry. It should be the same as the
    # second entry, now.
    #

    e apply c

    ::ldapx::entry create nc
    nc diff e $b

    puts stdout "nc\\n[nc print]"

    #
    # Clean-up
    #

    e destroy
    $b destroy
    c destroy
    nc destroy

.CE
.SH "LDAP CLASS"
.SS "LDAP INSTANCE DATA"
An instance of the \fBldap\fR class keeps the following data:
.TP
channel
This is the channel used by the \fBldap\fR package for







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







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
the optional argument \fIold\fR is not specified, difference
is computed from the entry and its internal backup (see
section \fBOVERVIEW\fR). Return value is the computed
change list.
.PP
.SS "ENTRY EXAMPLE"
.CS


package require ldapx

#
# Create an entry and fill it as a standard entry with
# attributes and values
#
::ldapx::entry create e
e dn "uid=joe,ou=people,o=mycomp"
e set1 "uid"             "joe"
e set  "objectClass"     {person anotherObjectClass}
e set1 "givenName"       "Joe"
e set1 "sn"              "User"
e set  "telephoneNumber" {+31415926535 +2182818}
e set1 "anotherAttr"     "This is a beautiful day, isn't it?"

puts stdout "e\\n[e print]"

#
# Create a second entry as a backup of the first, and
# make some changes on it.
# Entry is named automatically by snit.
#

set b [::ldapx::entry create %AUTO%]
e backup $b

puts stdout "$b\\n[$b print]"

$b del  "anotherAttr"
$b del1 "objectClass" "anotherObjectClass"
#

# Create a change entry, a compute differences between first
# and second entry.
#

::ldapx::entry create c
c diff e $b

puts stdout "$c\\n[$c print]"
#

# Apply changes to first entry. It should be the same as the
# second entry, now.
#

e apply c

::ldapx::entry create nc
nc diff e $b

puts stdout "nc\\n[nc print]"
#

# Clean-up
#

e destroy
$b destroy
c destroy
nc destroy

.CE
.SH "LDAP CLASS"
.SS "LDAP INSTANCE DATA"
An instance of the \fBldap\fR class keeps the following data:
.TP
channel
This is the channel used by the \fBldap\fR package for
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
entry, or a \fIstandard\fR entry with a backup.
.sp
Note: in the future, this method should use the LDAP
transaction extension provided by OpenLDAP 2.3 and later.
.PP
.SS "LDAP EXAMPLE"
.CS


    package require ldapx

    #
    # Connects to the LDAP directory
    #

    ::ldapx::ldap create l
    set url "ldap://server.mycomp.com"
    if {! [l connect $url "cn=admin,o=mycomp" "mypasswd"]} then {
	puts stderr "error: [l error]"
	exit 1
    }

    #
    # Search all entries matching some criterion
    #

    l configure -scope one
    ::ldapx::ldap create e
    set n 0
    l traverse "ou=people,o=mycomp" "(sn=Joe*)" {sn givenName} e {
	puts "dn: [e dn]"
	puts "  sn:        [e get1 sn]"
	puts "  givenName: [e get1 givenName]"
	incr n
    }
    puts "$n entries found"
    e destroy

    #
    # Add a telephone number to some entries
    # Note this modification cannot be done in the "traverse" operation.
    #

    set lent [l search "ou=people,o=mycomp" "(sn=Joe*)" {}]
    ::ldapx::ldap create c
    foreach e $lent {
	$e backup
	$e add1 "telephoneNumber" "+31415926535"
	c diff $e
	if {! [l commit c]} then {
	    puts stderr "error: [l error]"
	    exit 1
	}
	$e destroy
    }

    l disconnect
    l destroy

.CE
.SH "LDIF CLASS"
.SS "LDIF INSTANCE DATA"
An instance of the \fBldif\fR class keeps the following data:
.TP
channel
This is the Tcl channel used to retrieve or store LDIF file







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







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
entry, or a \fIstandard\fR entry with a backup.
.sp
Note: in the future, this method should use the LDAP
transaction extension provided by OpenLDAP 2.3 and later.
.PP
.SS "LDAP EXAMPLE"
.CS


package require ldapx
#

# Connects to the LDAP directory
#

::ldapx::ldap create l
set url "ldap://server.mycomp.com"
if {! [l connect $url "cn=admin,o=mycomp" "mypasswd"]} then {
puts stderr "error: [l error]"
exit 1
}
#

# Search all entries matching some criterion
#

l configure -scope one
::ldapx::ldap create e
set n 0
l traverse "ou=people,o=mycomp" "(sn=Joe*)" {sn givenName} e {
puts "dn: [e dn]"
puts "  sn:        [e get1 sn]"
puts "  givenName: [e get1 givenName]"
incr n
}
puts "$n entries found"
e destroy
#

# Add a telephone number to some entries
# Note this modification cannot be done in the "traverse" operation.
#

set lent [l search "ou=people,o=mycomp" "(sn=Joe*)" {}]
::ldapx::ldap create c
foreach e $lent {
$e backup
$e add1 "telephoneNumber" "+31415926535"
c diff $e
if {! [l commit c]} then {
puts stderr "error: [l error]"
exit 1
}
$e destroy
}

l disconnect
l destroy

.CE
.SH "LDIF CLASS"
.SS "LDIF INSTANCE DATA"
An instance of the \fBldif\fR class keeps the following data:
.TP
channel
This is the Tcl channel used to retrieve or store LDIF file
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
.TP
\fIli\fR \fBwrite\fR \fIentry\fR
This method writes the entry given in the argument
\fIentry\fR to the LDIF file.
.PP
.SS "LDIF EXAMPLE"
.CS


    package require ldapx

    # This examples reads a LDIF file containing entries,
    # compare them to a LDAP directory, and writes on standard
    # output an LDIF file containing changes to apply to the
    # LDAP directory to match exactly the LDIF file.

    ::ldapx::ldif create liin
    liin channel stdin

    ::ldapx::ldif create liout
    liout channel stdout

    ::ldapx::ldap create la
    if {! [la connect "ldap://server.mycomp.com"]} then {
	puts stderr "error: [la error]"
	exit 1
    }
    la configure -scope one

    # Reads LDIF file

    ::ldapx::entry create e1
    ::ldapx::entry create e2
    ::ldapx::entry create c

    while {[liin read e1] != 0} {
	set base [e1 superior]
	set id [e1 rdn]
	if {[la read $base "($id)" e2] == 0} then {
	    e2 reset
	}

	c diff e1 e2
	if {[llength [c change]] != 0} then {
	    liout write c
	}
    }

    la disconnect
    la destroy
    e1 destroy
    e2 destroy
    c destroy
    liout destroy
    liin destroy

.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
.nf
Copyright (c) 2006 Pierre David <[email protected]>

.fi







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
















<

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
.TP
\fIli\fR \fBwrite\fR \fIentry\fR
This method writes the entry given in the argument
\fIentry\fR to the LDIF file.
.PP
.SS "LDIF EXAMPLE"
.CS


package require ldapx

# This examples reads a LDIF file containing entries,
# compare them to a LDAP directory, and writes on standard
# output an LDIF file containing changes to apply to the
# LDAP directory to match exactly the LDIF file.

::ldapx::ldif create liin
liin channel stdin

::ldapx::ldif create liout
liout channel stdout

::ldapx::ldap create la
if {! [la connect "ldap://server.mycomp.com"]} then {
puts stderr "error: [la error]"
exit 1
}
la configure -scope one

# Reads LDIF file

::ldapx::entry create e1
::ldapx::entry create e2
::ldapx::entry create c

while {[liin read e1] != 0} {
set base [e1 superior]
set id [e1 rdn]
if {[la read $base "($id)" e2] == 0} then {
e2 reset
}

c diff e1 e2
if {[llength [c change]] != 0} then {
liout write c
}
}

la disconnect
la destroy
e1 destroy
e2 destroy
c destroy
liout destroy
liin destroy

.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
.nf
Copyright (c) 2006 Pierre David <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
The \fBlog\fR package provides commands that allow libraries and
applications to selectively log information about their internal
operation and state.
.PP
To use the package just execute
.PP
.CS


    package require log
    log::log notice "Some message"

.CE
.PP
As can be seen above, each message given to the log facility is
associated with a \fIlevel\fR determining the importance of the
message. The user can then select which levels to log, what commands
to use for the logging of each level and the channel to write the
message to. In the following example the logging of all message with
level \fBdebug\fR is deactivated.
.PP
.CS


    package require log
    log::lvSuppress debug
    log::log debug "Unseen message" ; # No output

.CE
.PP
By default all messages associated with an error-level
(\fBemergency\fR, \fBalert\fR, \fBcritical\fR, and
\fBerror\fR) are written to \fBstderr\fR. Messages with any
other level are written to \fBstdout\fR. In the following example
the log module is reconfigured to write \fBdebug\fR messages to
\fBstderr\fR too.
.PP
.CS


    package require log
    log::lvChannel debug stderr
    log::log debug "Written to stderr"

.CE
.PP
Each message level is also associated with a command to use when
logging a message with that level. The behaviour above for example
relies on the fact that all message levels use by default the standard
command \fB::log::Puts\fR to log any message. In the following example
all messages of level \fBnotice\fR are given to the non-standard
command \fBtoText\fR for logging. This disables the channel setting
for such messages, assuming that \fBtoText\fR does not use it by
itself.
.PP
.CS


    package require log
    log::lvCmd notice toText
    log::log notice "Handled by \\"toText\\""

.CE
.PP
Another database maintained by this facility is a map from message
levels to colors. The information in this database has \fIno\fR
influence on the behaviour of the module. It is merely provided as a
convenience and in anticipation of the usage of this facility in
\fBtk\fR-based application which may want to colorize message







<
<
|
|
<










<
<
|
|
|
<










<
<
|
|
|
<












<
<
|
|
|
<







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
The \fBlog\fR package provides commands that allow libraries and
applications to selectively log information about their internal
operation and state.
.PP
To use the package just execute
.PP
.CS


package require log
log::log notice "Some message"

.CE
.PP
As can be seen above, each message given to the log facility is
associated with a \fIlevel\fR determining the importance of the
message. The user can then select which levels to log, what commands
to use for the logging of each level and the channel to write the
message to. In the following example the logging of all message with
level \fBdebug\fR is deactivated.
.PP
.CS


package require log
log::lvSuppress debug
log::log debug "Unseen message" ; # No output

.CE
.PP
By default all messages associated with an error-level
(\fBemergency\fR, \fBalert\fR, \fBcritical\fR, and
\fBerror\fR) are written to \fBstderr\fR. Messages with any
other level are written to \fBstdout\fR. In the following example
the log module is reconfigured to write \fBdebug\fR messages to
\fBstderr\fR too.
.PP
.CS


package require log
log::lvChannel debug stderr
log::log debug "Written to stderr"

.CE
.PP
Each message level is also associated with a command to use when
logging a message with that level. The behaviour above for example
relies on the fact that all message levels use by default the standard
command \fB::log::Puts\fR to log any message. In the following example
all messages of level \fBnotice\fR are given to the non-standard
command \fBtoText\fR for logging. This disables the channel setting
for such messages, assuming that \fBtoText\fR does not use it by
itself.
.PP
.CS


package require log
log::lvCmd notice toText
log::log notice "Handled by \\"toText\\""

.CE
.PP
Another database maintained by this facility is a map from message
levels to colors. The information in this database has \fIno\fR
influence on the behaviour of the module. It is merely provided as a
convenience and in anticipation of the usage of this facility in
\fBtk\fR-based application which may want to colorize message
525
526
527
528
529
530
531
532
533
.SH KEYWORDS
log, log level, message, message level
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2001-2009 Andreas Kupries <[email protected]>

.fi







<

512
513
514
515
516
517
518

519
.SH KEYWORDS
log, log level, message, message level
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2001-2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/log/logger.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.PP
The \fBlogger\fR package provides a flexible system for logging messages
from different services, at priority levels, with different commands.
.PP
To begin using the logger package, we do the following:
.PP
.CS


    package require logger
    set log [logger::init myservice]
    ${log}::notice "Initialized myservice logging"

    ... code ...

    ${log}::notice "Ending myservice logging"
    ${log}::delete

.CE
.PP
In the above code, after the package is loaded, the following things
happen:
.TP
\fBlogger::init\fR \fIservice\fR
Initializes the service \fIservice\fR for logging.  The service names







<
<
|
|
|
<
|
<
|
|
<







328
329
330
331
332
333
334


335
336
337

338

339
340

341
342
343
344
345
346
347
.PP
The \fBlogger\fR package provides a flexible system for logging messages
from different services, at priority levels, with different commands.
.PP
To begin using the logger package, we do the following:
.PP
.CS


package require logger
set log [logger::init myservice]
${log}::notice "Initialized myservice logging"

\... code ...

${log}::notice "Ending myservice logging"
${log}::delete

.CE
.PP
In the above code, after the package is loaded, the following things
happen:
.TP
\fBlogger::init\fR \fIservice\fR
Initializes the service \fIservice\fR for logging.  The service names
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
.TP
\fB${log}::lvlchangeproc\fR
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.
.CS


 	proc lvlcallback {old new} {
 	    puts "Loglevel changed from $old to $new"
 	}
 	${log}::lvlchangeproc lvlcallback

.CE
.TP
\fB${log}::logproc\fR \fIlevel\fR
.TP
\fB${log}::logproc\fR \fIlevel\fR \fIcommand\fR
.TP
\fB${log}::logproc\fR \fIlevel\fR \fIargname\fR \fIbody\fR
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 \fBlogproc\fR returns the name of the command
currently registered as callback command.
\fBlogproc\fR 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 \fBlogproc\fR it is possible to replace them
with custom code.  This would let you send your logs over the network,
to a database, or anything else.  For example:
.CS


    proc logtoserver {txt} {
        variable socket
        puts $socket "Notice: $txt"
    }

    ${log}::logproc notice logtoserver

.CE
.IP
Trace logs are slightly different: instead of a plain text argument,
the argument provided to the logproc is a dictionary consisting of the
\fBenter\fR or \fBleave\fR keyword along with another dictionary of
details about the trace.  These include:
.RS







<
<
|
|
|
|
<



















<
<
|
|
|
|
<
|
<







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
.TP
\fB${log}::lvlchangeproc\fR
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.
.CS


proc lvlcallback {old new} {
puts "Loglevel changed from $old to $new"
}
${log}::lvlchangeproc lvlcallback

.CE
.TP
\fB${log}::logproc\fR \fIlevel\fR
.TP
\fB${log}::logproc\fR \fIlevel\fR \fIcommand\fR
.TP
\fB${log}::logproc\fR \fIlevel\fR \fIargname\fR \fIbody\fR
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 \fBlogproc\fR returns the name of the command
currently registered as callback command.
\fBlogproc\fR 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 \fBlogproc\fR it is possible to replace them
with custom code.  This would let you send your logs over the network,
to a database, or anything else.  For example:
.CS


proc logtoserver {txt} {
variable socket
puts $socket "Notice: $txt"
}

${log}::logproc notice logtoserver

.CE
.IP
Trace logs are slightly different: instead of a plain text argument,
the argument provided to the logproc is a dictionary consisting of the
\fBenter\fR or \fBleave\fR keyword along with another dictionary of
details about the trace.  These include:
.RS
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
\fB${log}::delproc\fR \fIcommand\fR
.TP
\fB${log}::delproc\fR
Set the script to call when the log instance in question is deleted.
If called without a command it returns the currently registered command.
For example:
.CS


    ${log}::delproc [list closesock $logsock]

.CE
.TP
\fB${log}::delete\fR
This command deletes a particular logging service, and its children.
You must call this to clean up the resources used by a service.
.TP
\fB${log}::trace\fR \fIcommand\fR
This command controls logging of enter/leave traces for specified procedures.
It is used to enable and disable tracing, query tracing status, and
specify procedures are to be traced.  Trace handlers are unregistered when
tracing is disabled.  As a result, there is not performance impact to a
library when tracing is disabled, just as with other log level commands.
.CS


  proc tracecmd { dict } {
      puts $dict
  }

  set log [::logger::init example]
  ${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

  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}

.CE
.TP
\fB${log}::trace\fR \fBon\fR
Turns on trace logging for procedures registered through the \fBtrace\fR
\fBadd\fR command.  This is similar to the \fBenable\fR 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







<
<
|
<













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







<







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
\fB${log}::delproc\fR \fIcommand\fR
.TP
\fB${log}::delproc\fR
Set the script to call when the log instance in question is deleted.
If called without a command it returns the currently registered command.
For example:
.CS


${log}::delproc [list closesock $logsock]

.CE
.TP
\fB${log}::delete\fR
This command deletes a particular logging service, and its children.
You must call this to clean up the resources used by a service.
.TP
\fB${log}::trace\fR \fIcommand\fR
This command controls logging of enter/leave traces for specified procedures.
It is used to enable and disable tracing, query tracing status, and
specify procedures are to be traced.  Trace handlers are unregistered when
tracing is disabled.  As a result, there is not performance impact to a
library when tracing is disabled, just as with other log level commands.
.CS


proc tracecmd { dict } {
puts $dict
}

set log [::logger::init example]
${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

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}

.CE
.TP
\fB${log}::trace\fR \fBon\fR
Turns on trace logging for procedures registered through the \fBtrace\fR
\fBadd\fR command.  This is similar to the \fBenable\fR 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
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
The service "object orientation" is done with namespaces.
.SH "LOGPROCS AND CALLSTACK"
The logger package takes extra care to keep the logproc out of the call stack.
This enables logprocs to execute code in the callers scope by using uplevel or
linking to local variables by using upvar. This may fire traces with all usual
side effects.
.CS


     # Print caller and current vars in the calling proc
     proc log_local_var {txt} {
          set caller [info level -1]
          set vars [uplevel 1 info vars]
          foreach var [lsort $vars] {
             if {[uplevel 1 [list array exists $var]] == 1} {
             	lappend val $var <Array>
             } else {
             	lappend val $var [uplevel 1 [list set $var]]
             }
          }
          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

.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







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












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
The service "object orientation" is done with namespaces.
.SH "LOGPROCS AND CALLSTACK"
The logger package takes extra care to keep the logproc out of the call stack.
This enables logprocs to execute code in the callers scope by using uplevel or
linking to local variables by using upvar. This may fire traces with all usual
side effects.
.CS


# Print caller and current vars in the calling proc
proc log_local_var {txt} {
set caller [info level -1]
set vars [uplevel 1 info vars]
foreach var [lsort $vars] {
if {[uplevel 1 [list array exists $var]] == 1} {
lappend val $var <Array>
} else {
lappend val $var [uplevel 1 [list set $var]]
}
}
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

.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

Changes to embedded/man/files/modules/log/loggerAppender.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
293
294
295
296
297
298
299
300
301
.SH KEYWORDS
appender, logger
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2005 Aamer Akhter <[email protected]>

.fi







<

292
293
294
295
296
297
298

299
.SH KEYWORDS
appender, logger
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2005 Aamer Akhter <[email protected]>

.fi

Changes to embedded/man/files/modules/log/loggerUtils.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
One of \fBconsole\fR, \fBcolorConsole\fR.
.TP
\fB-conversionPattern\fR pattern
See \fB::logger::utils::createFormatCmd\fR for the
format of the pattern. If this option is not provided
the default pattern
.CS

[%d] [%c] [%M] [%p] %m
.CE
.IP
is used.
.TP
\fB-levels\fR levelList
The list of levels to apply this appender to. If not specified all
levels are assumed.
.RE
.sp
Example of usage:
.sp
.CS


   % 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

.CE
.TP
\fB::logger::utils::autoApplyAppender\fR \fIcommand\fR \fIcommand-string\fR \fIlog\fR \fIop\fR \fIargs\fR...
This command is designed to be added via \fBtrace leave\fR to calls
of \fBlogger::init\fR. It will look at preconfigured state (via
\fB::logger::utils::applyAppender\fR) to autocreate appenders for
newly created logger instances.
It will return its argument \fIlog\fR.
.sp
Example of usage:
.sp
.CS


  logger::utils::applyAppender -appender console
  set log [logger::init applyAppender-3]
  ${log}::error "this is an error"

.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
.nf
Copyright (c) 2005 Aamer Akhter <[email protected]>

.fi







<













<
<
|
|
|
|
|
<












<
<
|
|
|
<
















<

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
One of \fBconsole\fR, \fBcolorConsole\fR.
.TP
\fB-conversionPattern\fR pattern
See \fB::logger::utils::createFormatCmd\fR for the
format of the pattern. If this option is not provided
the default pattern
.CS

[%d] [%c] [%M] [%p] %m
.CE
.IP
is used.
.TP
\fB-levels\fR levelList
The list of levels to apply this appender to. If not specified all
levels are assumed.
.RE
.sp
Example of usage:
.sp
.CS


% 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

.CE
.TP
\fB::logger::utils::autoApplyAppender\fR \fIcommand\fR \fIcommand-string\fR \fIlog\fR \fIop\fR \fIargs\fR...
This command is designed to be added via \fBtrace leave\fR to calls
of \fBlogger::init\fR. It will look at preconfigured state (via
\fB::logger::utils::applyAppender\fR) to autocreate appenders for
newly created logger instances.
It will return its argument \fIlog\fR.
.sp
Example of usage:
.sp
.CS


logger::utils::applyAppender -appender console
set log [logger::init applyAppender-3]
${log}::error "this is an error"

.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
.nf
Copyright (c) 2005 Aamer Akhter <[email protected]>

.fi

Changes to embedded/man/files/modules/map/map_geocode_nominatim.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

Changes to embedded/man/files/modules/map/map_slippy.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
.SH API
.TP
\fB::map::slippy\fR \fBlength\fR \fIlevel\fR
This method returns the width/height of a slippy-based map at the
specified zoom \fIlevel\fR, in pixels. This is, in essence, the result
of
.CS


	expr { [tiles $level] * [tile size] }

.CE
.TP
\fB::map::slippy\fR \fBtiles\fR \fIlevel\fR
This method returns the width/height of a slippy-based map at the
specified zoom \fIlevel\fR, in \fItiles\fR.
.TP
\fB::map::slippy\fR \fBtile size\fR







<
<
|
<







278
279
280
281
282
283
284


285

286
287
288
289
290
291
292
.SH API
.TP
\fB::map::slippy\fR \fBlength\fR \fIlevel\fR
This method returns the width/height of a slippy-based map at the
specified zoom \fIlevel\fR, in pixels. This is, in essence, the result
of
.CS


expr { [tiles $level] * [tile size] }

.CE
.TP
\fB::map::slippy\fR \fBtiles\fR \fIlevel\fR
This method returns the width/height of a slippy-based map at the
specified zoom \fIlevel\fR, in \fItiles\fR.
.TP
\fB::map::slippy\fR \fBtile size\fR

Changes to embedded/man/files/modules/map/map_slippy_cache.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

Changes to embedded/man/files/modules/map/map_slippy_fetcher.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
676
677
678
679
680
681
682
683
684
has extreme distortions of shape and area, and can display
only a limited area of the Earth (substantially less than a hemisphere).
.SH KEYWORDS
geodesy, map, projection
.SH COPYRIGHT
.nf
Copyright (c) 2007 Kevin B. Kenny <[email protected]>

.fi







<

675
676
677
678
679
680
681

682
has extreme distortions of shape and area, and can display
only a limited area of the Earth (substantially less than a hemisphere).
.SH KEYWORDS
geodesy, map, projection
.SH COPYRIGHT
.nf
Copyright (c) 2007 Kevin B. Kenny <[email protected]>

.fi

Changes to embedded/man/files/modules/math/bigfloat.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
is at least the number of digits provided by \fInumber\fR.
If the \fInumber\fR contains only digits and eventually a minus sign, it is considered as
an integer. Subsequently, no conversion is done at all.
.sp
\fItrailingZeros\fR - the number of zeros to append at the end of the floating-point number
to get more precision. It cannot be applied to an integer.
.CS


# x and y are BigFloats : the first string contained a dot, and the second an e sign
set x [fromstr -1.000000]
set y [fromstr 2000e30]
# let's see how we get integers
set t 20000000000000
# the old way (package 1.2) is still supported for backwards compatibility :
set m [fromstr 10000000000]
# but we do not need fromstr for integers anymore
set n -39
# t, m and n are integers

.CE
.sp
The \fInumber\fR's last digit is considered by the procedure to be true at +/-1,
For example, 1.00 is the interval [0.99, 1.01],
and 0.43 the interval [0.42, 0.44].
The Pi constant may be approximated by the number "3.1415".
This string could be considered as the interval [3.1414 , 3.1416] by \fBfromstr\fR.
So, when you mean 1.0 as a double, you may have to write 1.000000 to get enough precision.
To learn more about this subject, see \fBPRECISION\fR.
.sp
For example :
.CS


set x [fromstr 1.0000000000]
# the next line does the same, but smarter
set y [fromstr 1. 10]

.CE
.TP
\fBtostr\fR ?\fB-nosci\fR? \fInumber\fR
Returns a string form of a BigFloat, in which all digits are exacts.
\fIAll exact digits\fR means a rounding may occur, for example to zero,
if the uncertainty interval does not clearly show the true digits.
\fInumber\fR may be an integer, causing the command to return exactly the input argument.
With the \fB-nosci\fR option, the number returned is never shown in scientific
notation, i.e. not like '3.4523e+5' but like '345230.'.
.CS


puts [tostr [fromstr 0.99999]] ;# 1.0000
puts [tostr [fromstr 1.00001]] ;# 1.0000
puts [tostr [fromstr 0.002]] ;# 0.e-2

.CE
.IP
See \fBPRECISION\fR for that matter.
See also \fBiszero\fR for how to detect zeros, which is useful when performing a division.
.TP
\fBfromdouble\fR \fIdouble\fR ?\fIdecimals\fR?
Converts a double (a simple floating-point value) to a BigFloat, with
exactly \fIdecimals\fR digits.  Without the \fIdecimals\fR argument,
it behaves like \fBfromstr\fR.
Here, the only important feature you might care of is the ability
to create BigFloats with a fixed number of \fIdecimals\fR.
.CS


tostr [fromstr 1.111 4]
# returns : 1.111000 (3 zeros)
tostr [fromdouble 1.111 4]
# returns : 1.111

.CE
.TP
\fBtodouble\fR \fInumber\fR
Returns a double, that may be used in \fIexpr\fR,
from a BigFloat.
.TP
\fBisInt\fR \fInumber\fR
Returns 1 if \fInumber\fR is an integer, 0 otherwise.
.TP
\fBisFloat\fR \fInumber\fR
Returns 1 if \fInumber\fR is a BigFloat, 0 otherwise.
.TP
\fBint2float\fR \fIinteger\fR ?\fIdecimals\fR?
Converts an integer to a BigFloat with \fIdecimals\fR trailing zeros.
The default, and minimal, number of \fIdecimals\fR is 1.
When converting back to string, one decimal is lost:
.CS


set n 10
set x [int2float $n]; # like fromstr 10.0
puts [tostr $x]; # prints "10."
set x [int2float $n 3]; # like fromstr 10.000
puts [tostr $x]; # prints "10.00"

.CE
.PP
.SH ARITHMETICS
.TP
\fBadd\fR \fIx\fR \fIy\fR
.TP
\fBsub\fR \fIx\fR \fIy\fR







<
<










<












<
<



<










<
<



<












<
<




<

















<
<





<







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
is at least the number of digits provided by \fInumber\fR.
If the \fInumber\fR contains only digits and eventually a minus sign, it is considered as
an integer. Subsequently, no conversion is done at all.
.sp
\fItrailingZeros\fR - the number of zeros to append at the end of the floating-point number
to get more precision. It cannot be applied to an integer.
.CS


# x and y are BigFloats : the first string contained a dot, and the second an e sign
set x [fromstr -1.000000]
set y [fromstr 2000e30]
# let's see how we get integers
set t 20000000000000
# the old way (package 1.2) is still supported for backwards compatibility :
set m [fromstr 10000000000]
# but we do not need fromstr for integers anymore
set n -39
# t, m and n are integers

.CE
.sp
The \fInumber\fR's last digit is considered by the procedure to be true at +/-1,
For example, 1.00 is the interval [0.99, 1.01],
and 0.43 the interval [0.42, 0.44].
The Pi constant may be approximated by the number "3.1415".
This string could be considered as the interval [3.1414 , 3.1416] by \fBfromstr\fR.
So, when you mean 1.0 as a double, you may have to write 1.000000 to get enough precision.
To learn more about this subject, see \fBPRECISION\fR.
.sp
For example :
.CS


set x [fromstr 1.0000000000]
# the next line does the same, but smarter
set y [fromstr 1. 10]

.CE
.TP
\fBtostr\fR ?\fB-nosci\fR? \fInumber\fR
Returns a string form of a BigFloat, in which all digits are exacts.
\fIAll exact digits\fR means a rounding may occur, for example to zero,
if the uncertainty interval does not clearly show the true digits.
\fInumber\fR may be an integer, causing the command to return exactly the input argument.
With the \fB-nosci\fR option, the number returned is never shown in scientific
notation, i.e. not like '3.4523e+5' but like '345230.'.
.CS


puts [tostr [fromstr 0.99999]] ;# 1.0000
puts [tostr [fromstr 1.00001]] ;# 1.0000
puts [tostr [fromstr 0.002]] ;# 0.e-2

.CE
.IP
See \fBPRECISION\fR for that matter.
See also \fBiszero\fR for how to detect zeros, which is useful when performing a division.
.TP
\fBfromdouble\fR \fIdouble\fR ?\fIdecimals\fR?
Converts a double (a simple floating-point value) to a BigFloat, with
exactly \fIdecimals\fR digits.  Without the \fIdecimals\fR argument,
it behaves like \fBfromstr\fR.
Here, the only important feature you might care of is the ability
to create BigFloats with a fixed number of \fIdecimals\fR.
.CS


tostr [fromstr 1.111 4]
# returns : 1.111000 (3 zeros)
tostr [fromdouble 1.111 4]
# returns : 1.111

.CE
.TP
\fBtodouble\fR \fInumber\fR
Returns a double, that may be used in \fIexpr\fR,
from a BigFloat.
.TP
\fBisInt\fR \fInumber\fR
Returns 1 if \fInumber\fR is an integer, 0 otherwise.
.TP
\fBisFloat\fR \fInumber\fR
Returns 1 if \fInumber\fR is a BigFloat, 0 otherwise.
.TP
\fBint2float\fR \fIinteger\fR ?\fIdecimals\fR?
Converts an integer to a BigFloat with \fIdecimals\fR trailing zeros.
The default, and minimal, number of \fIdecimals\fR is 1.
When converting back to string, one decimal is lost:
.CS


set n 10
set x [int2float $n]; # like fromstr 10.0
puts [tostr $x]; # prints "10."
set x [int2float $n 3]; # like fromstr 10.000
puts [tostr $x]; # prints "10.00"

.CE
.PP
.SH ARITHMETICS
.TP
\fBadd\fR \fIx\fR \fIy\fR
.TP
\fBsub\fR \fIx\fR \fIy\fR
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
a BigFloat close enough to zero to raise "divide by zero".
.IP \(bu
the integer 0.
.RE
.IP
See here how numbers that are close to zero are converted to strings:
.CS


tostr [fromstr 0.001] ; # -> 0.e-2
tostr [fromstr 0.000000] ; # -> 0.e-5
tostr [fromstr -0.000001] ; # -> 0.e-5
tostr [fromstr 0.0] ; # -> 0.
tostr [fromstr 0.002] ; # -> 0.e-2

set a [fromstr 0.002] ; # uncertainty interval : 0.001, 0.003
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

.CE
.TP
\fBequal\fR \fIx\fR \fIy\fR
Returns 1 if \fIx\fR and \fIy\fR are equal, 0 elsewhere.
.TP
\fBcompare\fR \fIx\fR \fIy\fR
Returns 0 if both BigFloat arguments are equal,







<
<





<



<



<







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
a BigFloat close enough to zero to raise "divide by zero".
.IP \(bu
the integer 0.
.RE
.IP
See here how numbers that are close to zero are converted to strings:
.CS


tostr [fromstr 0.001] ; # -> 0.e-2
tostr [fromstr 0.000000] ; # -> 0.e-5
tostr [fromstr -0.000001] ; # -> 0.e-5
tostr [fromstr 0.0] ; # -> 0.
tostr [fromstr 0.002] ; # -> 0.e-2

set a [fromstr 0.002] ; # uncertainty interval : 0.001, 0.003
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

.CE
.TP
\fBequal\fR \fIx\fR \fIy\fR
Returns 1 if \fIx\fR and \fIy\fR are equal, 0 elsewhere.
.TP
\fBcompare\fR \fIx\fR \fIy\fR
Returns 0 if both BigFloat arguments are equal,
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
wider than expected, but this should not cause false digits.
.PP
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:
.CS


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)

.CE
The uncertainty of the sum, or the difference, of two numbers, is the sum
of their respective uncertainties.
.CS


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

.CE
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:
.CS


set a [fromstr 0.999999999]
# now something dangerous
set b [fromstr 2.000]
# the result has only 3 digits
tostr [add $a $b]

# how to keep precision at its maximum
puts [tostr [add $a 2]]

.CE
.PP
For multiplication and division, the relative uncertainties of the product
or the quotient, is the sum of the relative uncertainties of the operands.
Take care of division by zero : check each divider with \fBiszero\fR.
.CS


set num [fromstr 4.00]
set denom [fromstr 0.01]

puts [iszero $denom];# true
set quotient [div $num $denom];# error : divide by zero

# opposites of our operands
puts [compare $num [opp $num]]; # 1
puts [compare $denom [opp $denom]]; # 0 !!!
# No suprise ! 0 and its opposite are the same...

.CE
Effects of the precision of a number considered equal to zero
to the cos function:
.CS


puts [tostr [cos [fromstr 0. 10]]]; # -> 1.000000000
puts [tostr [cos [fromstr 0. 5]]]; # -> 1.0000
puts [tostr [cos [fromstr 0e-10]]]; # -> 1.000000000
puts [tostr [cos [fromstr 1e-10]]]; # -> 1.000000000

.CE
BigFloats with different internal representations may be converted
to the same string.
.PP
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,
.CS


tostr [exp [fromstr 100.0 10]]
# returns : 2.688117142e+43 which has only 10 digits of precision, although the entry
# has 14 digits of precision.

.CE
.SH "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 \fImath::bigfloat\fR 1.2. Indeed, an important function introduced in Tcl 8.5
is required - the ability to handle bignums, that we can do with \fBexpr\fR.
Before 8.5, this ability was provided by several packages,
including the pure-Tcl \fImath::bignum\fR package provided by \fItcllib\fR.
In this case, all you need to know, is that arguments to the commands explained here,
are expected to be in their internal representation.
So even with integers, you will need to call \fBfromstr\fR
and \fBtostr\fR in order to convert them between string and internal representations.
.CS


#
# with Tcl 8.5
# ============
set a [pi 20]
# round returns an integer and 'everything is a string' applies to integers
# whatever big they are
puts [round [mul $a 10000000000]]
#
# the same with Tcl 8.4
# =====================
set a [pi 20]
# bignums (arbitrary length integers) need a conversion hook
set b [fromstr 10000000000]
# round returns a bignum:
# before printing it, we need to convert it with 'tostr'
puts [tostr [round [mul $a $b]]]

.CE
.SH "NAMESPACES AND OTHER PACKAGES"
We have not yet discussed about namespaces
because we assumed that you had imported public commands into the global namespace,
like this:
.CS


namespace import ::math::bigfloat::*

.CE
If you matter much about avoiding names conflicts,
I considere it should be resolved by the following :
.CS


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]

.CE
.SH EXAMPLES
Guess what happens when you are doing some astronomy. Here is an example :
.CS


# convert acurrate angles with a millisecond-rated accuracy
proc degree-angle {degrees minutes seconds milliseconds} {
    set result 0
    set div 1
    foreach factor {1 1000 60 60} var [list $milliseconds $seconds $minutes $degrees] {
        # we convert each entry var into milliseconds
        set div [expr {$div*$factor}]
        incr result [expr {$var*$div}]
    }
    return [div [int2float $result] $div]
}
# load the package
package require math::bigfloat
namespace import ::math::bigfloat::*
# work with angles : a standard formula for navigation (taking bearings)
set angle1 [deg2rad [degree-angle 20 30 40   0]]
set angle2 [deg2rad [degree-angle 21  0 50 500]]
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 "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
.nf
Copyright (c) 2004-2008, by Stephane Arnold <stephanearnold at yahoo dot fr>

.fi







<
<





<




<
<





<





<
<





<


<






<
<


<


<




<




<
<




<










<
<



<












<
<
















<






<
<

<




<
<






<




<
<


|
|
|
|
|
|
|
|












<















<

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
wider than expected, but this should not cause false digits.
.PP
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:
.CS


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)

.CE
The uncertainty of the sum, or the difference, of two numbers, is the sum
of their respective uncertainties.
.CS


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

.CE
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:
.CS


set a [fromstr 0.999999999]
# now something dangerous
set b [fromstr 2.000]
# the result has only 3 digits
tostr [add $a $b]

# how to keep precision at its maximum
puts [tostr [add $a 2]]

.CE
.PP
For multiplication and division, the relative uncertainties of the product
or the quotient, is the sum of the relative uncertainties of the operands.
Take care of division by zero : check each divider with \fBiszero\fR.
.CS


set num [fromstr 4.00]
set denom [fromstr 0.01]

puts [iszero $denom];# true
set quotient [div $num $denom];# error : divide by zero

# opposites of our operands
puts [compare $num [opp $num]]; # 1
puts [compare $denom [opp $denom]]; # 0 !!!
# No suprise ! 0 and its opposite are the same...

.CE
Effects of the precision of a number considered equal to zero
to the cos function:
.CS


puts [tostr [cos [fromstr 0. 10]]]; # -> 1.000000000
puts [tostr [cos [fromstr 0. 5]]]; # -> 1.0000
puts [tostr [cos [fromstr 0e-10]]]; # -> 1.000000000
puts [tostr [cos [fromstr 1e-10]]]; # -> 1.000000000

.CE
BigFloats with different internal representations may be converted
to the same string.
.PP
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,
.CS


tostr [exp [fromstr 100.0 10]]
# returns : 2.688117142e+43 which has only 10 digits of precision, although the entry
# has 14 digits of precision.

.CE
.SH "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 \fImath::bigfloat\fR 1.2. Indeed, an important function introduced in Tcl 8.5
is required - the ability to handle bignums, that we can do with \fBexpr\fR.
Before 8.5, this ability was provided by several packages,
including the pure-Tcl \fImath::bignum\fR package provided by \fItcllib\fR.
In this case, all you need to know, is that arguments to the commands explained here,
are expected to be in their internal representation.
So even with integers, you will need to call \fBfromstr\fR
and \fBtostr\fR in order to convert them between string and internal representations.
.CS


#
# with Tcl 8.5
# ============
set a [pi 20]
# round returns an integer and 'everything is a string' applies to integers
# whatever big they are
puts [round [mul $a 10000000000]]
#
# the same with Tcl 8.4
# =====================
set a [pi 20]
# bignums (arbitrary length integers) need a conversion hook
set b [fromstr 10000000000]
# round returns a bignum:
# before printing it, we need to convert it with 'tostr'
puts [tostr [round [mul $a $b]]]

.CE
.SH "NAMESPACES AND OTHER PACKAGES"
We have not yet discussed about namespaces
because we assumed that you had imported public commands into the global namespace,
like this:
.CS


namespace import ::math::bigfloat::*

.CE
If you matter much about avoiding names conflicts,
I considere it should be resolved by the following :
.CS


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]

.CE
.SH EXAMPLES
Guess what happens when you are doing some astronomy. Here is an example :
.CS


# convert acurrate angles with a millisecond-rated accuracy
proc degree-angle {degrees minutes seconds milliseconds} {
set result 0
set div 1
foreach factor {1 1000 60 60} var [list $milliseconds $seconds $minutes $degrees] {
# we convert each entry var into milliseconds
set div [expr {$div*$factor}]
incr result [expr {$var*$div}]
}
return [div [int2float $result] $div]
}
# load the package
package require math::bigfloat
namespace import ::math::bigfloat::*
# work with angles : a standard formula for navigation (taking bearings)
set angle1 [deg2rad [degree-angle 20 30 40   0]]
set angle2 [deg2rad [degree-angle 21  0 50 500]]
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 "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
.nf
Copyright (c) 2004-2008, by Stephane Arnold <stephanearnold at yahoo dot fr>

.fi

Changes to embedded/man/files/modules/math/bignum.n.

219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







219
220
221
222
223
224
225

226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.SH 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.
.PP
.CS


    package require math::bignum

    # Multiplication of two bignums
    set a [::math::bignum::fromstr 88888881111111]
    set b [::math::bignum::fromstr 22222220000000]
    set c [::math::bignum::mul $a $b]
    puts [::math::bignum::tostr $c] ; # => will output 1975308271604953086420000000
    set c [::math::bignum::sqrt $c]
    puts [::math::bignum::tostr $c] ; # => will output 44444440277777

    # From/To string conversion in different radix
    set a [::math::bignum::fromstr 1100010101010111001001111010111 2]
    puts [::math::bignum::tostr $a 16] ; # => will output 62ab93d7

    # Factorial example
    proc fact n {
        # fromstr is not needed for 0 and 1
        set z 1
        for {set i 2} {$i <= $n} {incr i} {
            set z [::math::bignum::mul $z [::math::bignum::fromstr $i]]
        }
        return $z
    }

    puts [::math::bignum::tostr [fact 100]]

.CE
.SH API
.TP
\fB::math::bignum::fromstr\fR \fIstring\fR ?\fIradix\fR?
Convert \fIstring\fR into a bignum. If \fIradix\fR is omitted or zero,
the string is interpreted in hex if prefixed with
\fI0x\fR, in octal if prefixed with \fIox\fR,







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







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
.SH 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.
.PP
.CS


package require math::bignum

# Multiplication of two bignums
set a [::math::bignum::fromstr 88888881111111]
set b [::math::bignum::fromstr 22222220000000]
set c [::math::bignum::mul $a $b]
puts [::math::bignum::tostr $c] ; # => will output 1975308271604953086420000000
set c [::math::bignum::sqrt $c]
puts [::math::bignum::tostr $c] ; # => will output 44444440277777

# From/To string conversion in different radix
set a [::math::bignum::fromstr 1100010101010111001001111010111 2]
puts [::math::bignum::tostr $a 16] ; # => will output 62ab93d7

# Factorial example
proc fact n {
# fromstr is not needed for 0 and 1
set z 1
for {set i 2} {$i <= $n} {incr i} {
set z [::math::bignum::mul $z [::math::bignum::fromstr $i]]
}
return $z
}

puts [::math::bignum::tostr [fact 100]]

.CE
.SH API
.TP
\fB::math::bignum::fromstr\fR \fIstring\fR ?\fIradix\fR?
Convert \fIstring\fR into a bignum. If \fIradix\fR is omitted or zero,
the string is interpreted in hex if prefixed with
\fI0x\fR, in octal if prefixed with \fIox\fR,
532
533
534
535
536
537
538
539
540
bignums, math, multiprecision, tcl
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2004 Salvatore Sanfilippo <antirez at invece dot org>
Copyright (c) 2004 Arjen Markus <arjenmarkus at users dot sourceforge dot net>

.fi







<

524
525
526
527
528
529
530

531
bignums, math, multiprecision, tcl
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2004 Salvatore Sanfilippo <antirez at invece dot org>
Copyright (c) 2004 Arjen Markus <arjenmarkus at users dot sourceforge dot net>

.fi

Changes to embedded/man/files/modules/math/calculus.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.sp
.TP
\fB::math::calculus::boundaryValueSecondOrder\fR \fIcoeff_func\fR \fIforce_func\fR \fIleftbnd\fR \fIrightbnd\fR \fInostep\fR
Solve a second order linear differential equation with boundary
values at two sides. The equation has to be of the form (the
"conservative" form):
.CS


         d      dy     d
         -- A(x)--  +  -- B(x)y + C(x)y  =  D(x)
         dx     dx     dx

.CE
.IP
Ordinarily, such an equation would be written as:
.CS


             d2y        dy
         a(x)---  + b(x)-- + c(x) y  =  D(x)
             dx2        dx

.CE
.IP
The first form is easier to discretise (by integrating over a
finite volume) than the second form. The relation between the two
forms is fairly straightforward:
.CS


         A(x)  =  a(x)
         B(x)  =  b(x) - a'(x)
         C(x)  =  c(x) - B'(x)  =  c(x) - b'(x) + a''(x)

.CE
.IP
Because of the differentiation, however, it is much easier to ask
the user to provide the functions A, B and C directly.
.RS
.TP
\fIcoeff_func\fR







<
<
|
|
|
<




<
<
|
|
|
<






<
<
|
|
|
<







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
.sp
.TP
\fB::math::calculus::boundaryValueSecondOrder\fR \fIcoeff_func\fR \fIforce_func\fR \fIleftbnd\fR \fIrightbnd\fR \fInostep\fR
Solve a second order linear differential equation with boundary
values at two sides. The equation has to be of the form (the
"conservative" form):
.CS


d      dy     d
-- A(x)--  +  -- B(x)y + C(x)y  =  D(x)
dx     dx     dx

.CE
.IP
Ordinarily, such an equation would be written as:
.CS


d2y        dy
a(x)---  + b(x)-- + c(x) y  =  D(x)
dx2        dx

.CE
.IP
The first form is easier to discretise (by integrating over a
finite volume) than the second form. The relation between the two
forms is fairly straightforward:
.CS


A(x)  =  a(x)
B(x)  =  b(x) - a'(x)
C(x)  =  c(x) - B'(x)  =  c(x) - b'(x) + a''(x)

.CE
.IP
Because of the differentiation, however, it is much easier to ask
the user to provide the functions A, B and C directly.
.RS
.TP
\fIcoeff_func\fR
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
List of values on the righthand-side
.RE
.sp
.TP
\fB::math::calculus::newtonRaphson\fR \fIfunc\fR \fIderiv\fR \fIinitval\fR
Determine the root of an equation given by
.CS


    func(x) = 0

.CE
.IP
using the method of Newton-Raphson. The procedure takes the following
arguments:
.RS
.TP
\fIfunc\fR







<
<
|
<







488
489
490
491
492
493
494


495

496
497
498
499
500
501
502
List of values on the righthand-side
.RE
.sp
.TP
\fB::math::calculus::newtonRaphson\fR \fIfunc\fR \fIderiv\fR \fIinitval\fR
Determine the root of an equation given by
.CS


func(x) = 0

.CE
.IP
using the method of Newton-Raphson. The procedure takes the following
arguments:
.RS
.TP
\fIfunc\fR
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
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
Several of the above procedures take the \fInames\fR of procedures as
arguments. To avoid problems with the \fIvisibility\fR of these
procedures, the fully-qualified name of these procedures is determined
inside the calculus routines. For the user this has only one
consequence: the named procedure must be visible in the calling
procedure. For instance:
.CS


    namespace eval ::mySpace {
       namespace export calcfunc
       proc calcfunc { x } { return $x }
    }
    #
    # Use a fully-qualified name
    #
    namespace eval ::myCalc {
       proc detIntegral { begin end } {
          return [integral $begin $end 100 ::mySpace::calcfunc]
       }
    }
    #
    # Import the name
    #
    namespace eval ::myCalc {
       namespace import ::mySpace::calcfunc
       proc detIntegral { begin end } {
          return [integral $begin $end 100 calcfunc]
       }
    }

.CE
.PP
Enhancements for the second-order boundary value problem:
.IP \(bu
Other types of boundary conditions (zero gradient, zero flux)
.IP \(bu
Other schematisation of the first-order term (now central
differences are used, but upstream differences might be useful too).
.PP
.SH EXAMPLES
Let us take a few simple examples:
.PP
Integrate x over the interval [0,100] (20 steps):
.CS


proc linear_func { x } { return $x }
puts "Integral: [::math::calculus::integral 0 100 20 linear_func]"

.CE
For simple functions, the alternative could be:
.CS


puts "Integral: [::math::calculus::integralExpr 0 100 20 {$x}]"

.CE
Do not forget the braces!
.PP
The differential equation for a dampened oscillator:
.PP
.CS


x'' + rx' + wx = 0

.CE
.PP
can be split into a system of first-order equations:
.PP
.CS


x' = y
y' = -ry - wx

.CE
.PP
Then this system can be solved with code like this:
.PP
.CS


proc dampened_oscillator { t xvec } {
   set x  [lindex $xvec 0]
   set x1 [lindex $xvec 1]
   return [list $x1 [expr {-$x1-$x}]]
}

set xvec   { 1.0 0.0 }
set t      0.0
set tstep  0.1
for { set i 0 } { $i < 20 } { incr i } {
   set result [::math::calculus::eulerStep $t $tstep $xvec dampened_oscillator]
   puts "Result ($t): $result"
   set t      [expr {$t+$tstep}]
   set xvec   $result
}

.CE
.PP
Suppose we have the boundary value problem:
.PP
.CS


    Dy'' + ky = 0
    x = 0: y = 1
    x = L: y = 0

.CE
.PP
This boundary value problem could originate from the diffusion of a
decaying substance.
.PP
It can be solved with the following fragment:
.PP
.CS


   proc coeffs { x } { return [list $::Diff 0.0 $::decay] }
   proc force  { x } { return 0.0 }

   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]

.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
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2002,2003,2004 Arjen Markus

.fi







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














<
<


<



<
<

<






<
<

<





<
<


<





<
<

|
|
|

<




|
|
|
|

<





<
<
|
|
|
<








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

















<

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
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
Several of the above procedures take the \fInames\fR of procedures as
arguments. To avoid problems with the \fIvisibility\fR of these
procedures, the fully-qualified name of these procedures is determined
inside the calculus routines. For the user this has only one
consequence: the named procedure must be visible in the calling
procedure. For instance:
.CS


namespace eval ::mySpace {
namespace export calcfunc
proc calcfunc { x } { return $x }
}
#
# Use a fully-qualified name
#
namespace eval ::myCalc {
proc detIntegral { begin end } {
return [integral $begin $end 100 ::mySpace::calcfunc]
}
}
#
# Import the name
#
namespace eval ::myCalc {
namespace import ::mySpace::calcfunc
proc detIntegral { begin end } {
return [integral $begin $end 100 calcfunc]
}
}

.CE
.PP
Enhancements for the second-order boundary value problem:
.IP \(bu
Other types of boundary conditions (zero gradient, zero flux)
.IP \(bu
Other schematisation of the first-order term (now central
differences are used, but upstream differences might be useful too).
.PP
.SH EXAMPLES
Let us take a few simple examples:
.PP
Integrate x over the interval [0,100] (20 steps):
.CS


proc linear_func { x } { return $x }
puts "Integral: [::math::calculus::integral 0 100 20 linear_func]"

.CE
For simple functions, the alternative could be:
.CS


puts "Integral: [::math::calculus::integralExpr 0 100 20 {$x}]"

.CE
Do not forget the braces!
.PP
The differential equation for a dampened oscillator:
.PP
.CS


x'' + rx' + wx = 0

.CE
.PP
can be split into a system of first-order equations:
.PP
.CS


x' = y
y' = -ry - wx

.CE
.PP
Then this system can be solved with code like this:
.PP
.CS


proc dampened_oscillator { t xvec } {
set x  [lindex $xvec 0]
set x1 [lindex $xvec 1]
return [list $x1 [expr {-$x1-$x}]]
}

set xvec   { 1.0 0.0 }
set t      0.0
set tstep  0.1
for { set i 0 } { $i < 20 } { incr i } {
set result [::math::calculus::eulerStep $t $tstep $xvec dampened_oscillator]
puts "Result ($t): $result"
set t      [expr {$t+$tstep}]
set xvec   $result
}

.CE
.PP
Suppose we have the boundary value problem:
.PP
.CS


Dy'' + ky = 0
x = 0: y = 1
x = L: y = 0

.CE
.PP
This boundary value problem could originate from the diffusion of a
decaying substance.
.PP
It can be solved with the following fragment:
.PP
.CS


proc coeffs { x } { return [list $::Diff 0.0 $::decay] }
proc force  { x } { return 0.0 }

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]

.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
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2002,2003,2004 Arjen Markus

.fi

Changes to embedded/man/files/modules/math/combinatorics.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
\fB::math::ln_Gamma\fR \fIz\fR
Returns the natural logarithm of the Gamma function for the argument
\fIz\fR.
.sp
The Gamma function is defined as the improper integral from zero to
positive infinity of
.CS


  t**(x-1)*exp(-t) dt

.CE
.sp
The approximation used in the Tcl Math Library is from Lanczos,
\fIISIAM J. Numerical Analysis, series B,\fR volume 1, p. 86.
For "\fBx\fR > 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
.CS


  exp( ln_Gamma( x) )

.CE
.IP
is computed is expected to be precise to better than nine significant
figures.
.TP
\fB::math::factorial\fR \fIx\fR
Returns the factorial of the argument \fIx\fR.







<
<
|
<







<
<
|
<







263
264
265
266
267
268
269


270

271
272
273
274
275
276
277


278

279
280
281
282
283
284
285
\fB::math::ln_Gamma\fR \fIz\fR
Returns the natural logarithm of the Gamma function for the argument
\fIz\fR.
.sp
The Gamma function is defined as the improper integral from zero to
positive infinity of
.CS


t**(x-1)*exp(-t) dt

.CE
.sp
The approximation used in the Tcl Math Library is from Lanczos,
\fIISIAM J. Numerical Analysis, series B,\fR volume 1, p. 86.
For "\fBx\fR > 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
.CS


exp( ln_Gamma( x) )

.CE
.IP
is computed is expected to be precise to better than nine significant
figures.
.TP
\fB::math::factorial\fR \fIx\fR
Returns the factorial of the argument \fIx\fR.
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
.sp
It is an error to present \fIx\fR <= -1 or \fIx\fR > 170, or a value
of \fIx\fR that is not numeric.
.TP
\fB::math::choose\fR \fIn k\fR
Returns the binomial coefficient \fIC(n, k)\fR
.CS


   C(n,k) = n! / k! (n-k)!

.CE
.IP
If both parameters are integers and the result fits in 32 bits, the
result is rounded to an integer.
.sp
Integer results are exact up to at least \fIn\fR = 34.  Floating point
results are precise to better than nine significant figures.
.TP
\fB::math::Beta\fR \fIz w\fR
Returns the Beta function of the parameters \fIz\fR and \fIw\fR.
.CS


   Beta(z,w) = Beta(w,z) = Gamma(z) * Gamma(w) / Gamma(z+w)

.CE
.IP
Results are returned as a floating point number precise to better than
nine significant digits provided that \fIw\fR and \fIz\fR are both at
least 1.
.PP
.SH "BUGS, IDEAS, FEEDBACK"







<
<
|
<











<
<
|
<







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
.sp
It is an error to present \fIx\fR <= -1 or \fIx\fR > 170, or a value
of \fIx\fR that is not numeric.
.TP
\fB::math::choose\fR \fIn k\fR
Returns the binomial coefficient \fIC(n, k)\fR
.CS


C(n,k) = n! / k! (n-k)!

.CE
.IP
If both parameters are integers and the result fits in 32 bits, the
result is rounded to an integer.
.sp
Integer results are exact up to at least \fIn\fR = 34.  Floating point
results are precise to better than nine significant figures.
.TP
\fB::math::Beta\fR \fIz w\fR
Returns the Beta function of the parameters \fIz\fR and \fIw\fR.
.CS


Beta(z,w) = Beta(w,z) = Gamma(z) * Gamma(w) / Gamma(z+w)

.CE
.IP
Results are returned as a floating point number precise to better than
nine significant digits provided that \fIw\fR and \fIz\fR are both at
least 1.
.PP
.SH "BUGS, IDEAS, FEEDBACK"

Changes to embedded/man/files/modules/math/constants.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.PP
.PP
The motivation for this package is that quite often, with
(mathematical) computations, you need a good approximation to, say,
the ratio of degrees to radians. You can, of course, define this
like:
.CS


    variable radtodeg [expr {180.0/(4.0*atan(1.0))}]

.CE
and use the variable radtodeg whenever you need the conversion.
.PP
This has two drawbacks:
.IP \(bu
You need to remember the proper formula or value and that is
error-prone.
.IP \(bu
Especially with the use of mathematical functions like \fIatan\fR
you assume that they have been accurately implemented. This is seldom or
never the case and for each platform you can get subtle differences.
.PP
Here is the way you can do it with the \fImath::constants\fR package:
.CS


    package require math::constants
    ::math::constants::constants radtodeg degtorad

.CE
which creates two variables, radtodeg and (its reciprocal) degtorad
in the calling namespace.
.PP
Constants that have been defined (their values are mostly taken
from mathematical tables with more precision than usually can be
handled) include:
.IP \(bu
basic constants like pi, e, gamma (Euler's constant)
.IP \(bu
derived values like ln(10) and sqrt(2)
.IP \(bu
purely numerical values such as 1/3 that are included for convenience
and for the fact that certain seemingly trivial computations like:
.CS


    set value [expr {3.0*$onethird}]

.CE
.IP
give \fIexactly\fR the value you expect (if IEEE arithmetic is
available).
.PP
.SH PROCEDURES
The package defines the following public procedures:







<
<
|
<














<
<
|
|
<















<
<
|
<







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
.PP
.PP
The motivation for this package is that quite often, with
(mathematical) computations, you need a good approximation to, say,
the ratio of degrees to radians. You can, of course, define this
like:
.CS


variable radtodeg [expr {180.0/(4.0*atan(1.0))}]

.CE
and use the variable radtodeg whenever you need the conversion.
.PP
This has two drawbacks:
.IP \(bu
You need to remember the proper formula or value and that is
error-prone.
.IP \(bu
Especially with the use of mathematical functions like \fIatan\fR
you assume that they have been accurately implemented. This is seldom or
never the case and for each platform you can get subtle differences.
.PP
Here is the way you can do it with the \fImath::constants\fR package:
.CS


package require math::constants
::math::constants::constants radtodeg degtorad

.CE
which creates two variables, radtodeg and (its reciprocal) degtorad
in the calling namespace.
.PP
Constants that have been defined (their values are mostly taken
from mathematical tables with more precision than usually can be
handled) include:
.IP \(bu
basic constants like pi, e, gamma (Euler's constant)
.IP \(bu
derived values like ln(10) and sqrt(2)
.IP \(bu
purely numerical values such as 1/3 that are included for convenience
and for the fact that certain seemingly trivial computations like:
.CS


set value [expr {3.0*$onethird}]

.CE
.IP
give \fIexactly\fR the value you expect (if IEEE arithmetic is
available).
.PP
.SH PROCEDURES
The package defines the following public procedures:
340
341
342
343
344
345
346
347
348
.SH KEYWORDS
constants, degrees, e, math, pi, radians
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2004 Arjen Markus <[email protected]>

.fi







<

330
331
332
333
334
335
336

337
.SH KEYWORDS
constants, degrees, e, math, pi, radians
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2004 Arjen Markus <[email protected]>

.fi

Changes to embedded/man/files/modules/math/decimal.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
This section shows some simple examples. Since the purpose of this library
is to perform decimal math operations, examples may be the simplest way
to learn how to work with it and to see the difference between using this
package and sticking with expr. Consult the API section of
this man page for information about individual procedures.
.PP
.CS


    package require decimal

    # Various operations on two numbers.
    # We first convert them to decimal format.
    set a [::math::decimal::fromstr 8.2]
    set b [::math::decimal::fromstr .2]

    # Then we perform our operations. Here we multiply
    set c [::math::decimal::* $a $b]

    # Finally we convert back to string format for presentation to the user.
    puts [::math::decimal::tostr $c] ; # => will output 8.4

    # Other examples
    #
    # Subtraction
    set c [::math::decimal::- $a $b]
    puts [::math::decimal::tostr $c] ; # => will output 8.0

    # Why bother using this instead of simply expr?
    puts 8.399999999999999 ; # => will output 8.399999999999999
    puts 7.999999999999999 ; # => will output 7.999999999999999
    # See http://speleotrove.com/decimal to learn more about why this happens.

.CE
.SH API
.TP
\fB::math::decimal::fromstr\fR \fIstring\fR
Convert \fIstring\fR into a decimal.
.TP
\fB::math::decimal::tostr\fR \fIdecimal\fR







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







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
This section shows some simple examples. Since the purpose of this library
is to perform decimal math operations, examples may be the simplest way
to learn how to work with it and to see the difference between using this
package and sticking with expr. Consult the API section of
this man page for information about individual procedures.
.PP
.CS


package require decimal

# Various operations on two numbers.
# We first convert them to decimal format.
set a [::math::decimal::fromstr 8.2]
set b [::math::decimal::fromstr .2]

# Then we perform our operations. Here we multiply
set c [::math::decimal::* $a $b]

# Finally we convert back to string format for presentation to the user.
puts [::math::decimal::tostr $c] ; # => will output 8.4

# Other examples
#
# Subtraction
set c [::math::decimal::- $a $b]
puts [::math::decimal::tostr $c] ; # => will output 8.0

# Why bother using this instead of simply expr?
puts 8.399999999999999 ; # => will output 8.399999999999999
puts 7.999999999999999 ; # => will output 7.999999999999999
# See http://speleotrove.com/decimal to learn more about why this happens.

.CE
.SH API
.TP
\fB::math::decimal::fromstr\fR \fIstring\fR
Convert \fIstring\fR into a decimal.
.TP
\fB::math::decimal::tostr\fR \fIdecimal\fR
517
518
519
520
521
522
523
524
525
.SH KEYWORDS
decimal, math, tcl
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2011 Mark Alston <mark at beernut dot com>

.fi







<

508
509
510
511
512
513
514

515
.SH KEYWORDS
decimal, math, tcl
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2011 Mark Alston <mark at beernut dot com>

.fi

Changes to embedded/man/files/modules/math/fourier.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
If the input length N is a power of two then these procedures will
utilize the O(N log N) Fast Fourier Transform algorithm. If input
length is not a power of two then the DFT will instead be computed
using a the naive quadratic algorithm.
.PP
Some examples:
.CS


    % dft {1 2 3 4}
    {10 0.0} {-2.0 2.0} {-2 0.0} {-2.0 -2.0}
    % inverse_dft {{10 0.0} {-2.0 2.0} {-2 0.0} {-2.0 -2.0}}
    {1.0 0.0} {2.0 0.0} {3.0 0.0} {4.0 0.0}
    % dft {1 2 3 4 5}
    {15.0 0.0} {-2.5 3.44095480118} {-2.5 0.812299240582} {-2.5 -0.812299240582} {-2.5 -3.44095480118}
    % inverse_dft {{15.0 0.0} {-2.5 3.44095480118} {-2.5 0.812299240582} {-2.5 -0.812299240582} {-2.5 -3.44095480118}}
    {1.0 0.0} {2.0 8.881784197e-17} {3.0 4.4408920985e-17} {4.0 4.4408920985e-17} {5.0 -8.881784197e-17}

.CE
.PP
In the last case, the imaginary parts <1e-16 would have been zero in exact
arithmetic, but aren't here due to rounding errors.
.PP
Internally, the procedures use a flat list format where every even
index element of a list is a real part and every odd index element







<
<
|
|
|
|
|
|
|
|
<







288
289
290
291
292
293
294


295
296
297
298
299
300
301
302

303
304
305
306
307
308
309
If the input length N is a power of two then these procedures will
utilize the O(N log N) Fast Fourier Transform algorithm. If input
length is not a power of two then the DFT will instead be computed
using a the naive quadratic algorithm.
.PP
Some examples:
.CS


% dft {1 2 3 4}
{10 0.0} {-2.0 2.0} {-2 0.0} {-2.0 -2.0}
% inverse_dft {{10 0.0} {-2.0 2.0} {-2 0.0} {-2.0 -2.0}}
{1.0 0.0} {2.0 0.0} {3.0 0.0} {4.0 0.0}
% dft {1 2 3 4 5}
{15.0 0.0} {-2.5 3.44095480118} {-2.5 0.812299240582} {-2.5 -0.812299240582} {-2.5 -3.44095480118}
% inverse_dft {{15.0 0.0} {-2.5 3.44095480118} {-2.5 0.812299240582} {-2.5 -0.812299240582} {-2.5 -3.44095480118}}
{1.0 0.0} {2.0 8.881784197e-17} {3.0 4.4408920985e-17} {4.0 4.4408920985e-17} {5.0 -8.881784197e-17}

.CE
.PP
In the last case, the imaginary parts <1e-16 would have been zero in exact
arithmetic, but aren't here due to rounding errors.
.PP
Internally, the procedures use a flat list format where every even
index element of a list is a real part and every odd index element

Changes to embedded/man/files/modules/math/fuzzy.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.TP
\fB::math::fuzzy::troundn\fR \fIvalue\fR \fIndigits\fR
Rounds the floating-point number off to the
specified number of decimals (Pro memorie).
.PP
Usage:
.CS


if { [teq $x $y] } { puts "x == y" }
if { [tne $x $y] } { puts "x != y" }
if { [tge $x $y] } { puts "x >= y" }
if { [tgt $x $y] } { puts "x > y" }
if { [tlt $x $y] } { puts "x < y" }
if { [tle $x $y] } { puts "x <= y" }

set fx      [tfloor $x]
set fc      [tceil  $x]
set rounded [tround $x]
set roundn  [troundn $x $nodigits]

.CE
.SH "TEST CASES"
The problems that can occur with floating-point numbers are illustrated
by the test cases in the file "fuzzy.test":
.IP \(bu
Several test case use the ordinary comparisons, and they
fail invariably to produce understandable results







<
<






<




<







326
327
328
329
330
331
332


333
334
335
336
337
338

339
340
341
342

343
344
345
346
347
348
349
.TP
\fB::math::fuzzy::troundn\fR \fIvalue\fR \fIndigits\fR
Rounds the floating-point number off to the
specified number of decimals (Pro memorie).
.PP
Usage:
.CS


if { [teq $x $y] } { puts "x == y" }
if { [tne $x $y] } { puts "x != y" }
if { [tge $x $y] } { puts "x >= y" }
if { [tgt $x $y] } { puts "x > y" }
if { [tlt $x $y] } { puts "x < y" }
if { [tle $x $y] } { puts "x <= y" }

set fx      [tfloor $x]
set fc      [tceil  $x]
set rounded [tround $x]
set roundn  [troundn $x $nodigits]

.CE
.SH "TEST CASES"
The problems that can occur with floating-point numbers are illustrated
by the test cases in the file "fuzzy.test":
.IP \(bu
Several test case use the ordinary comparisons, and they
fail invariably to produce understandable results

Changes to embedded/man/files/modules/math/interpolate.n.

219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







219
220
221
222
223
224
225

226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
.TP
\fB::math::interpolate::interp-spatial\fR \fIxyvalues\fR \fIcoord\fR
Use a straightforward interpolation method with weights as function of the
inverse distance to interpolate in 2D and N-dimensional space
.sp
The list xyvalues is a list of lists:
.CS


    {   {x1 y1 z1 {v11 v12 v13 v14}}
	{x2 y2 z2 {v21 v22 v23 v24}}
	...
    }

.CE
.IP
The last element of each inner list is either a single number or a list in itself.
In the latter case the return value is a list with the same number of elements.
.sp
The method is influenced by the search radius and the power of the inverse distance
.RS







<
<
|
|
|
|
<







408
409
410
411
412
413
414


415
416
417
418

419
420
421
422
423
424
425
.TP
\fB::math::interpolate::interp-spatial\fR \fIxyvalues\fR \fIcoord\fR
Use a straightforward interpolation method with weights as function of the
inverse distance to interpolate in 2D and N-dimensional space
.sp
The list xyvalues is a list of lists:
.CS


{   {x1 y1 z1 {v11 v12 v13 v14}}
{x2 y2 z2 {v21 v22 v23 v24}}
\...
}

.CE
.IP
The last element of each inner list is either a single number or a list in itself.
In the latter case the return value is a list with the same number of elements.
.sp
The method is influenced by the search radius and the power of the inverse distance
.RS
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
.PP
.SH EXAMPLES
\fITODO\fR
Example of using the cubic splines:
.PP
Suppose the following values are given:
.CS


    x       y
  0.1     1.0
  0.3     2.1
  0.4     2.2
  0.8     4.11
  1.0     4.12

.CE
Then to estimate the values at 0.1, 0.2, 0.3, ... 1.0, you can use:
.CS


   set coeffs [::math::interpolate::prepare-cubic-splines  {0.1 0.3 0.4 0.8  1.0}  {1.0 2.1 2.2 4.11 4.12}]
   foreach x {0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0} {
      puts "$x: [::math::interpolate::interp-cubic-splines $coeffs $x]"
   }

.CE
to get the following output:
.CS


0.1: 1.0
0.2: 1.68044117647
0.3: 2.1
0.4: 2.2
0.5: 3.11221507353
0.6: 4.25242647059
0.7: 5.41804227941
0.8: 4.11
0.9: 3.95675857843
1.0: 4.12

.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
.nf
Copyright (c) 2004 Arjen Markus <[email protected]>
Copyright (c) 2004 Kevn B. Kenny <[email protected]>

.fi







<
<
|
|
|
|
|
|
<



<
<
|
|
|
|
<



<
<










<

















<

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
.PP
.SH EXAMPLES
\fITODO\fR
Example of using the cubic splines:
.PP
Suppose the following values are given:
.CS


x       y
0.1     1.0
0.3     2.1
0.4     2.2
0.8     4.11
1.0     4.12

.CE
Then to estimate the values at 0.1, 0.2, 0.3, ... 1.0, you can use:
.CS


set coeffs [::math::interpolate::prepare-cubic-splines  {0.1 0.3 0.4 0.8  1.0}  {1.0 2.1 2.2 4.11 4.12}]
foreach x {0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0} {
puts "$x: [::math::interpolate::interp-cubic-splines $coeffs $x]"
}

.CE
to get the following output:
.CS


0.1: 1.0
0.2: 1.68044117647
0.3: 2.1
0.4: 2.2
0.5: 3.11221507353
0.6: 4.25242647059
0.7: 5.41804227941
0.8: 4.11
0.9: 3.95675857843
1.0: 4.12

.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
.nf
Copyright (c) 2004 Arjen Markus <[email protected]>
Copyright (c) 2004 Kevn B. Kenny <[email protected]>

.fi

Changes to embedded/man/files/modules/math/linalg.n.

220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







220
221
222
223
224
225
226

227
228
229
230
231
232
233
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
.TP
\fB::math::linearalgebra::dgetrf\fR \fImatrix\fR
Computes an LU factorization of a general matrix, using partial,
pivoting with row interchanges. Returns the permutation vector.
.sp
The factorization has the form
.CS


   P * A = L * U

.CE
.IP
where P is a permutation matrix, L is lower triangular with unit
diagonal elements, and U is upper triangular.
Returns the permutation vector, as a list of length n-1.
The last entry of the permutation is not stored, since it is
implicitely known, with value n (the last row is not swapped







<
<
|
<







1262
1263
1264
1265
1266
1267
1268


1269

1270
1271
1272
1273
1274
1275
1276
.TP
\fB::math::linearalgebra::dgetrf\fR \fImatrix\fR
Computes an LU factorization of a general matrix, using partial,
pivoting with row interchanges. Returns the permutation vector.
.sp
The factorization has the form
.CS


P * A = L * U

.CE
.IP
where P is a permutation matrix, L is lower triangular with unit
diagonal elements, and U is upper triangular.
Returns the permutation vector, as a list of length n-1.
The last entry of the permutation is not stored, since it is
implicitely known, with value n (the last row is not swapped
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
.IP \(bu
Element i,j (i = -m,...,m; j =1,...,n) of "B" corresponds to element
k,j of "A" where k = M+i-1 and M is at least (!) n, the number of rows
in "B".
.IP \(bu
To set element (i,j) of matrix "B" use:
.CS


    setelem B $j [expr {$N+$i-1}] $value

.CE
.PP
(There is no convenience procedure for this yet)
.SH "REMARKS ON THE IMPLEMENTATION"
There is a difference between the original LA package by Hume and the
current implementation. Whereas the LA package uses a linear list, the
current package uses lists of lists to represent matrices. It turns out







<
<
|
<







1364
1365
1366
1367
1368
1369
1370


1371

1372
1373
1374
1375
1376
1377
1378
.IP \(bu
Element i,j (i = -m,...,m; j =1,...,n) of "B" corresponds to element
k,j of "A" where k = M+i-1 and M is at least (!) n, the number of rows
in "B".
.IP \(bu
To set element (i,j) of matrix "B" use:
.CS


setelem B $j [expr {$N+$i-1}] $value

.CE
.PP
(There is no convenience procedure for this yet)
.SH "REMARKS ON THE IMPLEMENTATION"
There is a difference between the original LA package by Hume and the
current implementation. Whereas the LA package uses a linear list, the
current package uses lists of lists to represent matrices. It turns out
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
1453
1454
.IP \(bu
certainlyPositive, diagonallyDominant
.PP
.SH "NAMING CONFLICT"
If you load this package in a Tk-enabled shell like wish, then the
command
.CS

namespace import ::math::linearalgebra
.CE
results in an error
message about "scale". This is due to the fact that Tk defines all
its commands in the global namespace. The solution is to import
the linear algebra commands in a namespace that is not the global one:
.CS


package require math::linearalgebra
namespace eval compute {
    namespace import ::math::linearalgebra::*
    ... use the linear algebra version of scale ...
}

.CE
To use Tk's scale command in that same namespace you can rename it:
.CS


namespace eval compute {
    rename ::scale scaleTk
    scaleTk .scale ...
}

.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
.nf
Copyright (c) 2004-2008 Arjen Markus <[email protected]>
Copyright (c) 2004 Ed Hume <http://www.hume.com/contact.us.htm>
Copyright (c) 2008 Michael Buadin <[email protected]>

.fi







<







<
<


|
|

<



<
<

|
|

<

















<

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
.IP \(bu
certainlyPositive, diagonallyDominant
.PP
.SH "NAMING CONFLICT"
If you load this package in a Tk-enabled shell like wish, then the
command
.CS

namespace import ::math::linearalgebra
.CE
results in an error
message about "scale". This is due to the fact that Tk defines all
its commands in the global namespace. The solution is to import
the linear algebra commands in a namespace that is not the global one:
.CS


package require math::linearalgebra
namespace eval compute {
namespace import ::math::linearalgebra::*
\... use the linear algebra version of scale ...
}

.CE
To use Tk's scale command in that same namespace you can rename it:
.CS


namespace eval compute {
rename ::scale scaleTk
scaleTk .scale ...
}

.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
.nf
Copyright (c) 2004-2008 Arjen Markus <[email protected]>
Copyright (c) 2004 Ed Hume <http://www.hume.com/contact.us.htm>
Copyright (c) 2008 Michael Buadin <[email protected]>

.fi

Changes to embedded/man/files/modules/math/machineparameters.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.BE
.SH DESCRIPTION
The \fImath::machineparameters\fR package
is the Tcl equivalent of the DLAMCH LAPACK function.
In floating point systems, a floating point number is represented
by
.CS


x = +/- d1 d2 ... dt basis^e

.CE
where digits satisfy
.CS


0 <= di <= basis - 1, i = 1, t

.CE
with the convention :
.IP \(bu
t is the size of the mantissa
.IP \(bu
basis is the basis (the "radix")
.PP
.PP
The \fBcompute\fR method computes all machine parameters.
Then, the \fBget\fR method can be used to get each
parameter.
The \fBprint\fR method prints a report on standard output.
.SH EXAMPLE
In the following example, one compute the parameters of a desktop
under Linux with the following Tcl 8.4.19 properties :
.CS


% parray tcl_platform
tcl_platform(byteOrder) = littleEndian
tcl_platform(machine)   = i686
tcl_platform(os)        = Linux
tcl_platform(osVersion) = 2.6.24-19-generic
tcl_platform(platform)  = unix
tcl_platform(tip,268)   = 1
tcl_platform(tip,280)   = 1
tcl_platform(user)      = <username>
tcl_platform(wordSize)  = 4

.CE
The following example creates a machineparameters object,
computes the properties and displays it.
.CS


     set pp [machineparameters create %AUTO%]
     $pp compute
     $pp print
     $pp destroy

.CE
This prints out :
.CS


     Machine parameters
     Epsilon : 1.11022302463e-16
     Beta : 2
     Rounding : proper
     Mantissa : 53
     Maximum exponent : 1024
     Minimum exponent : -1021
     Overflow threshold : 8.98846567431e+307
     Underflow threshold : 2.22507385851e-308

.CE
That compares well with the results produced by Lapack 3.1.1 :
.CS


     Epsilon                      =   1.11022302462515654E-016
     Safe minimum                 =   2.22507385850720138E-308
     Base                         =    2.0000000000000000
     Precision                    =   2.22044604925031308E-016
     Number of digits in mantissa =    53.000000000000000
     Rounding mode                =   1.00000000000000000
     Minimum exponent             =   -1021.0000000000000
     Underflow threshold          =   2.22507385850720138E-308
     Largest exponent             =    1024.0000000000000
     Overflow threshold           =   1.79769313486231571E+308
     Reciprocal of safe minimum   =   4.49423283715578977E+307

.CE
The following example creates a machineparameters object,
computes the properties and gets the epsilon for
the machine.
.CS


     set pp [machineparameters create %AUTO%]
     $pp compute
     set eps [$pp get -epsilon]
     $pp destroy

.CE
.SH REFERENCES
.IP \(bu
"Algorithms to Reveal Properties of Floating-Point Arithmetic", Michael A. Malcolm, Stanford University, Communications of the ACM, Volume 15 ,  Issue 11  (November 1972), Pages: 949 - 951
.IP \(bu
"More on Algorithms that Reveal Properties of Floating, Point Arithmetic Units", W. Morven Gentleman, University of Waterloo, Scott B. Marovich, Purdue University, Communications of the ACM, Volume 17 ,  Issue 5  (May 1974), Pages: 276 - 277
.PP







<
<

<



<
<

<
















<
<










<




<
<
|
|
|
|
<



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



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





<
<
|
|
|
|
<







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
.BE
.SH DESCRIPTION
The \fImath::machineparameters\fR package
is the Tcl equivalent of the DLAMCH LAPACK function.
In floating point systems, a floating point number is represented
by
.CS


x = +/- d1 d2 ... dt basis^e

.CE
where digits satisfy
.CS


0 <= di <= basis - 1, i = 1, t

.CE
with the convention :
.IP \(bu
t is the size of the mantissa
.IP \(bu
basis is the basis (the "radix")
.PP
.PP
The \fBcompute\fR method computes all machine parameters.
Then, the \fBget\fR method can be used to get each
parameter.
The \fBprint\fR method prints a report on standard output.
.SH EXAMPLE
In the following example, one compute the parameters of a desktop
under Linux with the following Tcl 8.4.19 properties :
.CS


% parray tcl_platform
tcl_platform(byteOrder) = littleEndian
tcl_platform(machine)   = i686
tcl_platform(os)        = Linux
tcl_platform(osVersion) = 2.6.24-19-generic
tcl_platform(platform)  = unix
tcl_platform(tip,268)   = 1
tcl_platform(tip,280)   = 1
tcl_platform(user)      = <username>
tcl_platform(wordSize)  = 4

.CE
The following example creates a machineparameters object,
computes the properties and displays it.
.CS


set pp [machineparameters create %AUTO%]
$pp compute
$pp print
$pp destroy

.CE
This prints out :
.CS


Machine parameters
Epsilon : 1.11022302463e-16
Beta : 2
Rounding : proper
Mantissa : 53
Maximum exponent : 1024
Minimum exponent : -1021
Overflow threshold : 8.98846567431e+307
Underflow threshold : 2.22507385851e-308

.CE
That compares well with the results produced by Lapack 3.1.1 :
.CS


Epsilon                      =   1.11022302462515654E-016
Safe minimum                 =   2.22507385850720138E-308
Base                         =    2.0000000000000000
Precision                    =   2.22044604925031308E-016
Number of digits in mantissa =    53.000000000000000
Rounding mode                =   1.00000000000000000
Minimum exponent             =   -1021.0000000000000
Underflow threshold          =   2.22507385850720138E-308
Largest exponent             =    1024.0000000000000
Overflow threshold           =   1.79769313486231571E+308
Reciprocal of safe minimum   =   4.49423283715578977E+307

.CE
The following example creates a machineparameters object,
computes the properties and gets the epsilon for
the machine.
.CS


set pp [machineparameters create %AUTO%]
$pp compute
set eps [$pp get -epsilon]
$pp destroy

.CE
.SH REFERENCES
.IP \(bu
"Algorithms to Reveal Properties of Floating-Point Arithmetic", Michael A. Malcolm, Stanford University, Communications of the ACM, Volume 15 ,  Issue 11  (November 1972), Pages: 949 - 951
.IP \(bu
"More on Algorithms that Reveal Properties of Floating, Point Arithmetic Units", W. Morven Gentleman, University of Waterloo, Scott B. Marovich, Purdue University, Communications of the ACM, Volume 17 ,  Issue 5  (May 1974), Pages: 276 - 277
.PP
434
435
436
437
438
439
440
441
442
.TP
\fIobjectname\fR \fBprint\fR
Print machine parameters on standard output.
.PP
.SH COPYRIGHT
.nf
Copyright (c) 2008 Michael Baudin <[email protected]>

.fi







<

412
413
414
415
416
417
418

419
.TP
\fIobjectname\fR \fBprint\fR
Print machine parameters on standard output.
.PP
.SH COPYRIGHT
.nf
Copyright (c) 2008 Michael Baudin <[email protected]>

.fi

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

Changes to embedded/man/files/modules/math/math_geometry.n.

221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







221
222
223
224
225
226
227

228
229
230
231
232
233
234
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
Construct a point from its coordinates and return it as the
result of the command.
.TP
\fB::math::geometry::distance\fR \fIpoint1\fR \fIpoint2\fR
Compute the distance between the two points and return it as the
result of the command. This is in essence the same as
.CS


    math::geometry::length [math::geomtry::- point1 point2]

.CE
.TP
\fB::math::geometry::length\fR \fIpoint\fR
Compute the length of the vector and return it as the
result of the command.
.TP
\fB::math::geometry::s*\fR \fIfactor\fR \fIpoint\fR







<
<
|
<







369
370
371
372
373
374
375


376

377
378
379
380
381
382
383
Construct a point from its coordinates and return it as the
result of the command.
.TP
\fB::math::geometry::distance\fR \fIpoint1\fR \fIpoint2\fR
Compute the distance between the two points and return it as the
result of the command. This is in essence the same as
.CS


math::geometry::length [math::geomtry::- point1 point2]

.CE
.TP
\fB::math::geometry::length\fR \fIpoint\fR
Compute the length of the vector and return it as the
result of the command.
.TP
\fB::math::geometry::s*\fR \fIfactor\fR \fIpoint\fR
748
749
750
751
752
753
754
755
756
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2001 by Ideogramic ApS and other parties
Copyright (c) 2004 by Arjen Markus
Copyright (c) 2010 by Andreas Kupries
Copyright (c) 2010 by Kevin Kenny

.fi







<

744
745
746
747
748
749
750

751
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2001 by Ideogramic ApS and other parties
Copyright (c) 2004 by Arjen Markus
Copyright (c) 2010 by Andreas Kupries
Copyright (c) 2010 by Kevin Kenny

.fi

Changes to embedded/man/files/modules/math/numtheory.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
290
291
292
293
294
295
296
297
298
.SH KEYWORDS
number theory, prime
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2010 Lars Hellström <Lars dot Hellstrom at residenset dot net>

.fi







<

289
290
291
292
293
294
295

296
.SH KEYWORDS
number theory, prime
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2010 Lars Hellström <Lars dot Hellstrom at residenset dot net>

.fi

Changes to embedded/man/files/modules/math/optimize.n.

219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







219
220
221
222
223
224
225

226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
580
581
582
583
584
585
586
587
588
589
Several of the above procedures take the \fInames\fR of procedures as
arguments. To avoid problems with the \fIvisibility\fR of these
procedures, the fully-qualified name of these procedures is determined
inside the optimize routines. For the user this has only one
consequence: the named procedure must be visible in the calling
procedure. For instance:
.CS


    namespace eval ::mySpace {
       namespace export calcfunc
       proc calcfunc { x } { return $x }
    }
    #
    # Use a fully-qualified name
    #
    namespace eval ::myCalc {
       puts [min_bound_1d ::myCalc::calcfunc $begin $end]
    }
    #
    # Import the name
    #
    namespace eval ::myCalc {
       namespace import ::mySpace::calcfunc
       puts [min_bound_1d calcfunc $begin $end]
    }

.CE
The simple procedures \fIminimum\fR and \fImaximum\fR have been
deprecated: the alternatives are much more flexible, robust and
require less function evaluations.
.SH EXAMPLES
.PP
Let us take a few simple examples:
.PP
Determine the maximum of f(x) = x^3 exp(-3x), on the interval (0,10):
.CS


proc efunc { x } { expr {$x*$x*$x * exp(-3.0*$x)} }
puts "Maximum at: [::math::optimize::max_bound_1d efunc 0.0 10.0]"

.CE
.PP
The maximum allowed error determines the number of steps taken (with
each step in the iteration the interval is reduced with a factor 1/2).
Hence, a maximum error of 0.0001 is achieved in approximately 14 steps.
.PP
An example of a \fIlinear program\fR is:
.PP
Optimise the expression 3x+2y, where:
.CS


   x >= 0 and y >= 0 (implicit constraints, part of the
                     definition of linear programs)

   x + y   <= 1      (constraints specific to the problem)
   2x + 5y <= 10

.CE
.PP
This problem can be solved as follows:
.CS



   set solution [::math::optimize::solveLinearProgram  { 3.0   2.0 }  { { 1.0   1.0   1.0 }
        { 2.0   5.0  10.0 } } ]

.CE
.PP
Note, that a constraint like:
.CS


   x + y >= 1

.CE
can be turned into standard form using:
.CS


   -x  -y <= -1

.CE
.PP
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
.nf
Copyright (c) 2004 Arjen Markus <[email protected]>
Copyright (c) 2004,2005 Kevn B. Kenny <[email protected]>

.fi







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










<
<


<










<
<
|
|
<
|
|
<




<
<
<
|
|
<




<
<
|
<



<
<
|
<




















<

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
Several of the above procedures take the \fInames\fR of procedures as
arguments. To avoid problems with the \fIvisibility\fR of these
procedures, the fully-qualified name of these procedures is determined
inside the optimize routines. For the user this has only one
consequence: the named procedure must be visible in the calling
procedure. For instance:
.CS


namespace eval ::mySpace {
namespace export calcfunc
proc calcfunc { x } { return $x }
}
#
# Use a fully-qualified name
#
namespace eval ::myCalc {
puts [min_bound_1d ::myCalc::calcfunc $begin $end]
}
#
# Import the name
#
namespace eval ::myCalc {
namespace import ::mySpace::calcfunc
puts [min_bound_1d calcfunc $begin $end]
}

.CE
The simple procedures \fIminimum\fR and \fImaximum\fR have been
deprecated: the alternatives are much more flexible, robust and
require less function evaluations.
.SH EXAMPLES
.PP
Let us take a few simple examples:
.PP
Determine the maximum of f(x) = x^3 exp(-3x), on the interval (0,10):
.CS


proc efunc { x } { expr {$x*$x*$x * exp(-3.0*$x)} }
puts "Maximum at: [::math::optimize::max_bound_1d efunc 0.0 10.0]"

.CE
.PP
The maximum allowed error determines the number of steps taken (with
each step in the iteration the interval is reduced with a factor 1/2).
Hence, a maximum error of 0.0001 is achieved in approximately 14 steps.
.PP
An example of a \fIlinear program\fR is:
.PP
Optimise the expression 3x+2y, where:
.CS


x >= 0 and y >= 0 (implicit constraints, part of the
definition of linear programs)

x + y   <= 1      (constraints specific to the problem)
2x + 5y <= 10

.CE
.PP
This problem can be solved as follows:
.CS



set solution [::math::optimize::solveLinearProgram  { 3.0   2.0 }  { { 1.0   1.0   1.0 }
{ 2.0   5.0  10.0 } } ]

.CE
.PP
Note, that a constraint like:
.CS


x + y >= 1

.CE
can be turned into standard form using:
.CS


-x  -y <= -1

.CE
.PP
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
.nf
Copyright (c) 2004 Arjen Markus <[email protected]>
Copyright (c) 2004,2005 Kevn B. Kenny <[email protected]>

.fi

Changes to embedded/man/files/modules/math/polynomials.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.PP
.SH PROCEDURES
The package defines the following public procedures:
.TP
\fB::math::polynomials::polynomial\fR \fIcoeffs\fR
Return an (encoded) list that defines the polynomial. A polynomial
.CS


   f(x) = a + b.x + c.x**2 + d.x**3

.CE
.IP
can be defined via:
.CS


   set f [::math::polynomials::polynomial [list $a $b $c $d]

.CE
.RS
.TP
list \fIcoeffs\fR
Coefficients of the polynomial (in ascending
order)
.RE







<
<
|
<




<
<
|
<







285
286
287
288
289
290
291


292

293
294
295
296


297

298
299
300
301
302
303
304
.PP
.SH PROCEDURES
The package defines the following public procedures:
.TP
\fB::math::polynomials::polynomial\fR \fIcoeffs\fR
Return an (encoded) list that defines the polynomial. A polynomial
.CS


f(x) = a + b.x + c.x**2 + d.x**3

.CE
.IP
can be defined via:
.CS


set f [::math::polynomials::polynomial [list $a $b $c $d]

.CE
.RS
.TP
list \fIcoeffs\fR
Coefficients of the polynomial (in ascending
order)
.RE
470
471
472
473
474
475
476
477
478
.SH KEYWORDS
math, polynomial functions
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2004 Arjen Markus <[email protected]>

.fi







<

463
464
465
466
467
468
469

470
.SH KEYWORDS
math, polynomial functions
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2004 Arjen Markus <[email protected]>

.fi

Changes to embedded/man/files/modules/math/qcomplex.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
\fIcomplex\fR command to construct a valid number.)
.PP
Most procedures implement the basic arithmetic operations or elementary
functions whereas several others convert to and from different
representations:
.PP
.CS


    set z [complex 0 1]
    puts "z = [tostring $z]"
    puts "z**2 = [* $z $z]

.CE
would result in:
.CS


    z = i
    z**2 = -1

.CE
.SH "AVAILABLE PROCEDURES"
The package implements all or most basic operations and elementary
functions.
.PP
\fIThe arithmetic operations are:\fR
.TP







<
<
|
|
|
<



<
<
|
|
<







298
299
300
301
302
303
304


305
306
307

308
309
310


311
312

313
314
315
316
317
318
319
\fIcomplex\fR command to construct a valid number.)
.PP
Most procedures implement the basic arithmetic operations or elementary
functions whereas several others convert to and from different
representations:
.PP
.CS


set z [complex 0 1]
puts "z = [tostring $z]"
puts "z**2 = [* $z $z]

.CE
would result in:
.CS


z = i
z**2 = -1

.CE
.SH "AVAILABLE PROCEDURES"
The package implements all or most basic operations and elementary
functions.
.PP
\fIThe arithmetic operations are:\fR
.TP
529
530
531
532
533
534
535
536
537
.SH KEYWORDS
complex numbers, math
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2004 Arjen Markus <[email protected]>

.fi







<

522
523
524
525
526
527
528

529
.SH KEYWORDS
complex numbers, math
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2004 Arjen Markus <[email protected]>

.fi

Changes to embedded/man/files/modules/math/rational_funcs.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.SH PROCEDURES
The package defines the following public procedures:
.TP
\fB::math::rationalfunctions::rationalFunction\fR \fInum\fR \fIden\fR
Return an (encoded) list that defines the rational function. A
rational function
.CS


             1 + x^3
   f(x) = ------------
          1 + 2x + x^2

.CE
.IP
can be defined via:
.CS


   set f [::math::rationalfunctions::rationalFunction [list 1 0 0 1]  [list 1 2 1]]

.CE
.RS
.TP
list \fInum\fR
Coefficients of the numerator of the rational
function (in ascending order)
.sp







<
<
|
|
|
<




<
<
|
<







280
281
282
283
284
285
286


287
288
289

290
291
292
293


294

295
296
297
298
299
300
301
.SH PROCEDURES
The package defines the following public procedures:
.TP
\fB::math::rationalfunctions::rationalFunction\fR \fInum\fR \fIden\fR
Return an (encoded) list that defines the rational function. A
rational function
.CS


1 + x^3
f(x) = ------------
1 + 2x + x^2

.CE
.IP
can be defined via:
.CS


set f [::math::rationalfunctions::rationalFunction [list 1 0 0 1]  [list 1 2 1]]

.CE
.RS
.TP
list \fInum\fR
Coefficients of the numerator of the rational
function (in ascending order)
.sp
439
440
441
442
443
444
445
446
447
.SH KEYWORDS
math, rational functions
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2005 Arjen Markus <[email protected]>

.fi







<

432
433
434
435
436
437
438

439
.SH KEYWORDS
math, rational functions
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2005 Arjen Markus <[email protected]>

.fi

Changes to embedded/man/files/modules/math/roman.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
298
299
300
301
302
303
304
305
306
.SH KEYWORDS
conversion, integer, roman numeral
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2005 Kenneth Green <[email protected]>

.fi







<

297
298
299
300
301
302
303

304
.SH KEYWORDS
conversion, integer, roman numeral
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2005 Kenneth Green <[email protected]>

.fi

Changes to embedded/man/files/modules/math/romberg.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
find that dx=cos(u)*du, and sqrt(1-x**2)=cos(u).  The integral
from a to b of f(x) is the integral from asin(a) to asin(b)
of f(sin(u))*cos(u).
.PP
We can make a function \fBg\fR that accepts an arbitrary function
\fBf\fR and the parameter u, and computes this new integrand.
.CS


proc g { f u } {
    set x [expr { sin($u) }]
    set cmd $f; lappend cmd $x; set y [eval $cmd]
    return [expr { $y / cos($u) }]
}

.CE
Now integrating \fBf\fR from \fIa\fR to \fIb\fR is the same
as integrating \fBg\fR from \fIasin(a)\fR to \fIasin(b)\fR.
It's a little tricky to get \fBf\fR consistently evaluated in
the caller's scope; the following procedure does it.
.CS


proc romberg_sine { f a b args } {
    set f [lreplace $f 0 0 [uplevel 1 [list namespace which [lindex $f 0]]]]
    set f [list g $f]
    return [eval [linsert $args 0 romberg $f [expr { asin($a) }] [expr { asin($b) }]]]
}

.CE
This \fBromberg_sine\fR procedure will do any function with
sqrt(1-x*x) in the denominator. Our sample function is
f(x)=exp(x)/sqrt(1-x*x):
.CS


proc f { x } {
    expr { exp($x) / sqrt( 1. - $x*$x ) }
}

.CE
Integrating it is a matter of applying \fBromberg_sine\fR
as we would any of the other \fBromberg\fR procedures:
.CS


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

.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
.nf
Copyright (c) 2004 Kevin B. Kenny <[email protected]>. All rights reserved. Redistribution permitted under the terms of the Open Publication License <http://www.opencontent.org/openpub/>

.fi







<
<

|
|
|

<






<
<

|
|
|

<





<
<

|

<




<
<


<

<















<

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
find that dx=cos(u)*du, and sqrt(1-x**2)=cos(u).  The integral
from a to b of f(x) is the integral from asin(a) to asin(b)
of f(sin(u))*cos(u).
.PP
We can make a function \fBg\fR that accepts an arbitrary function
\fBf\fR and the parameter u, and computes this new integrand.
.CS


proc g { f u } {
set x [expr { sin($u) }]
set cmd $f; lappend cmd $x; set y [eval $cmd]
return [expr { $y / cos($u) }]
}

.CE
Now integrating \fBf\fR from \fIa\fR to \fIb\fR is the same
as integrating \fBg\fR from \fIasin(a)\fR to \fIasin(b)\fR.
It's a little tricky to get \fBf\fR consistently evaluated in
the caller's scope; the following procedure does it.
.CS


proc romberg_sine { f a b args } {
set f [lreplace $f 0 0 [uplevel 1 [list namespace which [lindex $f 0]]]]
set f [list g $f]
return [eval [linsert $args 0 romberg $f [expr { asin($a) }] [expr { asin($b) }]]]
}

.CE
This \fBromberg_sine\fR procedure will do any function with
sqrt(1-x*x) in the denominator. Our sample function is
f(x)=exp(x)/sqrt(1-x*x):
.CS


proc f { x } {
expr { exp($x) / sqrt( 1. - $x*$x ) }
}

.CE
Integrating it is a matter of applying \fBromberg_sine\fR
as we would any of the other \fBromberg\fR procedures:
.CS


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

.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
.nf
Copyright (c) 2004 Kevin B. Kenny <[email protected]>. All rights reserved. Redistribution permitted under the terms of the Open Publication License <http://www.opencontent.org/openpub/>

.fi

Changes to embedded/man/files/modules/math/special.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
legendre, hermite: some of the classical orthogonal polynomials.
.PP
.SH 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.
.CS


Family       | Function    | Domain x    | Parameter   | Error bound
-------------+-------------+-------------+-------------+--------------
Bessel       | J0, J1,     | all of R    | n = integer |   < 1.0e-8
             | Jn          |             |             |  (|x|<20, n<20)
Bessel       | J1/2, J-1/2,|  x > 0      | n = integer |   exact
Bessel       | I_n         | all of R    | n = integer |   < 1.0e-6
             |             |             |             |
Elliptic     | cn          | 0 <= x <= 1 |     --      |   < 1.0e-10
functions    | dn          | 0 <= x <= 1 |     --      |   < 1.0e-10
             | sn          | 0 <= x <= 1 |     --      |   < 1.0e-10
Elliptic     | K           | 0 <= x < 1  |     --      |   < 1.0e-6
integrals    | E           | 0 <= x < 1  |     --      |   < 1.0e-6
             |             |             |             |
Error        | erf         |             |     --      |
functions    | erfc        |             |             |
             | ierfc_n     |             |             |
             |             |             |             |
Exponential  | Ei          |  x != 0     |     --      |   < 1.0e-10 (relative)
integrals    | En          |  x >  0     |     --      |   as Ei
             | li          |  x > 0      |     --      |   as Ei
             | Chi         |  x > 0      |     --      |   < 1.0e-8
             | Shi         |  x > 0      |     --      |   < 1.0e-8
             | Ci          |  x > 0      |     --      |   < 2.0e-4
             | Si          |  x > 0      |     --      |   < 2.0e-4
             |             |             |             |
Fresnel      | C           |  all of R   |     --      |   < 2.0e-3
integrals    | S           |  all of R   |     --      |   < 2.0e-3
             |             |             |             |
general      | Beta        | (see Gamma) |     --      |   < 1.0e-9
             | Gamma       |  x != 0,-1, |     --      |   < 1.0e-9
             |             |  -2, ...    |             |
             | sinc        |  all of R   |     --      |   exact
             |             |             |             |
orthogonal   | Legendre    |  all of R   | n = 0,1,... |   exact
polynomials  | Chebyshev   |  all of R   | n = 0,1,... |   exact
             | Laguerre    |  all of R   | n = 0,1,... |   exact
             |             |             | alpha el. R |
             | Hermite     |  all of R   | n = 0,1,... |   exact

.CE
\fINote:\fR Some of the error bounds are estimated, as no
"formal" bounds were available with the implemented approximation
method, others hold for the auxiliary functions used for estimating
the primary functions.
.PP
The following well-known functions are currently missing from the package:







<
<



|


|


|


|


|
|


|
|
|
|
|
|


|

|
|
|
|


|
|
|
<







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
legendre, hermite: some of the classical orthogonal polynomials.
.PP
.SH 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.
.CS


Family       | Function    | Domain x    | Parameter   | Error bound
-------------+-------------+-------------+-------------+--------------
Bessel       | J0, J1,     | all of R    | n = integer |   < 1.0e-8
| Jn          |             |             |  (|x|<20, n<20)
Bessel       | J1/2, J-1/2,|  x > 0      | n = integer |   exact
Bessel       | I_n         | all of R    | n = integer |   < 1.0e-6
|             |             |             |
Elliptic     | cn          | 0 <= x <= 1 |     --      |   < 1.0e-10
functions    | dn          | 0 <= x <= 1 |     --      |   < 1.0e-10
| sn          | 0 <= x <= 1 |     --      |   < 1.0e-10
Elliptic     | K           | 0 <= x < 1  |     --      |   < 1.0e-6
integrals    | E           | 0 <= x < 1  |     --      |   < 1.0e-6
|             |             |             |
Error        | erf         |             |     --      |
functions    | erfc        |             |             |
| ierfc_n     |             |             |
|             |             |             |
Exponential  | Ei          |  x != 0     |     --      |   < 1.0e-10 (relative)
integrals    | En          |  x >  0     |     --      |   as Ei
| li          |  x > 0      |     --      |   as Ei
| Chi         |  x > 0      |     --      |   < 1.0e-8
| Shi         |  x > 0      |     --      |   < 1.0e-8
| Ci          |  x > 0      |     --      |   < 2.0e-4
| Si          |  x > 0      |     --      |   < 2.0e-4
|             |             |             |
Fresnel      | C           |  all of R   |     --      |   < 2.0e-3
integrals    | S           |  all of R   |     --      |   < 2.0e-3
|             |             |             |
general      | Beta        | (see Gamma) |     --      |   < 1.0e-9
| Gamma       |  x != 0,-1, |     --      |   < 1.0e-9
|             |  -2, ...    |             |
| sinc        |  all of R   |     --      |   exact
|             |             |             |
orthogonal   | Legendre    |  all of R   | n = 0,1,... |   exact
polynomials  | Chebyshev   |  all of R   | n = 0,1,... |   exact
| Laguerre    |  all of R   | n = 0,1,... |   exact
|             |             | alpha el. R |
| Hermite     |  all of R   | n = 0,1,... |   exact

.CE
\fINote:\fR Some of the error bounds are estimated, as no
"formal" bounds were available with the implemented approximation
method, others hold for the auxiliary functions used for estimating
the primary functions.
.PP
The following well-known functions are currently missing from the package:
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
.sp
.PP
.SH "THE ORTHOGONAL POLYNOMIALS"
For dealing with the classical families of orthogonal polynomials, the
package relies on the \fImath::polynomials\fR package. To evaluate the
polynomial at some coordinate, use the \fIevalPolyn\fR command:
.CS


   set leg2 [::math::special::legendre 2]
   puts "Value at x=$x: [::math::polynomials::evalPolyn $leg2 $x]"

.CE
.PP
The return value from the \fIlegendre\fR and other commands is actually
the definition of the corresponding polynomial as used in that package.
.SH "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







<
<
|
|
<







680
681
682
683
684
685
686


687
688

689
690
691
692
693
694
695
.sp
.PP
.SH "THE ORTHOGONAL POLYNOMIALS"
For dealing with the classical families of orthogonal polynomials, the
package relies on the \fImath::polynomials\fR package. To evaluate the
polynomial at some coordinate, use the \fIevalPolyn\fR command:
.CS


set leg2 [::math::special::legendre 2]
puts "Value at x=$x: [::math::polynomials::evalPolyn $leg2 $x]"

.CE
.PP
The return value from the \fIlegendre\fR and other commands is actually
the definition of the corresponding polynomial as used in that package.
.SH "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
734
735
736
737
738
739
740
741
742
.SH KEYWORDS
Bessel functions, error function, math, special functions
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2004 Arjen Markus <[email protected]>

.fi







<

727
728
729
730
731
732
733

734
.SH KEYWORDS
Bessel functions, error function, math, special functions
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2004 Arjen Markus <[email protected]>

.fi

Changes to embedded/man/files/modules/math/statistics.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
Note: These procedures depend on the math::linearalgebra package.
.PP
\fIDescription of the procedures\fR
.TP
\fB::math::statistics::tstat\fR \fIdof\fR ?alpha?
Returns the value of the t-distribution t* satisfying
.CS


    P(t*)  =  1 - alpha/2
    P(-t*) =  alpha/2

.CE
.IP
for the number of degrees of freedom dof.
.sp
Given a sample of normally-distributed data x, with an
estimate xbar for the mean and sbar for the standard deviation,
the alpha confidence interval for the estimate of the mean can
be calculated as
.CS


      ( xbar - t* sbar , xbar + t* sbar)

.CE
.IP
The return values from this procedure can be compared to
an estimated t-statistic to determine whether the estimated
value of a parameter is significantly different from zero at
the given confidence level.
.RS







<
<
|
|
<









<
<
|
<







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
Note: These procedures depend on the math::linearalgebra package.
.PP
\fIDescription of the procedures\fR
.TP
\fB::math::statistics::tstat\fR \fIdof\fR ?alpha?
Returns the value of the t-distribution t* satisfying
.CS


P(t*)  =  1 - alpha/2
P(-t*) =  alpha/2

.CE
.IP
for the number of degrees of freedom dof.
.sp
Given a sample of normally-distributed data x, with an
estimate xbar for the mean and sbar for the standard deviation,
the alpha confidence interval for the estimate of the mean can
be calculated as
.CS


( xbar - t* sbar , xbar + t* sbar)

.CE
.IP
The return values from this procedure can be compared to
an estimated t-statistic to determine whether the estimated
value of a parameter is significantly different from zero at
the given confidence level.
.RS
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
.TP
\fB::math::statistics::mv-wls\fR \fIwt1\fR \fIweights_and_values\fR
Carries out a weighted least squares linear regression for
the data points provided, with weights assigned to each point.
.sp
The linear model is of the form
.CS


    y = b0 + b1 * x1 + b2 * x2 ... + bN * xN + error

.CE
.IP
and each point satisfies
.CS


    yi = b0 + b1 * xi1 + b2 * xi2 + ... + bN * xiN + Residual_i

.CE
.sp
The procedure returns a list with the following elements:
.RS
.IP \(bu
The r-squared statistic
.IP \(bu







<
<
|
<




<
<
|
<







929
930
931
932
933
934
935


936

937
938
939
940


941

942
943
944
945
946
947
948
.TP
\fB::math::statistics::mv-wls\fR \fIwt1\fR \fIweights_and_values\fR
Carries out a weighted least squares linear regression for
the data points provided, with weights assigned to each point.
.sp
The linear model is of the form
.CS


y = b0 + b1 * x1 + b2 * x2 ... + bN * xN + error

.CE
.IP
and each point satisfies
.CS


yi = b0 + b1 * xi1 + b2 * xi2 + ... + bN * xiN + Residual_i

.CE
.sp
The procedure returns a list with the following elements:
.RS
.IP \(bu
The r-squared statistic
.IP \(bu
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
the data points provided.
.sp
This procedure simply calls ::mvlinreg::wls with the weights
set to 1.0, and returns the same information.
.PP
\fIExample of the use:\fR
.CS


# Store the value of the unicode value for the "+/-" character
set pm "\\u00B1"

# Provide some data
set data {{  -.67  14.18  60.03 -7.5  }
          { 36.97  15.52  34.24 14.61 }
          {-29.57  21.85  83.36 -7.   }
          {-16.9   11.79  51.67 -6.56 }
          { 14.09  16.24  36.97 -12.84}
          { 31.52  20.93  45.99 -25.4 }
          { 24.05  20.69  50.27  17.27}
          { 22.23  16.91  45.07  -4.3 }
          { 40.79  20.49  38.92  -.73 }
          {-10.35  17.24  58.77  18.78}}

# Call the ols routine
set results [::math::statistics::mv-ols $data]

# Pretty-print the results
puts "R-squared: [lindex $results 0]"
puts "Adj R-squared: [lindex $results 1]"
puts "Coefficients $pm s.e. -- \\[95% confidence interval\\]:"
foreach val [lindex $results 2] se [lindex $results 3] bounds [lindex $results 4] {
    set lb [lindex $bounds 0]
    set ub [lindex $bounds 1]
    puts "   $val $pm $se -- \\[$lb to $ub\\]"
}

.CE
.SH "STATISTICAL DISTRIBUTIONS"
In the literature a large number of probability distributions can be
found. The statistics package supports:
.IP \(bu
The normal or Gaussian distribution
.IP \(bu







<
<


<


|
|
|
|
|
|
|
|
|
<


<





|
|
|

<







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
the data points provided.
.sp
This procedure simply calls ::mvlinreg::wls with the weights
set to 1.0, and returns the same information.
.PP
\fIExample of the use:\fR
.CS


# Store the value of the unicode value for the "+/-" character
set pm "\\u00B1"

# Provide some data
set data {{  -.67  14.18  60.03 -7.5  }
{ 36.97  15.52  34.24 14.61 }
{-29.57  21.85  83.36 -7.   }
{-16.9   11.79  51.67 -6.56 }
{ 14.09  16.24  36.97 -12.84}
{ 31.52  20.93  45.99 -25.4 }
{ 24.05  20.69  50.27  17.27}
{ 22.23  16.91  45.07  -4.3 }
{ 40.79  20.49  38.92  -.73 }
{-10.35  17.24  58.77  18.78}}

# Call the ols routine
set results [::math::statistics::mv-ols $data]

# Pretty-print the results
puts "R-squared: [lindex $results 0]"
puts "Adj R-squared: [lindex $results 1]"
puts "Coefficients $pm s.e. -- \\[95% confidence interval\\]:"
foreach val [lindex $results 2] se [lindex $results 3] bounds [lindex $results 4] {
set lb [lindex $bounds 0]
set ub [lindex $bounds 1]
puts "   $val $pm $se -- \\[$lb to $ub\\]"
}

.CE
.SH "STATISTICAL DISTRIBUTIONS"
In the literature a large number of probability distributions can be
found. The statistics package supports:
.IP \(bu
The normal or Gaussian distribution
.IP \(bu
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
- Total number of "observations" in the histogram
.RE
.sp
.TP
\fB::math::statistics::incompleteGamma\fR \fIx\fR \fIp\fR ?tol?
Evaluate the incomplete Gamma integral
.CS


                    1       / x               p-1
      P(p,x) =  --------   |   dt exp(-t) * t
                Gamma(p)  / 0

.CE
.RS
.TP
float \fIx\fR
- Value of x (limit of the integral)
.TP
float \fIp\fR







<
<
|
|
|
<







1379
1380
1381
1382
1383
1384
1385


1386
1387
1388

1389
1390
1391
1392
1393
1394
1395
- Total number of "observations" in the histogram
.RE
.sp
.TP
\fB::math::statistics::incompleteGamma\fR \fIx\fR \fIp\fR ?tol?
Evaluate the incomplete Gamma integral
.CS


1       / x               p-1
P(p,x) =  --------   |   dt exp(-t) * t
Gamma(p)  / 0

.CE
.RS
.TP
float \fIx\fR
- Value of x (limit of the integral)
.TP
float \fIp\fR
1723
1724
1725
1726
1727
1728
1729
1730
1731
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
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
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
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
subdivide
.PP
.SH EXAMPLES
The code below is a small example of how you can examine a set of
data:
.PP
.CS



# Simple example:
# - Generate data (as a cheap way of getting some)
# - Perform statistical analysis to describe the data
#
package require math::statistics

#
# Two auxiliary procs
#
proc pause {time} {
   set wait 0
   after [expr {$time*1000}] {set ::wait 1}
   vwait wait
}

proc print-histogram {counts limits} {
   foreach count $counts limit $limits {
      if { $limit != {} } {
         puts [format "<%12.4g\\t%d" $limit $count]
         set prev_limit $limit
      } else {
         puts [format ">%12.4g\\t%d" $prev_limit $count]
      }
   }
}

#
# Our source of arbitrary data
#
proc generateData { data1 data2 } {
   upvar 1 $data1 _data1
   upvar 1 $data2 _data2

   set d1 0.0
   set d2 0.0
   for { set i 0 } { $i < 100 } { incr i } {
      set d1 [expr {10.0-2.0*cos(2.0*3.1415926*$i/24.0)+3.5*rand()}]
      set d2 [expr {0.7*$d2+0.3*$d1+0.7*rand()}]
      lappend _data1 $d1
      lappend _data2 $d2
   }
   return {}
}

#
# The analysis session
#
package require Tk
console show
canvas .plot1
canvas .plot2
pack   .plot1 .plot2 -fill both -side top

generateData data1 data2

puts "Basic statistics:"
set b1 [::math::statistics::basic-stats $data1]
set b2 [::math::statistics::basic-stats $data2]
foreach label {mean min max number stdev var} v1 $b1 v2 $b2 {
   puts "$label\\t$v1\\t$v2"
}
puts "Plot the data as function of \\"time\\" and against each other"
::math::statistics::plot-scale .plot1  0 100  0 20
::math::statistics::plot-scale .plot2  0 20   0 20
::math::statistics::plot-tline .plot1 $data1
::math::statistics::plot-tline .plot1 $data2
::math::statistics::plot-xydata .plot2 $data1 $data2

puts "Correlation coefficient:"
puts [::math::statistics::corr $data1 $data2]

pause 2
puts "Plot histograms"
.plot2 delete all
::math::statistics::plot-scale .plot2  0 20 0 100
set limits         [::math::statistics::minmax-histogram-limits 7 16]
set histogram_data [::math::statistics::histogram $limits $data1]
::math::statistics::plot-histogram .plot2 $histogram_data $limits

puts "First series:"
print-histogram $histogram_data $limits

pause 2
set limits         [::math::statistics::minmax-histogram-limits 0 15 10]
set histogram_data [::math::statistics::histogram $limits $data2]
::math::statistics::plot-histogram .plot2 $histogram_data $limits d2
.plot2 itemconfigure d2 -fill red

puts "Second series:"
print-histogram $histogram_data $limits

puts "Autocorrelation function:"
set  autoc [::math::statistics::autocorr $data1]
puts [::math::statistics::map $autoc {[format "%.2f" $x]}]
puts "Cross-correlation function:"
set  crossc [::math::statistics::crosscorr $data1 $data2]
puts [::math::statistics::map $crossc {[format "%.2f" $x]}]

::math::statistics::plot-scale .plot1  0 100 -1  4
::math::statistics::plot-tline .plot1  $autoc "autoc"
::math::statistics::plot-tline .plot1  $crossc "crossc"
.plot1 itemconfigure autoc  -fill green
.plot1 itemconfigure crossc -fill yellow

puts "Quantiles: 0.1, 0.2, 0.5, 0.8, 0.9"
puts "First:  [::math::statistics::quantiles $data1 {0.1 0.2 0.5 0.8 0.9}]"
puts "Second: [::math::statistics::quantiles $data2 {0.1 0.2 0.5 0.8 0.9}]"


.CE
If you run this example, then the following should be clear:
.IP \(bu
There is a strong correlation between two time series, as displayed by
the raw data and especially by the correlation functions.
.IP \(bu
Both time series show a significant periodic component







<
<
<





<




|
|
|

<

|
|
|
|
|
|
|
|

|
<



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

<








<

<




|







<


<


|




<


<




|
<


<






<



|
|
<



<
<







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

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
1767

1768
1769

1770
1771
1772
1773
1774
1775
1776

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
subdivide
.PP
.SH EXAMPLES
The code below is a small example of how you can examine a set of
data:
.PP
.CS



# Simple example:
# - Generate data (as a cheap way of getting some)
# - Perform statistical analysis to describe the data
#
package require math::statistics

#
# Two auxiliary procs
#
proc pause {time} {
set wait 0
after [expr {$time*1000}] {set ::wait 1}
vwait wait
}

proc print-histogram {counts limits} {
foreach count $counts limit $limits {
if { $limit != {} } {
puts [format "<%12.4g\\t%d" $limit $count]
set prev_limit $limit
} else {
puts [format ">%12.4g\\t%d" $prev_limit $count]
}
}
}
#

# Our source of arbitrary data
#
proc generateData { data1 data2 } {
upvar 1 $data1 _data1
upvar 1 $data2 _data2

set d1 0.0
set d2 0.0
for { set i 0 } { $i < 100 } { incr i } {
set d1 [expr {10.0-2.0*cos(2.0*3.1415926*$i/24.0)+3.5*rand()}]
set d2 [expr {0.7*$d2+0.3*$d1+0.7*rand()}]
lappend _data1 $d1
lappend _data2 $d2
}
return {}
}

#
# The analysis session
#
package require Tk
console show
canvas .plot1
canvas .plot2
pack   .plot1 .plot2 -fill both -side top

generateData data1 data2

puts "Basic statistics:"
set b1 [::math::statistics::basic-stats $data1]
set b2 [::math::statistics::basic-stats $data2]
foreach label {mean min max number stdev var} v1 $b1 v2 $b2 {
puts "$label\\t$v1\\t$v2"
}
puts "Plot the data as function of \\"time\\" and against each other"
::math::statistics::plot-scale .plot1  0 100  0 20
::math::statistics::plot-scale .plot2  0 20   0 20
::math::statistics::plot-tline .plot1 $data1
::math::statistics::plot-tline .plot1 $data2
::math::statistics::plot-xydata .plot2 $data1 $data2

puts "Correlation coefficient:"
puts [::math::statistics::corr $data1 $data2]

pause 2
puts "Plot histograms"
\.plot2 delete all
::math::statistics::plot-scale .plot2  0 20 0 100
set limits         [::math::statistics::minmax-histogram-limits 7 16]
set histogram_data [::math::statistics::histogram $limits $data1]
::math::statistics::plot-histogram .plot2 $histogram_data $limits

puts "First series:"
print-histogram $histogram_data $limits

pause 2
set limits         [::math::statistics::minmax-histogram-limits 0 15 10]
set histogram_data [::math::statistics::histogram $limits $data2]
::math::statistics::plot-histogram .plot2 $histogram_data $limits d2
\.plot2 itemconfigure d2 -fill red

puts "Second series:"
print-histogram $histogram_data $limits

puts "Autocorrelation function:"
set  autoc [::math::statistics::autocorr $data1]
puts [::math::statistics::map $autoc {[format "%.2f" $x]}]
puts "Cross-correlation function:"
set  crossc [::math::statistics::crosscorr $data1 $data2]
puts [::math::statistics::map $crossc {[format "%.2f" $x]}]

::math::statistics::plot-scale .plot1  0 100 -1  4
::math::statistics::plot-tline .plot1  $autoc "autoc"
::math::statistics::plot-tline .plot1  $crossc "crossc"
\.plot1 itemconfigure autoc  -fill green
\.plot1 itemconfigure crossc -fill yellow

puts "Quantiles: 0.1, 0.2, 0.5, 0.8, 0.9"
puts "First:  [::math::statistics::quantiles $data1 {0.1 0.2 0.5 0.8 0.9}]"
puts "Second: [::math::statistics::quantiles $data2 {0.1 0.2 0.5 0.8 0.9}]"


.CE
If you run this example, then the following should be clear:
.IP \(bu
There is a strong correlation between two time series, as displayed by
the raw data and especially by the correlation functions.
.IP \(bu
Both time series show a significant periodic component

Changes to embedded/man/files/modules/math/symdiff.n.

219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







219
220
221
222
223
224
225

226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
\fBlog10\fR, \fBpow\fR, \fBsin\fR, \fBsinh\fR. \fBsqrt\fR, \fBtan\fR,
and \fBtanh\fR.
.PP
Command substitution, backslash substitution, and argument expansion are
not accepted.
.SH EXAMPLES
.CS


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}}

.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 <[email protected]>
Redistribution permitted under the terms of the Open Publication License <http://www.opencontent.org/openpub/>

.fi







<
<



|

<














<

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
\fBlog10\fR, \fBpow\fR, \fBsin\fR, \fBsinh\fR. \fBsqrt\fR, \fBtan\fR,
and \fBtanh\fR.
.PP
Command substitution, backslash substitution, and argument expansion are
not accepted.
.SH EXAMPLES
.CS


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}}

.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 <[email protected]>
Redistribution permitted under the terms of the Open Publication License <http://www.opencontent.org/openpub/>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
\fB::md4::HMACUpdate\fR \fItoken\fR \fIdata\fR
.TP
\fB::md4::HMACFinal\fR \fItoken\fR
These commands are identical to the MD4 equivalent commands.
.PP
.SH EXAMPLES
.CS


% md4::md4 -hex "Tcl does MD4"
858da9b31f57648a032230447bd15f25

.CE
.CS


% md4::hmac -hex -key Sekret "Tcl does MD4"
c324088e5752872689caedf2a0464758

.CE
.CS


% set tok [md4::MD4Init]
::md4::1
% md4::MD4Update $tok "Tcl "
% md4::MD4Update $tok "does "
% md4::MD4Update $tok "MD4"
% md4::Hex [md4::MD4Final $tok]
858da9b31f57648a032230447bd15f25

.CE
.SH REFERENCES
.IP [1]
Rivest, R., "The MD4 Message Digest Algorithm", RFC 1320, MIT,
April 1992. (\fIhttp://www.rfc-editor.org/rfc/rfc1320.txt\fR)
.IP [2]
Rivest, R., "The MD4 message digest algorithm", in A.J.  Menezes







<
<


<


<
<


<


<
<







<







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
\fB::md4::HMACUpdate\fR \fItoken\fR \fIdata\fR
.TP
\fB::md4::HMACFinal\fR \fItoken\fR
These commands are identical to the MD4 equivalent commands.
.PP
.SH EXAMPLES
.CS


% md4::md4 -hex "Tcl does MD4"
858da9b31f57648a032230447bd15f25

.CE
.CS


% md4::hmac -hex -key Sekret "Tcl does MD4"
c324088e5752872689caedf2a0464758

.CE
.CS


% set tok [md4::MD4Init]
::md4::1
% md4::MD4Update $tok "Tcl "
% md4::MD4Update $tok "does "
% md4::MD4Update $tok "MD4"
% md4::Hex [md4::MD4Final $tok]
858da9b31f57648a032230447bd15f25

.CE
.SH REFERENCES
.IP [1]
Rivest, R., "The MD4 Message Digest Algorithm", RFC 1320, MIT,
April 1992. (\fIhttp://www.rfc-editor.org/rfc/rfc1320.txt\fR)
.IP [2]
Rivest, R., "The MD4 message digest algorithm", in A.J.  Menezes
391
392
393
394
395
396
397
398
399
.SH KEYWORDS
hashing, md4, message-digest, rfc 1320, rfc 1321, rfc 2104, security
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2003, Pat Thoyts <[email protected]>

.fi







<

381
382
383
384
385
386
387

388
.SH KEYWORDS
hashing, md4, message-digest, rfc 1320, rfc 1321, rfc 2104, security
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2003, Pat Thoyts <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
\fB::md5::HMACUpdate\fR \fItoken\fR \fIdata\fR
.TP
\fB::md5::HMACFinal\fR \fItoken\fR
These commands are identical to the MD5 equivalent commands.
.PP
.SH EXAMPLES
.CS


% md5::md5 -hex "Tcl does MD5"
8AAC1EE01E20BB347104FABB90310433

.CE
.CS


% md5::hmac -hex -key Sekret "Tcl does MD5"
35BBA244FD56D3EDF5F3C47474DACB5D

.CE
.CS


% set tok [md5::MD5Init]
::md5::1
% md5::MD5Update $tok "Tcl "
% md5::MD5Update $tok "does "
% md5::MD5Update $tok "MD5"
% md5::Hex [md5::MD5Final $tok]
8AAC1EE01E20BB347104FABB90310433

.CE
.SH REFERENCES
.IP [1]
Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, MIT and
RSA Data Security, Inc, April 1992.
(\fIhttp://www.rfc-editor.org/rfc/rfc1321.txt\fR)
.IP [2]







<
<


<


<
<


<


<
<







<







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
\fB::md5::HMACUpdate\fR \fItoken\fR \fIdata\fR
.TP
\fB::md5::HMACFinal\fR \fItoken\fR
These commands are identical to the MD5 equivalent commands.
.PP
.SH EXAMPLES
.CS


% md5::md5 -hex "Tcl does MD5"
8AAC1EE01E20BB347104FABB90310433

.CE
.CS


% md5::hmac -hex -key Sekret "Tcl does MD5"
35BBA244FD56D3EDF5F3C47474DACB5D

.CE
.CS


% set tok [md5::MD5Init]
::md5::1
% md5::MD5Update $tok "Tcl "
% md5::MD5Update $tok "does "
% md5::MD5Update $tok "MD5"
% md5::Hex [md5::MD5Final $tok]
8AAC1EE01E20BB347104FABB90310433

.CE
.SH REFERENCES
.IP [1]
Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, MIT and
RSA Data Security, Inc, April 1992.
(\fIhttp://www.rfc-editor.org/rfc/rfc1321.txt\fR)
.IP [2]
397
398
399
400
401
402
403
404
405
.SH KEYWORDS
hashing, md5, message-digest, rfc 1320, rfc 1321, rfc 2104, security
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2003, Pat Thoyts <[email protected]>

.fi







<

387
388
389
390
391
392
393

394
.SH KEYWORDS
hashing, md5, message-digest, rfc 1320, rfc 1321, rfc 2104, security
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2003, Pat Thoyts <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
plus "./" (dot and forward-slash) - this is to preserve maximum
compatability with the unix password file format.
.PP
If a password is being generated rather than checked from a password
file then the \fBsalt\fR command may be used to generate a random salt.
.SH EXAMPLES
.CS


% md5crypt::md5crypt password 01234567
$1$01234567$b5lh2mHyD2PdJjFfALlEz1

.CE
.CS


% md5crypt::aprcrypt password 01234567
$apr1$01234567$IXBaQywhAhc0d75ZbaSDp/

.CE
.CS


% md5crypt::md5crypt password [md5crypt::salt]
$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
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2003, Pat Thoyts <[email protected]>

.fi







<
<


<


<
<


<


<
<


<

















<

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
plus "./" (dot and forward-slash) - this is to preserve maximum
compatability with the unix password file format.
.PP
If a password is being generated rather than checked from a password
file then the \fBsalt\fR command may be used to generate a random salt.
.SH EXAMPLES
.CS


% md5crypt::md5crypt password 01234567
$1$01234567$b5lh2mHyD2PdJjFfALlEz1

.CE
.CS


% md5crypt::aprcrypt password 01234567
$apr1$01234567$IXBaQywhAhc0d75ZbaSDp/

.CE
.CS


% md5crypt::md5crypt password [md5crypt::salt]
$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
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2003, Pat Thoyts <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
\fB::mime::getbody\fR \fItoken\fR ?\fB-decode\fR? ?\fB-command\fR \fIcallback\fR ?\fB-blocksize\fR \fIoctets\fR??
This command returns a string containing the body of the leaf MIME
part represented by \fItoken\fR in canonical form.
.sp
If the \fB-command\fR option is present, then it is repeatedly
invoked with a fragment of the body as this:
.CS


  uplevel #0 $callback [list "data" $fragment]

.CE
.sp
(The \fB-blocksize\fR option, if present, specifies the maximum
size of each fragment passed to the callback.)
.sp
When the end of the body is reached, the callback is invoked as:
.CS


    uplevel #0 $callback "end"

.CE
.sp
Alternatively, if an error occurs, the callback is invoked as:
.CS


    uplevel #0 $callback [list "error" reason]

.CE
.sp
Regardless, the return value of the final invocation of the callback
is propagated upwards by \fB::mime::getbody\fR.
.sp
If the \fB-command\fR option is absent, then the return value of
\fB::mime::getbody\fR is a string containing the MIME part's entire







<
<
|
<







<
<
|
<




<
<
|
<







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
\fB::mime::getbody\fR \fItoken\fR ?\fB-decode\fR? ?\fB-command\fR \fIcallback\fR ?\fB-blocksize\fR \fIoctets\fR??
This command returns a string containing the body of the leaf MIME
part represented by \fItoken\fR in canonical form.
.sp
If the \fB-command\fR option is present, then it is repeatedly
invoked with a fragment of the body as this:
.CS


uplevel #0 $callback [list "data" $fragment]

.CE
.sp
(The \fB-blocksize\fR option, if present, specifies the maximum
size of each fragment passed to the callback.)
.sp
When the end of the body is reached, the callback is invoked as:
.CS


uplevel #0 $callback "end"

.CE
.sp
Alternatively, if an error occurs, the callback is invoked as:
.CS


uplevel #0 $callback [list "error" reason]

.CE
.sp
Regardless, the return value of the final invocation of the callback
is propagated upwards by \fB::mime::getbody\fR.
.sp
If the \fB-command\fR option is absent, then the return value of
\fB::mime::getbody\fR is a string containing the MIME part's entire
561
562
563
564
565
566
567
568
569
.SH KEYWORDS
email, internet, mail, mime, net, rfc 2045, rfc 2046, rfc 2049, rfc 821, rfc 822, smtp
.SH CATEGORY
Text processing
.SH COPYRIGHT
.nf
Copyright (c) 1999-2000 Marshall T. Rose

.fi







<

551
552
553
554
555
556
557

558
.SH KEYWORDS
email, internet, mail, mime, net, rfc 2045, rfc 2046, rfc 2049, rfc 821, rfc 822, smtp
.SH CATEGORY
Text processing
.SH COPYRIGHT
.nf
Copyright (c) 1999-2000 Marshall T. Rose

.fi

Changes to embedded/man/files/modules/mime/smtp.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.PP
This is a soft dependency because not everybody requires authentication,
and \fBsasl\fR depends on a lot of the cryptographic (secure) hashes,
i.e. all of \fBmd5\fR, \fBotp\fR, \fBmd4\fR, \fBsha1\fR,
and \fBripemd160\fR.
.SH EXAMPLE
.CS


proc send_simple_message {recipient email_server subject body} {
    package require smtp
    package require mime

    set token [mime::initialize -canonical text/plain \\\\
	-string $body]
    mime::setheader $token Subject $subject
    smtp::sendmessage $token \\\\
	-recipients $recipient -servers $email_server
    mime::finalize $token
}

send_simple_message [email protected] localhost \\\\
    "This is the subject." "This is the message."

.CE
.SH REFERENCES
.IP [1]
Jonathan B. Postel, "SIMPLE MAIL TRANSFER PROTOCOL", RFC 821, August 1982.
(\fIhttp://www.rfc-editor.org/rfc/rfc821.txt\fR)
.IP [2]
J. Klensin, "Simple Mail Transfer Protocol", RFC 2821, April 2001.







<
<

|
|
<
|
|
|
|
|
|

<

|
<







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
.PP
This is a soft dependency because not everybody requires authentication,
and \fBsasl\fR depends on a lot of the cryptographic (secure) hashes,
i.e. all of \fBmd5\fR, \fBotp\fR, \fBmd4\fR, \fBsha1\fR,
and \fBripemd160\fR.
.SH EXAMPLE
.CS


proc send_simple_message {recipient email_server subject body} {
package require smtp
package require mime

set token [mime::initialize -canonical text/plain \\\\
-string $body]
mime::setheader $token Subject $subject
smtp::sendmessage $token \\\\
-recipients $recipient -servers $email_server
mime::finalize $token
}

send_simple_message [email protected] localhost \\\\
"This is the subject." "This is the message."

.CE
.SH REFERENCES
.IP [1]
Jonathan B. Postel, "SIMPLE MAIL TRANSFER PROTOCOL", RFC 821, August 1982.
(\fIhttp://www.rfc-editor.org/rfc/rfc821.txt\fR)
.IP [2]
J. Klensin, "Simple Mail Transfer Protocol", RFC 2821, April 2001.
400
401
402
403
404
405
406
407
408
.SH KEYWORDS
email, internet, mail, mime, net, rfc 2554, rfc 2821, rfc 3207, rfc 821, rfc 822, smtp, tls
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 1999-2000 Marshall T. Rose and others

.fi







<

394
395
396
397
398
399
400

401
.SH KEYWORDS
email, internet, mail, mime, net, rfc 2554, rfc 2821, rfc 3207, rfc 821, rfc 822, smtp, tls
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 1999-2000 Marshall T. Rose and others

.fi

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
.PP
It is possible to have different multiplexers running concurrently.
.TP
\fB::multiplexer::create\fR
The \fBcreate\fR command creates a new multiplexer 'instance'.  For
example:
.CS

set mp [::multiplexer::create]
.CE
.IP
This instance can then be manipulated like so:
.CS

${mp}::Init 35100
.CE
.TP
\fB${multiplexer_instance}::Init\fR \fIport\fR
This starts the multiplexer listening on the specified port.
.TP
\fB${multiplexer_instance}::Config\fR \fIkey\fR \fIvalue\fR







<





<







274
275
276
277
278
279
280

281
282
283
284
285

286
287
288
289
290
291
292
.PP
It is possible to have different multiplexers running concurrently.
.TP
\fB::multiplexer::create\fR
The \fBcreate\fR command creates a new multiplexer 'instance'.  For
example:
.CS

set mp [::multiplexer::create]
.CE
.IP
This instance can then be manipulated like so:
.CS

${mp}::Init 35100
.CE
.TP
\fB${multiplexer_instance}::Init\fR \fIport\fR
This starts the multiplexer listening on the specified port.
.TP
\fB${multiplexer_instance}::Config\fR \fIkey\fR \fIvalue\fR

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

220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







220
221
222
223
224
225
226

227
228
229
230
231
232
233
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
318
319
320
321
322
323
324
325
326
.SH KEYWORDS
extended namespace, info, namespace unknown, namespace utilities, state (de)serialization, unknown hooking, utilities
.SH COPYRIGHT
.nf
Copyright (c) 200? Neil Madden (http://wiki.tcl.tk/12790)
Copyright (c) 200? Various (http://wiki.tcl.tk/1489)
Copyright (c) 2010 Documentation, Andreas Kupries

.fi







<

317
318
319
320
321
322
323

324
.SH KEYWORDS
extended namespace, info, namespace unknown, namespace utilities, state (de)serialization, unknown hooking, utilities
.SH COPYRIGHT
.nf
Copyright (c) 200? Neil Madden (http://wiki.tcl.tk/12790)
Copyright (c) 200? Various (http://wiki.tcl.tk/1489)
Copyright (c) 2010 Documentation, Andreas Kupries

.fi

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
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.
The second element is the form value.
.PP
.SH EXAMPLES
Uploading a file
.CS


HTML:
<html>
<form action="/cgi-bin/upload.cgi" method="POST" enctype="multipart/form-data">
Path: <input type="file" name="filedata"><br>
Name: <input type="text" name="filedesc"><br>
<input type="submit">
</form>
</html>

TCL: upload.cgi
#!/usr/local/bin/tclsh

::ncgi::parse
set filedata [::ncgi::value filedata]
set filedesc [::ncgi::value filedesc]

puts "<html> File uploaded at <a href=\\"/images/$filedesc\\">$filedesc</a> </html>"

set filename /www/images/$filedesc

set fh [open $filename w]
puts -nonewline $fh $filedata
close $fh

.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].







<
<








<


<



<

<

<



<







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
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.
The second element is the form value.
.PP
.SH EXAMPLES
Uploading a file
.CS


HTML:
<html>
<form action="/cgi-bin/upload.cgi" method="POST" enctype="multipart/form-data">
Path: <input type="file" name="filedata"><br>
Name: <input type="text" name="filedesc"><br>
<input type="submit">
</form>
</html>

TCL: upload.cgi
#!/usr/local/bin/tclsh

::ncgi::parse
set filedata [::ncgi::value filedata]
set filedesc [::ncgi::value filedesc]

puts "<html> File uploaded at <a href=\\"/images/$filedesc\\">$filedesc</a> </html>"

set filename /www/images/$filedesc

set fh [open $filename w]
puts -nonewline $fh $filedata
close $fh

.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].

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
To define a handler, see the \fBevent\fR command. There are no GPS specific functions
in this package. NMEA data consists of a sentence type, followed by a list of data.
.SH COMMANDS
.TP
\fB::nmea::input\fR \fIsentence\fR
Processes and dispatches the supplied sentence. If \fIsentence\fR contains no commas it is treated as a Tcl list, otherwise it must be standard comma delimited NMEA data, with an optional checksum and leading \fB$\fR.
.CS


nmea::input {$GPGSA,A,3,04,05,,09,12,,,24,,,,,2.5,1.3,2.1*39}
nmea::input [list GPGSA A 3 04 05  09 12 "" "" 24 "" "" ""  2.5 1.3 2.1]

.CE
.TP
\fB::nmea::open_port\fR \fIport\fR ?speed?
Open the specified COM port and read NMEA sentences when available. Port speed is set to
4800bps by default or to \fIspeed\fR.
.TP
\fB::nmea::close_port\fR







<
<


<







280
281
282
283
284
285
286


287
288

289
290
291
292
293
294
295
To define a handler, see the \fBevent\fR command. There are no GPS specific functions
in this package. NMEA data consists of a sentence type, followed by a list of data.
.SH COMMANDS
.TP
\fB::nmea::input\fR \fIsentence\fR
Processes and dispatches the supplied sentence. If \fIsentence\fR contains no commas it is treated as a Tcl list, otherwise it must be standard comma delimited NMEA data, with an optional checksum and leading \fB$\fR.
.CS


nmea::input {$GPGSA,A,3,04,05,,09,12,,,24,,,,,2.5,1.3,2.1*39}
nmea::input [list GPGSA A 3 04 05  09 12 "" "" 24 "" "" ""  2.5 1.3 2.1]

.CE
.TP
\fB::nmea::open_port\fR \fIport\fR ?speed?
Open the specified COM port and read NMEA sentences when available. Port speed is set to
4800bps by default or to \fIspeed\fR.
.TP
\fB::nmea::close_port\fR
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
for that sentence. The EOF handler is invoked when End Of File is reached on the open file or port.
.sp
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.
The EOF handler has no arguments.
.CS


nmea::event gpgsa parse_sat_detail
nmea::event default handle_unknown

proc parse_sat_detail {data} {
    puts [lindex $data 1]
}

proc handle_unknown {name data} {
    puts "unknown data type $name"
}

.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
.nf
Copyright (c) 2006-2009, Aaron Faupell <[email protected]>

.fi







<
<


<

|

<

|

<
















<

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
for that sentence. The EOF handler is invoked when End Of File is reached on the open file or port.
.sp
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.
The EOF handler has no arguments.
.CS


nmea::event gpgsa parse_sat_detail
nmea::event default handle_unknown

proc parse_sat_detail {data} {
puts [lindex $data 1]
}

proc handle_unknown {name data} {
puts "unknown data type $name"
}

.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
.nf
Copyright (c) 2006-2009, Aaron Faupell <[email protected]>

.fi

Changes to embedded/man/files/modules/nns/nns_auto.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
333
334
335
336
337
338
339
340
341
.SH KEYWORDS
automatic, client, name service, reconnect, restore
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2007-2008 Andreas Kupries <[email protected]>

.fi







<

332
333
334
335
336
337
338

339
.SH KEYWORDS
automatic, client, name service, reconnect, restore
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2007-2008 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/nns/nns_client.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
548
549
550
551
552
553
554
555
556
.SH KEYWORDS
client, name service
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2007-2008 Andreas Kupries <[email protected]>

.fi







<

547
548
549
550
551
552
553

554
.SH KEYWORDS
client, name service
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2007-2008 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/nns/nns_common.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
282
283
284
285
286
287
288
289
290
.SH KEYWORDS
client, name service, server
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2007-2008 Andreas Kupries <[email protected]>

.fi







<

281
282
283
284
285
286
287

288
.SH KEYWORDS
client, name service, server
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2007-2008 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/nns/nns_intro.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
329
330
331
332
333
334
335
336
337
.SH KEYWORDS
client, name service, server
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2008 Andreas Kupries <[email protected]>

.fi







<

328
329
330
331
332
333
334

335
.SH KEYWORDS
client, name service, server
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2008 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/nns/nns_protocol.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
389
390
391
392
393
394
395
396
397
.SH KEYWORDS
comm, name service, protocol
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2007-2008 Andreas Kupries <[email protected]>

.fi







<

388
389
390
391
392
393
394

395
.SH KEYWORDS
comm, name service, protocol
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2007-2008 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/nns/nns_server.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
374
375
376
377
378
379
380
381
382
.SH KEYWORDS
name service, server
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2007-2008 Andreas Kupries <[email protected]>

.fi







<

373
374
375
376
377
378
379

380
.SH KEYWORDS
name service, server
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2007-2008 Andreas Kupries <[email protected]>

.fi

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
Sets the current article pointer to point to the previous message (if there is
one) and returns the msgid of that message.
.TP
\fInntpName\fR \fBlist\fR
Returns a tcl list of valid newsgroups and associated information.  Each
newsgroup is returned as an element in the tcl list with the following format:
.CS


      group last first p

.CE
.IP
where <group> is the name of the newsgroup, <last> is the number of
the last known article currently in that newsgroup, <first> is the
number of the first article currently in the newsgroup, and <p> is
either 'y' or 'n' indicating whether posting to this newsgroup is
allowed ('y') or prohibited ('n').







<
<
|
<







390
391
392
393
394
395
396


397

398
399
400
401
402
403
404
Sets the current article pointer to point to the previous message (if there is
one) and returns the msgid of that message.
.TP
\fInntpName\fR \fBlist\fR
Returns a tcl list of valid newsgroups and associated information.  Each
newsgroup is returned as an element in the tcl list with the following format:
.CS


group last first p

.CE
.IP
where <group> is the name of the newsgroup, <last> is the number of
the last known article currently in that newsgroup, <first> is the
number of the first article currently in the newsgroup, and <p> is
either 'y' or 'n' indicating whether posting to this newsgroup is
allowed ('y') or prohibited ('n').
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
\fInntpName\fR \fBnewgroups\fR \fIsince\fR
Query the server for a list of all the new newsgroups created since the time
specified by the argument \fIsince\fR.  The argument \fIsince\fR can be any
time string that is understood by \fBclock scan\fR. The tcl list of newsgroups
is returned in a similar form to the list of groups returned by the
\fBnntpName list\fR command.  Each element of the list has the form:
.CS


      group last first p

.CE
.IP
where <group> is the name of the newsgroup, <last> is the number of
the last known article currently in that newsgroup, <first> is the
number of the first article currently in the newsgroup, and <p> is
either 'y' or 'n' indicating whether posting to this newsgroup is
allowed ('y') or prohibited ('n').







<
<
|
<







419
420
421
422
423
424
425


426

427
428
429
430
431
432
433
\fInntpName\fR \fBnewgroups\fR \fIsince\fR
Query the server for a list of all the new newsgroups created since the time
specified by the argument \fIsince\fR.  The argument \fIsince\fR can be any
time string that is understood by \fBclock scan\fR. The tcl list of newsgroups
is returned in a similar form to the list of groups returned by the
\fBnntpName list\fR command.  Each element of the list has the form:
.CS


group last first p

.CE
.IP
where <group> is the name of the newsgroup, <last> is the number of
the last known article currently in that newsgroup, <first> is the
number of the first article currently in the newsgroup, and <p> is
either 'y' or 'n' indicating whether posting to this newsgroup is
allowed ('y') or prohibited ('n').
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
\fInntpName\fR \fBquit\fR
Gracefully close the connection after sending a NNTP QUIT command down
the socket.
.TP
\fInntpName\fR \fBxgtitle\fR ?\fIgroup_pattern\fR?
Returns a tcl list where each element is of the form:
.CS


newsgroup description

.CE
.IP
If a \fIgroup_pattern\fR is specified then only newsgroups that match
the pattern will have their name and description returned.
.TP
\fInntpName\fR \fBxhdr\fR \fIfield\fR ?\fIrange\fR?
Returns the specified header field value for the current message or for a
list of messages from the current group.  \fIfield\fR is the title of a
field in the header such as from, subject, date, etc.  If \fIrange\fR is
not specified or is "" then the current message is queried.  The command
returns a list of elements where each element has the form of:
.CS


    msgid value

.CE
.IP
Where msgid is the number of the message and value is the value set for the
queried field.  The \fIrange\fR argument can be in any of the following forms:
.RS
.TP
\fB""\fR







<
<

<












<
<
|
<







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
\fInntpName\fR \fBquit\fR
Gracefully close the connection after sending a NNTP QUIT command down
the socket.
.TP
\fInntpName\fR \fBxgtitle\fR ?\fIgroup_pattern\fR?
Returns a tcl list where each element is of the form:
.CS


newsgroup description

.CE
.IP
If a \fIgroup_pattern\fR is specified then only newsgroups that match
the pattern will have their name and description returned.
.TP
\fInntpName\fR \fBxhdr\fR \fIfield\fR ?\fIrange\fR?
Returns the specified header field value for the current message or for a
list of messages from the current group.  \fIfield\fR is the title of a
field in the header such as from, subject, date, etc.  If \fIrange\fR is
not specified or is "" then the current message is queried.  The command
returns a list of elements where each element has the form of:
.CS


msgid value

.CE
.IP
Where msgid is the number of the message and value is the value set for the
queried field.  The \fIrange\fR argument can be in any of the following forms:
.RS
.TP
\fB""\fR
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
.RE
.TP
\fInntpName\fR \fBxover\fR ?\fIrange\fR?
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:
.CS


    msgid subject from date idstring bodysize headersize xref

.CE
.IP
If \fIrange\fR is not specified or is "" then the current message is queried.
The \fIrange\fR argument can be in any of the following forms:
.RS
.TP
\fB""\fR







<
<
|
<







511
512
513
514
515
516
517


518

519
520
521
522
523
524
525
.RE
.TP
\fInntpName\fR \fBxover\fR ?\fIrange\fR?
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:
.CS


msgid subject from date idstring bodysize headersize xref

.CE
.IP
If \fIrange\fR is not specified or is "" then the current message is queried.
The \fIrange\fR argument can be in any of the following forms:
.RS
.TP
\fB""\fR
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
\fInntpName\fR \fBxpat\fR \fIfield\fR \fIrange\fR ?\fIpattern_list\fR?
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.  \fIfield\fR is the title of a
field in the header such as from, subject, date, etc.  The information is
returned in a tcl list where each element is of the form:
.CS


    msgid value

.CE
.IP
Where msgid is the number of the message and value is the value set for the
queried field.  The \fIrange\fR argument can be in any of the following forms:
.RS
.TP
\fImsgid\fR







<
<
|
<







537
538
539
540
541
542
543


544

545
546
547
548
549
550
551
\fInntpName\fR \fBxpat\fR \fIfield\fR \fIrange\fR ?\fIpattern_list\fR?
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.  \fIfield\fR is the title of a
field in the header such as from, subject, date, etc.  The information is
returned in a tcl list where each element is of the form:
.CS


msgid value

.CE
.IP
Where msgid is the number of the message and value is the value set for the
queried field.  The \fIrange\fR argument can be in any of the following forms:
.RS
.TP
\fImsgid\fR
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
(including \fImsgid1\fR and \fImsgid2\fR) are queried.
.RE
.PP
.SH EXAMPLE
A bigger example for posting a single article.
.PP
.CS


    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"

.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







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












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
(including \fImsgid1\fR and \fImsgid2\fR) are queried.
.RE
.PP
.SH EXAMPLE
A bigger example for posting a single article.
.PP
.CS


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"

.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

Changes to embedded/man/files/modules/ntp/ntp_time.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
\fB::time::wait\fR \fItoken\fR
Wait for a query to complete and return the status upon completion.
.TP
\fB::time::cleanup\fR \fItoken\fR
Remove all state variables associated with the request.
.PP
.CS


% set tok [::time::gettime ntp2a.mcc.ac.uk]
% set t [::time::unixtime $tok]
% ::time::cleanup $tok

.CE
.CS


% set tok [::time::getsntp pool.ntp.org]
% set t [::time::unixtime $tok]
% ::time::cleanup $tok

.CE
.CS


proc on_time {token} {
   if {[time::status $token] eq "ok"} {
      puts [clock format [time::unixtime $token]]
   } else {
      puts [time::error $token]
   }
   time::cleanup $token
}
time::getsntp -command on_time pool.ntp.org

.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
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2002, Pat Thoyts <[email protected]>

.fi







<
<



<


<
<



<


<
<

|
|
|
|
|
|


<



















<

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
\fB::time::wait\fR \fItoken\fR
Wait for a query to complete and return the status upon completion.
.TP
\fB::time::cleanup\fR \fItoken\fR
Remove all state variables associated with the request.
.PP
.CS


% set tok [::time::gettime ntp2a.mcc.ac.uk]
% set t [::time::unixtime $tok]
% ::time::cleanup $tok

.CE
.CS


% set tok [::time::getsntp pool.ntp.org]
% set t [::time::unixtime $tok]
% ::time::cleanup $tok

.CE
.CS


proc on_time {token} {
if {[time::status $token] eq "ok"} {
puts [clock format [time::unixtime $token]]
} else {
puts [time::error $token]
}
time::cleanup $token
}
time::getsntp -command on_time pool.ntp.org

.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
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2002, Pat Thoyts <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
class, available to a user of the class and of derived classes.
.sp
Note: The command is equivalent to the command \fBtypemethod\fR
provided by the OO package \fBsnit\fR for the same purpose.
.sp
Example
.CS


oo::class create ActiveRecord {
    classmethod find args { puts "[self] called with arguments: $args" }
}
oo::class create Table {
    superclass ActiveRecord
}
puts [Table find foo bar]
# ======
# which will write
# ======
# ::Table called with arguments: foo bar

.CE
.TP
\fBclassvariable\fR ?\fIarg\fR...?
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
instance belongs to. In other words, the referenced variables are shared
between all instances of their class.
.sp
Note: The command is roughly equivalent to the command
\fBtypevariable\fR provided by the OO package \fBsnit\fR for the
same purpose. The difference is that it cannot be used in the class
definition itself.
.sp
Example:
.CS


% oo::class create Foo {
    method bar {z} {
        classvariable x y
        return [incr x $z],[incr y]
    }
}
::Foo
% Foo create a
::a
% Foo create b
::b
% a bar 2
2,1
% a bar 3
5,2
% b bar 7
12,3
% b bar -1
11,4
% a bar 0
11,5

.CE
.TP
\fBooutil::singleton\fR ?\fIarg\fR...?
This command is a meta-class, i.e. a variant of the builtin
\fBoo::class\fR which ensures that it creates only a single
instance of the classes defined with it.
.sp
Syntax and results are like for \fBoo::class\fR.
.sp
Example:
.CS


% oo::class create example {
   self mixin singleton
   method foo {} {self}
}
::example
% [example new] foo
::oo::Obj22
% [example new] foo
::oo::Obj22

.CE
.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
Utility
.SH COPYRIGHT
.nf
Copyright (c) 2011-2013 Andreas Kupries, BSD licensed

.fi







<
<

|


|






<
















<
<

|
|
|
|
















<











<
<

|
|






<




















<

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
class, available to a user of the class and of derived classes.
.sp
Note: The command is equivalent to the command \fBtypemethod\fR
provided by the OO package \fBsnit\fR for the same purpose.
.sp
Example
.CS


oo::class create ActiveRecord {
classmethod find args { puts "[self] called with arguments: $args" }
}
oo::class create Table {
superclass ActiveRecord
}
puts [Table find foo bar]
# ======
# which will write
# ======
# ::Table called with arguments: foo bar

.CE
.TP
\fBclassvariable\fR ?\fIarg\fR...?
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
instance belongs to. In other words, the referenced variables are shared
between all instances of their class.
.sp
Note: The command is roughly equivalent to the command
\fBtypevariable\fR provided by the OO package \fBsnit\fR for the
same purpose. The difference is that it cannot be used in the class
definition itself.
.sp
Example:
.CS


% oo::class create Foo {
method bar {z} {
classvariable x y
return [incr x $z],[incr y]
}
}
::Foo
% Foo create a
::a
% Foo create b
::b
% a bar 2
2,1
% a bar 3
5,2
% b bar 7
12,3
% b bar -1
11,4
% a bar 0
11,5

.CE
.TP
\fBooutil::singleton\fR ?\fIarg\fR...?
This command is a meta-class, i.e. a variant of the builtin
\fBoo::class\fR which ensures that it creates only a single
instance of the classes defined with it.
.sp
Syntax and results are like for \fBoo::class\fR.
.sp
Example:
.CS


% oo::class create example {
self mixin singleton
method foo {} {self}
}
::example
% [example new] foo
::oo::Obj22
% [example new] foo
::oo::Obj22

.CE
.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
Utility
.SH COPYRIGHT
.nf
Copyright (c) 2011-2013 Andreas Kupries, BSD licensed

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
.TP
\fB::otp::otp-sha1\fR ?\fI-hex\fR? ?\fI-words\fR? \fI-seed seed\fR \fI-count count\fR \fIdata\fR
.TP
\fB::otp::otp-rmd160\fR ?\fI-hex\fR? ?\fI-words\fR? \fI-seed seed\fR \fI-count count\fR \fIdata\fR
.PP
.SH EXAMPLES
.CS


% otp::otp-md5 -count 99 -seed host67821 "My Secret Pass Phrase"
(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

.CE
.SH REFERENCES
.IP [1]
Haller, N. et al., "A One-Time Password System", RFC 2289, February 1998.
\fIhttp://www.rfc-editor.org/rfc/rfc2289.txt\fR
.IP [2]
Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, MIT and







<
<






<







276
277
278
279
280
281
282


283
284
285
286
287
288

289
290
291
292
293
294
295
.TP
\fB::otp::otp-sha1\fR ?\fI-hex\fR? ?\fI-words\fR? \fI-seed seed\fR \fI-count count\fR \fIdata\fR
.TP
\fB::otp::otp-rmd160\fR ?\fI-hex\fR? ?\fI-words\fR? \fI-seed seed\fR \fI-count count\fR \fIdata\fR
.PP
.SH EXAMPLES
.CS


% otp::otp-md5 -count 99 -seed host67821 "My Secret Pass Phrase"
(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

.CE
.SH REFERENCES
.IP [1]
Haller, N. et al., "A One-Time Password System", RFC 2289, February 1998.
\fIhttp://www.rfc-editor.org/rfc/rfc2289.txt\fR
.IP [2]
Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, MIT and
323
324
325
326
327
328
329
330
331
.SH KEYWORDS
hashing, message-digest, password, rfc 2289, security
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2006, Pat Thoyts <[email protected]>

.fi







<

319
320
321
322
323
324
325

326
.SH KEYWORDS
hashing, message-digest, password, rfc 2289, security
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2006, Pat Thoyts <[email protected]>

.fi

Changes to embedded/man/files/modules/page/page_intro.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
267
268
269
270
271
272
273
274
275
.SH KEYWORDS
page, parser generator, text processing
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi







<

266
267
268
269
270
271
272

273
.SH KEYWORDS
page, parser generator, text processing
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/page/page_pluginmgr.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
1007
1008
1009
1010
1011
1012
1013
1014
1015
.SH KEYWORDS
page, parser generator, text processing
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi







<

1006
1007
1008
1009
1010
1011
1012

1013
.SH KEYWORDS
page, parser generator, text processing
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/page/page_util_flow.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
319
320
321
322
323
324
325
326
327
.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 <[email protected]>

.fi







<

318
319
320
321
322
323
324

325
.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 <[email protected]>

.fi

Changes to embedded/man/files/modules/page/page_util_norm_lemon.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
275
276
277
278
279
280
281
282
283
.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 <[email protected]>

.fi







<

274
275
276
277
278
279
280

281
.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 <[email protected]>

.fi

Changes to embedded/man/files/modules/page/page_util_norm_peg.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
324
325
326
327
328
329
330
331
332
.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 <[email protected]>

.fi







<

323
324
325
326
327
328
329

330
.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 <[email protected]>

.fi

Changes to embedded/man/files/modules/page/page_util_peg.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
As \fB::page::util::peg::symbolNodeOf\fR, but returns the symbol name
instead of the node.
.TP
\fB::page::util::peg::updateUndefinedDueRemoval\fR \fItree\fR
The removal of nodes in the AST \fItree\fR can cause symbols to lose
one or more users.
.CS


	A used by B and C,
	B is reachable,
	C is not,

	so A now loses the node in the expression for C calling it,
	or rather, not calling it anymore.

.CE
.IP
This command updates the cross-references and which nonterminals are
now undefined.
.TP
\fB::page::util::peg::flatten\fR \fItreequery\fR \fItree\fR
This commands flattens nested sequence and choice operators in the AST







<
<
|
|
|
<
|
|
<







284
285
286
287
288
289
290


291
292
293

294
295

296
297
298
299
300
301
302
As \fB::page::util::peg::symbolNodeOf\fR, but returns the symbol name
instead of the node.
.TP
\fB::page::util::peg::updateUndefinedDueRemoval\fR \fItree\fR
The removal of nodes in the AST \fItree\fR can cause symbols to lose
one or more users.
.CS


A used by B and C,
B is reachable,
C is not,

so A now loses the node in the expression for C calling it,
or rather, not calling it anymore.

.CE
.IP
This command updates the cross-references and which nonterminals are
now undefined.
.TP
\fB::page::util::peg::flatten\fR \fItreequery\fR \fItree\fR
This commands flattens nested sequence and choice operators in the AST
346
347
348
349
350
351
352
353
354
.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 <[email protected]>

.fi







<

341
342
343
344
345
346
347

348
.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 <[email protected]>

.fi

Changes to embedded/man/files/modules/page/page_util_quote.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
300
301
302
303
304
305
306
307
308
.SH KEYWORDS
page, parser generator, quoting, text processing
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi







<

299
300
301
302
303
304
305

306
.SH KEYWORDS
page, parser generator, quoting, text processing
.SH CATEGORY
Page Parser Generator
.SH COPYRIGHT
.nf
Copyright (c) 2007 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
CAs can be children of this CA in a depth-wise fashion.  A value of "0"
for the \fIcaDepth\fR argument means that this CA cannot sign a CA
certificate and have the result be valid.  A value of "-1" indicates
infinite depth.
.PP
.SH EXAMPLES
.CS



.CE
.CS



.CE
.SH REFERENCES
.IP [1]
.PP
.SH AUTHORS
Roy Keene
.SH "BUGS, IDEAS, FEEDBACK"







<
<
<


<
<
<







427
428
429
430
431
432
433



434
435



436
437
438
439
440
441
442
CAs can be children of this CA in a depth-wise fashion.  A value of "0"
for the \fIcaDepth\fR argument means that this CA cannot sign a CA
certificate and have the result be valid.  A value of "-1" indicates
infinite depth.
.PP
.SH EXAMPLES
.CS



.CE
.CS



.CE
.SH REFERENCES
.IP [1]
.PP
.SH AUTHORS
Roy Keene
.SH "BUGS, IDEAS, FEEDBACK"
458
459
460
461
462
463
464
465
466
.SH KEYWORDS
cipher, data integrity, encryption, public key cipher, rsa, security
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2010, 2011, 2012, 2013, Roy Keene, Andreas Kupries

.fi







<

451
452
453
454
455
456
457

458
.SH KEYWORDS
cipher, data integrity, encryption, public key cipher, rsa, security
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2010, 2011, 2012, 2013, Roy Keene, Andreas Kupries

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
prefix of \fIname\fR, with conversion of :-sequences into the proper
separator (underscore for environment variables, backslash for
registry entries, and / for directories).
.sp
Examples:
.sp
.CS


    ::pluginmgr::paths ::obj docidx

    => env  DOCIDX_PLUGINS
       reg  HKEY_LOCAL_MACHINE\\SOFTWARE\\docidx\\PLUGINS
       reg  HKEY_CURRENT_USER\\SOFTWARE\\docidx\\PLUGINS
       path ~/.docidx/plugins

    ::pluginmgr::paths ::obj doctools::idx

    => env  DOCTOOLS_PLUGINS
       env  DOCTOOLS_IDX_PLUGINS
       reg  HKEY_LOCAL_MACHINE\\SOFTWARE\\doctools\\PLUGINS
       reg  HKEY_LOCAL_MACHINE\\SOFTWARE\\doctools\\idx\\PLUGINS
       reg  HKEY_CURRENT_USER\\SOFTWARE\\doctools\\PLUGINS
       reg  HKEY_CURRENT_USER\\SOFTWARE\\doctools\\idx\\PLUGINS
       path ~/.doctools/plugin
       path ~/.doctools/idx/plugin

.CE
.PP
.SS "OBJECT COMMAND"
All commands created by the command \fB::pluginmgr\fR (See section
\fBPACKAGE COMMANDS\fR) have the following general form and may
be used to invoke various operations on their plugin manager object.
.TP







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







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
prefix of \fIname\fR, with conversion of :-sequences into the proper
separator (underscore for environment variables, backslash for
registry entries, and / for directories).
.sp
Examples:
.sp
.CS


::pluginmgr::paths ::obj docidx

=> env  DOCIDX_PLUGINS
reg  HKEY_LOCAL_MACHINE\\SOFTWARE\\docidx\\PLUGINS
reg  HKEY_CURRENT_USER\\SOFTWARE\\docidx\\PLUGINS
path ~/.docidx/plugins

::pluginmgr::paths ::obj doctools::idx

=> env  DOCTOOLS_PLUGINS
env  DOCTOOLS_IDX_PLUGINS
reg  HKEY_LOCAL_MACHINE\\SOFTWARE\\doctools\\PLUGINS
reg  HKEY_LOCAL_MACHINE\\SOFTWARE\\doctools\\idx\\PLUGINS
reg  HKEY_CURRENT_USER\\SOFTWARE\\doctools\\PLUGINS
reg  HKEY_CURRENT_USER\\SOFTWARE\\doctools\\idx\\PLUGINS
path ~/.doctools/plugin
path ~/.doctools/idx/plugin

.CE
.PP
.SS "OBJECT COMMAND"
All commands created by the command \fB::pluginmgr\fR (See section
\fBPACKAGE COMMANDS\fR) have the following general form and may
be used to invoke various operations on their plugin manager object.
.TP
591
592
593
594
595
596
597
598
599
.SH KEYWORDS
plugin management, plugin search
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2005 Andreas Kupries <[email protected]>

.fi







<

584
585
586
587
588
589
590

591
.SH KEYWORDS
plugin management, plugin search
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2005 Andreas Kupries <[email protected]>

.fi

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

219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







219
220
221
222
223
224
225

226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
393
394
395
396
397
398
399
400
401
comment, image, png, timestamp
.SH CATEGORY
File formats
.SH COPYRIGHT
.nf
Copyright (c) 2004, Code: Aaron Faupell <[email protected]>
Copyright (c) 2004, Doc:  Andreas Kupries <[email protected]>

.fi







<

392
393
394
395
396
397
398

399
comment, image, png, timestamp
.SH CATEGORY
File formats
.SH COPYRIGHT
.nf
Copyright (c) 2004, Code: Aaron Faupell <[email protected]>
Copyright (c) 2004, Doc:  Andreas Kupries <[email protected]>

.fi

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
\fBTLS\fR and then using either the option \fB-socketcmd\fR or
the option \fB-stls\fR of the command \fBpop3::open\fR.
The first method, option \fB-socketcmd\fR, will force the use
of the \fBtls::socket\fR command when opening the connection. This is
suitable for POP3 servers which expect SSL connections only. These will
generally be listening on port 995.
.CS


	package require tls
	tls::init -cafile /path/to/ca/cert -keyfile ...

	# Create secured pop3 channel
	pop3::open -socketcmd tls::socket \\\\
		$thehost $theuser $thepassword

	...

.CE
The second method, option \fB-stls\fR, will connect to the standard POP3
port and then perform an STARTTLS handshake. This will only work for POP3
servers which have this capability. The package will confirm that the
server supports STARTTLS and the handshake was performed correctly before
proceeding with authentication.
.CS


	package require tls
	tls::init -cafile /path/to/ca/cert -keyfile ...

	# Create secured pop3 channel
	pop3::open -stls 1 \\\\
		$thehost $theuser $thepassword

	...

.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







<
<
|
|
<
|
|
|
<
|
<







<
<
|
|
<
|
|
|
<
|
<












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
\fBTLS\fR and then using either the option \fB-socketcmd\fR or
the option \fB-stls\fR of the command \fBpop3::open\fR.
The first method, option \fB-socketcmd\fR, will force the use
of the \fBtls::socket\fR command when opening the connection. This is
suitable for POP3 servers which expect SSL connections only. These will
generally be listening on port 995.
.CS


package require tls
tls::init -cafile /path/to/ca/cert -keyfile ...

# Create secured pop3 channel
pop3::open -socketcmd tls::socket \\\\
$thehost $theuser $thepassword

\...

.CE
The second method, option \fB-stls\fR, will connect to the standard POP3
port and then perform an STARTTLS handshake. This will only work for POP3
servers which have this capability. The package will confirm that the
server supports STARTTLS and the handshake was performed correctly before
proceeding with authentication.
.CS


package require tls
tls::init -cafile /path/to/ca/cert -keyfile ...

# Create secured pop3 channel
pop3::open -stls 1 \\\\
$thehost $theuser $thepassword

\...

.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

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

219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







219
220
221
222
223
224
225

226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.PP
.SH "SECURE MAIL TRANSFER"
The option \fB-socket\fR (see \fBOptions\fR) enables users of
the package to override how the server opens its listening socket.
The envisioned main use is the specification of the \fBtls::socket\fR
command, see package \fBtls\fR, to secure the communication.
.CS


	package require tls
	tls::init \\\\
		...

	pop3d::new S -socket tls::socket
	...

.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 \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
.nf
Copyright (c) 2002-2009 Andreas Kupries <[email protected]>
Copyright (c) 2005 Reinhard Max  <[email protected]>

.fi







<
<
|
|
|
<
|
|
<
















<

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
.PP
.SH "SECURE MAIL TRANSFER"
The option \fB-socket\fR (see \fBOptions\fR) enables users of
the package to override how the server opens its listening socket.
The envisioned main use is the specification of the \fBtls::socket\fR
command, see package \fBtls\fR, to secure the communication.
.CS


package require tls
tls::init \\\\
\...

pop3d::new S -socket tls::socket
\...

.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 \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
.nf
Copyright (c) 2002-2009 Andreas Kupries <[email protected]>
Copyright (c) 2005 Reinhard Max  <[email protected]>

.fi

Changes to embedded/man/files/modules/pop3d/pop3d_dbox.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
400
401
402
403
404
405
406
407
408
.SH KEYWORDS
internet, network, pop3, protocol, rfc 822
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2002 Andreas Kupries <[email protected]>

.fi







<

399
400
401
402
403
404
405

406
.SH KEYWORDS
internet, network, pop3, protocol, rfc 822
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2002 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pop3d/pop3d_udb.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
349
350
351
352
353
354
355
356
357
.SH KEYWORDS
internet, network, pop3, protocol
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2002 Andreas Kupries <[email protected]>

.fi







<

348
349
350
351
352
353
354

355
.SH KEYWORDS
internet, network, pop3, protocol
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2002 Andreas Kupries <[email protected]>

.fi

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
provides code which can be used in conjunction with a generic parser
(also known as a grammar interpreter), and the last two (\fBjson\fR
and \fBpeg\fR) are doing double-duty as input formats, allowing the
transformation of grammars for exchange, reformatting, and the like.
.PP
The created parsers fall into three categories:
.PP
.PS
.nf
                       + --- C ---> critcl, c
                       |
    + --- specialized -+
    |                  |
 ---+                  + --- Tcl -> snit, oo
    |
    + --- interpreted (Tcl) ------> container
.fi
.PE
.PP
.TP
\fBSpecialized parsers implemented in C\fR
The fastest parsers are created when using the result formats
\fBc\fR and \fBcritcl\fR. The first returns the raw C code for the
parser, while the latter wraps it into a Tcl package using
\fICriTcl\fR.







|
|








|







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
provides code which can be used in conjunction with a generic parser
(also known as a grammar interpreter), and the last two (\fBjson\fR
and \fBpeg\fR) are doing double-duty as input formats, allowing the
transformation of grammars for exchange, reformatting, and the like.
.PP
The created parsers fall into three categories:
.PP
\.PS
\.nf
                       + --- C ---> critcl, c
                       |
    + --- specialized -+
    |                  |
 ---+                  + --- Tcl -> snit, oo
    |
    + --- interpreted (Tcl) ------> container
.fi
\.PE
.PP
.TP
\fBSpecialized parsers implemented in C\fR
The fastest parsers are created when using the result formats
\fBc\fR and \fBcritcl\fR. The first returns the raw C code for the
parser, while the latter wraps it into a Tcl package using
\fICriTcl\fR.
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
input, following the outline shown in the figure below:
.PP
IMAGE: flow
.PP
Our grammar, assumed to the stored in the file "\fIcalculator.peg\fR"
is
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
From this we create a snit-based parser
via
.CS


pt generate snit calculator.tcl -class calculator -name calculator peg calculator.peg

.CE
which leaves us with the parser package and class written to the file
"\fIcalculator.tcl\fR".
Assuming that this package is then properly installed in a place where
Tcl can find it we can now use this class via a script like
.CS


    package require calculator

    lassign $argv input
    set channel [open $input r]

    set parser [calculator]
    set ast [$parser parse $channel]
    $parser destroy
    close $channel

    ... now process the returned abstract syntax tree ...

.CE
where the abstract syntax tree stored in the variable will look like
.PP
.CS


set ast {Expression 0 4
    {Factor 0 4
        {Term 0 2
            {Number 0 2
                {Digit 0 0}
                {Digit 1 1}
                {Digit 2 2}
            }
        }
        {AddOp 3 3}
        {Term 4 4
            {Number 4 4
                {Digit 4 4}
            }
        }
    }
}

.CE
.PP
assuming that the input file and channel contained the text
.CS

 120+5
.CE
A more graphical representation of the tree would be
.PP
.PS
.nf
                                                           +- Digit 0 0 | 1
                                                           |            |
                               +- Term 0 2 --- Number 0 2 -+- Digit 1 1 | 2
                               |                           |            |
                               |                           +- Digit 2 2 | 0
                               |                                        |
Expression 0 4 --- Factor 0 4 -+----------------------------- AddOp 3 3 | +
                               |                                        |
                               +- Term 4 4 --- Number 4 4 --- Digit 4 4 | 5
.fi
.PE
.PP
Regardless, at this point it is the user's responsibility to work with
the tree to reach whatever goal she desires. I.e. analyze it,
transform it, etc. The package \fBpt::ast\fR should be of help
here, providing commands to walk such ASTs structures in various ways.
.PP
One important thing to note is that the parsers used here return a







<
<

|
|
|
|
|
|
|
|

<




<
<

<






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




<
<

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

<




<
|



|
|










|







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
input, following the outline shown in the figure below:
.PP
IMAGE: flow
.PP
Our grammar, assumed to the stored in the file "\fIcalculator.peg\fR"
is
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
From this we create a snit-based parser
via
.CS


pt generate snit calculator.tcl -class calculator -name calculator peg calculator.peg

.CE
which leaves us with the parser package and class written to the file
"\fIcalculator.tcl\fR".
Assuming that this package is then properly installed in a place where
Tcl can find it we can now use this class via a script like
.CS


package require calculator

lassign $argv input
set channel [open $input r]

set parser [calculator]
set ast [$parser parse $channel]
$parser destroy
close $channel

\... now process the returned abstract syntax tree ...

.CE
where the abstract syntax tree stored in the variable will look like
.PP
.CS


set ast {Expression 0 4
{Factor 0 4
{Term 0 2
{Number 0 2
{Digit 0 0}
{Digit 1 1}
{Digit 2 2}
}
}
{AddOp 3 3}
{Term 4 4
{Number 4 4
{Digit 4 4}
}
}
}
}

.CE
.PP
assuming that the input file and channel contained the text
.CS

120+5
.CE
A more graphical representation of the tree would be
.PP
\.PS
\.nf
                                                           +- Digit 0 0 | 1
                                                           |            |
                               +- Term 0 2 --- Number 0 2 -+- Digit 1 1 | 2
                               |                           |            |
                               |                           +- Digit 2 2 | 0
                               |                                        |
Expression 0 4 --- Factor 0 4 -+----------------------------- AddOp 3 3 | +
                               |                                        |
                               +- Term 4 4 --- Number 4 4 --- Digit 4 4 | 5
.fi
\.PE
.PP
Regardless, at this point it is the user's responsibility to work with
the tree to reach whatever goal she desires. I.e. analyze it,
transform it, etc. The package \fBpt::ast\fR should be of help
here, providing commands to walk such ASTs structures in various ways.
.PP
One important thing to note is that the parsers used here return a
912
913
914
915
916
917
918
919
920
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

895
896
897
898
899
900
901

902
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_astree.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.RE
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression grammar below
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
and the input string
.CS

 120+5
.CE
then a parser should deliver the abstract syntax tree below (except for whitespace)
.PP
.CS


set ast {Expression 0 4
    {Factor 0 4
        {Term 0 2
            {Number 0 2
                {Digit 0 0}
                {Digit 1 1}
                {Digit 2 2}
            }
        }
        {AddOp 3 3}
        {Term 4 4
            {Number 4 4
                {Digit 4 4}
            }
        }
    }
}

.CE
.PP
Or, more graphical
.PP
.PS
.nf
                                                           +- Digit 0 0 | 1
                                                           |            |
                               +- Term 0 2 --- Number 0 2 -+- Digit 1 1 | 2
                               |                           |            |
                               |                           +- Digit 2 2 | 0
                               |                                        |
Expression 0 4 --- Factor 0 4 -+----------------------------- AddOp 3 3 | +
                               |                                        |
                               +- Term 4 4 --- Number 4 4 --- Digit 4 4 | 5
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<

|
|
|
|
|
|
|
|

<




<
|




<
<

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

<




|
|










|















<

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
.RE
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression grammar below
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
and the input string
.CS

120+5
.CE
then a parser should deliver the abstract syntax tree below (except for whitespace)
.PP
.CS


set ast {Expression 0 4
{Factor 0 4
{Term 0 2
{Number 0 2
{Digit 0 0}
{Digit 1 1}
{Digit 2 2}
}
}
{AddOp 3 3}
{Term 4 4
{Number 4 4
{Digit 4 4}
}
}
}
}

.CE
.PP
Or, more graphical
.PP
\.PS
\.nf
                                                           +- Digit 0 0 | 1
                                                           |            |
                               +- Term 0 2 --- Number 0 2 -+- Digit 1 1 | 2
                               |                           |            |
                               |                           +- Digit 2 2 | 0
                               |                                        |
Expression 0 4 --- Factor 0 4 -+----------------------------- AddOp 3 3 | +
                               |                                        |
                               +- Term 4 4 --- Number 4 4 --- Digit 4 4 | 5
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_cparam_config_critcl.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
294
295
296
297
298
299
300
301
302
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

293
294
295
296
297
298
299

300
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_from_api.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
A single usage cycle of a plugin consists of an invokation of
the command \fBimport\fR. This call has to leave the plugin in
a state where another usage cycle can be run without problems.
.PP
.SH USAGE
To use a converter do
.CS


    # Get the converter (single command here, not class)
    package require the-converter-package

    # Perform the conversion
    set serial [theconverter convert $thegrammartext]

    ... process the result ...

.CE
To use a plugin \fBFOO\fR do
.CS


    # Get an import plugin manager
    package require pt::peg::import
    pt::peg::import I

    # Run the plugin, and the converter inside.
    set serial [I import serial $thegrammartext FOO]

    ... process the result ...

.CE
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.
.PP
We distinguish between \fIregular\fR and \fIcanonical\fR







<
<
|
|
<
|
|
<
|
<



<
<
|
|
|
<
|
|
<
|
<







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
A single usage cycle of a plugin consists of an invokation of
the command \fBimport\fR. This call has to leave the plugin in
a state where another usage cycle can be run without problems.
.PP
.SH USAGE
To use a converter do
.CS


# Get the converter (single command here, not class)
package require the-converter-package

# Perform the conversion
set serial [theconverter convert $thegrammartext]

\... process the result ...

.CE
To use a plugin \fBFOO\fR do
.CS


# Get an import plugin manager
package require pt::peg::import
pt::peg::import I

# Run the plugin, and the converter inside.
set serial [I import serial $thegrammartext FOO]

\... process the result ...

.CE
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.
.PP
We distinguish between \fIregular\fR and \fIcanonical\fR
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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_introduction.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
403
404
405
406
407
408
409
410
411
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

402
403
404
405
406
407
408

409
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_json_language.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
the parsing expressions themselves are not translated further, but
kept as JSON strings containing a nested Tcl list, and there is no
concept of canonicity for the JSON either.
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
a JSON serialization for it is
.PP
.CS


{
    "pt::grammar::peg" : {
        "rules" : {
            "AddOp"     : {
                "is"   : "\\/ {t -} {t +}",
                "mode" : "value"
            },
            "Digit"     : {
                "is"   : "\\/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}",
                "mode" : "value"
            },
            "Expression" : {
                "is"   : "\\/ {x {t (} {n Expression} {t )}} {x {n Factor} {* {x {n MulOp} {n Factor}}}}",
                "mode" : "value"
            },
            "Factor"    : {
                "is"   : "x {n Term} {* {x {n AddOp} {n Term}}}",
                "mode" : "value"
            },
            "MulOp"     : {
                "is"   : "\\/ {t *} {t \\/}",
                "mode" : "value"
            },
            "Number"    : {
                "is"   : "x {? {n Sign}} {+ {n Digit}}",
                "mode" : "value"
            },
            "Sign"      : {
                "is"   : "\\/ {t -} {t +}",
                "mode" : "value"
            },
            "Term"      : {
                "is"   : "n Number",
                "mode" : "value"
            }
        },
        "start" : "n Expression"
    }
}

.CE
.PP
and a Tcl serialization of the same is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
The similarity of the latter to the JSON should be quite obvious.
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
the parsing expressions themselves are not translated further, but
kept as JSON strings containing a nested Tcl list, and there is no
concept of canonicity for the JSON either.
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
a JSON serialization for it is
.PP
.CS


{
"pt::grammar::peg" : {
"rules" : {
"AddOp"     : {
"is"   : "\\/ {t -} {t +}",
"mode" : "value"
},
"Digit"     : {
"is"   : "\\/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}",
"mode" : "value"
},
"Expression" : {
"is"   : "\\/ {x {t (} {n Expression} {t )}} {x {n Factor} {* {x {n MulOp} {n Factor}}}}",
"mode" : "value"
},
"Factor"    : {
"is"   : "x {n Term} {* {x {n AddOp} {n Term}}}",
"mode" : "value"
},
"MulOp"     : {
"is"   : "\\/ {t *} {t \\/}",
"mode" : "value"
},
"Number"    : {
"is"   : "x {? {n Sign}} {+ {n Digit}}",
"mode" : "value"
},
"Sign"      : {
"is"   : "\\/ {t -} {t +}",
"mode" : "value"
},
"Term"      : {
"is"   : "n Number",
"mode" : "value"
}
},
"start" : "n Expression"
}
}

.CE
.PP
and a Tcl serialization of the same is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
The similarity of the latter to the JSON should be quite obvious.
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.
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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_param.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
implement control flow.
.PP
The implementation of this machine in Parser Tools, i.e the package
\fBpt::rde\fR, is not only coded in Tcl, but also relies on Tcl
commands to provide it with control flow (instructions).
.SH "INTERACTION OF THE INSTRUCTIONS WITH THE ARCHITECTURAL STATE"
.CS


Instruction		Inputs				Outputs
======================= =======================		====================
ast_pop_discard		AS			->	AS
ast_pop_rewind		AS			->	AS, ARS
ast_push		ARS, AS			->	AS
ast_value_push		SV, ARS			->	ARS
======================= =======================		====================







<
<







685
686
687
688
689
690
691


692
693
694
695
696
697
698
implement control flow.
.PP
The implementation of this machine in Parser Tools, i.e the package
\fBpt::rde\fR, is not only coded in Tcl, but also relies on Tcl
commands to provide it with control flow (instructions).
.SH "INTERACTION OF THE INSTRUCTIONS WITH THE ARCHITECTURAL STATE"
.CS


Instruction		Inputs				Outputs
======================= =======================		====================
ast_pop_discard		AS			->	AS
ast_pop_rewind		AS			->	AS, ARS
ast_push		ARS, AS			->	AS
ast_value_push		SV, ARS			->	ARS
======================= =======================		====================
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
test_wordchar		CC			->	ST, ER
test_xdigit		CC			->	ST, ER
======================= =======================		====================
value_clear		-			->	SV
value_leaf symbol	LS, CL			->	SV
value_reduce symbol	ARS, LS, CL		->	SV
======================= =======================		====================

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<















<

730
731
732
733
734
735
736

737
738
739
740
741
742
743
744
745
746
747
748
749
750
751

752
test_wordchar		CC			->	ST, ER
test_xdigit		CC			->	ST, ER
======================= =======================		====================
value_clear		-			->	SV
value_leaf symbol	LS, CL			->	SV
value_reduce symbol	ARS, LS, CL		->	SV
======================= =======================		====================

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_parser_api.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
This method runs the parser using the string in \fItext\fR as input.
In all other ways it behaves like the method \fBparse\fR, shown
above.
.PP
.SH USAGE
A generated parser is used like this
.CS


    package require the-parser-package ;# Generated by result-formats 'critcl', 'snit' or 'oo' of 'pt'.
    set parser [the-parser-class]

    set ast [$parser parse $channel]
    ... process the abstract syntax tree ...

.CE
When using a grammar interpreter for parsing some differences creep in
.CS


    package require the-grammar-package ;# Generated by result-format 'container' of 'pt'.
    set grammar [the-grammar-class]

    package require pt::peg::interp
    set parser [pt::peg::interp]

    $parser use $grammar

    set ast [$parser parse $channel]
    $parser destroy

    ... process the abstract syntax tree ...

.CE
.SH "AST SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Abstract Syntax Trees (ASTs) as immutable values for transport,
comparison, etc.
.PP
Each node in an AST represents a nonterminal symbol of a grammar, and







<
<
|
|
<
|
|
<



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







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
This method runs the parser using the string in \fItext\fR as input.
In all other ways it behaves like the method \fBparse\fR, shown
above.
.PP
.SH USAGE
A generated parser is used like this
.CS


package require the-parser-package ;# Generated by result-formats 'critcl', 'snit' or 'oo' of 'pt'.
set parser [the-parser-class]

set ast [$parser parse $channel]
\... process the abstract syntax tree ...

.CE
When using a grammar interpreter for parsing some differences creep in
.CS


package require the-grammar-package ;# Generated by result-format 'container' of 'pt'.
set grammar [the-grammar-class]

package require pt::peg::interp
set parser [pt::peg::interp]

$parser use $grammar

set ast [$parser parse $channel]
$parser destroy

\... process the abstract syntax tree ...

.CE
.SH "AST SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Abstract Syntax Trees (ASTs) as immutable values for transport,
comparison, etc.
.PP
Each node in an AST represents a nonterminal symbol of a grammar, and
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
.RE
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression grammar below
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
and the input string
.CS

 120+5
.CE
then a parser should deliver the abstract syntax tree below (except for whitespace)
.PP
.CS


set ast {Expression 0 4
    {Factor 0 4
        {Term 0 2
            {Number 0 2
                {Digit 0 0}
                {Digit 1 1}
                {Digit 2 2}
            }
        }
        {AddOp 3 3}
        {Term 4 4
            {Number 4 4
                {Digit 4 4}
            }
        }
    }
}

.CE
.PP
Or, more graphical
.PP
.PS
.nf
                                                           +- Digit 0 0 | 1
                                                           |            |
                               +- Term 0 2 --- Number 0 2 -+- Digit 1 1 | 2
                               |                           |            |
                               |                           +- Digit 2 2 | 0
                               |                                        |
Expression 0 4 --- Factor 0 4 -+----------------------------- AddOp 3 3 | +
                               |                                        |
                               +- Term 4 4 --- Number 4 4 --- Digit 4 4 | 5
.fi
.PE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
We distinguish between \fIregular\fR and \fIcanonical\fR







<
<

|
|
|
|
|
|
|
|

<




<
|




<
<

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

<




|
|










|







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
.RE
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression grammar below
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
and the input string
.CS

120+5
.CE
then a parser should deliver the abstract syntax tree below (except for whitespace)
.PP
.CS


set ast {Expression 0 4
{Factor 0 4
{Term 0 2
{Number 0 2
{Digit 0 0}
{Digit 1 1}
{Digit 2 2}
}
}
{AddOp 3 3}
{Term 4 4
{Number 4 4
{Digit 4 4}
}
}
}
}

.CE
.PP
Or, more graphical
.PP
\.PS
\.nf
                                                           +- Digit 0 0 | 1
                                                           |            |
                               +- Term 0 2 --- Number 0 2 -+- Digit 1 1 | 2
                               |                           |            |
                               |                           +- Digit 2 2 | 0
                               |                                        |
Expression 0 4 --- Factor 0 4 -+----------------------------- AddOp 3 3 | +
                               |                                        |
                               +- Term 4 4 --- Number 4 4 --- Digit 4 4 | 5
.fi
\.PE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
We distinguish between \fIregular\fR and \fIcanonical\fR
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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_peg_container.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
This method assigns the contents of the PEG object \fIsource\fR to
ourselves, overwriting the existing definition. This is the assignment
operator for grammars.
.sp
This operation is in effect equivalent to
.sp
.CS


    \fIobjectName\fR \fBdeserialize =\fR [\fIsource\fR \fBserialize\fR]

.CE
.TP
\fIobjectName\fR \fB-->\fR \fIdestination\fR
This method assigns our contents to the PEG object \fIdestination\fR,
overwriting the existing definition. This is the reverse assignment
operator for grammars.
.sp
This operation is in effect equivalent to
.sp
.CS


    \fIdestination\fR \fBdeserialize =\fR [\fIobjectName\fR \fBserialize\fR]

.CE
.TP
\fIobjectName\fR \fBserialize\fR ?\fIformat\fR?
This method returns our grammar in some textual form usable for
transfer, persistent storage, etc. If no \fIformat\fR is not specified
the returned result is the canonical serialization of the grammar, as
specified in the section \fBPEG serialization format\fR.







<
<
|
<










<
<
|
<







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
This method assigns the contents of the PEG object \fIsource\fR to
ourselves, overwriting the existing definition. This is the assignment
operator for grammars.
.sp
This operation is in effect equivalent to
.sp
.CS


\fIobjectName\fR \fBdeserialize =\fR [\fIsource\fR \fBserialize\fR]

.CE
.TP
\fIobjectName\fR \fB-->\fR \fIdestination\fR
This method assigns our contents to the PEG object \fIdestination\fR,
overwriting the existing definition. This is the reverse assignment
operator for grammars.
.sp
This operation is in effect equivalent to
.sp
.CS


\fIdestination\fR \fBdeserialize =\fR [\fIobjectName\fR \fBserialize\fR]

.CE
.TP
\fIobjectName\fR \fBserialize\fR ?\fIformat\fR?
This method returns our grammar in some textual form usable for
transfer, persistent storage, etc. If no \fIformat\fR is not specified
the returned result is the canonical serialization of the grammar, as
specified in the section \fBPEG serialization format\fR.
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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_peg_container_peg.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
277
278
279
280
281
282
283
284
285
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

276
277
278
279
280
281
282

283
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_peg_export.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_peg_export_container.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
grammar in question.
.PP
It has no direct formal specification beyond what was said above.
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
one possible CONTAINER serialization for it is
.PP
.CS


snit::type a_pe_grammar {
    constructor {} {
        install myg using pt::peg::container ${selfns}::G
        $myg start {n Expression}
        $myg add   AddOp Digit Expression Factor MulOp Number Sign Term
        $myg modes {
            AddOp      value
            Digit      value
            Expression value
            Factor     value
            MulOp      value
            Number     value
            Sign       value
            Term       value
        }
        $myg rules {
            AddOp      {/ {t -} {t +}}
            Digit      {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}
            Expression {/ {x {t \\50} {n Expression} {t \\51}} {x {n Factor} {* {x {n MulOp} {n Factor}}}}}
            Factor     {x {n Term} {* {x {n AddOp} {n Term}}}}
            MulOp      {/ {t *} {t /}}
            Number     {x {? {n Sign}} {+ {n Digit}}}
            Sign       {/ {t -} {t +}}
            Term       {n Number}
        }
        return
    }

    component myg
    delegate method * to myg
}

.CE
.PP
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.
.PP







<
<

|
|
|
|
|
|
|
|

<





<
<

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

<







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
grammar in question.
.PP
It has no direct formal specification beyond what was said above.
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
one possible CONTAINER serialization for it is
.PP
.CS


snit::type a_pe_grammar {
constructor {} {
install myg using pt::peg::container ${selfns}::G
$myg start {n Expression}
$myg add   AddOp Digit Expression Factor MulOp Number Sign Term
$myg modes {
AddOp      value
Digit      value
Expression value
Factor     value
MulOp      value
Number     value
Sign       value
Term       value
}
$myg rules {
AddOp      {/ {t -} {t +}}
Digit      {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}
Expression {/ {x {t \\50} {n Expression} {t \\51}} {x {n Factor} {* {x {n MulOp} {n Factor}}}}}
Factor     {x {n Term} {* {x {n AddOp} {n Term}}}}
MulOp      {/ {t *} {t /}}
Number     {x {? {n Sign}} {+ {n Digit}}}
Sign       {/ {t -} {t +}}
Term       {n Number}
}
return
}

component myg
delegate method * to myg
}

.CE
.PP
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.
.PP
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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_peg_export_json.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
the parsing expressions themselves are not translated further, but
kept as JSON strings containing a nested Tcl list, and there is no
concept of canonicity for the JSON either.
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
a JSON serialization for it is
.PP
.CS


{
    "pt::grammar::peg" : {
        "rules" : {
            "AddOp"     : {
                "is"   : "\\/ {t -} {t +}",
                "mode" : "value"
            },
            "Digit"     : {
                "is"   : "\\/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}",
                "mode" : "value"
            },
            "Expression" : {
                "is"   : "\\/ {x {t (} {n Expression} {t )}} {x {n Factor} {* {x {n MulOp} {n Factor}}}}",
                "mode" : "value"
            },
            "Factor"    : {
                "is"   : "x {n Term} {* {x {n AddOp} {n Term}}}",
                "mode" : "value"
            },
            "MulOp"     : {
                "is"   : "\\/ {t *} {t \\/}",
                "mode" : "value"
            },
            "Number"    : {
                "is"   : "x {? {n Sign}} {+ {n Digit}}",
                "mode" : "value"
            },
            "Sign"      : {
                "is"   : "\\/ {t -} {t +}",
                "mode" : "value"
            },
            "Term"      : {
                "is"   : "n Number",
                "mode" : "value"
            }
        },
        "start" : "n Expression"
    }
}

.CE
.PP
and a Tcl serialization of the same is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
The similarity of the latter to the JSON should be quite obvious.
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
the parsing expressions themselves are not translated further, but
kept as JSON strings containing a nested Tcl list, and there is no
concept of canonicity for the JSON either.
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
a JSON serialization for it is
.PP
.CS


{
"pt::grammar::peg" : {
"rules" : {
"AddOp"     : {
"is"   : "\\/ {t -} {t +}",
"mode" : "value"
},
"Digit"     : {
"is"   : "\\/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}",
"mode" : "value"
},
"Expression" : {
"is"   : "\\/ {x {t (} {n Expression} {t )}} {x {n Factor} {* {x {n MulOp} {n Factor}}}}",
"mode" : "value"
},
"Factor"    : {
"is"   : "x {n Term} {* {x {n AddOp} {n Term}}}",
"mode" : "value"
},
"MulOp"     : {
"is"   : "\\/ {t *} {t \\/}",
"mode" : "value"
},
"Number"    : {
"is"   : "x {? {n Sign}} {+ {n Digit}}",
"mode" : "value"
},
"Sign"      : {
"is"   : "\\/ {t -} {t +}",
"mode" : "value"
},
"Term"      : {
"is"   : "n Number",
"mode" : "value"
}
},
"start" : "n Expression"
}
}

.CE
.PP
and a Tcl serialization of the same is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
The similarity of the latter to the JSON should be quite obvious.
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.
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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_peg_export_peg.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
not lend themselves too.
.PP
It is formally specified by the grammar shown below, written in
itself. For a tutorial / introduction to the language please go and
read the \fIPEG Language Tutorial\fR.
.PP
.CS


PEG pe-grammar-for-peg (Grammar)

	# --------------------------------------------------------------------
        # Syntactical constructs

        Grammar         <- WHITESPACE Header Definition* Final EOF ;

        Header          <- PEG Identifier StartExpr ;
        Definition      <- Attribute? Identifier IS Expression SEMICOLON ;
        Attribute       <- (VOID / LEAF) COLON ;
        Expression      <- Sequence (SLASH Sequence)* ;
        Sequence        <- Prefix+ ;
        Prefix          <- (AND / NOT)? Suffix ;
        Suffix          <- Primary (QUESTION / STAR / PLUS)? ;
        Primary         <- ALNUM / ALPHA / ASCII / CONTROL / DDIGIT / DIGIT
                        /  GRAPH / LOWER / PRINTABLE / PUNCT / SPACE / UPPER
                        /  WORDCHAR / XDIGIT
                        / Identifier
                        /  OPEN Expression CLOSE
                        /  Literal
                        /  Class
                        /  DOT
                        ;
        Literal         <- APOSTROPH  (!APOSTROPH  Char)* APOSTROPH  WHITESPACE
                        /  DAPOSTROPH (!DAPOSTROPH Char)* DAPOSTROPH WHITESPACE ;
        Class           <- OPENB (!CLOSEB Range)* CLOSEB WHITESPACE ;
        Range           <- Char TO Char / Char ;

        StartExpr       <- OPEN Expression CLOSE ;
void:   Final           <- END SEMICOLON WHITESPACE ;

        # --------------------------------------------------------------------
        # Lexing constructs

        Identifier      <- Ident WHITESPACE ;
leaf:   Ident           <- ('_' / ':' / <alpha>) ('_' / ':' / <alnum>)* ;
        Char            <- CharSpecial / CharOctalFull / CharOctalPart
                        /  CharUnicode / CharUnescaped
                        ;

leaf:   CharSpecial     <- "\\\\" [nrt'"\\[\\]\\\\] ;
leaf:   CharOctalFull   <- "\\\\" [0-2][0-7][0-7] ;
leaf:   CharOctalPart   <- "\\\\" [0-7][0-7]? ;
leaf:   CharUnicode     <- "\\\\" 'u' HexDigit (HexDigit (HexDigit HexDigit?)?)? ;
leaf:   CharUnescaped   <- !"\\\\" . ;

void:   HexDigit        <- [0-9a-fA-F] ;

void:   TO              <- '-'           ;
void:   OPENB           <- "["           ;
void:   CLOSEB          <- "]"           ;
void:   APOSTROPH       <- "'"           ;
void:   DAPOSTROPH      <- '"'           ;
void:   PEG             <- "PEG"   WHITESPACE ;
void:   IS              <- "<-"    WHITESPACE ;







<
<

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

<
|
|
<
|

|
|
|
<





<

<







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
not lend themselves too.
.PP
It is formally specified by the grammar shown below, written in
itself. For a tutorial / introduction to the language please go and
read the \fIPEG Language Tutorial\fR.
.PP
.CS


PEG pe-grammar-for-peg (Grammar)

# --------------------------------------------------------------------
# Syntactical constructs

Grammar         <- WHITESPACE Header Definition* Final EOF ;

Header          <- PEG Identifier StartExpr ;
Definition      <- Attribute? Identifier IS Expression SEMICOLON ;
Attribute       <- (VOID / LEAF) COLON ;
Expression      <- Sequence (SLASH Sequence)* ;
Sequence        <- Prefix+ ;
Prefix          <- (AND / NOT)? Suffix ;
Suffix          <- Primary (QUESTION / STAR / PLUS)? ;
Primary         <- ALNUM / ALPHA / ASCII / CONTROL / DDIGIT / DIGIT
/  GRAPH / LOWER / PRINTABLE / PUNCT / SPACE / UPPER
/  WORDCHAR / XDIGIT
/ Identifier
/  OPEN Expression CLOSE
/  Literal
/  Class
/  DOT
;
Literal         <- APOSTROPH  (!APOSTROPH  Char)* APOSTROPH  WHITESPACE
/  DAPOSTROPH (!DAPOSTROPH Char)* DAPOSTROPH WHITESPACE ;
Class           <- OPENB (!CLOSEB Range)* CLOSEB WHITESPACE ;
Range           <- Char TO Char / Char ;

StartExpr       <- OPEN Expression CLOSE ;
void:   Final           <- END SEMICOLON WHITESPACE ;

# --------------------------------------------------------------------
# Lexing constructs

Identifier      <- Ident WHITESPACE ;
leaf:   Ident           <- ('_' / ':' / <alpha>) ('_' / ':' / <alnum>)* ;
Char            <- CharSpecial / CharOctalFull / CharOctalPart
/  CharUnicode / CharUnescaped
;

leaf:   CharSpecial     <- "\\\\" [nrt'"\\[\\]\\\\] ;
leaf:   CharOctalFull   <- "\\\\" [0-2][0-7][0-7] ;
leaf:   CharOctalPart   <- "\\\\" [0-7][0-7]? ;
leaf:   CharUnicode     <- "\\\\" 'u' HexDigit (HexDigit (HexDigit HexDigit?)?)? ;
leaf:   CharUnescaped   <- !"\\\\" . ;

void:   HexDigit        <- [0-9a-fA-F] ;

void:   TO              <- '-'           ;
void:   OPENB           <- "["           ;
void:   CLOSEB          <- "]"           ;
void:   APOSTROPH       <- "'"           ;
void:   DAPOSTROPH      <- '"'           ;
void:   PEG             <- "PEG"   WHITESPACE ;
void:   IS              <- "<-"    WHITESPACE ;
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
leaf:   NOT             <- "!"     WHITESPACE ;
leaf:   QUESTION        <- "?"     WHITESPACE ;
leaf:   STAR            <- "*"     WHITESPACE ;
leaf:   PLUS            <- "+"     WHITESPACE ;
void:   OPEN            <- "("     WHITESPACE ;
void:   CLOSE           <- ")"     WHITESPACE ;
leaf:   DOT             <- "."     WHITESPACE ;

leaf:   ALNUM           <- "<alnum>"    WHITESPACE ;
leaf:   ALPHA           <- "<alpha>"    WHITESPACE ;
leaf:   ASCII           <- "<ascii>"    WHITESPACE ;
leaf:   CONTROL         <- "<control>"  WHITESPACE ;
leaf:   DDIGIT          <- "<ddigit>"   WHITESPACE ;
leaf:   DIGIT           <- "<digit>"    WHITESPACE ;
leaf:   GRAPH           <- "<graph>"    WHITESPACE ;
leaf:   LOWER           <- "<lower>"    WHITESPACE ;
leaf:   PRINTABLE       <- "<print>"    WHITESPACE ;
leaf:   PUNCT           <- "<punct>"    WHITESPACE ;
leaf:   SPACE           <- "<space>"    WHITESPACE ;
leaf:   UPPER           <- "<upper>"    WHITESPACE ;
leaf:   WORDCHAR        <- "<wordchar>" WHITESPACE ;
leaf:   XDIGIT          <- "<xdigit>"   WHITESPACE ;

void:   WHITESPACE      <- (" " / "\\t" / EOL / COMMENT)* ;
void:   COMMENT         <- '#' (!EOL .)* EOL ;
void:   EOL             <- "\\n\\r" / "\\n" / "\\r" ;
void:   EOF             <- !. ;

        # --------------------------------------------------------------------
END;

.CE
.SS EXAMPLE
Our example specifies the grammar for a basic 4-operation calculator.
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
Using higher-level features of the notation, i.e. the character
classes (predefined and custom), this example can be rewritten as
.PP
.CS


PEG calculator (Expression)
    Sign       <- [-+] 						;
    Number     <- Sign? <ddigit>+				;
    Expression <- '(' Expression ')' / (Factor (MulOp Factor)*)	;
    MulOp      <- [*/]						;
    Factor     <- Term (AddOp Term)*				;
    AddOp      <- [-+]						;
    Term       <- Number					;
END;

.CE
.PP
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.
.PP







<














<




<
|

<





<
<

|
|
|
|
|
|
|
|

<






<
<

|
|
|
|
|
|
|

<







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
leaf:   NOT             <- "!"     WHITESPACE ;
leaf:   QUESTION        <- "?"     WHITESPACE ;
leaf:   STAR            <- "*"     WHITESPACE ;
leaf:   PLUS            <- "+"     WHITESPACE ;
void:   OPEN            <- "("     WHITESPACE ;
void:   CLOSE           <- ")"     WHITESPACE ;
leaf:   DOT             <- "."     WHITESPACE ;

leaf:   ALNUM           <- "<alnum>"    WHITESPACE ;
leaf:   ALPHA           <- "<alpha>"    WHITESPACE ;
leaf:   ASCII           <- "<ascii>"    WHITESPACE ;
leaf:   CONTROL         <- "<control>"  WHITESPACE ;
leaf:   DDIGIT          <- "<ddigit>"   WHITESPACE ;
leaf:   DIGIT           <- "<digit>"    WHITESPACE ;
leaf:   GRAPH           <- "<graph>"    WHITESPACE ;
leaf:   LOWER           <- "<lower>"    WHITESPACE ;
leaf:   PRINTABLE       <- "<print>"    WHITESPACE ;
leaf:   PUNCT           <- "<punct>"    WHITESPACE ;
leaf:   SPACE           <- "<space>"    WHITESPACE ;
leaf:   UPPER           <- "<upper>"    WHITESPACE ;
leaf:   WORDCHAR        <- "<wordchar>" WHITESPACE ;
leaf:   XDIGIT          <- "<xdigit>"   WHITESPACE ;

void:   WHITESPACE      <- (" " / "\\t" / EOL / COMMENT)* ;
void:   COMMENT         <- '#' (!EOL .)* EOL ;
void:   EOL             <- "\\n\\r" / "\\n" / "\\r" ;
void:   EOF             <- !. ;

# --------------------------------------------------------------------
END;

.CE
.SS EXAMPLE
Our example specifies the grammar for a basic 4-operation calculator.
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
Using higher-level features of the notation, i.e. the character
classes (predefined and custom), this example can be rewritten as
.PP
.CS


PEG calculator (Expression)
Sign       <- [-+] 						;
Number     <- Sign? <ddigit>+				;
Expression <- '(' Expression ')' / (Factor (MulOp Factor)*)	;
MulOp      <- [*/]						;
Factor     <- Term (AddOp Term)*				;
AddOp      <- [-+]						;
Term       <- Number					;
END;

.CE
.PP
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.
.PP
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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_peg_from_container.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
271
272
273
274
275
276
277
278
279
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

270
271
272
273
274
275
276

277
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_peg_from_json.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
the parsing expressions themselves are not translated further, but
kept as JSON strings containing a nested Tcl list, and there is no
concept of canonicity for the JSON either.
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
a JSON serialization for it is
.PP
.CS


{
    "pt::grammar::peg" : {
        "rules" : {
            "AddOp"     : {
                "is"   : "\\/ {t -} {t +}",
                "mode" : "value"
            },
            "Digit"     : {
                "is"   : "\\/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}",
                "mode" : "value"
            },
            "Expression" : {
                "is"   : "\\/ {x {t (} {n Expression} {t )}} {x {n Factor} {* {x {n MulOp} {n Factor}}}}",
                "mode" : "value"
            },
            "Factor"    : {
                "is"   : "x {n Term} {* {x {n AddOp} {n Term}}}",
                "mode" : "value"
            },
            "MulOp"     : {
                "is"   : "\\/ {t *} {t \\/}",
                "mode" : "value"
            },
            "Number"    : {
                "is"   : "x {? {n Sign}} {+ {n Digit}}",
                "mode" : "value"
            },
            "Sign"      : {
                "is"   : "\\/ {t -} {t +}",
                "mode" : "value"
            },
            "Term"      : {
                "is"   : "n Number",
                "mode" : "value"
            }
        },
        "start" : "n Expression"
    }
}

.CE
.PP
and a Tcl serialization of the same is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
The similarity of the latter to the JSON should be quite obvious.
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
the parsing expressions themselves are not translated further, but
kept as JSON strings containing a nested Tcl list, and there is no
concept of canonicity for the JSON either.
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
a JSON serialization for it is
.PP
.CS


{
"pt::grammar::peg" : {
"rules" : {
"AddOp"     : {
"is"   : "\\/ {t -} {t +}",
"mode" : "value"
},
"Digit"     : {
"is"   : "\\/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}",
"mode" : "value"
},
"Expression" : {
"is"   : "\\/ {x {t (} {n Expression} {t )}} {x {n Factor} {* {x {n MulOp} {n Factor}}}}",
"mode" : "value"
},
"Factor"    : {
"is"   : "x {n Term} {* {x {n AddOp} {n Term}}}",
"mode" : "value"
},
"MulOp"     : {
"is"   : "\\/ {t *} {t \\/}",
"mode" : "value"
},
"Number"    : {
"is"   : "x {? {n Sign}} {+ {n Digit}}",
"mode" : "value"
},
"Sign"      : {
"is"   : "\\/ {t -} {t +}",
"mode" : "value"
},
"Term"      : {
"is"   : "n Number",
"mode" : "value"
}
},
"start" : "n Expression"
}
}

.CE
.PP
and a Tcl serialization of the same is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
The similarity of the latter to the JSON should be quite obvious.
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.
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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_peg_from_peg.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
not lend themselves too.
.PP
It is formally specified by the grammar shown below, written in
itself. For a tutorial / introduction to the language please go and
read the \fIPEG Language Tutorial\fR.
.PP
.CS


PEG pe-grammar-for-peg (Grammar)

	# --------------------------------------------------------------------
        # Syntactical constructs

        Grammar         <- WHITESPACE Header Definition* Final EOF ;

        Header          <- PEG Identifier StartExpr ;
        Definition      <- Attribute? Identifier IS Expression SEMICOLON ;
        Attribute       <- (VOID / LEAF) COLON ;
        Expression      <- Sequence (SLASH Sequence)* ;
        Sequence        <- Prefix+ ;
        Prefix          <- (AND / NOT)? Suffix ;
        Suffix          <- Primary (QUESTION / STAR / PLUS)? ;
        Primary         <- ALNUM / ALPHA / ASCII / CONTROL / DDIGIT / DIGIT
                        /  GRAPH / LOWER / PRINTABLE / PUNCT / SPACE / UPPER
                        /  WORDCHAR / XDIGIT
                        / Identifier
                        /  OPEN Expression CLOSE
                        /  Literal
                        /  Class
                        /  DOT
                        ;
        Literal         <- APOSTROPH  (!APOSTROPH  Char)* APOSTROPH  WHITESPACE
                        /  DAPOSTROPH (!DAPOSTROPH Char)* DAPOSTROPH WHITESPACE ;
        Class           <- OPENB (!CLOSEB Range)* CLOSEB WHITESPACE ;
        Range           <- Char TO Char / Char ;

        StartExpr       <- OPEN Expression CLOSE ;
void:   Final           <- END SEMICOLON WHITESPACE ;

        # --------------------------------------------------------------------
        # Lexing constructs

        Identifier      <- Ident WHITESPACE ;
leaf:   Ident           <- ('_' / ':' / <alpha>) ('_' / ':' / <alnum>)* ;
        Char            <- CharSpecial / CharOctalFull / CharOctalPart
                        /  CharUnicode / CharUnescaped
                        ;

leaf:   CharSpecial     <- "\\\\" [nrt'"\\[\\]\\\\] ;
leaf:   CharOctalFull   <- "\\\\" [0-2][0-7][0-7] ;
leaf:   CharOctalPart   <- "\\\\" [0-7][0-7]? ;
leaf:   CharUnicode     <- "\\\\" 'u' HexDigit (HexDigit (HexDigit HexDigit?)?)? ;
leaf:   CharUnescaped   <- !"\\\\" . ;

void:   HexDigit        <- [0-9a-fA-F] ;

void:   TO              <- '-'           ;
void:   OPENB           <- "["           ;
void:   CLOSEB          <- "]"           ;
void:   APOSTROPH       <- "'"           ;
void:   DAPOSTROPH      <- '"'           ;
void:   PEG             <- "PEG"   WHITESPACE ;
void:   IS              <- "<-"    WHITESPACE ;







<
<

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

<
|
|
<
|

|
|
|
<





<

<







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
not lend themselves too.
.PP
It is formally specified by the grammar shown below, written in
itself. For a tutorial / introduction to the language please go and
read the \fIPEG Language Tutorial\fR.
.PP
.CS


PEG pe-grammar-for-peg (Grammar)

# --------------------------------------------------------------------
# Syntactical constructs

Grammar         <- WHITESPACE Header Definition* Final EOF ;

Header          <- PEG Identifier StartExpr ;
Definition      <- Attribute? Identifier IS Expression SEMICOLON ;
Attribute       <- (VOID / LEAF) COLON ;
Expression      <- Sequence (SLASH Sequence)* ;
Sequence        <- Prefix+ ;
Prefix          <- (AND / NOT)? Suffix ;
Suffix          <- Primary (QUESTION / STAR / PLUS)? ;
Primary         <- ALNUM / ALPHA / ASCII / CONTROL / DDIGIT / DIGIT
/  GRAPH / LOWER / PRINTABLE / PUNCT / SPACE / UPPER
/  WORDCHAR / XDIGIT
/ Identifier
/  OPEN Expression CLOSE
/  Literal
/  Class
/  DOT
;
Literal         <- APOSTROPH  (!APOSTROPH  Char)* APOSTROPH  WHITESPACE
/  DAPOSTROPH (!DAPOSTROPH Char)* DAPOSTROPH WHITESPACE ;
Class           <- OPENB (!CLOSEB Range)* CLOSEB WHITESPACE ;
Range           <- Char TO Char / Char ;

StartExpr       <- OPEN Expression CLOSE ;
void:   Final           <- END SEMICOLON WHITESPACE ;

# --------------------------------------------------------------------
# Lexing constructs

Identifier      <- Ident WHITESPACE ;
leaf:   Ident           <- ('_' / ':' / <alpha>) ('_' / ':' / <alnum>)* ;
Char            <- CharSpecial / CharOctalFull / CharOctalPart
/  CharUnicode / CharUnescaped
;

leaf:   CharSpecial     <- "\\\\" [nrt'"\\[\\]\\\\] ;
leaf:   CharOctalFull   <- "\\\\" [0-2][0-7][0-7] ;
leaf:   CharOctalPart   <- "\\\\" [0-7][0-7]? ;
leaf:   CharUnicode     <- "\\\\" 'u' HexDigit (HexDigit (HexDigit HexDigit?)?)? ;
leaf:   CharUnescaped   <- !"\\\\" . ;

void:   HexDigit        <- [0-9a-fA-F] ;

void:   TO              <- '-'           ;
void:   OPENB           <- "["           ;
void:   CLOSEB          <- "]"           ;
void:   APOSTROPH       <- "'"           ;
void:   DAPOSTROPH      <- '"'           ;
void:   PEG             <- "PEG"   WHITESPACE ;
void:   IS              <- "<-"    WHITESPACE ;
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
leaf:   NOT             <- "!"     WHITESPACE ;
leaf:   QUESTION        <- "?"     WHITESPACE ;
leaf:   STAR            <- "*"     WHITESPACE ;
leaf:   PLUS            <- "+"     WHITESPACE ;
void:   OPEN            <- "("     WHITESPACE ;
void:   CLOSE           <- ")"     WHITESPACE ;
leaf:   DOT             <- "."     WHITESPACE ;

leaf:   ALNUM           <- "<alnum>"    WHITESPACE ;
leaf:   ALPHA           <- "<alpha>"    WHITESPACE ;
leaf:   ASCII           <- "<ascii>"    WHITESPACE ;
leaf:   CONTROL         <- "<control>"  WHITESPACE ;
leaf:   DDIGIT          <- "<ddigit>"   WHITESPACE ;
leaf:   DIGIT           <- "<digit>"    WHITESPACE ;
leaf:   GRAPH           <- "<graph>"    WHITESPACE ;
leaf:   LOWER           <- "<lower>"    WHITESPACE ;
leaf:   PRINTABLE       <- "<print>"    WHITESPACE ;
leaf:   PUNCT           <- "<punct>"    WHITESPACE ;
leaf:   SPACE           <- "<space>"    WHITESPACE ;
leaf:   UPPER           <- "<upper>"    WHITESPACE ;
leaf:   WORDCHAR        <- "<wordchar>" WHITESPACE ;
leaf:   XDIGIT          <- "<xdigit>"   WHITESPACE ;

void:   WHITESPACE      <- (" " / "\\t" / EOL / COMMENT)* ;
void:   COMMENT         <- '#' (!EOL .)* EOL ;
void:   EOL             <- "\\n\\r" / "\\n" / "\\r" ;
void:   EOF             <- !. ;

        # --------------------------------------------------------------------
END;

.CE
.SS EXAMPLE
Our example specifies the grammar for a basic 4-operation calculator.
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
Using higher-level features of the notation, i.e. the character
classes (predefined and custom), this example can be rewritten as
.PP
.CS


PEG calculator (Expression)
    Sign       <- [-+] 						;
    Number     <- Sign? <ddigit>+				;
    Expression <- '(' Expression ')' / (Factor (MulOp Factor)*)	;
    MulOp      <- [*/]						;
    Factor     <- Term (AddOp Term)*				;
    AddOp      <- [-+]						;
    Term       <- Number					;
END;

.CE
.PP
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.
.PP







<














<




<
|

<





<
<

|
|
|
|
|
|
|
|

<






<
<

|
|
|
|
|
|
|

<







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
leaf:   NOT             <- "!"     WHITESPACE ;
leaf:   QUESTION        <- "?"     WHITESPACE ;
leaf:   STAR            <- "*"     WHITESPACE ;
leaf:   PLUS            <- "+"     WHITESPACE ;
void:   OPEN            <- "("     WHITESPACE ;
void:   CLOSE           <- ")"     WHITESPACE ;
leaf:   DOT             <- "."     WHITESPACE ;

leaf:   ALNUM           <- "<alnum>"    WHITESPACE ;
leaf:   ALPHA           <- "<alpha>"    WHITESPACE ;
leaf:   ASCII           <- "<ascii>"    WHITESPACE ;
leaf:   CONTROL         <- "<control>"  WHITESPACE ;
leaf:   DDIGIT          <- "<ddigit>"   WHITESPACE ;
leaf:   DIGIT           <- "<digit>"    WHITESPACE ;
leaf:   GRAPH           <- "<graph>"    WHITESPACE ;
leaf:   LOWER           <- "<lower>"    WHITESPACE ;
leaf:   PRINTABLE       <- "<print>"    WHITESPACE ;
leaf:   PUNCT           <- "<punct>"    WHITESPACE ;
leaf:   SPACE           <- "<space>"    WHITESPACE ;
leaf:   UPPER           <- "<upper>"    WHITESPACE ;
leaf:   WORDCHAR        <- "<wordchar>" WHITESPACE ;
leaf:   XDIGIT          <- "<xdigit>"   WHITESPACE ;

void:   WHITESPACE      <- (" " / "\\t" / EOL / COMMENT)* ;
void:   COMMENT         <- '#' (!EOL .)* EOL ;
void:   EOL             <- "\\n\\r" / "\\n" / "\\r" ;
void:   EOF             <- !. ;

# --------------------------------------------------------------------
END;

.CE
.SS EXAMPLE
Our example specifies the grammar for a basic 4-operation calculator.
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
Using higher-level features of the notation, i.e. the character
classes (predefined and custom), this example can be rewritten as
.PP
.CS


PEG calculator (Expression)
Sign       <- [-+] 						;
Number     <- Sign? <ddigit>+				;
Expression <- '(' Expression ')' / (Factor (MulOp Factor)*)	;
MulOp      <- [*/]						;
Factor     <- Term (AddOp Term)*				;
AddOp      <- [-+]						;
Term       <- Number					;
END;

.CE
.PP
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.
.PP
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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_peg_import.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_peg_import_container.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
271
272
273
274
275
276
277
278
279
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

270
271
272
273
274
275
276

277
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_peg_import_json.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
the parsing expressions themselves are not translated further, but
kept as JSON strings containing a nested Tcl list, and there is no
concept of canonicity for the JSON either.
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
a JSON serialization for it is
.PP
.CS


{
    "pt::grammar::peg" : {
        "rules" : {
            "AddOp"     : {
                "is"   : "\\/ {t -} {t +}",
                "mode" : "value"
            },
            "Digit"     : {
                "is"   : "\\/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}",
                "mode" : "value"
            },
            "Expression" : {
                "is"   : "\\/ {x {t (} {n Expression} {t )}} {x {n Factor} {* {x {n MulOp} {n Factor}}}}",
                "mode" : "value"
            },
            "Factor"    : {
                "is"   : "x {n Term} {* {x {n AddOp} {n Term}}}",
                "mode" : "value"
            },
            "MulOp"     : {
                "is"   : "\\/ {t *} {t \\/}",
                "mode" : "value"
            },
            "Number"    : {
                "is"   : "x {? {n Sign}} {+ {n Digit}}",
                "mode" : "value"
            },
            "Sign"      : {
                "is"   : "\\/ {t -} {t +}",
                "mode" : "value"
            },
            "Term"      : {
                "is"   : "n Number",
                "mode" : "value"
            }
        },
        "start" : "n Expression"
    }
}

.CE
.PP
and a Tcl serialization of the same is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
The similarity of the latter to the JSON should be quite obvious.
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
the parsing expressions themselves are not translated further, but
kept as JSON strings containing a nested Tcl list, and there is no
concept of canonicity for the JSON either.
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
a JSON serialization for it is
.PP
.CS


{
"pt::grammar::peg" : {
"rules" : {
"AddOp"     : {
"is"   : "\\/ {t -} {t +}",
"mode" : "value"
},
"Digit"     : {
"is"   : "\\/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}",
"mode" : "value"
},
"Expression" : {
"is"   : "\\/ {x {t (} {n Expression} {t )}} {x {n Factor} {* {x {n MulOp} {n Factor}}}}",
"mode" : "value"
},
"Factor"    : {
"is"   : "x {n Term} {* {x {n AddOp} {n Term}}}",
"mode" : "value"
},
"MulOp"     : {
"is"   : "\\/ {t *} {t \\/}",
"mode" : "value"
},
"Number"    : {
"is"   : "x {? {n Sign}} {+ {n Digit}}",
"mode" : "value"
},
"Sign"      : {
"is"   : "\\/ {t -} {t +}",
"mode" : "value"
},
"Term"      : {
"is"   : "n Number",
"mode" : "value"
}
},
"start" : "n Expression"
}
}

.CE
.PP
and a Tcl serialization of the same is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
The similarity of the latter to the JSON should be quite obvious.
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.
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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_peg_import_peg.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
not lend themselves too.
.PP
It is formally specified by the grammar shown below, written in
itself. For a tutorial / introduction to the language please go and
read the \fIPEG Language Tutorial\fR.
.PP
.CS


PEG pe-grammar-for-peg (Grammar)

	# --------------------------------------------------------------------
        # Syntactical constructs

        Grammar         <- WHITESPACE Header Definition* Final EOF ;

        Header          <- PEG Identifier StartExpr ;
        Definition      <- Attribute? Identifier IS Expression SEMICOLON ;
        Attribute       <- (VOID / LEAF) COLON ;
        Expression      <- Sequence (SLASH Sequence)* ;
        Sequence        <- Prefix+ ;
        Prefix          <- (AND / NOT)? Suffix ;
        Suffix          <- Primary (QUESTION / STAR / PLUS)? ;
        Primary         <- ALNUM / ALPHA / ASCII / CONTROL / DDIGIT / DIGIT
                        /  GRAPH / LOWER / PRINTABLE / PUNCT / SPACE / UPPER
                        /  WORDCHAR / XDIGIT
                        / Identifier
                        /  OPEN Expression CLOSE
                        /  Literal
                        /  Class
                        /  DOT
                        ;
        Literal         <- APOSTROPH  (!APOSTROPH  Char)* APOSTROPH  WHITESPACE
                        /  DAPOSTROPH (!DAPOSTROPH Char)* DAPOSTROPH WHITESPACE ;
        Class           <- OPENB (!CLOSEB Range)* CLOSEB WHITESPACE ;
        Range           <- Char TO Char / Char ;

        StartExpr       <- OPEN Expression CLOSE ;
void:   Final           <- END SEMICOLON WHITESPACE ;

        # --------------------------------------------------------------------
        # Lexing constructs

        Identifier      <- Ident WHITESPACE ;
leaf:   Ident           <- ('_' / ':' / <alpha>) ('_' / ':' / <alnum>)* ;
        Char            <- CharSpecial / CharOctalFull / CharOctalPart
                        /  CharUnicode / CharUnescaped
                        ;

leaf:   CharSpecial     <- "\\\\" [nrt'"\\[\\]\\\\] ;
leaf:   CharOctalFull   <- "\\\\" [0-2][0-7][0-7] ;
leaf:   CharOctalPart   <- "\\\\" [0-7][0-7]? ;
leaf:   CharUnicode     <- "\\\\" 'u' HexDigit (HexDigit (HexDigit HexDigit?)?)? ;
leaf:   CharUnescaped   <- !"\\\\" . ;

void:   HexDigit        <- [0-9a-fA-F] ;

void:   TO              <- '-'           ;
void:   OPENB           <- "["           ;
void:   CLOSEB          <- "]"           ;
void:   APOSTROPH       <- "'"           ;
void:   DAPOSTROPH      <- '"'           ;
void:   PEG             <- "PEG"   WHITESPACE ;
void:   IS              <- "<-"    WHITESPACE ;







<
<

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

<
|
|
<
|

|
|
|
<





<

<







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
not lend themselves too.
.PP
It is formally specified by the grammar shown below, written in
itself. For a tutorial / introduction to the language please go and
read the \fIPEG Language Tutorial\fR.
.PP
.CS


PEG pe-grammar-for-peg (Grammar)

# --------------------------------------------------------------------
# Syntactical constructs

Grammar         <- WHITESPACE Header Definition* Final EOF ;

Header          <- PEG Identifier StartExpr ;
Definition      <- Attribute? Identifier IS Expression SEMICOLON ;
Attribute       <- (VOID / LEAF) COLON ;
Expression      <- Sequence (SLASH Sequence)* ;
Sequence        <- Prefix+ ;
Prefix          <- (AND / NOT)? Suffix ;
Suffix          <- Primary (QUESTION / STAR / PLUS)? ;
Primary         <- ALNUM / ALPHA / ASCII / CONTROL / DDIGIT / DIGIT
/  GRAPH / LOWER / PRINTABLE / PUNCT / SPACE / UPPER
/  WORDCHAR / XDIGIT
/ Identifier
/  OPEN Expression CLOSE
/  Literal
/  Class
/  DOT
;
Literal         <- APOSTROPH  (!APOSTROPH  Char)* APOSTROPH  WHITESPACE
/  DAPOSTROPH (!DAPOSTROPH Char)* DAPOSTROPH WHITESPACE ;
Class           <- OPENB (!CLOSEB Range)* CLOSEB WHITESPACE ;
Range           <- Char TO Char / Char ;

StartExpr       <- OPEN Expression CLOSE ;
void:   Final           <- END SEMICOLON WHITESPACE ;

# --------------------------------------------------------------------
# Lexing constructs

Identifier      <- Ident WHITESPACE ;
leaf:   Ident           <- ('_' / ':' / <alpha>) ('_' / ':' / <alnum>)* ;
Char            <- CharSpecial / CharOctalFull / CharOctalPart
/  CharUnicode / CharUnescaped
;

leaf:   CharSpecial     <- "\\\\" [nrt'"\\[\\]\\\\] ;
leaf:   CharOctalFull   <- "\\\\" [0-2][0-7][0-7] ;
leaf:   CharOctalPart   <- "\\\\" [0-7][0-7]? ;
leaf:   CharUnicode     <- "\\\\" 'u' HexDigit (HexDigit (HexDigit HexDigit?)?)? ;
leaf:   CharUnescaped   <- !"\\\\" . ;

void:   HexDigit        <- [0-9a-fA-F] ;

void:   TO              <- '-'           ;
void:   OPENB           <- "["           ;
void:   CLOSEB          <- "]"           ;
void:   APOSTROPH       <- "'"           ;
void:   DAPOSTROPH      <- '"'           ;
void:   PEG             <- "PEG"   WHITESPACE ;
void:   IS              <- "<-"    WHITESPACE ;
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
leaf:   NOT             <- "!"     WHITESPACE ;
leaf:   QUESTION        <- "?"     WHITESPACE ;
leaf:   STAR            <- "*"     WHITESPACE ;
leaf:   PLUS            <- "+"     WHITESPACE ;
void:   OPEN            <- "("     WHITESPACE ;
void:   CLOSE           <- ")"     WHITESPACE ;
leaf:   DOT             <- "."     WHITESPACE ;

leaf:   ALNUM           <- "<alnum>"    WHITESPACE ;
leaf:   ALPHA           <- "<alpha>"    WHITESPACE ;
leaf:   ASCII           <- "<ascii>"    WHITESPACE ;
leaf:   CONTROL         <- "<control>"  WHITESPACE ;
leaf:   DDIGIT          <- "<ddigit>"   WHITESPACE ;
leaf:   DIGIT           <- "<digit>"    WHITESPACE ;
leaf:   GRAPH           <- "<graph>"    WHITESPACE ;
leaf:   LOWER           <- "<lower>"    WHITESPACE ;
leaf:   PRINTABLE       <- "<print>"    WHITESPACE ;
leaf:   PUNCT           <- "<punct>"    WHITESPACE ;
leaf:   SPACE           <- "<space>"    WHITESPACE ;
leaf:   UPPER           <- "<upper>"    WHITESPACE ;
leaf:   WORDCHAR        <- "<wordchar>" WHITESPACE ;
leaf:   XDIGIT          <- "<xdigit>"   WHITESPACE ;

void:   WHITESPACE      <- (" " / "\\t" / EOL / COMMENT)* ;
void:   COMMENT         <- '#' (!EOL .)* EOL ;
void:   EOL             <- "\\n\\r" / "\\n" / "\\r" ;
void:   EOF             <- !. ;

        # --------------------------------------------------------------------
END;

.CE
.SS EXAMPLE
Our example specifies the grammar for a basic 4-operation calculator.
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
Using higher-level features of the notation, i.e. the character
classes (predefined and custom), this example can be rewritten as
.PP
.CS


PEG calculator (Expression)
    Sign       <- [-+] 						;
    Number     <- Sign? <ddigit>+				;
    Expression <- '(' Expression ')' / (Factor (MulOp Factor)*)	;
    MulOp      <- [*/]						;
    Factor     <- Term (AddOp Term)*				;
    AddOp      <- [-+]						;
    Term       <- Number					;
END;

.CE
.PP
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.
.PP







<














<




<
|

<





<
<

|
|
|
|
|
|
|
|

<






<
<

|
|
|
|
|
|
|

<







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
leaf:   NOT             <- "!"     WHITESPACE ;
leaf:   QUESTION        <- "?"     WHITESPACE ;
leaf:   STAR            <- "*"     WHITESPACE ;
leaf:   PLUS            <- "+"     WHITESPACE ;
void:   OPEN            <- "("     WHITESPACE ;
void:   CLOSE           <- ")"     WHITESPACE ;
leaf:   DOT             <- "."     WHITESPACE ;

leaf:   ALNUM           <- "<alnum>"    WHITESPACE ;
leaf:   ALPHA           <- "<alpha>"    WHITESPACE ;
leaf:   ASCII           <- "<ascii>"    WHITESPACE ;
leaf:   CONTROL         <- "<control>"  WHITESPACE ;
leaf:   DDIGIT          <- "<ddigit>"   WHITESPACE ;
leaf:   DIGIT           <- "<digit>"    WHITESPACE ;
leaf:   GRAPH           <- "<graph>"    WHITESPACE ;
leaf:   LOWER           <- "<lower>"    WHITESPACE ;
leaf:   PRINTABLE       <- "<print>"    WHITESPACE ;
leaf:   PUNCT           <- "<punct>"    WHITESPACE ;
leaf:   SPACE           <- "<space>"    WHITESPACE ;
leaf:   UPPER           <- "<upper>"    WHITESPACE ;
leaf:   WORDCHAR        <- "<wordchar>" WHITESPACE ;
leaf:   XDIGIT          <- "<xdigit>"   WHITESPACE ;

void:   WHITESPACE      <- (" " / "\\t" / EOL / COMMENT)* ;
void:   COMMENT         <- '#' (!EOL .)* EOL ;
void:   EOL             <- "\\n\\r" / "\\n" / "\\r" ;
void:   EOF             <- !. ;

# --------------------------------------------------------------------
END;

.CE
.SS EXAMPLE
Our example specifies the grammar for a basic 4-operation calculator.
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
Using higher-level features of the notation, i.e. the character
classes (predefined and custom), this example can be rewritten as
.PP
.CS


PEG calculator (Expression)
Sign       <- [-+] 						;
Number     <- Sign? <ddigit>+				;
Expression <- '(' Expression ')' / (Factor (MulOp Factor)*)	;
MulOp      <- [*/]						;
Factor     <- Term (AddOp Term)*				;
AddOp      <- [-+]						;
Term       <- Number					;
END;

.CE
.PP
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.
.PP
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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_peg_interp.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.RE
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression grammar below
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
and the input string
.CS

 120+5
.CE
then a parser should deliver the abstract syntax tree below (except for whitespace)
.PP
.CS


set ast {Expression 0 4
    {Factor 0 4
        {Term 0 2
            {Number 0 2
                {Digit 0 0}
                {Digit 1 1}
                {Digit 2 2}
            }
        }
        {AddOp 3 3}
        {Term 4 4
            {Number 4 4
                {Digit 4 4}
            }
        }
    }
}

.CE
.PP
Or, more graphical
.PP
.PS
.nf
                                                           +- Digit 0 0 | 1
                                                           |            |
                               +- Term 0 2 --- Number 0 2 -+- Digit 1 1 | 2
                               |                           |            |
                               |                           +- Digit 2 2 | 0
                               |                                        |
Expression 0 4 --- Factor 0 4 -+----------------------------- AddOp 3 3 | +
                               |                                        |
                               +- Term 4 4 --- Number 4 4 --- Digit 4 4 | 5
.fi
.PE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
We distinguish between \fIregular\fR and \fIcanonical\fR







<
<

|
|
|
|
|
|
|
|

<




<
|




<
<

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

<




|
|










|







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
.RE
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression grammar below
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
and the input string
.CS

120+5
.CE
then a parser should deliver the abstract syntax tree below (except for whitespace)
.PP
.CS


set ast {Expression 0 4
{Factor 0 4
{Term 0 2
{Number 0 2
{Digit 0 0}
{Digit 1 1}
{Digit 2 2}
}
}
{AddOp 3 3}
{Term 4 4
{Number 4 4
{Digit 4 4}
}
}
}
}

.CE
.PP
Or, more graphical
.PP
\.PS
\.nf
                                                           +- Digit 0 0 | 1
                                                           |            |
                               +- Term 0 2 --- Number 0 2 -+- Digit 1 1 | 2
                               |                           |            |
                               |                           +- Digit 2 2 | 0
                               |                                        |
Expression 0 4 --- Factor 0 4 -+----------------------------- AddOp 3 3 | +
                               |                                        |
                               +- Term 4 4 --- Number 4 4 --- Digit 4 4 | 5
.fi
\.PE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
We distinguish between \fIregular\fR and \fIcanonical\fR
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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_peg_introduction.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
401
402
403
404
405
406
407
408
409
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

400
401
402
403
404
405
406

407
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_peg_language.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
language. It was defined to make writing the specification of a
grammar easy, something the other formats found in the Parser Tools do
not lend themselves too.
.SH "THE ELEMENTS OF THE LANGUAGE"
.SS "BASIC STRUCTURE"
The general outline of a textual PEG is
.CS


PEG <<name>> (<<start-expression>>)
   <<rules>>
END;

.CE
\fINote\fR: We are using text in double angle-brackets as
place-holders for things not yet explained.
.SS NAMES
Names are mostly used to identify the nonterminal symbols of the
grammar, i.e. that which occurs on the left-hand side of a <rule>.
The exception to that is the name given after the keyword \fBPEG\fR
(see previous section), which is the name of the whole grammar itself.
.PP
The structure of a name is simple:
.IP [1]
It begins with a letter, underscore, or colon, followed by
.IP [2]
zero or more letters, digits, underscores, or colons.
.PP
Or, in formal textual notation:
.CS


    ([_:] / <alpha>) ([_:] / <alnum>)*

.CE
Examples of names:
.CS


    Hello
    ::world
    _:submarine55_

.CE
Examples of text which are \fInot\fR names:
.CS


    12
    .bogus
    0wrong
    @location

.CE
.SS RULES
The main body of the text of a grammar specification is taken up by
the rules. Each rule defines the sentence structure of one nonterminal
symbol. Their basic structure is
.CS


     <<name>>  <-  <<expression>> ;

.CE
The <name> specifies the nonterminal symbol to be defined, the
<expression> after the arrow (<-) then declares its structure.
.PP
Note that each rule ends in a single semicolon, even the last.
I.e. the semicolon is a rule \fIterminator\fR, not a separator.
.PP







<
<

|

<

















<
<
|
<



<
<
|
|
|
<



<
<
|
|
|
|
<






<
<
|
<







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
language. It was defined to make writing the specification of a
grammar easy, something the other formats found in the Parser Tools do
not lend themselves too.
.SH "THE ELEMENTS OF THE LANGUAGE"
.SS "BASIC STRUCTURE"
The general outline of a textual PEG is
.CS


PEG <<name>> (<<start-expression>>)
<<rules>>
END;

.CE
\fINote\fR: We are using text in double angle-brackets as
place-holders for things not yet explained.
.SS NAMES
Names are mostly used to identify the nonterminal symbols of the
grammar, i.e. that which occurs on the left-hand side of a <rule>.
The exception to that is the name given after the keyword \fBPEG\fR
(see previous section), which is the name of the whole grammar itself.
.PP
The structure of a name is simple:
.IP [1]
It begins with a letter, underscore, or colon, followed by
.IP [2]
zero or more letters, digits, underscores, or colons.
.PP
Or, in formal textual notation:
.CS


([_:] / <alpha>) ([_:] / <alnum>)*

.CE
Examples of names:
.CS


Hello
::world
_:submarine55_

.CE
Examples of text which are \fInot\fR names:
.CS


12
\.bogus
0wrong
@location

.CE
.SS RULES
The main body of the text of a grammar specification is taken up by
the rules. Each rule defines the sentence structure of one nonterminal
symbol. Their basic structure is
.CS


<<name>>  <-  <<expression>> ;

.CE
The <name> specifies the nonterminal symbol to be defined, the
<expression> after the arrow (<-) then declares its structure.
.PP
Note that each rule ends in a single semicolon, even the last.
I.e. the semicolon is a rule \fIterminator\fR, not a separator.
.PP
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
constraints. There is no explicit operator for the sequencing (also
known as \fIconcatenation\fR) of parts however. This is specified by
simply placing the parts adjacent to each other.
.PP
Here are the operators, from highest to lowest priority (i.e. strength
of binding):
.CS


    # 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).
    <<expression>> *  # Parse expression zero or more times.
    <<expression>> +  # Parse expression one or more times.

    # Expression nesting

    ( <<expression>> ) # Put an expression in parens to change its priority.

.CE
With this we can now deconstruct the formal expression for names given
in section \fBNames\fR:
.CS


    ([_:] / <alpha>) ([_:] / <alnum>)*

.CE
It is a sequence of two parts,
.CS

    [_:] / <alpha>
.CE
and
.CS

    ([_:] / <alnum>)*
.CE
The parentheses around the parts kept their inner alternatives bound
together against the normally higher priority of the sequence. Each of
the two parts is an alternative, with the second part additionally
repeated zero or more times, leaving us with the three atomic
expressions
.CS


    [_:]
    <alpha>
    <alnum>

.CE
And \fIatomic expressions\fR are our next topic. They
fall into three classes:
.IP [1]
names, i.e. nonterminal symbols,
.IP [2]
string literals, and
.IP [3]
character classes.
.PP
Names we know about already, or see section \fBNames\fR for a
refresher.
.PP
String literals are simple. They are delimited by (i.e. start and end
with) either a single or double-apostroph, and in between the
delimiters we can have any character but the delimiter itself. They
can be empty as well. Examples of strings are
.CS


    ''
    ""
    'hello'
    "umbra"
    "'"
    '"'

.CE
The last two examples show how to place any of the delimiters into a
string.
.PP
For the last, but not least of our atomic expressions, character
classes, we have a number of predefined classes, shown below, and the
ability to construct or own. The predefined classes are:
.CS


    <alnum>    # Any unicode alphabet or digit character (string is alnum).
    <alpha>    # Any unicode alphabet character (string is alpha).
    <ascii>    # Any unicode character below codepoint 0x80 (string is ascii).
    <control>  # Any unicode control character (string is control).
    <ddigit>   # The digit characters [0-9].
    <digit>    # Any unicode digit character (string is digit).
    <graph>    # Any unicode printing character, except space (string is graph).
    <lower>    # Any unicode lower-case alphabet character (string is lower).
    <print>    # Any unicode printing character, incl. space (string is print).
    <punct>    # Any unicode punctuation character (string is punct).
    <space>    # Any unicode space character (string is space).
    <upper>    # Any unicode upper-case alphabet character (string is upper).
    <wordchar> # Any unicode word character (string is wordchar).
    <xdigit>   # The hexadecimal digit characters [0-9a-fA-F].
    .          # Any character, except end of input.

.CE
And the syntax of custom-defined character classes is
.CS


    [ <<range>>* ]

.CE
where each range is either a single character, or of the form
.CS


   <<character>> - <character>>

.CE
Examples for character classes we have seen already in the course of
this introduction are
.CS


    [_:]
    [0-9]
    [0-9a-fA-F]

.CE
We are nearly done with expressions. The only piece left is to tell
how the characters in character classes and string literals are
specified.
.PP
Basically characters in the input stand for themselves, and in
addition to that we several types of escape syntax to to repesent
control characters, or characters outside of the encoding the text is
in.
.PP
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:
.CS


    \\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

.CE
.SS "WHITESPACE AND COMMENTS"
One issue not touched upon so far is whitespace and comments.
.PP
Whitespace is any unicode space character, i.e. anything in the
character class <space>, and comments. The latter are sequences of
characters starting with a '#' (hash, unicode codepoint 0x23) and
ending at the next end-of-line.
.PP
Whitespace can be freely used between all syntactical elements of a
grammar specification. It cannot be used inside of syntactical
elements, like names, string literals, predefined character classes,
etc.
.SS "NONTERMINAL ATTRIBUTES"
Lastly, a more advanced topic. In the section \fBRules\fR we gave
the structure of a rule as
.CS


     <<name>>  <-  <<expression>> ;

.CE
This is not quite true. It is possible to associate a semantic mode
with the nonterminal in the rule, by writing it before the name,
separated from it by a colon, i.e. writing
.CS


    <<mode>> : <<name>>  <-  <<expression>> ;

.CE
is also allowed. This mode is optional. The known modes and their
meanings are:
.TP
\fBvalue\fR
The semantic value of the nonterminal symbol is an abstract syntax
tree consisting of a single node node for the nonterminal itself,







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




<
<
|
<



<
|



<
|







<
<
|
|
|
<


















<
<
|
|
|
|
|
|
<








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



<
<
|
<



<
<
|
<




<
<
|
|
|
<















<
<
|
|
|
|
<

















<
<
|
<





<
<
|
<







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
constraints. There is no explicit operator for the sequencing (also
known as \fIconcatenation\fR) of parts however. This is specified by
simply placing the parts adjacent to each other.
.PP
Here are the operators, from highest to lowest priority (i.e. strength
of binding):
.CS


# 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).
<<expression>> *  # Parse expression zero or more times.
<<expression>> +  # Parse expression one or more times.

# Expression nesting

( <<expression>> ) # Put an expression in parens to change its priority.

.CE
With this we can now deconstruct the formal expression for names given
in section \fBNames\fR:
.CS


([_:] / <alpha>) ([_:] / <alnum>)*

.CE
It is a sequence of two parts,
.CS

[_:] / <alpha>
.CE
and
.CS

([_:] / <alnum>)*
.CE
The parentheses around the parts kept their inner alternatives bound
together against the normally higher priority of the sequence. Each of
the two parts is an alternative, with the second part additionally
repeated zero or more times, leaving us with the three atomic
expressions
.CS


[_:]
<alpha>
<alnum>

.CE
And \fIatomic expressions\fR are our next topic. They
fall into three classes:
.IP [1]
names, i.e. nonterminal symbols,
.IP [2]
string literals, and
.IP [3]
character classes.
.PP
Names we know about already, or see section \fBNames\fR for a
refresher.
.PP
String literals are simple. They are delimited by (i.e. start and end
with) either a single or double-apostroph, and in between the
delimiters we can have any character but the delimiter itself. They
can be empty as well. Examples of strings are
.CS


\''
""
\'hello'
"umbra"
"'"
\'"'

.CE
The last two examples show how to place any of the delimiters into a
string.
.PP
For the last, but not least of our atomic expressions, character
classes, we have a number of predefined classes, shown below, and the
ability to construct or own. The predefined classes are:
.CS


<alnum>    # Any unicode alphabet or digit character (string is alnum).
<alpha>    # Any unicode alphabet character (string is alpha).
<ascii>    # Any unicode character below codepoint 0x80 (string is ascii).
<control>  # Any unicode control character (string is control).
<ddigit>   # The digit characters [0-9].
<digit>    # Any unicode digit character (string is digit).
<graph>    # Any unicode printing character, except space (string is graph).
<lower>    # Any unicode lower-case alphabet character (string is lower).
<print>    # Any unicode printing character, incl. space (string is print).
<punct>    # Any unicode punctuation character (string is punct).
<space>    # Any unicode space character (string is space).
<upper>    # Any unicode upper-case alphabet character (string is upper).
<wordchar> # Any unicode word character (string is wordchar).
<xdigit>   # The hexadecimal digit characters [0-9a-fA-F].
\.          # Any character, except end of input.

.CE
And the syntax of custom-defined character classes is
.CS


[ <<range>>* ]

.CE
where each range is either a single character, or of the form
.CS


<<character>> - <character>>

.CE
Examples for character classes we have seen already in the course of
this introduction are
.CS


[_:]
[0-9]
[0-9a-fA-F]

.CE
We are nearly done with expressions. The only piece left is to tell
how the characters in character classes and string literals are
specified.
.PP
Basically characters in the input stand for themselves, and in
addition to that we several types of escape syntax to to repesent
control characters, or characters outside of the encoding the text is
in.
.PP
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:
.CS


\\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

.CE
.SS "WHITESPACE AND COMMENTS"
One issue not touched upon so far is whitespace and comments.
.PP
Whitespace is any unicode space character, i.e. anything in the
character class <space>, and comments. The latter are sequences of
characters starting with a '#' (hash, unicode codepoint 0x23) and
ending at the next end-of-line.
.PP
Whitespace can be freely used between all syntactical elements of a
grammar specification. It cannot be used inside of syntactical
elements, like names, string literals, predefined character classes,
etc.
.SS "NONTERMINAL ATTRIBUTES"
Lastly, a more advanced topic. In the section \fBRules\fR we gave
the structure of a rule as
.CS


<<name>>  <-  <<expression>> ;

.CE
This is not quite true. It is possible to associate a semantic mode
with the nonterminal in the rule, by writing it before the name,
separated from it by a colon, i.e. writing
.CS


<<mode>> : <<name>>  <-  <<expression>> ;

.CE
is also allowed. This mode is optional. The known modes and their
meanings are:
.TP
\fBvalue\fR
The semantic value of the nonterminal symbol is an abstract syntax
tree consisting of a single node node for the nonterminal itself,
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
not lend themselves too.
.PP
It is formally specified by the grammar shown below, written in
itself. For a tutorial / introduction to the language please go and
read the \fIPEG Language Tutorial\fR.
.PP
.CS


PEG pe-grammar-for-peg (Grammar)

	# --------------------------------------------------------------------
        # Syntactical constructs

        Grammar         <- WHITESPACE Header Definition* Final EOF ;

        Header          <- PEG Identifier StartExpr ;
        Definition      <- Attribute? Identifier IS Expression SEMICOLON ;
        Attribute       <- (VOID / LEAF) COLON ;
        Expression      <- Sequence (SLASH Sequence)* ;
        Sequence        <- Prefix+ ;
        Prefix          <- (AND / NOT)? Suffix ;
        Suffix          <- Primary (QUESTION / STAR / PLUS)? ;
        Primary         <- ALNUM / ALPHA / ASCII / CONTROL / DDIGIT / DIGIT
                        /  GRAPH / LOWER / PRINTABLE / PUNCT / SPACE / UPPER
                        /  WORDCHAR / XDIGIT
                        / Identifier
                        /  OPEN Expression CLOSE
                        /  Literal
                        /  Class
                        /  DOT
                        ;
        Literal         <- APOSTROPH  (!APOSTROPH  Char)* APOSTROPH  WHITESPACE
                        /  DAPOSTROPH (!DAPOSTROPH Char)* DAPOSTROPH WHITESPACE ;
        Class           <- OPENB (!CLOSEB Range)* CLOSEB WHITESPACE ;
        Range           <- Char TO Char / Char ;

        StartExpr       <- OPEN Expression CLOSE ;
void:   Final           <- END SEMICOLON WHITESPACE ;

        # --------------------------------------------------------------------
        # Lexing constructs

        Identifier      <- Ident WHITESPACE ;
leaf:   Ident           <- ('_' / ':' / <alpha>) ('_' / ':' / <alnum>)* ;
        Char            <- CharSpecial / CharOctalFull / CharOctalPart
                        /  CharUnicode / CharUnescaped
                        ;

leaf:   CharSpecial     <- "\\\\" [nrt'"\\[\\]\\\\] ;
leaf:   CharOctalFull   <- "\\\\" [0-2][0-7][0-7] ;
leaf:   CharOctalPart   <- "\\\\" [0-7][0-7]? ;
leaf:   CharUnicode     <- "\\\\" 'u' HexDigit (HexDigit (HexDigit HexDigit?)?)? ;
leaf:   CharUnescaped   <- !"\\\\" . ;

void:   HexDigit        <- [0-9a-fA-F] ;

void:   TO              <- '-'           ;
void:   OPENB           <- "["           ;
void:   CLOSEB          <- "]"           ;
void:   APOSTROPH       <- "'"           ;
void:   DAPOSTROPH      <- '"'           ;
void:   PEG             <- "PEG"   WHITESPACE ;
void:   IS              <- "<-"    WHITESPACE ;







<
<

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

<
|
|
<
|

|
|
|
<





<

<







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
not lend themselves too.
.PP
It is formally specified by the grammar shown below, written in
itself. For a tutorial / introduction to the language please go and
read the \fIPEG Language Tutorial\fR.
.PP
.CS


PEG pe-grammar-for-peg (Grammar)

# --------------------------------------------------------------------
# Syntactical constructs

Grammar         <- WHITESPACE Header Definition* Final EOF ;

Header          <- PEG Identifier StartExpr ;
Definition      <- Attribute? Identifier IS Expression SEMICOLON ;
Attribute       <- (VOID / LEAF) COLON ;
Expression      <- Sequence (SLASH Sequence)* ;
Sequence        <- Prefix+ ;
Prefix          <- (AND / NOT)? Suffix ;
Suffix          <- Primary (QUESTION / STAR / PLUS)? ;
Primary         <- ALNUM / ALPHA / ASCII / CONTROL / DDIGIT / DIGIT
/  GRAPH / LOWER / PRINTABLE / PUNCT / SPACE / UPPER
/  WORDCHAR / XDIGIT
/ Identifier
/  OPEN Expression CLOSE
/  Literal
/  Class
/  DOT
;
Literal         <- APOSTROPH  (!APOSTROPH  Char)* APOSTROPH  WHITESPACE
/  DAPOSTROPH (!DAPOSTROPH Char)* DAPOSTROPH WHITESPACE ;
Class           <- OPENB (!CLOSEB Range)* CLOSEB WHITESPACE ;
Range           <- Char TO Char / Char ;

StartExpr       <- OPEN Expression CLOSE ;
void:   Final           <- END SEMICOLON WHITESPACE ;

# --------------------------------------------------------------------
# Lexing constructs

Identifier      <- Ident WHITESPACE ;
leaf:   Ident           <- ('_' / ':' / <alpha>) ('_' / ':' / <alnum>)* ;
Char            <- CharSpecial / CharOctalFull / CharOctalPart
/  CharUnicode / CharUnescaped
;

leaf:   CharSpecial     <- "\\\\" [nrt'"\\[\\]\\\\] ;
leaf:   CharOctalFull   <- "\\\\" [0-2][0-7][0-7] ;
leaf:   CharOctalPart   <- "\\\\" [0-7][0-7]? ;
leaf:   CharUnicode     <- "\\\\" 'u' HexDigit (HexDigit (HexDigit HexDigit?)?)? ;
leaf:   CharUnescaped   <- !"\\\\" . ;

void:   HexDigit        <- [0-9a-fA-F] ;

void:   TO              <- '-'           ;
void:   OPENB           <- "["           ;
void:   CLOSEB          <- "]"           ;
void:   APOSTROPH       <- "'"           ;
void:   DAPOSTROPH      <- '"'           ;
void:   PEG             <- "PEG"   WHITESPACE ;
void:   IS              <- "<-"    WHITESPACE ;
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
leaf:   NOT             <- "!"     WHITESPACE ;
leaf:   QUESTION        <- "?"     WHITESPACE ;
leaf:   STAR            <- "*"     WHITESPACE ;
leaf:   PLUS            <- "+"     WHITESPACE ;
void:   OPEN            <- "("     WHITESPACE ;
void:   CLOSE           <- ")"     WHITESPACE ;
leaf:   DOT             <- "."     WHITESPACE ;

leaf:   ALNUM           <- "<alnum>"    WHITESPACE ;
leaf:   ALPHA           <- "<alpha>"    WHITESPACE ;
leaf:   ASCII           <- "<ascii>"    WHITESPACE ;
leaf:   CONTROL         <- "<control>"  WHITESPACE ;
leaf:   DDIGIT          <- "<ddigit>"   WHITESPACE ;
leaf:   DIGIT           <- "<digit>"    WHITESPACE ;
leaf:   GRAPH           <- "<graph>"    WHITESPACE ;
leaf:   LOWER           <- "<lower>"    WHITESPACE ;
leaf:   PRINTABLE       <- "<print>"    WHITESPACE ;
leaf:   PUNCT           <- "<punct>"    WHITESPACE ;
leaf:   SPACE           <- "<space>"    WHITESPACE ;
leaf:   UPPER           <- "<upper>"    WHITESPACE ;
leaf:   WORDCHAR        <- "<wordchar>" WHITESPACE ;
leaf:   XDIGIT          <- "<xdigit>"   WHITESPACE ;

void:   WHITESPACE      <- (" " / "\\t" / EOL / COMMENT)* ;
void:   COMMENT         <- '#' (!EOL .)* EOL ;
void:   EOL             <- "\\n\\r" / "\\n" / "\\r" ;
void:   EOF             <- !. ;

        # --------------------------------------------------------------------
END;

.CE
.SS EXAMPLE
Our example specifies the grammar for a basic 4-operation calculator.
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
Using higher-level features of the notation, i.e. the character
classes (predefined and custom), this example can be rewritten as
.PP
.CS


PEG calculator (Expression)
    Sign       <- [-+] 						;
    Number     <- Sign? <ddigit>+				;
    Expression <- '(' Expression ')' / (Factor (MulOp Factor)*)	;
    MulOp      <- [*/]						;
    Factor     <- Term (AddOp Term)*				;
    AddOp      <- [-+]						;
    Term       <- Number					;
END;

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<














<




<
|

<





<
<

|
|
|
|
|
|
|
|

<






<
<

|
|
|
|
|
|
|

<
















<

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
leaf:   NOT             <- "!"     WHITESPACE ;
leaf:   QUESTION        <- "?"     WHITESPACE ;
leaf:   STAR            <- "*"     WHITESPACE ;
leaf:   PLUS            <- "+"     WHITESPACE ;
void:   OPEN            <- "("     WHITESPACE ;
void:   CLOSE           <- ")"     WHITESPACE ;
leaf:   DOT             <- "."     WHITESPACE ;

leaf:   ALNUM           <- "<alnum>"    WHITESPACE ;
leaf:   ALPHA           <- "<alpha>"    WHITESPACE ;
leaf:   ASCII           <- "<ascii>"    WHITESPACE ;
leaf:   CONTROL         <- "<control>"  WHITESPACE ;
leaf:   DDIGIT          <- "<ddigit>"   WHITESPACE ;
leaf:   DIGIT           <- "<digit>"    WHITESPACE ;
leaf:   GRAPH           <- "<graph>"    WHITESPACE ;
leaf:   LOWER           <- "<lower>"    WHITESPACE ;
leaf:   PRINTABLE       <- "<print>"    WHITESPACE ;
leaf:   PUNCT           <- "<punct>"    WHITESPACE ;
leaf:   SPACE           <- "<space>"    WHITESPACE ;
leaf:   UPPER           <- "<upper>"    WHITESPACE ;
leaf:   WORDCHAR        <- "<wordchar>" WHITESPACE ;
leaf:   XDIGIT          <- "<xdigit>"   WHITESPACE ;

void:   WHITESPACE      <- (" " / "\\t" / EOL / COMMENT)* ;
void:   COMMENT         <- '#' (!EOL .)* EOL ;
void:   EOL             <- "\\n\\r" / "\\n" / "\\r" ;
void:   EOF             <- !. ;

# --------------------------------------------------------------------
END;

.CE
.SS EXAMPLE
Our example specifies the grammar for a basic 4-operation calculator.
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
Using higher-level features of the notation, i.e. the character
classes (predefined and custom), this example can be rewritten as
.PP
.CS


PEG calculator (Expression)
Sign       <- [-+] 						;
Number     <- Sign? <ddigit>+				;
Expression <- '(' Expression ')' / (Factor (MulOp Factor)*)	;
MulOp      <- [*/]						;
Factor     <- Term (AddOp Term)*				;
AddOp      <- [-+]						;
Term       <- Number					;
END;

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_peg_to_container.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
grammar in question.
.PP
It has no direct formal specification beyond what was said above.
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
one possible CONTAINER serialization for it is
.PP
.CS


snit::type a_pe_grammar {
    constructor {} {
        install myg using pt::peg::container ${selfns}::G
        $myg start {n Expression}
        $myg add   AddOp Digit Expression Factor MulOp Number Sign Term
        $myg modes {
            AddOp      value
            Digit      value
            Expression value
            Factor     value
            MulOp      value
            Number     value
            Sign       value
            Term       value
        }
        $myg rules {
            AddOp      {/ {t -} {t +}}
            Digit      {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}
            Expression {/ {x {t \\50} {n Expression} {t \\51}} {x {n Factor} {* {x {n MulOp} {n Factor}}}}}
            Factor     {x {n Term} {* {x {n AddOp} {n Term}}}}
            MulOp      {/ {t *} {t /}}
            Number     {x {? {n Sign}} {+ {n Digit}}}
            Sign       {/ {t -} {t +}}
            Term       {n Number}
        }
        return
    }

    component myg
    delegate method * to myg
}

.CE
.PP
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.
.PP







<
<

|
|
|
|
|
|
|
|

<





<
<

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

<







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
grammar in question.
.PP
It has no direct formal specification beyond what was said above.
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
one possible CONTAINER serialization for it is
.PP
.CS


snit::type a_pe_grammar {
constructor {} {
install myg using pt::peg::container ${selfns}::G
$myg start {n Expression}
$myg add   AddOp Digit Expression Factor MulOp Number Sign Term
$myg modes {
AddOp      value
Digit      value
Expression value
Factor     value
MulOp      value
Number     value
Sign       value
Term       value
}
$myg rules {
AddOp      {/ {t -} {t +}}
Digit      {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}
Expression {/ {x {t \\50} {n Expression} {t \\51}} {x {n Factor} {* {x {n MulOp} {n Factor}}}}}
Factor     {x {n Term} {* {x {n AddOp} {n Term}}}}
MulOp      {/ {t *} {t /}}
Number     {x {? {n Sign}} {+ {n Digit}}}
Sign       {/ {t -} {t +}}
Term       {n Number}
}
return
}

component myg
delegate method * to myg
}

.CE
.PP
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.
.PP
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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_peg_to_cparam.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_peg_to_json.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
the parsing expressions themselves are not translated further, but
kept as JSON strings containing a nested Tcl list, and there is no
concept of canonicity for the JSON either.
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
a JSON serialization for it is
.PP
.CS


{
    "pt::grammar::peg" : {
        "rules" : {
            "AddOp"     : {
                "is"   : "\\/ {t -} {t +}",
                "mode" : "value"
            },
            "Digit"     : {
                "is"   : "\\/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}",
                "mode" : "value"
            },
            "Expression" : {
                "is"   : "\\/ {x {t (} {n Expression} {t )}} {x {n Factor} {* {x {n MulOp} {n Factor}}}}",
                "mode" : "value"
            },
            "Factor"    : {
                "is"   : "x {n Term} {* {x {n AddOp} {n Term}}}",
                "mode" : "value"
            },
            "MulOp"     : {
                "is"   : "\\/ {t *} {t \\/}",
                "mode" : "value"
            },
            "Number"    : {
                "is"   : "x {? {n Sign}} {+ {n Digit}}",
                "mode" : "value"
            },
            "Sign"      : {
                "is"   : "\\/ {t -} {t +}",
                "mode" : "value"
            },
            "Term"      : {
                "is"   : "n Number",
                "mode" : "value"
            }
        },
        "start" : "n Expression"
    }
}

.CE
.PP
and a Tcl serialization of the same is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
The similarity of the latter to the JSON should be quite obvious.
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
the parsing expressions themselves are not translated further, but
kept as JSON strings containing a nested Tcl list, and there is no
concept of canonicity for the JSON either.
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
a JSON serialization for it is
.PP
.CS


{
"pt::grammar::peg" : {
"rules" : {
"AddOp"     : {
"is"   : "\\/ {t -} {t +}",
"mode" : "value"
},
"Digit"     : {
"is"   : "\\/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}",
"mode" : "value"
},
"Expression" : {
"is"   : "\\/ {x {t (} {n Expression} {t )}} {x {n Factor} {* {x {n MulOp} {n Factor}}}}",
"mode" : "value"
},
"Factor"    : {
"is"   : "x {n Term} {* {x {n AddOp} {n Term}}}",
"mode" : "value"
},
"MulOp"     : {
"is"   : "\\/ {t *} {t \\/}",
"mode" : "value"
},
"Number"    : {
"is"   : "x {? {n Sign}} {+ {n Digit}}",
"mode" : "value"
},
"Sign"      : {
"is"   : "\\/ {t -} {t +}",
"mode" : "value"
},
"Term"      : {
"is"   : "n Number",
"mode" : "value"
}
},
"start" : "n Expression"
}
}

.CE
.PP
and a Tcl serialization of the same is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
The similarity of the latter to the JSON should be quite obvious.
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.
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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_peg_to_param.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
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
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
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
generated by the other PARAM-derived formats.
.PP
It has no direct formal specification beyond what was said above.
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
one possible PARAM serialization for it is
.PP
.CS


# -*- text -*-
# Parsing Expression Grammar 'TEMPLATE'.
# Generated for unknown, from file 'TEST'

#
# Grammar Start Expression
#

<<MAIN>>:
         call              sym_Expression
         halt

#
# value Symbol 'AddOp'
#

sym_AddOp:
# /
#     '-'
#     '+'

         symbol_restore    AddOp
  found! jump              found_7
         loc_push

         call              choice_5

   fail! value_clear
     ok! value_leaf        AddOp
         symbol_save       AddOp
         error_nonterminal AddOp
         loc_pop_discard

found_7:
     ok! ast_value_push
         return

choice_5:
# /
#     '-'
#     '+'

         error_clear

         loc_push
         error_push

         input_next        "t -"
     ok! test_char         "-"

         error_pop_merge
     ok! jump              oknoast_4

         loc_pop_rewind
         loc_push
         error_push

         input_next        "t +"
     ok! test_char         "+"

         error_pop_merge
     ok! jump              oknoast_4

         loc_pop_rewind
         status_fail
         return

oknoast_4:
         loc_pop_discard
         return
#
# value Symbol 'Digit'
#

sym_Digit:
# /
#     '0'
#     '1'
#     '2'
#     '3'
#     '4'
#     '5'
#     '6'
#     '7'
#     '8'
#     '9'

         symbol_restore    Digit
  found! jump              found_22
         loc_push

         call              choice_20

   fail! value_clear
     ok! value_leaf        Digit
         symbol_save       Digit
         error_nonterminal Digit
         loc_pop_discard

found_22:
     ok! ast_value_push
         return

choice_20:
# /
#     '0'
#     '1'
#     '2'
#     '3'
#     '4'
#     '5'
#     '6'
#     '7'
#     '8'
#     '9'

         error_clear

         loc_push
         error_push

         input_next        "t 0"
     ok! test_char         "0"

         error_pop_merge
     ok! jump              oknoast_19

         loc_pop_rewind
         loc_push
         error_push

         input_next        "t 1"
     ok! test_char         "1"

         error_pop_merge
     ok! jump              oknoast_19

         loc_pop_rewind
         loc_push
         error_push

         input_next        "t 2"
     ok! test_char         "2"

         error_pop_merge
     ok! jump              oknoast_19

         loc_pop_rewind
         loc_push
         error_push

         input_next        "t 3"
     ok! test_char         "3"

         error_pop_merge
     ok! jump              oknoast_19

         loc_pop_rewind
         loc_push
         error_push

         input_next        "t 4"
     ok! test_char         "4"

         error_pop_merge
     ok! jump              oknoast_19

         loc_pop_rewind
         loc_push
         error_push

         input_next        "t 5"
     ok! test_char         "5"

         error_pop_merge
     ok! jump              oknoast_19

         loc_pop_rewind
         loc_push
         error_push

         input_next        "t 6"
     ok! test_char         "6"

         error_pop_merge
     ok! jump              oknoast_19

         loc_pop_rewind
         loc_push
         error_push

         input_next        "t 7"
     ok! test_char         "7"

         error_pop_merge
     ok! jump              oknoast_19

         loc_pop_rewind
         loc_push
         error_push

         input_next        "t 8"
     ok! test_char         "8"

         error_pop_merge
     ok! jump              oknoast_19

         loc_pop_rewind
         loc_push
         error_push

         input_next        "t 9"
     ok! test_char         "9"

         error_pop_merge
     ok! jump              oknoast_19

         loc_pop_rewind
         status_fail
         return

oknoast_19:
         loc_pop_discard
         return
#
# value Symbol 'Expression'
#

sym_Expression:
# /
#     x
#         '\\('
#         (Expression)
#         '\\)'
#     x
#         (Factor)
#         *
#             x
#                 (MulOp)
#                 (Factor)

         symbol_restore    Expression
  found! jump              found_46
         loc_push
         ast_push

         call              choice_44

   fail! value_clear
     ok! value_reduce      Expression
         symbol_save       Expression
         error_nonterminal Expression
         ast_pop_rewind
         loc_pop_discard

found_46:
     ok! ast_value_push
         return

choice_44:
# /
#     x
#         '\\('
#         (Expression)
#         '\\)'
#     x
#         (Factor)
#         *
#             x
#                 (MulOp)
#                 (Factor)

         error_clear

         ast_push
         loc_push
         error_push

         call              sequence_27

         error_pop_merge
     ok! jump              ok_43

         ast_pop_rewind
         loc_pop_rewind
         ast_push
         loc_push
         error_push

         call              sequence_40

         error_pop_merge
     ok! jump              ok_43

         ast_pop_rewind
         loc_pop_rewind
         status_fail
         return

ok_43:
         ast_pop_discard
         loc_pop_discard
         return

sequence_27:
# x
#     '\\('
#     (Expression)
#     '\\)'

         loc_push
         error_clear

         error_push

         input_next        "t ("
     ok! test_char         "("

         error_pop_merge
   fail! jump              failednoast_29
         ast_push
         error_push

         call              sym_Expression

         error_pop_merge
   fail! jump              failed_28
         error_push

         input_next        "t )"
     ok! test_char         ")"

         error_pop_merge
   fail! jump              failed_28

         ast_pop_discard
         loc_pop_discard
         return

failed_28:
         ast_pop_rewind

failednoast_29:
         loc_pop_rewind
         return

sequence_40:
# x
#     (Factor)
#     *
#         x
#             (MulOp)
#             (Factor)

         ast_push
         loc_push
         error_clear

         error_push

         call              sym_Factor

         error_pop_merge
   fail! jump              failed_41
         error_push

         call              kleene_37

         error_pop_merge
   fail! jump              failed_41

         ast_pop_discard
         loc_pop_discard
         return

failed_41:
         ast_pop_rewind
         loc_pop_rewind
         return

kleene_37:
# *
#     x
#         (MulOp)
#         (Factor)

         loc_push
         error_push

         call              sequence_34

         error_pop_merge
   fail! jump              failed_38
         loc_pop_discard
         jump              kleene_37

failed_38:
         loc_pop_rewind
         status_ok
         return

sequence_34:
# x
#     (MulOp)
#     (Factor)

         ast_push
         loc_push
         error_clear

         error_push

         call              sym_MulOp

         error_pop_merge
   fail! jump              failed_35
         error_push

         call              sym_Factor

         error_pop_merge
   fail! jump              failed_35

         ast_pop_discard
         loc_pop_discard
         return

failed_35:
         ast_pop_rewind
         loc_pop_rewind
         return
#
# value Symbol 'Factor'
#

sym_Factor:
# x
#     (Term)
#     *
#         x
#             (AddOp)
#             (Term)

         symbol_restore    Factor
  found! jump              found_60
         loc_push
         ast_push

         call              sequence_57

   fail! value_clear
     ok! value_reduce      Factor
         symbol_save       Factor
         error_nonterminal Factor
         ast_pop_rewind
         loc_pop_discard

found_60:
     ok! ast_value_push
         return

sequence_57:
# x
#     (Term)
#     *
#         x
#             (AddOp)
#             (Term)

         ast_push
         loc_push
         error_clear

         error_push

         call              sym_Term

         error_pop_merge
   fail! jump              failed_58
         error_push

         call              kleene_54

         error_pop_merge
   fail! jump              failed_58

         ast_pop_discard
         loc_pop_discard
         return

failed_58:
         ast_pop_rewind
         loc_pop_rewind
         return

kleene_54:
# *
#     x
#         (AddOp)
#         (Term)

         loc_push
         error_push

         call              sequence_51

         error_pop_merge
   fail! jump              failed_55
         loc_pop_discard
         jump              kleene_54

failed_55:
         loc_pop_rewind
         status_ok
         return

sequence_51:
# x
#     (AddOp)
#     (Term)

         ast_push
         loc_push
         error_clear

         error_push

         call              sym_AddOp

         error_pop_merge
   fail! jump              failed_52
         error_push

         call              sym_Term

         error_pop_merge
   fail! jump              failed_52

         ast_pop_discard
         loc_pop_discard
         return

failed_52:
         ast_pop_rewind
         loc_pop_rewind
         return
#
# value Symbol 'MulOp'
#

sym_MulOp:
# /
#     '*'
#     '/'

         symbol_restore    MulOp
  found! jump              found_67
         loc_push

         call              choice_65

   fail! value_clear
     ok! value_leaf        MulOp
         symbol_save       MulOp
         error_nonterminal MulOp
         loc_pop_discard

found_67:
     ok! ast_value_push
         return

choice_65:
# /
#     '*'
#     '/'

         error_clear

         loc_push
         error_push

         input_next        "t *"
     ok! test_char         "*"

         error_pop_merge
     ok! jump              oknoast_64

         loc_pop_rewind
         loc_push
         error_push

         input_next        "t /"
     ok! test_char         "/"

         error_pop_merge
     ok! jump              oknoast_64

         loc_pop_rewind
         status_fail
         return

oknoast_64:
         loc_pop_discard
         return
#
# value Symbol 'Number'
#

sym_Number:
# x
#     ?
#         (Sign)
#     +
#         (Digit)

         symbol_restore    Number
  found! jump              found_80
         loc_push
         ast_push

         call              sequence_77

   fail! value_clear
     ok! value_reduce      Number
         symbol_save       Number
         error_nonterminal Number
         ast_pop_rewind
         loc_pop_discard

found_80:
     ok! ast_value_push
         return

sequence_77:
# x
#     ?
#         (Sign)
#     +
#         (Digit)

         ast_push
         loc_push
         error_clear

         error_push

         call              optional_70

         error_pop_merge
   fail! jump              failed_78
         error_push

         call              poskleene_73

         error_pop_merge
   fail! jump              failed_78

         ast_pop_discard
         loc_pop_discard
         return

failed_78:
         ast_pop_rewind
         loc_pop_rewind
         return

optional_70:
# ?
#     (Sign)

         loc_push
         error_push

         call              sym_Sign

         error_pop_merge
   fail! loc_pop_rewind
     ok! loc_pop_discard
         status_ok
         return

poskleene_73:
# +
#     (Digit)

         loc_push

         call              sym_Digit

   fail! jump              failed_74

loop_75:
         loc_pop_discard
         loc_push
         error_push

         call              sym_Digit

         error_pop_merge
     ok! jump              loop_75
         status_ok

failed_74:
         loc_pop_rewind
         return
#
# value Symbol 'Sign'
#

sym_Sign:
# /
#     '-'
#     '+'

         symbol_restore    Sign
  found! jump              found_86
         loc_push

         call              choice_5

   fail! value_clear
     ok! value_leaf        Sign
         symbol_save       Sign
         error_nonterminal Sign
         loc_pop_discard

found_86:
     ok! ast_value_push
         return
#
# value Symbol 'Term'
#

sym_Term:
# (Number)

         symbol_restore    Term
  found! jump              found_89
         loc_push
         ast_push

         call              sym_Number

   fail! value_clear
     ok! value_reduce      Term
         symbol_save       Term
         error_nonterminal Term
         ast_pop_rewind
         loc_pop_discard

found_89:
     ok! ast_value_push
         return

#
#

.CE
.PP
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.
.PP







<
<

|
|
|
|
|
|
|
|

<





<
<



<



<

|
|
<



<




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

|
|
<




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

|
|



<












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

|
|
<












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

|
|



<












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

|
|
<












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

|
|
|
<





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

|
<

|
|
<







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

|
|
|
<





<
|
|
<
|
<
|
|
|
|
<

|
|
|
<




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

|
|
|



<







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

|
|
<







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

|
|
|
<





<
|
|
<
|
<
|
|
|
|
<

|
|
|
<




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

|
|
|



<




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

|
|
<




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

|
|



<






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

|
|
<






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

|
|
|
<



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



<
|
<
|
<
|
<

|
|
|
<
|
<
|
|
|
<

|
|



<




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

|
|



<


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

|
|
|

<
<







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
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

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
generated by the other PARAM-derived formats.
.PP
It has no direct formal specification beyond what was said above.
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
one possible PARAM serialization for it is
.PP
.CS


# -*- text -*-
# Parsing Expression Grammar 'TEMPLATE'.
# Generated for unknown, from file 'TEST'

#
# Grammar Start Expression
#

<<MAIN>>:
call              sym_Expression
halt

#
# value Symbol 'AddOp'
#

sym_AddOp:
# /
#     '-'
#     '+'

symbol_restore    AddOp
found! jump              found_7
loc_push

call              choice_5

fail! value_clear
ok! value_leaf        AddOp
symbol_save       AddOp
error_nonterminal AddOp
loc_pop_discard

found_7:
ok! ast_value_push
return

choice_5:
# /
#     '-'
#     '+'

error_clear

loc_push
error_push

input_next        "t -"
ok! test_char         "-"

error_pop_merge
ok! jump              oknoast_4

loc_pop_rewind
loc_push
error_push

input_next        "t +"
ok! test_char         "+"

error_pop_merge
ok! jump              oknoast_4

loc_pop_rewind
status_fail
return

oknoast_4:
loc_pop_discard
return
#
# value Symbol 'Digit'
#

sym_Digit:
# /
#     '0'
#     '1'
#     '2'
#     '3'
#     '4'
#     '5'
#     '6'
#     '7'
#     '8'
#     '9'

symbol_restore    Digit
found! jump              found_22
loc_push

call              choice_20

fail! value_clear
ok! value_leaf        Digit
symbol_save       Digit
error_nonterminal Digit
loc_pop_discard

found_22:
ok! ast_value_push
return

choice_20:
# /
#     '0'
#     '1'
#     '2'
#     '3'
#     '4'
#     '5'
#     '6'
#     '7'
#     '8'
#     '9'

error_clear

loc_push
error_push

input_next        "t 0"
ok! test_char         "0"

error_pop_merge
ok! jump              oknoast_19

loc_pop_rewind
loc_push
error_push

input_next        "t 1"
ok! test_char         "1"

error_pop_merge
ok! jump              oknoast_19

loc_pop_rewind
loc_push
error_push

input_next        "t 2"
ok! test_char         "2"

error_pop_merge
ok! jump              oknoast_19

loc_pop_rewind
loc_push
error_push

input_next        "t 3"
ok! test_char         "3"

error_pop_merge
ok! jump              oknoast_19

loc_pop_rewind
loc_push
error_push

input_next        "t 4"
ok! test_char         "4"

error_pop_merge
ok! jump              oknoast_19

loc_pop_rewind
loc_push
error_push

input_next        "t 5"
ok! test_char         "5"

error_pop_merge
ok! jump              oknoast_19

loc_pop_rewind
loc_push
error_push

input_next        "t 6"
ok! test_char         "6"

error_pop_merge
ok! jump              oknoast_19

loc_pop_rewind
loc_push
error_push

input_next        "t 7"
ok! test_char         "7"

error_pop_merge
ok! jump              oknoast_19

loc_pop_rewind
loc_push
error_push

input_next        "t 8"
ok! test_char         "8"

error_pop_merge
ok! jump              oknoast_19

loc_pop_rewind
loc_push
error_push

input_next        "t 9"
ok! test_char         "9"

error_pop_merge
ok! jump              oknoast_19

loc_pop_rewind
status_fail
return

oknoast_19:
loc_pop_discard
return
#
# value Symbol 'Expression'
#

sym_Expression:
# /
#     x
#         '\\('
#         (Expression)
#         '\\)'
#     x
#         (Factor)
#         *
#             x
#                 (MulOp)
#                 (Factor)

symbol_restore    Expression
found! jump              found_46
loc_push
ast_push

call              choice_44

fail! value_clear
ok! value_reduce      Expression
symbol_save       Expression
error_nonterminal Expression
ast_pop_rewind
loc_pop_discard

found_46:
ok! ast_value_push
return

choice_44:
# /
#     x
#         '\\('
#         (Expression)
#         '\\)'
#     x
#         (Factor)
#         *
#             x
#                 (MulOp)
#                 (Factor)

error_clear

ast_push
loc_push
error_push

call              sequence_27

error_pop_merge
ok! jump              ok_43

ast_pop_rewind
loc_pop_rewind
ast_push
loc_push
error_push

call              sequence_40

error_pop_merge
ok! jump              ok_43

ast_pop_rewind
loc_pop_rewind
status_fail
return

ok_43:
ast_pop_discard
loc_pop_discard
return

sequence_27:
# x
#     '\\('
#     (Expression)
#     '\\)'

loc_push
error_clear

error_push

input_next        "t ("
ok! test_char         "("

error_pop_merge
fail! jump              failednoast_29
ast_push
error_push

call              sym_Expression

error_pop_merge
fail! jump              failed_28
error_push

input_next        "t )"
ok! test_char         ")"

error_pop_merge
fail! jump              failed_28

ast_pop_discard
loc_pop_discard
return

failed_28:
ast_pop_rewind

failednoast_29:
loc_pop_rewind
return

sequence_40:
# x
#     (Factor)
#     *
#         x
#             (MulOp)
#             (Factor)

ast_push
loc_push
error_clear

error_push

call              sym_Factor

error_pop_merge
fail! jump              failed_41
error_push

call              kleene_37

error_pop_merge
fail! jump              failed_41

ast_pop_discard
loc_pop_discard
return

failed_41:
ast_pop_rewind
loc_pop_rewind
return

kleene_37:
# *
#     x
#         (MulOp)
#         (Factor)

loc_push
error_push

call              sequence_34

error_pop_merge
fail! jump              failed_38
loc_pop_discard
jump              kleene_37

failed_38:
loc_pop_rewind
status_ok
return

sequence_34:
# x
#     (MulOp)
#     (Factor)

ast_push
loc_push
error_clear

error_push

call              sym_MulOp

error_pop_merge
fail! jump              failed_35
error_push

call              sym_Factor

error_pop_merge
fail! jump              failed_35

ast_pop_discard
loc_pop_discard
return

failed_35:
ast_pop_rewind
loc_pop_rewind
return
#
# value Symbol 'Factor'
#

sym_Factor:
# x
#     (Term)
#     *
#         x
#             (AddOp)
#             (Term)

symbol_restore    Factor
found! jump              found_60
loc_push
ast_push

call              sequence_57

fail! value_clear
ok! value_reduce      Factor
symbol_save       Factor
error_nonterminal Factor
ast_pop_rewind
loc_pop_discard

found_60:
ok! ast_value_push
return

sequence_57:
# x
#     (Term)
#     *
#         x
#             (AddOp)
#             (Term)

ast_push
loc_push
error_clear

error_push

call              sym_Term

error_pop_merge
fail! jump              failed_58
error_push

call              kleene_54

error_pop_merge
fail! jump              failed_58

ast_pop_discard
loc_pop_discard
return

failed_58:
ast_pop_rewind
loc_pop_rewind
return

kleene_54:
# *
#     x
#         (AddOp)
#         (Term)

loc_push
error_push

call              sequence_51

error_pop_merge
fail! jump              failed_55
loc_pop_discard
jump              kleene_54

failed_55:
loc_pop_rewind
status_ok
return

sequence_51:
# x
#     (AddOp)
#     (Term)

ast_push
loc_push
error_clear

error_push

call              sym_AddOp

error_pop_merge
fail! jump              failed_52
error_push

call              sym_Term

error_pop_merge
fail! jump              failed_52

ast_pop_discard
loc_pop_discard
return

failed_52:
ast_pop_rewind
loc_pop_rewind
return
#
# value Symbol 'MulOp'
#

sym_MulOp:
# /
#     '*'
#     '/'

symbol_restore    MulOp
found! jump              found_67
loc_push

call              choice_65

fail! value_clear
ok! value_leaf        MulOp
symbol_save       MulOp
error_nonterminal MulOp
loc_pop_discard

found_67:
ok! ast_value_push
return

choice_65:
# /
#     '*'
#     '/'

error_clear

loc_push
error_push

input_next        "t *"
ok! test_char         "*"

error_pop_merge
ok! jump              oknoast_64

loc_pop_rewind
loc_push
error_push

input_next        "t /"
ok! test_char         "/"

error_pop_merge
ok! jump              oknoast_64

loc_pop_rewind
status_fail
return

oknoast_64:
loc_pop_discard
return
#
# value Symbol 'Number'
#

sym_Number:
# x
#     ?
#         (Sign)
#     +
#         (Digit)

symbol_restore    Number
found! jump              found_80
loc_push
ast_push

call              sequence_77

fail! value_clear
ok! value_reduce      Number
symbol_save       Number
error_nonterminal Number
ast_pop_rewind
loc_pop_discard

found_80:
ok! ast_value_push
return

sequence_77:
# x
#     ?
#         (Sign)
#     +
#         (Digit)

ast_push
loc_push
error_clear

error_push

call              optional_70

error_pop_merge
fail! jump              failed_78
error_push

call              poskleene_73

error_pop_merge
fail! jump              failed_78

ast_pop_discard
loc_pop_discard
return

failed_78:
ast_pop_rewind
loc_pop_rewind
return

optional_70:
# ?
#     (Sign)

loc_push
error_push

call              sym_Sign

error_pop_merge
fail! loc_pop_rewind
ok! loc_pop_discard
status_ok
return

poskleene_73:
# +
#     (Digit)

loc_push

call              sym_Digit

fail! jump              failed_74

loop_75:
loc_pop_discard
loc_push
error_push

call              sym_Digit

error_pop_merge
ok! jump              loop_75
status_ok

failed_74:
loc_pop_rewind
return
#
# value Symbol 'Sign'
#

sym_Sign:
# /
#     '-'
#     '+'

symbol_restore    Sign
found! jump              found_86
loc_push

call              choice_5

fail! value_clear
ok! value_leaf        Sign
symbol_save       Sign
error_nonterminal Sign
loc_pop_discard

found_86:
ok! ast_value_push
return
#
# value Symbol 'Term'
#

sym_Term:
# (Number)

symbol_restore    Term
found! jump              found_89
loc_push
ast_push

call              sym_Number

fail! value_clear
ok! value_reduce      Term
symbol_save       Term
error_nonterminal Term
ast_pop_rewind
loc_pop_discard

found_89:
ok! ast_value_push
return
#
#


.CE
.PP
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.
.PP
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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
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
1459
1460
1461
1462
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_peg_to_peg.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
not lend themselves too.
.PP
It is formally specified by the grammar shown below, written in
itself. For a tutorial / introduction to the language please go and
read the \fIPEG Language Tutorial\fR.
.PP
.CS


PEG pe-grammar-for-peg (Grammar)

	# --------------------------------------------------------------------
        # Syntactical constructs

        Grammar         <- WHITESPACE Header Definition* Final EOF ;

        Header          <- PEG Identifier StartExpr ;
        Definition      <- Attribute? Identifier IS Expression SEMICOLON ;
        Attribute       <- (VOID / LEAF) COLON ;
        Expression      <- Sequence (SLASH Sequence)* ;
        Sequence        <- Prefix+ ;
        Prefix          <- (AND / NOT)? Suffix ;
        Suffix          <- Primary (QUESTION / STAR / PLUS)? ;
        Primary         <- ALNUM / ALPHA / ASCII / CONTROL / DDIGIT / DIGIT
                        /  GRAPH / LOWER / PRINTABLE / PUNCT / SPACE / UPPER
                        /  WORDCHAR / XDIGIT
                        / Identifier
                        /  OPEN Expression CLOSE
                        /  Literal
                        /  Class
                        /  DOT
                        ;
        Literal         <- APOSTROPH  (!APOSTROPH  Char)* APOSTROPH  WHITESPACE
                        /  DAPOSTROPH (!DAPOSTROPH Char)* DAPOSTROPH WHITESPACE ;
        Class           <- OPENB (!CLOSEB Range)* CLOSEB WHITESPACE ;
        Range           <- Char TO Char / Char ;

        StartExpr       <- OPEN Expression CLOSE ;
void:   Final           <- END SEMICOLON WHITESPACE ;

        # --------------------------------------------------------------------
        # Lexing constructs

        Identifier      <- Ident WHITESPACE ;
leaf:   Ident           <- ('_' / ':' / <alpha>) ('_' / ':' / <alnum>)* ;
        Char            <- CharSpecial / CharOctalFull / CharOctalPart
                        /  CharUnicode / CharUnescaped
                        ;

leaf:   CharSpecial     <- "\\\\" [nrt'"\\[\\]\\\\] ;
leaf:   CharOctalFull   <- "\\\\" [0-2][0-7][0-7] ;
leaf:   CharOctalPart   <- "\\\\" [0-7][0-7]? ;
leaf:   CharUnicode     <- "\\\\" 'u' HexDigit (HexDigit (HexDigit HexDigit?)?)? ;
leaf:   CharUnescaped   <- !"\\\\" . ;

void:   HexDigit        <- [0-9a-fA-F] ;

void:   TO              <- '-'           ;
void:   OPENB           <- "["           ;
void:   CLOSEB          <- "]"           ;
void:   APOSTROPH       <- "'"           ;
void:   DAPOSTROPH      <- '"'           ;
void:   PEG             <- "PEG"   WHITESPACE ;
void:   IS              <- "<-"    WHITESPACE ;







<
<

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

<
|
|
<
|

|
|
|
<





<

<







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
not lend themselves too.
.PP
It is formally specified by the grammar shown below, written in
itself. For a tutorial / introduction to the language please go and
read the \fIPEG Language Tutorial\fR.
.PP
.CS


PEG pe-grammar-for-peg (Grammar)

# --------------------------------------------------------------------
# Syntactical constructs

Grammar         <- WHITESPACE Header Definition* Final EOF ;

Header          <- PEG Identifier StartExpr ;
Definition      <- Attribute? Identifier IS Expression SEMICOLON ;
Attribute       <- (VOID / LEAF) COLON ;
Expression      <- Sequence (SLASH Sequence)* ;
Sequence        <- Prefix+ ;
Prefix          <- (AND / NOT)? Suffix ;
Suffix          <- Primary (QUESTION / STAR / PLUS)? ;
Primary         <- ALNUM / ALPHA / ASCII / CONTROL / DDIGIT / DIGIT
/  GRAPH / LOWER / PRINTABLE / PUNCT / SPACE / UPPER
/  WORDCHAR / XDIGIT
/ Identifier
/  OPEN Expression CLOSE
/  Literal
/  Class
/  DOT
;
Literal         <- APOSTROPH  (!APOSTROPH  Char)* APOSTROPH  WHITESPACE
/  DAPOSTROPH (!DAPOSTROPH Char)* DAPOSTROPH WHITESPACE ;
Class           <- OPENB (!CLOSEB Range)* CLOSEB WHITESPACE ;
Range           <- Char TO Char / Char ;

StartExpr       <- OPEN Expression CLOSE ;
void:   Final           <- END SEMICOLON WHITESPACE ;

# --------------------------------------------------------------------
# Lexing constructs

Identifier      <- Ident WHITESPACE ;
leaf:   Ident           <- ('_' / ':' / <alpha>) ('_' / ':' / <alnum>)* ;
Char            <- CharSpecial / CharOctalFull / CharOctalPart
/  CharUnicode / CharUnescaped
;

leaf:   CharSpecial     <- "\\\\" [nrt'"\\[\\]\\\\] ;
leaf:   CharOctalFull   <- "\\\\" [0-2][0-7][0-7] ;
leaf:   CharOctalPart   <- "\\\\" [0-7][0-7]? ;
leaf:   CharUnicode     <- "\\\\" 'u' HexDigit (HexDigit (HexDigit HexDigit?)?)? ;
leaf:   CharUnescaped   <- !"\\\\" . ;

void:   HexDigit        <- [0-9a-fA-F] ;

void:   TO              <- '-'           ;
void:   OPENB           <- "["           ;
void:   CLOSEB          <- "]"           ;
void:   APOSTROPH       <- "'"           ;
void:   DAPOSTROPH      <- '"'           ;
void:   PEG             <- "PEG"   WHITESPACE ;
void:   IS              <- "<-"    WHITESPACE ;
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
leaf:   NOT             <- "!"     WHITESPACE ;
leaf:   QUESTION        <- "?"     WHITESPACE ;
leaf:   STAR            <- "*"     WHITESPACE ;
leaf:   PLUS            <- "+"     WHITESPACE ;
void:   OPEN            <- "("     WHITESPACE ;
void:   CLOSE           <- ")"     WHITESPACE ;
leaf:   DOT             <- "."     WHITESPACE ;

leaf:   ALNUM           <- "<alnum>"    WHITESPACE ;
leaf:   ALPHA           <- "<alpha>"    WHITESPACE ;
leaf:   ASCII           <- "<ascii>"    WHITESPACE ;
leaf:   CONTROL         <- "<control>"  WHITESPACE ;
leaf:   DDIGIT          <- "<ddigit>"   WHITESPACE ;
leaf:   DIGIT           <- "<digit>"    WHITESPACE ;
leaf:   GRAPH           <- "<graph>"    WHITESPACE ;
leaf:   LOWER           <- "<lower>"    WHITESPACE ;
leaf:   PRINTABLE       <- "<print>"    WHITESPACE ;
leaf:   PUNCT           <- "<punct>"    WHITESPACE ;
leaf:   SPACE           <- "<space>"    WHITESPACE ;
leaf:   UPPER           <- "<upper>"    WHITESPACE ;
leaf:   WORDCHAR        <- "<wordchar>" WHITESPACE ;
leaf:   XDIGIT          <- "<xdigit>"   WHITESPACE ;

void:   WHITESPACE      <- (" " / "\\t" / EOL / COMMENT)* ;
void:   COMMENT         <- '#' (!EOL .)* EOL ;
void:   EOL             <- "\\n\\r" / "\\n" / "\\r" ;
void:   EOF             <- !. ;

        # --------------------------------------------------------------------
END;

.CE
.SS EXAMPLE
Our example specifies the grammar for a basic 4-operation calculator.
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
Using higher-level features of the notation, i.e. the character
classes (predefined and custom), this example can be rewritten as
.PP
.CS


PEG calculator (Expression)
    Sign       <- [-+] 						;
    Number     <- Sign? <ddigit>+				;
    Expression <- '(' Expression ')' / (Factor (MulOp Factor)*)	;
    MulOp      <- [*/]						;
    Factor     <- Term (AddOp Term)*				;
    AddOp      <- [-+]						;
    Term       <- Number					;
END;

.CE
.PP
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.
.PP







<














<




<
|

<





<
<

|
|
|
|
|
|
|
|

<






<
<

|
|
|
|
|
|
|

<







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
leaf:   NOT             <- "!"     WHITESPACE ;
leaf:   QUESTION        <- "?"     WHITESPACE ;
leaf:   STAR            <- "*"     WHITESPACE ;
leaf:   PLUS            <- "+"     WHITESPACE ;
void:   OPEN            <- "("     WHITESPACE ;
void:   CLOSE           <- ")"     WHITESPACE ;
leaf:   DOT             <- "."     WHITESPACE ;

leaf:   ALNUM           <- "<alnum>"    WHITESPACE ;
leaf:   ALPHA           <- "<alpha>"    WHITESPACE ;
leaf:   ASCII           <- "<ascii>"    WHITESPACE ;
leaf:   CONTROL         <- "<control>"  WHITESPACE ;
leaf:   DDIGIT          <- "<ddigit>"   WHITESPACE ;
leaf:   DIGIT           <- "<digit>"    WHITESPACE ;
leaf:   GRAPH           <- "<graph>"    WHITESPACE ;
leaf:   LOWER           <- "<lower>"    WHITESPACE ;
leaf:   PRINTABLE       <- "<print>"    WHITESPACE ;
leaf:   PUNCT           <- "<punct>"    WHITESPACE ;
leaf:   SPACE           <- "<space>"    WHITESPACE ;
leaf:   UPPER           <- "<upper>"    WHITESPACE ;
leaf:   WORDCHAR        <- "<wordchar>" WHITESPACE ;
leaf:   XDIGIT          <- "<xdigit>"   WHITESPACE ;

void:   WHITESPACE      <- (" " / "\\t" / EOL / COMMENT)* ;
void:   COMMENT         <- '#' (!EOL .)* EOL ;
void:   EOL             <- "\\n\\r" / "\\n" / "\\r" ;
void:   EOF             <- !. ;

# --------------------------------------------------------------------
END;

.CE
.SS EXAMPLE
Our example specifies the grammar for a basic 4-operation calculator.
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
Using higher-level features of the notation, i.e. the character
classes (predefined and custom), this example can be rewritten as
.PP
.CS


PEG calculator (Expression)
Sign       <- [-+] 						;
Number     <- Sign? <ddigit>+				;
Expression <- '(' Expression ')' / (Factor (MulOp Factor)*)	;
MulOp      <- [*/]						;
Factor     <- Term (AddOp Term)*				;
AddOp      <- [-+]						;
Term       <- Number					;
END;

.CE
.PP
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.
.PP
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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_peg_to_tclparam.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_pegrammar.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_pexpr_op.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_pexpression.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_pgen.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
input, following the outline shown in the figure below:
.PP
IMAGE: flow
.PP
Our grammar, assumed to the stored in the file "\fIcalculator.peg\fR"
is
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
From this we create a snit-based parser
using the script "\fIgen\fR"
.CS


package require Tcl 8.5
package require fileutil
package require pt::pgen

lassign $argv name
set grammar [fileutil::cat $name.peg]
set pclass  [pt::pgen peg $gr snit -class $name -file  $name.peg -name  $name]
fileutil::writeFile $name.tcl $pclass
exit 0

.CE
calling it like
.CS

 tclsh8.5 gen calculator
.CE
which leaves us with the parser package and class written to the file
"\fIcalculator.tcl\fR".
Assuming that this package is then properly installed in a place where
Tcl can find it we can now use this class via a script like
.CS


    package require calculator

    lassign $argv input
    set channel [open $input r]

    set parser [calculator]
    set ast [$parser parse $channel]
    $parser destroy
    close $channel

    ... now process the returned abstract syntax tree ...

.CE
where the abstract syntax tree stored in the variable will look like
.PP
.CS


set ast {Expression 0 4
    {Factor 0 4
        {Term 0 2
            {Number 0 2
                {Digit 0 0}
                {Digit 1 1}
                {Digit 2 2}
            }
        }
        {AddOp 3 3}
        {Term 4 4
            {Number 4 4
                {Digit 4 4}
            }
        }
    }
}

.CE
.PP
assuming that the input file and channel contained the text
.CS

 120+5
.CE
A more graphical representation of the tree would be
.PP
.PS
.nf
                                                           +- Digit 0 0 | 1
                                                           |            |
                               +- Term 0 2 --- Number 0 2 -+- Digit 1 1 | 2
                               |                           |            |
                               |                           +- Digit 2 2 | 0
                               |                                        |
Expression 0 4 --- Factor 0 4 -+----------------------------- AddOp 3 3 | +
                               |                                        |
                               +- Term 4 4 --- Number 4 4 --- Digit 4 4 | 5
.fi
.PE
.PP
Regardless, at this point it is the user's responsibility to work with
the tree to reach whatever goal she desires. I.e. analyze it,
transform it, etc. The package \fBpt::ast\fR should be of help
here, providing commands to walk such ASTs structures in various ways.
.PP
One important thing to note is that the parsers used here return a







<
<

|
|
|
|
|
|
|
|

<




<
<



<





<



<
|






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




<
<

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

<




<
|



|
|










|







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
input, following the outline shown in the figure below:
.PP
IMAGE: flow
.PP
Our grammar, assumed to the stored in the file "\fIcalculator.peg\fR"
is
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
From this we create a snit-based parser
using the script "\fIgen\fR"
.CS


package require Tcl 8.5
package require fileutil
package require pt::pgen

lassign $argv name
set grammar [fileutil::cat $name.peg]
set pclass  [pt::pgen peg $gr snit -class $name -file  $name.peg -name  $name]
fileutil::writeFile $name.tcl $pclass
exit 0

.CE
calling it like
.CS

tclsh8.5 gen calculator
.CE
which leaves us with the parser package and class written to the file
"\fIcalculator.tcl\fR".
Assuming that this package is then properly installed in a place where
Tcl can find it we can now use this class via a script like
.CS


package require calculator

lassign $argv input
set channel [open $input r]

set parser [calculator]
set ast [$parser parse $channel]
$parser destroy
close $channel

\... now process the returned abstract syntax tree ...

.CE
where the abstract syntax tree stored in the variable will look like
.PP
.CS


set ast {Expression 0 4
{Factor 0 4
{Term 0 2
{Number 0 2
{Digit 0 0}
{Digit 1 1}
{Digit 2 2}
}
}
{AddOp 3 3}
{Term 4 4
{Number 4 4
{Digit 4 4}
}
}
}
}

.CE
.PP
assuming that the input file and channel contained the text
.CS

120+5
.CE
A more graphical representation of the tree would be
.PP
\.PS
\.nf
                                                           +- Digit 0 0 | 1
                                                           |            |
                               +- Term 0 2 --- Number 0 2 -+- Digit 1 1 | 2
                               |                           |            |
                               |                           +- Digit 2 2 | 0
                               |                                        |
Expression 0 4 --- Factor 0 4 -+----------------------------- AddOp 3 3 | +
                               |                                        |
                               +- Term 4 4 --- Number 4 4 --- Digit 4 4 | 5
.fi
\.PE
.PP
Regardless, at this point it is the user's responsibility to work with
the tree to reach whatever goal she desires. I.e. analyze it,
transform it, etc. The package \fBpt::ast\fR should be of help
here, providing commands to walk such ASTs structures in various ways.
.PP
One important thing to note is that the parsers used here return a
462
463
464
465
466
467
468
469
470
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

443
444
445
446
447
448
449

450
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_rdengine.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
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
folded into the sequence.
.PP
.PP
.TP
\fIobjectName\fR \fBsi:void_state_push\fR
This method combines
.CS


i_loc_push
i_error_clear
i_error_push

.CE
.IP
Parsers use it at the beginning of \fIvoid\fR sequences and choices
with a \fIvoid\fR initial branch.
.TP
\fIobjectName\fR \fBsi:void2_state_push\fR
This method combines
.CS


i_loc_push
i_error_clear
i_error_push

.CE
.IP
Parsers use it at the beginning of optional and repeated expressions.
.TP
\fIobjectName\fR \fBsi:value_state_push\fR
This method combines
.CS


i_ast_push
i_loc_push
i_error_clear
i_error_push

.CE
.IP
Parsers use it at the beginning of sequences generating an AST and
choices with an initial branch generating an AST.
.TP
\fIobjectName\fR \fBsi:void_state_merge\fR
This method combines
.CS


i_error_pop_merge
i_loc_pop_rewind/discard

.CE
.IP
Parsers use it at the end of void sequences and choices whose last
branch is void.
.TP
\fIobjectName\fR \fBsi:void_state_merge_ok\fR
This method combines
.CS


i_error_pop_merge
i_loc_pop_rewind/discard
i_status_ok

.CE
.IP
Parsers use it at the end of optional expressions
.TP
\fIobjectName\fR \fBsi:value_state_merge\fR
This method combines
.CS


i_error_pop_merge
i_ast_pop_rewind/discard
i_loc_pop_rewind/discard

.CE
.IP
Parsers use it at the end of sequences generating ASTs and choices
whose last branch generates an AST
.TP
\fIobjectName\fR \fBsi:value_notahead_start\fR
This method combines
.CS


i_loc_push
i_ast_push

.CE
.IP
Parsers use it at the beginning of negative lookahead predicates which
generate ASTs.
.TP
\fIobjectName\fR \fBsi:void_notahead_exit\fR
This method combines
.CS


i_loc_pop_rewind
i_status_negate

.CE
.IP
Parsers use it at the end of void negative lookahead predicates.
.TP
\fIobjectName\fR \fBsi:value_notahead_exit\fR
This method combines
.CS


i_ast_pop_discard/rewind
i_loc_pop_rewind
i_status_negate

.CE
.IP
Parsers use it at the end of negative lookahead predicates which
generate ASTs.
.TP
\fIobjectName\fR \fBsi:kleene_abort\fR
This method combines
.CS


i_loc_pop_rewind/discard
i:fail_return

.CE
.IP
Parsers use it to stop a positive repetition when its first, required, expression fails.
.TP
\fIobjectName\fR \fBsi:kleene_close\fR
This method combines
.CS


i_error_pop_merge
i_loc_pop_rewind/discard
i:fail_status_ok
i:fail_return

.CE
.IP
Parsers use it at the end of repetitions.
.TP
\fIobjectName\fR \fBsi:voidvoid_branch\fR
This method combines
.CS


i_error_pop_merge
i:ok_loc_pop_discard
i:ok_return
i_loc_rewind
i_error_push

.CE
.IP
Parsers use it when transiting between branches of a choice when both are void.
.TP
\fIobjectName\fR \fBsi:voidvalue_branch\fR
This method combines
.CS


i_error_pop_merge
i:ok_loc_pop_discard
i:ok_return
i_ast_push
i_loc_rewind
i_error_push

.CE
.IP
Parsers use it when transiting between branches of a choice when the
failing branch is void, and the next to test generates an AST.
.TP
\fIobjectName\fR \fBsi:valuevoid_branch\fR
This method combines
.CS


i_error_pop_merge
i_ast_pop_rewind/discard
i:ok_loc_pop_discard
i:ok_return
i_loc_rewind
i_error_push

.CE
.IP
Parsers use it when transiting between branches of a choice when the
failing branch generates an AST, and the next to test is void.
.TP
\fIobjectName\fR \fBsi:valuevalue_branch\fR
This method combines
.CS


i_error_pop_merge
i_ast_pop_discard
i:ok_loc_pop_discard
i:ok_return
i_ast_rewind
i_loc_rewind
i_error_push

.CE
.IP
Parsers use it when transiting between branches of a choice when both
generate ASTs.
.TP
\fIobjectName\fR \fBsi:voidvoid_part\fR
This method combines
.CS


i_error_pop_merge
i:fail_loc_pop_rewind
i:fail_return
i_error_push

.CE
.IP
Parsers use it when transiting between parts of a sequence and both
are void.
.TP
\fIobjectName\fR \fBsi:voidvalue_part\fR
This method combines
.CS


i_error_pop_merge
i:fail_loc_pop_rewind
i:fail_return
i_ast_push
i_error_push

.CE
.IP
Parsers use it when transiting between parts of a sequence and the
sucessfully matched part is void, and after it an AST is generated.
.TP
\fIobjectName\fR \fBsi:valuevalue_part\fR
This method combines
.CS


i_error_pop_merge
i:fail_ast_pop_rewind
i:fail_loc_pop_rewind
i:fail_return
i_error_push

.CE
.IP
Parsers use it when transiting between parts of a sequence and both
parts generate ASTs.
.TP
\fIobjectName\fR \fBsi:value_symbol_start\fR \fIsymbol\fR
This method combines
.CS


if/found? i_symbol_restore $symbol
i:found:ok_ast_value_push
i:found_return
i_loc_push
i_ast_push

.CE
.IP
Parsers use it at the beginning of a nonterminal symbol generating an
AST, whose right-hand side may have generated an AST as well.
.TP
\fIobjectName\fR \fBsi:value_void_symbol_start\fR \fIsymbol\fR
This method combines
.CS


if/found? i_symbol_restore $symbol
i:found:ok_ast_value_push
i:found_return
i_loc_push
i_ast_push

.CE
.IP
Parsers use it at the beginning of a void nonterminal symbol whose
right-hand side may generate an AST.
.TP
\fIobjectName\fR \fBsi:void_symbol_start\fR \fIsymbol\fR
This method combines
.CS


if/found? i_symbol_restore $symbol
i:found_return
i_loc_push
i_ast_push

.CE
.IP
Parsers use it at the beginning of a nonterminal symbol generating an
AST whose right-hand side is void.
.TP
\fIobjectName\fR \fBsi:void_void_symbol_start\fR \fIsymbol\fR
This method combines
.CS


if/found? i_symbol_restore $symbol
i:found_return
i_loc_push

.CE
.IP
Parsers use it at  the beginning of a void nonterminal symbol whose
right-hand side is void as well.
.TP
\fIobjectName\fR \fBsi:reduce_symbol_end\fR \fIsymbol\fR
This method combines
.CS


i_value_clear/reduce $symbol
i_symbol_save        $symbol
i_error_nonterminal  $symbol
i_ast_pop_rewind
i_loc_pop_discard
i:ok_ast_value_push

.CE
.IP
Parsers use it at the end of a non-terminal symbol generating an AST
using the AST generated by the right-hand side as child.
.TP
\fIobjectName\fR \fBsi:void_leaf_symbol_end\fR \fIsymbol\fR
This method combines
.CS


i_value_clear/leaf  $symbol
i_symbol_save       $symbol
i_error_nonterminal $symbol
i_loc_pop_discard
i:ok_ast_value_push

.CE
.IP
Parsers use it at the end of a non-terminal symbol generating an AST
whose right-hand side is void.
.TP
\fIobjectName\fR \fBsi:value_leaf_symbol_end\fR \fIsymbol\fR
This method combines
.CS


i_value_clear/leaf  $symbol
i_symbol_save       $symbol
i_error_nonterminal $symbol
i_loc_pop_discard
i_ast_pop_rewind
i:ok_ast_value_push

.CE
.IP
Parsers use it at the end of a non-terminal symbol generating an AST
discarding the AST generated by the right-hand side.
.TP
\fIobjectName\fR \fBsi:value_clear_symbol_end\fR \fIsymbol\fR
This method combines
.CS


i_value_clear
i_symbol_save       $symbol
i_error_nonterminal $symbol
i_loc_pop_discard
i_ast_pop_rewind

.CE
.IP
Parsers use it at the end of a void non-terminal symbol, discarding
the AST generated by the right-hand side.
.TP
\fIobjectName\fR \fBsi:void_clear_symbol_end\fR \fIsymbol\fR
This method combines
.CS


i_value_clear
i_symbol_save       $symbol
i_error_nonterminal $symbol
i_loc_pop_discard

.CE
.IP
Parsers use it at the end of a void non-terminal symbol with a void
right-hand side.
.TP
\fIobjectName\fR \fBsi:next_char\fR \fItok\fR
.TP







<
<



<








<
<



<







<
<




<








<
<


<








<
<



<







<
<



<








<
<


<








<
<


<







<
<



<








<
<


<







<
<




<







<
<





<







<
<






<








<
<






<








<
<







<








<
<




<








<
<





<








<
<





<








<
<





<








<
<





<








<
<




<








<
<



<








<
<






<








<
<





<








<
<






<








<
<





<








<
<




<







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
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
folded into the sequence.
.PP
.PP
.TP
\fIobjectName\fR \fBsi:void_state_push\fR
This method combines
.CS


i_loc_push
i_error_clear
i_error_push

.CE
.IP
Parsers use it at the beginning of \fIvoid\fR sequences and choices
with a \fIvoid\fR initial branch.
.TP
\fIobjectName\fR \fBsi:void2_state_push\fR
This method combines
.CS


i_loc_push
i_error_clear
i_error_push

.CE
.IP
Parsers use it at the beginning of optional and repeated expressions.
.TP
\fIobjectName\fR \fBsi:value_state_push\fR
This method combines
.CS


i_ast_push
i_loc_push
i_error_clear
i_error_push

.CE
.IP
Parsers use it at the beginning of sequences generating an AST and
choices with an initial branch generating an AST.
.TP
\fIobjectName\fR \fBsi:void_state_merge\fR
This method combines
.CS


i_error_pop_merge
i_loc_pop_rewind/discard

.CE
.IP
Parsers use it at the end of void sequences and choices whose last
branch is void.
.TP
\fIobjectName\fR \fBsi:void_state_merge_ok\fR
This method combines
.CS


i_error_pop_merge
i_loc_pop_rewind/discard
i_status_ok

.CE
.IP
Parsers use it at the end of optional expressions
.TP
\fIobjectName\fR \fBsi:value_state_merge\fR
This method combines
.CS


i_error_pop_merge
i_ast_pop_rewind/discard
i_loc_pop_rewind/discard

.CE
.IP
Parsers use it at the end of sequences generating ASTs and choices
whose last branch generates an AST
.TP
\fIobjectName\fR \fBsi:value_notahead_start\fR
This method combines
.CS


i_loc_push
i_ast_push

.CE
.IP
Parsers use it at the beginning of negative lookahead predicates which
generate ASTs.
.TP
\fIobjectName\fR \fBsi:void_notahead_exit\fR
This method combines
.CS


i_loc_pop_rewind
i_status_negate

.CE
.IP
Parsers use it at the end of void negative lookahead predicates.
.TP
\fIobjectName\fR \fBsi:value_notahead_exit\fR
This method combines
.CS


i_ast_pop_discard/rewind
i_loc_pop_rewind
i_status_negate

.CE
.IP
Parsers use it at the end of negative lookahead predicates which
generate ASTs.
.TP
\fIobjectName\fR \fBsi:kleene_abort\fR
This method combines
.CS


i_loc_pop_rewind/discard
i:fail_return

.CE
.IP
Parsers use it to stop a positive repetition when its first, required, expression fails.
.TP
\fIobjectName\fR \fBsi:kleene_close\fR
This method combines
.CS


i_error_pop_merge
i_loc_pop_rewind/discard
i:fail_status_ok
i:fail_return

.CE
.IP
Parsers use it at the end of repetitions.
.TP
\fIobjectName\fR \fBsi:voidvoid_branch\fR
This method combines
.CS


i_error_pop_merge
i:ok_loc_pop_discard
i:ok_return
i_loc_rewind
i_error_push

.CE
.IP
Parsers use it when transiting between branches of a choice when both are void.
.TP
\fIobjectName\fR \fBsi:voidvalue_branch\fR
This method combines
.CS


i_error_pop_merge
i:ok_loc_pop_discard
i:ok_return
i_ast_push
i_loc_rewind
i_error_push

.CE
.IP
Parsers use it when transiting between branches of a choice when the
failing branch is void, and the next to test generates an AST.
.TP
\fIobjectName\fR \fBsi:valuevoid_branch\fR
This method combines
.CS


i_error_pop_merge
i_ast_pop_rewind/discard
i:ok_loc_pop_discard
i:ok_return
i_loc_rewind
i_error_push

.CE
.IP
Parsers use it when transiting between branches of a choice when the
failing branch generates an AST, and the next to test is void.
.TP
\fIobjectName\fR \fBsi:valuevalue_branch\fR
This method combines
.CS


i_error_pop_merge
i_ast_pop_discard
i:ok_loc_pop_discard
i:ok_return
i_ast_rewind
i_loc_rewind
i_error_push

.CE
.IP
Parsers use it when transiting between branches of a choice when both
generate ASTs.
.TP
\fIobjectName\fR \fBsi:voidvoid_part\fR
This method combines
.CS


i_error_pop_merge
i:fail_loc_pop_rewind
i:fail_return
i_error_push

.CE
.IP
Parsers use it when transiting between parts of a sequence and both
are void.
.TP
\fIobjectName\fR \fBsi:voidvalue_part\fR
This method combines
.CS


i_error_pop_merge
i:fail_loc_pop_rewind
i:fail_return
i_ast_push
i_error_push

.CE
.IP
Parsers use it when transiting between parts of a sequence and the
sucessfully matched part is void, and after it an AST is generated.
.TP
\fIobjectName\fR \fBsi:valuevalue_part\fR
This method combines
.CS


i_error_pop_merge
i:fail_ast_pop_rewind
i:fail_loc_pop_rewind
i:fail_return
i_error_push

.CE
.IP
Parsers use it when transiting between parts of a sequence and both
parts generate ASTs.
.TP
\fIobjectName\fR \fBsi:value_symbol_start\fR \fIsymbol\fR
This method combines
.CS


if/found? i_symbol_restore $symbol
i:found:ok_ast_value_push
i:found_return
i_loc_push
i_ast_push

.CE
.IP
Parsers use it at the beginning of a nonterminal symbol generating an
AST, whose right-hand side may have generated an AST as well.
.TP
\fIobjectName\fR \fBsi:value_void_symbol_start\fR \fIsymbol\fR
This method combines
.CS


if/found? i_symbol_restore $symbol
i:found:ok_ast_value_push
i:found_return
i_loc_push
i_ast_push

.CE
.IP
Parsers use it at the beginning of a void nonterminal symbol whose
right-hand side may generate an AST.
.TP
\fIobjectName\fR \fBsi:void_symbol_start\fR \fIsymbol\fR
This method combines
.CS


if/found? i_symbol_restore $symbol
i:found_return
i_loc_push
i_ast_push

.CE
.IP
Parsers use it at the beginning of a nonterminal symbol generating an
AST whose right-hand side is void.
.TP
\fIobjectName\fR \fBsi:void_void_symbol_start\fR \fIsymbol\fR
This method combines
.CS


if/found? i_symbol_restore $symbol
i:found_return
i_loc_push

.CE
.IP
Parsers use it at  the beginning of a void nonterminal symbol whose
right-hand side is void as well.
.TP
\fIobjectName\fR \fBsi:reduce_symbol_end\fR \fIsymbol\fR
This method combines
.CS


i_value_clear/reduce $symbol
i_symbol_save        $symbol
i_error_nonterminal  $symbol
i_ast_pop_rewind
i_loc_pop_discard
i:ok_ast_value_push

.CE
.IP
Parsers use it at the end of a non-terminal symbol generating an AST
using the AST generated by the right-hand side as child.
.TP
\fIobjectName\fR \fBsi:void_leaf_symbol_end\fR \fIsymbol\fR
This method combines
.CS


i_value_clear/leaf  $symbol
i_symbol_save       $symbol
i_error_nonterminal $symbol
i_loc_pop_discard
i:ok_ast_value_push

.CE
.IP
Parsers use it at the end of a non-terminal symbol generating an AST
whose right-hand side is void.
.TP
\fIobjectName\fR \fBsi:value_leaf_symbol_end\fR \fIsymbol\fR
This method combines
.CS


i_value_clear/leaf  $symbol
i_symbol_save       $symbol
i_error_nonterminal $symbol
i_loc_pop_discard
i_ast_pop_rewind
i:ok_ast_value_push

.CE
.IP
Parsers use it at the end of a non-terminal symbol generating an AST
discarding the AST generated by the right-hand side.
.TP
\fIobjectName\fR \fBsi:value_clear_symbol_end\fR \fIsymbol\fR
This method combines
.CS


i_value_clear
i_symbol_save       $symbol
i_error_nonterminal $symbol
i_loc_pop_discard
i_ast_pop_rewind

.CE
.IP
Parsers use it at the end of a void non-terminal symbol, discarding
the AST generated by the right-hand side.
.TP
\fIobjectName\fR \fBsi:void_clear_symbol_end\fR \fIsymbol\fR
This method combines
.CS


i_value_clear
i_symbol_save       $symbol
i_error_nonterminal $symbol
i_loc_pop_discard

.CE
.IP
Parsers use it at the end of a void non-terminal symbol with a void
right-hand side.
.TP
\fIobjectName\fR \fBsi:next_char\fR \fItok\fR
.TP
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
\fIobjectName\fR \fBsi:next_upper\fR
.TP
\fIobjectName\fR \fBsi:next_wordchar\fR
.TP
\fIobjectName\fR \fBsi:next_xdigit\fR
These methods all combine
.CS


i_input_next $msg
i:fail_return

.CE
.IP
with the appropriate \fBi_test_xxx\fR instruction. Parsers use them for
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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<


<




















<

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
\fIobjectName\fR \fBsi:next_upper\fR
.TP
\fIobjectName\fR \fBsi:next_wordchar\fR
.TP
\fIobjectName\fR \fBsi:next_xdigit\fR
These methods all combine
.CS


i_input_next $msg
i:fail_return

.CE
.IP
with the appropriate \fBi_test_xxx\fR instruction. Parsers use them for
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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_tclparam_config_snit.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
294
295
296
297
298
299
300
301
302
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

293
294
295
296
297
298
299

300
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_tclparam_config_tcloo.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
294
295
296
297
298
299
300
301
302
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

293
294
295
296
297
298
299

300
.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/pt/pt_to_api.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
\fB-user\fR string
The value of this option is the name of the user for which the command
is run. The default value is \fBunknown\fR.
.PP
.SH USAGE
To use a converter do
.CS


    # Get the converter (single command here, not class)
    package require the-converter-package

    # Provide a configuration
    theconverter configure ...

    # Perform the conversion
    set result [theconverter convert $thegrammarserial]

    ... process the result ...

.CE
To use a plugin \fBFOO\fR do
.CS


    # Get an export plugin manager
    package require pt::peg::export
    pt::peg::export E

    # Provide a configuration
    E configuration set ...

    # Run the plugin, and the converter inside.
    set result [E export serial $grammarserial FOO]

    ... process the result ...

.CE
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.
.PP
We distinguish between \fIregular\fR and \fIcanonical\fR







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



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







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
\fB-user\fR string
The value of this option is the name of the user for which the command
is run. The default value is \fBunknown\fR.
.PP
.SH USAGE
To use a converter do
.CS


# Get the converter (single command here, not class)
package require the-converter-package

# Provide a configuration
theconverter configure ...

# Perform the conversion
set result [theconverter convert $thegrammarserial]

\... process the result ...

.CE
To use a plugin \fBFOO\fR do
.CS


# Get an export plugin manager
package require pt::peg::export
pt::peg::export E

# Provide a configuration
E configuration set ...

# Run the plugin, and the converter inside.
set result [E export serial $grammarserial FOO]

\... process the result ...

.CE
.SH "PEG SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expression Grammars as immutable values for transport,
comparison, etc.
.PP
We distinguish between \fIregular\fR and \fIcanonical\fR
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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
    Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
    Sign       <- '-' / '+'                                     ;
    Number     <- Sign? Digit+                                  ;
    Expression <- Term (AddOp Term)*                            ;
    MulOp      <- '*' / '/'                                     ;
    Term       <- Factor (MulOp Factor)*                        ;
    AddOp      <- '+'/'-'                                       ;
    Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
    rules {
        AddOp      {is {/ {t -} {t +}}                                                                mode value}
        Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
        Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
        Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
        MulOp      {is {/ {t *} {t /}}                                                                mode value}
        Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
        Sign       {is {/ {t -} {t +}}                                                                mode value}
        Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
    }
    start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP







<
<

|
|
|
|
|
|
|
|

<





<
<

|
|
|
|
|
|
|
|
|
|
|

<







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
of a Tcl dictionary. I.e. it does not contain superfluous whitespace.
.RE
.PP
.SS EXAMPLE
Assuming the following PEG for simple mathematical expressions
.PP
.CS


PEG calculator (Expression)
Digit      <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9'       ;
Sign       <- '-' / '+'                                     ;
Number     <- Sign? Digit+                                  ;
Expression <- Term (AddOp Term)*                            ;
MulOp      <- '*' / '/'                                     ;
Term       <- Factor (MulOp Factor)*                        ;
AddOp      <- '+'/'-'                                       ;
Factor     <- '(' Expression ')' / Number                   ;
END;

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


pt::grammar::peg {
rules {
AddOp      {is {/ {t -} {t +}}                                                                mode value}
Digit      {is {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}}                mode value}
Expression {is {x {n Term} {* {x {n AddOp} {n Term}}}}                                        mode value}
Factor     {is {/ {x {t (} {n Expression} {t )}} {n Number}}                                  mode value}
MulOp      {is {/ {t *} {t /}}                                                                mode value}
Number     {is {x {? {n Sign}} {+ {n Digit}}}                                                 mode value}
Sign       {is {/ {t -} {t +}}                                                                mode value}
Term       {is {x {n Factor} {* {x {n MulOp} {n Factor}}}}                                    mode value}
}
start {n Expression}
}

.CE
.PP
.SH "PE SERIALIZATION FORMAT"
Here we specify the format used by the Parser Tools to serialize
Parsing Expressions as immutable values for transport, comparison,
etc.
.PP
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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


    Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


    {x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<
<
|
<





<
<
|
<
















<

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
.PP
.PP
.SS EXAMPLE
Assuming the parsing expression shown on the right-hand side of the
rule
.PP
.CS


Expression <- Term (AddOp Term)*

.CE
.PP
then its canonical serialization (except for whitespace) is
.PP
.CS


{x {n Term} {* {x {n AddOp} {n Term}}}}

.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
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.TP
\fB::rc4::RC4Final\fR \fIKey\fR
This should be called to clean up resources associated with
\fIKey\fR. Once this function has been called the key is destroyed.
.PP
.SH EXAMPLES
.CS


% set keydata [binary format H* 0123456789abcdef]
% rc4::rc4 -hex -key $keydata HelloWorld
3cf1ae8b7f1c670b612f
% rc4::rc4 -hex -key $keydata [binary format H* 3cf1ae8b7f1c670b612f]
HelloWorld

.CE
.CS


 set Key [rc4::RC4Init "key data"]
 append ciphertext [rc4::RC4 $Key $plaintext]
 append ciphertext [rc4::RC4 $Key $additional_plaintext]
 rc4::RC4Final $Key

.CE
.CS


 proc ::Finish {myState data} {
     DoStuffWith $myState $data
 }
 rc4::rc4 -in $socket -command [list ::Finish $ApplicationState]

.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
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2003, Pat Thoyts <[email protected]>

.fi







<
<





<


<
<
|
|
|
|
<


<
<
|
|
|
|
<



















<

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
.TP
\fB::rc4::RC4Final\fR \fIKey\fR
This should be called to clean up resources associated with
\fIKey\fR. Once this function has been called the key is destroyed.
.PP
.SH EXAMPLES
.CS


% set keydata [binary format H* 0123456789abcdef]
% rc4::rc4 -hex -key $keydata HelloWorld
3cf1ae8b7f1c670b612f
% rc4::rc4 -hex -key $keydata [binary format H* 3cf1ae8b7f1c670b612f]
HelloWorld

.CE
.CS


set Key [rc4::RC4Init "key data"]
append ciphertext [rc4::RC4 $Key $plaintext]
append ciphertext [rc4::RC4 $Key $additional_plaintext]
rc4::RC4Final $Key

.CE
.CS


proc ::Finish {myState data} {
DoStuffWith $myState $data
}
rc4::rc4 -in $socket -command [list ::Finish $ApplicationState]

.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
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2003, Pat Thoyts <[email protected]>

.fi

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

219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







219
220
221
222
223
224
225

226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
values only have to be properly ordered for reconstruction, their
exact values do not matter. Similarly the strings may actually span
multiple physical lines.
.PP
The text
.PP
.CS

Hello World,
how are you ?
Fine, and you ?
.CE
.PP
for example can be represented by
.PP
.CS

{{1 {Hello World,}} {2 {how are you ?}} {3 {Fine, and you ?}}}
.CE
.PP
or
.PP
.CS

{{5 {Hello World,}} {8 {how are you ?}} {9 {Fine, and you ?}}}
.CE
.PP
or
.PP
.CS

{{-1 {Hello World,
how are you ?}} {4 {Fine, and you ?}}}
.CE
.PP
The first dictionary is the \fIcanonical\fR representation of the
text, with line numbers starting at \fB1\fR, increasing in steps of
\fB1\fR and without gaps, and each value representing exactly one







<








<






<






<







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
values only have to be properly ordered for reconstruction, their
exact values do not matter. Similarly the strings may actually span
multiple physical lines.
.PP
The text
.PP
.CS

Hello World,
how are you ?
Fine, and you ?
.CE
.PP
for example can be represented by
.PP
.CS

{{1 {Hello World,}} {2 {how are you ?}} {3 {Fine, and you ?}}}
.CE
.PP
or
.PP
.CS

{{5 {Hello World,}} {8 {how are you ?}} {9 {Fine, and you ?}}}
.CE
.PP
or
.PP
.CS

{{-1 {Hello World,
how are you ?}} {4 {Fine, and you ?}}}
.CE
.PP
The first dictionary is the \fIcanonical\fR representation of the
text, with line numbers starting at \fB1\fR, increasing in steps of
\fB1\fR and without gaps, and each value representing exactly one
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
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.
.PP
And example of a RCS patch is
.PP
.CS

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!
.CE
.SH "RCS PATCH COMMAND LIST"
Patch command lists (sort: PCL's) are the data structures generated by







<




<







443
444
445
446
447
448
449

450
451
452
453

454
455
456
457
458
459
460
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.
.PP
And example of a RCS patch is
.PP
.CS

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!
.CE
.SH "RCS PATCH COMMAND LIST"
Patch command lists (sort: PCL's) are the data structures generated by
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
This is the format returned by the patch decoder command and accepted
as input by the patch encoder and applicator commands.
.PP
An example for a patch command is shown below, it represents the
example RCS patch found in section \fBRCS PATCH FORMAT\fR.
.PP
.CS

{{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!}}}
.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems.







<

<







481
482
483
484
485
486
487

488

489
490
491
492
493
494
495
This is the format returned by the patch decoder command and accepted
as input by the patch encoder and applicator commands.
.PP
An example for a patch command is shown below, it represents the
example RCS patch found in section \fBRCS PATCH FORMAT\fR.
.PP
.CS

{{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!}}}
.CE
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems.
512
513
514
515
516
517
518
519
520
CVS, RCS, RCS patch, SCCS, diff -n format, patching, text conversion, text differences
.SH CATEGORY
Text processing
.SH COPYRIGHT
.nf
Copyright (c) 2005, Andreas Kupries <[email protected]>
Copyright (c) 2005, Colin McCormack <[email protected]>

.fi







<

503
504
505
506
507
508
509

510
CVS, RCS, RCS patch, SCCS, diff -n format, patching, text conversion, text differences
.SH CATEGORY
Text processing
.SH COPYRIGHT
.nf
Copyright (c) 2005, Andreas Kupries <[email protected]>
Copyright (c) 2005, Colin McCormack <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.PP
Our examples define some generally useful report styles.
.PP
A simple table with lines surrounding all information and vertical
separators, but without internal horizontal separators.
.PP
.CS


    ::report::defstyle simpletable {} {
	data	set [split "[string repeat "| "   [columns]]|"]
	top	set [split "[string repeat "+ - " [columns]]+"]
	bottom	set [top get]
	top	enable
	bottom	enable
    }

.CE
.PP
An extension of a \fBsimpletable\fR, see above, with a title area.
.PP
.CS


    ::report::defstyle captionedtable {{n 1}} {
	simpletable
	topdata   set [data get]
	topcapsep set [top get]
	topcapsep enable
	tcaption $n
    }

.CE
.PP
Given the definitions above now an example which actually formats a
matrix into a tabular report. It assumes that the matrix actually
contains useful data.
.PP
.CS


    % ::struct::matrix m
    % # ... fill m with data, assume 5 columns
    % ::report::report r 5 style captionedtable 1
    % r printmatrix m
    +---+-------------------+-------+-------+--------+
    |000|VERSIONS:          |2:8.4a3|1:8.4a3|1:8.4a3%|
    +---+-------------------+-------+-------+--------+
    |001|CATCH return ok    |7      |13     |53.85   |
    |002|CATCH return error |68     |91     |74.73   |
    |003|CATCH no catch used|7      |14     |50.00   |
    |004|IF if true numeric |12     |33     |36.36   |
    |005|IF elseif          |15     |47     |31.91   |
    |   |true numeric       |       |       |        |
    +---+-------------------+-------+-------+--------+
    %
    % # alternate way of doing the above
    % 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
.nf
Copyright (c) 2002 Andreas Kupries <[email protected]>

.fi







<
<
|
|
|
|
|
|
|
<





<
<
|
|
|
|
|
|
|
<







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















<

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
.PP
Our examples define some generally useful report styles.
.PP
A simple table with lines surrounding all information and vertical
separators, but without internal horizontal separators.
.PP
.CS


::report::defstyle simpletable {} {
data	set [split "[string repeat "| "   [columns]]|"]
top	set [split "[string repeat "+ - " [columns]]+"]
bottom	set [top get]
top	enable
bottom	enable
}

.CE
.PP
An extension of a \fBsimpletable\fR, see above, with a title area.
.PP
.CS


::report::defstyle captionedtable {{n 1}} {
simpletable
topdata   set [data get]
topcapsep set [top get]
topcapsep enable
tcaption $n
}

.CE
.PP
Given the definitions above now an example which actually formats a
matrix into a tabular report. It assumes that the matrix actually
contains useful data.
.PP
.CS


% ::struct::matrix m
% # ... fill m with data, assume 5 columns
% ::report::report r 5 style captionedtable 1
% r printmatrix m
+---+-------------------+-------+-------+--------+
|000|VERSIONS:          |2:8.4a3|1:8.4a3|1:8.4a3%|
+---+-------------------+-------+-------+--------+
|001|CATCH return ok    |7      |13     |53.85   |
|002|CATCH return error |68     |91     |74.73   |
|003|CATCH no catch used|7      |14     |50.00   |
|004|IF if true numeric |12     |33     |36.36   |
|005|IF elseif          |15     |47     |31.91   |
|   |true numeric       |       |       |        |
+---+-------------------+-------+-------+--------+
%
% # alternate way of doing the above
% 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
.nf
Copyright (c) 2002 Andreas Kupries <[email protected]>

.fi

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.TP
\fB::rest::put\fR \fIurl\fR \fIquery\fR ?config? ?body?
.TP
\fB::rest::delete\fR \fIurl\fR \fIquery\fR ?config? ?body?
.PP
The above commands are all equivalent except for the http method used. If you use \fBsimple\fR then the method should be specified as an option in the ?config? dict, otherwise it defaults to \fBget\fR. If a body is needed then the config dict must be present, however it may be empty.
.CS


    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]

.CE
.CS


    set res [rest::simple http://twitter.com/statuses/update.json  [list status $text]  {
          method post
          auth {basic user password}
          format json
        }
    ]

.CE
the options supported in the config dict are as follows
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.
.CS


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]

.CE
::${name}::basic_auth \fIu\fR \fIp\fR
::${name}::set_static_args ?args?]
.TP
\fB::rest::save\fR \fIname\fR \fIfile\fR
saves a copy of the dynamically created procs to a file for later loading
.TP







<
<
|
|
|
|
<


<
<
|
|
|
|
|
|
<












<
<

<

|
|
|

<

<

<







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
.TP
\fB::rest::put\fR \fIurl\fR \fIquery\fR ?config? ?body?
.TP
\fB::rest::delete\fR \fIurl\fR \fIquery\fR ?config? ?body?
.PP
The above commands are all equivalent except for the http method used. If you use \fBsimple\fR then the method should be specified as an option in the ?config? dict, otherwise it defaults to \fBget\fR. If a body is needed then the config dict must be present, however it may be empty.
.CS


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]

.CE
.CS


set res [rest::simple http://twitter.com/statuses/update.json  [list status $text]  {
method post
auth {basic user password}
format json
}
]

.CE
the options supported in the config dict are as follows
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.
.CS


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]

.CE
::${name}::basic_auth \fIu\fR \fIp\fR
::${name}::set_static_args ?args?]
.TP
\fB::rest::save\fR \fIname\fR \fIfile\fR
saves a copy of the dynamically created procs to a file for later loading
.TP
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
be one of none, optional, required, argument or mime_multipart. default is optional.
if \fBargument\fR is used then the option is parsed as a list where the second value is the name
of a option. the body will then be used as the value for that option.
if the value is \fBmime_multipart\fR then the body is required and interpreted as each argument
representing one part of a mime multipart document. each argument should be a 2 item list with the first being
a list of header keys and values, and the second being the mime part body.
.CS


set ygeo(parse) {
    url http://wherein.yahooapis.com/v1/document
    method post
    body { arg documentContent }
}
ygeo::parse "san jose ca"
# "san jose ca" will be interpreted as if it were specified as the -documentContent option

.CE
.CS


set gdocs(upload) {
    url http://docs.google.com/feeds/default/private/full
    body mime_multipart
}
gdocs::upload [list {Content-Type application/atom+xml} $xml] [list {Content-Type image/jpeg} $filedata]

.CE
.IP
method
The HTTP method to call on the url. The default is GET.
copy
this copies the definition of a previously defined call. after copying you can override selected options by defining them again.
unset







<
<

|
|
|



<


<
<

|
|


<







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
be one of none, optional, required, argument or mime_multipart. default is optional.
if \fBargument\fR is used then the option is parsed as a list where the second value is the name
of a option. the body will then be used as the value for that option.
if the value is \fBmime_multipart\fR then the body is required and interpreted as each argument
representing one part of a mime multipart document. each argument should be a 2 item list with the first being
a list of header keys and values, and the second being the mime part body.
.CS


set ygeo(parse) {
url http://wherein.yahooapis.com/v1/document
method post
body { arg documentContent }
}
ygeo::parse "san jose ca"
# "san jose ca" will be interpreted as if it were specified as the -documentContent option

.CE
.CS


set gdocs(upload) {
url http://docs.google.com/feeds/default/private/full
body mime_multipart
}
gdocs::upload [list {Content-Type application/atom+xml} $xml] [list {Content-Type image/jpeg} $filedata]

.CE
.IP
method
The HTTP method to call on the url. The default is GET.
copy
this copies the definition of a previously defined call. after copying you can override selected options by defining them again.
unset
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
arguments that may be present but are not required.
static_args
arguments that are always the same. no sense in troubling the user with these. A leading - is allowed but not required to maintain consistancy with the command line.
auth
should be one of basic or sign. if basic is used you can configure basic auth with the proc auth_basic which takes 2 arguments, the username and password.
if sign is specified then the value must be a list with the second element being the name of a proc which will be called to perform the request signing.
.CS


set delicious(updated) {
    url https://api.del.icio.us/v1/posts/update
    auth basic
}

rest::create_interface flickr

flickr::basic_auth username password

.CE
.CS


set flickr(auth.getToken) {
   url http://api.flickr.com/services/rest/
   req_args { api_key: secret: }
   auth { sign do_signature }
}

rest::create_interface flickr

proc ::flickr::do_signature {query} {
    # perform some operations on the query here
    return $query
}

.CE
.IP
callback
If this option is present then the method will be created as an async call. An async call will return immediately with the value of the http token. The event loop must be active to use this option. The value of this option is the name of a proc which is invoked when the HTTP call is complete. The proc receives three arguments, the name of the calling procedure, the status of the result (one of OK or ERROR), and the data associated with the result.
the http request header is available via
.TP
uplevel token token







<
<

|
|

<

<

<


<
<

|
|
|

<

<

|
|

<







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
arguments that may be present but are not required.
static_args
arguments that are always the same. no sense in troubling the user with these. A leading - is allowed but not required to maintain consistancy with the command line.
auth
should be one of basic or sign. if basic is used you can configure basic auth with the proc auth_basic which takes 2 arguments, the username and password.
if sign is specified then the value must be a list with the second element being the name of a proc which will be called to perform the request signing.
.CS


set delicious(updated) {
url https://api.del.icio.us/v1/posts/update
auth basic
}

rest::create_interface flickr

flickr::basic_auth username password

.CE
.CS


set flickr(auth.getToken) {
url http://api.flickr.com/services/rest/
req_args { api_key: secret: }
auth { sign do_signature }
}

rest::create_interface flickr

proc ::flickr::do_signature {query} {
# perform some operations on the query here
return $query
}

.CE
.IP
callback
If this option is present then the method will be created as an async call. An async call will return immediately with the value of the http token. The event loop must be active to use this option. The value of this option is the name of a proc which is invoked when the HTTP call is complete. The proc receives three arguments, the name of the calling procedure, the status of the result (one of OK or ERROR), and the data associated with the result.
the http request header is available via
.TP
uplevel token token

Changes to embedded/man/files/modules/ripemd/ripemd128.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
\fB::ripemd::RIPEHMAC128Update\fR \fItoken\fR \fIdata\fR
.TP
\fB::ripemd::RIPEHMAC128Final\fR \fItoken\fR
These commands are identical to the RIPEMD128 equivalent commands.
.PP
.SH EXAMPLES
.CS


% ripemd::ripemd128 -hex "Tcl does RIPEMD-128"
3cab177bae65205d81e7978f63556c63

.CE
.CS


% ripemd::hmac128 -hex -key Sekret "Tcl does RIPEMD-128"
b359dc5971a05beea0be7b106b30e389

.CE
.CS


% set tok [ripemd::RIPEMD128Init]
::ripemd::1
% ripemd::RIPEMD128Update $tok "Tcl "
% ripemd::RIPEMD128Update $tok "does "
% ripemd::RIPEMD128Update $tok "RIPEMD-128"
% ripemd::Hex [ripemd::RIPEMD128Final $tok]
3cab177bae65205d81e7978f63556c63

.CE
.SH REFERENCES
.IP [1]
H. Dobbertin, A. Bosselaers, B. Preneel,
"RIPEMD-160, a strengthened version of RIPEMD"
\fIhttp://www.esat.kuleuven.ac.be/~cosicart/pdf/AB-9601/AB-9601.pdf\fR
.IP [2]







<
<


<


<
<


<


<
<







<







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
\fB::ripemd::RIPEHMAC128Update\fR \fItoken\fR \fIdata\fR
.TP
\fB::ripemd::RIPEHMAC128Final\fR \fItoken\fR
These commands are identical to the RIPEMD128 equivalent commands.
.PP
.SH EXAMPLES
.CS


% ripemd::ripemd128 -hex "Tcl does RIPEMD-128"
3cab177bae65205d81e7978f63556c63

.CE
.CS


% ripemd::hmac128 -hex -key Sekret "Tcl does RIPEMD-128"
b359dc5971a05beea0be7b106b30e389

.CE
.CS


% set tok [ripemd::RIPEMD128Init]
::ripemd::1
% ripemd::RIPEMD128Update $tok "Tcl "
% ripemd::RIPEMD128Update $tok "does "
% ripemd::RIPEMD128Update $tok "RIPEMD-128"
% ripemd::Hex [ripemd::RIPEMD128Final $tok]
3cab177bae65205d81e7978f63556c63

.CE
.SH REFERENCES
.IP [1]
H. Dobbertin, A. Bosselaers, B. Preneel,
"RIPEMD-160, a strengthened version of RIPEMD"
\fIhttp://www.esat.kuleuven.ac.be/~cosicart/pdf/AB-9601/AB-9601.pdf\fR
.IP [2]
407
408
409
410
411
412
413
414
415
.SH KEYWORDS
RIPEMD, hashing, md4, message-digest, rfc 1320, rfc 1321, rfc 2104, security
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2004, Pat Thoyts <[email protected]>

.fi







<

397
398
399
400
401
402
403

404
.SH KEYWORDS
RIPEMD, hashing, md4, message-digest, rfc 1320, rfc 1321, rfc 2104, security
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2004, Pat Thoyts <[email protected]>

.fi

Changes to embedded/man/files/modules/ripemd/ripemd160.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
\fB::ripemd::RIPEHMAC160Update\fR \fItoken\fR \fIdata\fR
.TP
\fB::ripemd::RIPEHMAC160Final\fR \fItoken\fR
These commands are identical to the RIPEMD160 equivalent commands.
.PP
.SH EXAMPLES
.CS


% ripemd::ripemd160 -hex "Tcl does RIPEMD-160"
0829dea75a1a7074c702896723fe37763481a0a7

.CE
.CS


% ripemd::hmac160 -hex -key Sekret "Tcl does RIPEMD-160"
bf0c927231733686731dddb470b64a9c23f7f53b

.CE
.CS


% set tok [ripemd::RIPEMD160Init]
::ripemd::1
% ripemd::RIPEMD160Update $tok "Tcl "
% ripemd::RIPEMD160Update $tok "does "
% ripemd::RIPEMD160Update $tok "RIPEMD-160"
% ripemd::Hex [ripemd::RIPEMD160Final $tok]
0829dea75a1a7074c702896723fe37763481a0a7

.CE
.SH REFERENCES
.IP [1]
H. Dobbertin, A. Bosselaers, B. Preneel,
"RIPEMD-160, a strengthened version of RIPEMD"
\fIhttp://www.esat.kuleuven.ac.be/~cosicart/pdf/AB-9601/AB-9601.pdf\fR
.IP [2]







<
<


<


<
<


<


<
<







<







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
\fB::ripemd::RIPEHMAC160Update\fR \fItoken\fR \fIdata\fR
.TP
\fB::ripemd::RIPEHMAC160Final\fR \fItoken\fR
These commands are identical to the RIPEMD160 equivalent commands.
.PP
.SH EXAMPLES
.CS


% ripemd::ripemd160 -hex "Tcl does RIPEMD-160"
0829dea75a1a7074c702896723fe37763481a0a7

.CE
.CS


% ripemd::hmac160 -hex -key Sekret "Tcl does RIPEMD-160"
bf0c927231733686731dddb470b64a9c23f7f53b

.CE
.CS


% set tok [ripemd::RIPEMD160Init]
::ripemd::1
% ripemd::RIPEMD160Update $tok "Tcl "
% ripemd::RIPEMD160Update $tok "does "
% ripemd::RIPEMD160Update $tok "RIPEMD-160"
% ripemd::Hex [ripemd::RIPEMD160Final $tok]
0829dea75a1a7074c702896723fe37763481a0a7

.CE
.SH REFERENCES
.IP [1]
H. Dobbertin, A. Bosselaers, B. Preneel,
"RIPEMD-160, a strengthened version of RIPEMD"
\fIhttp://www.esat.kuleuven.ac.be/~cosicart/pdf/AB-9601/AB-9601.pdf\fR
.IP [2]
394
395
396
397
398
399
400
401
402
.SH KEYWORDS
RIPEMD, hashing, md4, message-digest, rfc 1320, rfc 1321, rfc 2104, security
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2004, Pat Thoyts <[email protected]>

.fi







<

384
385
386
387
388
389
390

391
.SH KEYWORDS
RIPEMD, hashing, md4, message-digest, rfc 1320, rfc 1321, rfc 2104, security
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2004, Pat Thoyts <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
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 \fBstep\fR command is called, the last server
response should be provided as the command argument so that the SASL
mechanism can take appropriate action.
.CS


proc ClientCallback {context command args} {
    switch -exact -- $command {
        login    { return "" }
        username { return $::tcl_platform(user) }
        password { return "SecRet" }
        realm    { return "" }
        hostname { return [info host] }
        default  { return -code error unxpected }
    }
}

proc Demo {{mech PLAIN}} {
    set ctx [SASL::new -mechanism $mech -callback ClientCallback]
    set challenge ""
    while {1} {
        set more_steps [SASL::step $ctx challenge]
        puts "Send '[SASL::response $ctx]'"
        puts "Read server response into challenge var"
        if {!$more_steps} {break}
    }
    SASL::cleanup $ctx
}

.CE
.SH REFERENCES
.IP [1]
Myers, J. "Simple Authentication and Security Layer (SASL)",
RFC 2222, October 1997.
(\fIhttp://www.ietf.org/rfc/rfc2222.txt\fR)
.IP [2]







<
<

|
|
|
|
|
|
|
|

<

|
|
|
|
|
|
|
|
|

<







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
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 \fBstep\fR command is called, the last server
response should be provided as the command argument so that the SASL
mechanism can take appropriate action.
.CS


proc ClientCallback {context command args} {
switch -exact -- $command {
login    { return "" }
username { return $::tcl_platform(user) }
password { return "SecRet" }
realm    { return "" }
hostname { return [info host] }
default  { return -code error unxpected }
}
}

proc Demo {{mech PLAIN}} {
set ctx [SASL::new -mechanism $mech -callback ClientCallback]
set challenge ""
while {1} {
set more_steps [SASL::step $ctx challenge]
puts "Send '[SASL::response $ctx]'"
puts "Read server response into challenge var"
if {!$more_steps} {break}
}
SASL::cleanup $ctx
}

.CE
.SH REFERENCES
.IP [1]
Myers, J. "Simple Authentication and Security Layer (SASL)",
RFC 2222, October 1997.
(\fIhttp://www.ietf.org/rfc/rfc2222.txt\fR)
.IP [2]
531
532
533
534
535
536
537
538
539
.SH KEYWORDS
SASL, authentication
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2005-2006, Pat Thoyts <[email protected]>

.fi







<

526
527
528
529
530
531
532

533
.SH KEYWORDS
SASL, authentication
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) 2005-2006, Pat Thoyts <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
\fB::sha1::HMACUpdate\fR \fItoken\fR \fIdata\fR
.TP
\fB::sha1::HMACFinal\fR \fItoken\fR
These commands are identical to the SHA1 equivalent commands.
.PP
.SH EXAMPLES
.CS


% sha1::sha1 "Tcl does SHA1"
285a6a91c45a9066bf39fcf24425796ef0b2a8bf

.CE
.CS


% sha1::hmac Sekret "Tcl does SHA1"
ae6251fa51b95b18cba2be95eb031d07475ff03c

.CE
.CS


% set tok [sha1::SHA1Init]
::sha1::1
% sha1::SHA1Update $tok "Tcl "
% sha1::SHA1Update $tok "does "
% sha1::SHA1Update $tok "SHA1"
% sha1::Hex [sha1::SHA1Final $tok]
285a6a91c45a9066bf39fcf24425796ef0b2a8bf

.CE
.SH REFERENCES
.IP [1]
"Secure Hash Standard", National Institute of Standards
and Technology, U.S. Department Of Commerce, April 1995.
(\fIhttp://www.itl.nist.gov/fipspubs/fip180-1.htm\fR)
.IP [2]







<
<


<


<
<


<


<
<







<







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
\fB::sha1::HMACUpdate\fR \fItoken\fR \fIdata\fR
.TP
\fB::sha1::HMACFinal\fR \fItoken\fR
These commands are identical to the SHA1 equivalent commands.
.PP
.SH EXAMPLES
.CS


% sha1::sha1 "Tcl does SHA1"
285a6a91c45a9066bf39fcf24425796ef0b2a8bf

.CE
.CS


% sha1::hmac Sekret "Tcl does SHA1"
ae6251fa51b95b18cba2be95eb031d07475ff03c

.CE
.CS


% set tok [sha1::SHA1Init]
::sha1::1
% sha1::SHA1Update $tok "Tcl "
% sha1::SHA1Update $tok "does "
% sha1::SHA1Update $tok "SHA1"
% sha1::Hex [sha1::SHA1Final $tok]
285a6a91c45a9066bf39fcf24425796ef0b2a8bf

.CE
.SH REFERENCES
.IP [1]
"Secure Hash Standard", National Institute of Standards
and Technology, U.S. Department Of Commerce, April 1995.
(\fIhttp://www.itl.nist.gov/fipspubs/fip180-1.htm\fR)
.IP [2]
399
400
401
402
403
404
405
406
407
.SH KEYWORDS
FIPS 180-1, hashing, message-digest, rfc 2104, security, sha1
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2005, Pat Thoyts <[email protected]>

.fi







<

389
390
391
392
393
394
395

396
.SH KEYWORDS
FIPS 180-1, hashing, message-digest, rfc 2104, security, sha1
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2005, Pat Thoyts <[email protected]>

.fi

Changes to embedded/man/files/modules/sha1/sha256.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
\fB::sha2::HMACUpdate\fR \fItoken\fR \fIdata\fR
.TP
\fB::sha2::HMACFinal\fR \fItoken\fR
These commands are identical to the SHA256 equivalent commands.
.PP
.SH EXAMPLES
.CS


% sha2::sha256 "Tcl does SHA256"
0b91043ee484abd83c3e4b08d6034d71b937026379f0f59bda6e625e6e214789

.CE
.CS


% sha2::hmac Sekret "Tcl does SHA256"
4f9352c64d655e8a36abe73e6163a9d7a54039877c1c92ec90b07d48d4e854e0

.CE
.CS


% set tok [sha2::SHA256Init]
::sha2::1
% sha2::SHA256Update $tok "Tcl "
% sha2::SHA256Update $tok "does "
% sha2::SHA256Update $tok "SHA256"
% sha2::Hex [sha2::SHA256Final $tok]
0b91043ee484abd83c3e4b08d6034d71b937026379f0f59bda6e625e6e214789

.CE
.SH REFERENCES
.IP [1]
"Secure Hash Standard", National Institute of Standards
and Technology, U.S. Department Of Commerce, April 1995.
(\fIhttp://www.itl.nist.gov/fipspubs/fip180-1.htm\fR)
.IP [2]







<
<


<


<
<


<


<
<







<







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
\fB::sha2::HMACUpdate\fR \fItoken\fR \fIdata\fR
.TP
\fB::sha2::HMACFinal\fR \fItoken\fR
These commands are identical to the SHA256 equivalent commands.
.PP
.SH EXAMPLES
.CS


% sha2::sha256 "Tcl does SHA256"
0b91043ee484abd83c3e4b08d6034d71b937026379f0f59bda6e625e6e214789

.CE
.CS


% sha2::hmac Sekret "Tcl does SHA256"
4f9352c64d655e8a36abe73e6163a9d7a54039877c1c92ec90b07d48d4e854e0

.CE
.CS


% set tok [sha2::SHA256Init]
::sha2::1
% sha2::SHA256Update $tok "Tcl "
% sha2::SHA256Update $tok "does "
% sha2::SHA256Update $tok "SHA256"
% sha2::Hex [sha2::SHA256Final $tok]
0b91043ee484abd83c3e4b08d6034d71b937026379f0f59bda6e625e6e214789

.CE
.SH REFERENCES
.IP [1]
"Secure Hash Standard", National Institute of Standards
and Technology, U.S. Department Of Commerce, April 1995.
(\fIhttp://www.itl.nist.gov/fipspubs/fip180-1.htm\fR)
.IP [2]
412
413
414
415
416
417
418
419
420
.SH KEYWORDS
FIPS 180-1, hashing, message-digest, rfc 2104, security, sha256
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2008, Andreas Kupries <[email protected]>

.fi







<

402
403
404
405
406
407
408

409
.SH KEYWORDS
FIPS 180-1, hashing, message-digest, rfc 2104, security, sha256
.SH CATEGORY
Hashes, checksums, and encryption
.SH COPYRIGHT
.nf
Copyright (c) 2008, Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/simulation/annealing.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
stuck in a local optimum and theoretically it is capable of finding the
global optimum within the search space.
.PP
The method resembles the cooling of material, hence the name.
.PP
The package \fIsimulation::annealing\fR offers the command \fIfindMinimum\fR:
.CS


    puts [::simulation::annealing::findMinimum  -trials 300  -parameters {x -5.0 5.0 y -5.0 5.0}  -function {$x*$x+$y*$y+sin(10.0*$x)+4.0*cos(20.0*$y)}]

.CE
prints the estimated minimum value of the function f(x,y) =
\fIx**2+y**2+sin(10*x)+4*cos(20*y)\fR and the values of x and y where
the minimum was attained:
.CS


result -4.9112922923 x -0.181647676593 y 0.155743646974

.CE
.SH PROCEDURES
The package defines the following auxiliary procedures:
.TP
\fB::simulation::annealing::getOption\fR \fIkeyword\fR
Get the value of an option given as part of the \fIfindMinimum\fR
command.







<
<
|
<





<
<

<







275
276
277
278
279
280
281


282

283
284
285
286
287


288

289
290
291
292
293
294
295
stuck in a local optimum and theoretically it is capable of finding the
global optimum within the search space.
.PP
The method resembles the cooling of material, hence the name.
.PP
The package \fIsimulation::annealing\fR offers the command \fIfindMinimum\fR:
.CS


puts [::simulation::annealing::findMinimum  -trials 300  -parameters {x -5.0 5.0 y -5.0 5.0}  -function {$x*$x+$y*$y+sin(10.0*$x)+4.0*cos(20.0*$y)}]

.CE
prints the estimated minimum value of the function f(x,y) =
\fIx**2+y**2+sin(10*x)+4*cos(20*y)\fR and the values of x and y where
the minimum was attained:
.CS


result -4.9112922923 x -0.181647676593 y 0.155743646974

.CE
.SH PROCEDURES
The package defines the following auxiliary procedures:
.TP
\fB::simulation::annealing::getOption\fR \fIkeyword\fR
Get the value of an option given as part of the \fIfindMinimum\fR
command.
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
.IP \(bu
This does mean that the automatic determination of a scale factor is
out of the question - the high function values that force the point
inside the region would distort the estimation.
.PP
Here is an example of finding an optimum inside a circle:
.CS


    puts [::simulation::annealing::findMinimum  -trials 3000  -reduce 0.98  -parameters {x -5.0 5.0 y -5.0 5.0}  -code {
            if { hypot($x-5.0,$y-5.0) < 4.0 } {
                set result [expr {$x*$x+$y*$y+sin(10.0*$x)+4.0*cos(20.0*$y)}]
            } else {
                set result 1.0e100
            }
        }]

.CE
The method is theoretically capable of determining the global optimum,
but often you need to use a large number of trials and a slow reduction
of temperature to get reliable and repeatable estimates.
.PP
You can use the \fI-final\fR option to use a deterministic optimization
method, once you are sure you are near the required optimum.
.PP
The \fIfindCombinatorialMinimum\fR procedure is suited for situations
where the parameters have the values 0 or 1 (and there can be many of
them). Here is an example:
.IP \(bu
We have a function that attains an absolute minimum if the first ten
numbers are 1 and the rest is 0:
.CS


proc cost {params} {
    set cost 0
    foreach p [lrange $params 0 9] {
        if { $p == 0 } {
            incr cost
        }
    }
    foreach p [lrange $params 10 end] {
        if { $p == 1 } {
            incr cost
        }
    }
    return $cost
}

.CE
.IP \(bu
We want to find the solution that gives this minimum for various lengths
of the solution vector \fIparams\fR:
.CS


foreach n {100 1000 10000} {
    break
    puts "Problem size: $n"
    puts [::simulation::annealing::findCombinatorialMinimum  -trials 300  -verbose 0  -number-params $n  -code {set result [cost $params]}]
}

.CE
.IP \(bu
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.
.PP
.SH KEYWORDS
math, optimization, simulated annealing
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2008 Arjen Markus <[email protected]>

.fi







<
<
|
|
|
|
|
|
|
<















<
<

|
|
|
|
|
|
|
|
|
|
|
|

<





<
<

|
|
|

<
















<

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
.IP \(bu
This does mean that the automatic determination of a scale factor is
out of the question - the high function values that force the point
inside the region would distort the estimation.
.PP
Here is an example of finding an optimum inside a circle:
.CS


puts [::simulation::annealing::findMinimum  -trials 3000  -reduce 0.98  -parameters {x -5.0 5.0 y -5.0 5.0}  -code {
if { hypot($x-5.0,$y-5.0) < 4.0 } {
set result [expr {$x*$x+$y*$y+sin(10.0*$x)+4.0*cos(20.0*$y)}]
} else {
set result 1.0e100
}
}]

.CE
The method is theoretically capable of determining the global optimum,
but often you need to use a large number of trials and a slow reduction
of temperature to get reliable and repeatable estimates.
.PP
You can use the \fI-final\fR option to use a deterministic optimization
method, once you are sure you are near the required optimum.
.PP
The \fIfindCombinatorialMinimum\fR procedure is suited for situations
where the parameters have the values 0 or 1 (and there can be many of
them). Here is an example:
.IP \(bu
We have a function that attains an absolute minimum if the first ten
numbers are 1 and the rest is 0:
.CS


proc cost {params} {
set cost 0
foreach p [lrange $params 0 9] {
if { $p == 0 } {
incr cost
}
}
foreach p [lrange $params 10 end] {
if { $p == 1 } {
incr cost
}
}
return $cost
}

.CE
.IP \(bu
We want to find the solution that gives this minimum for various lengths
of the solution vector \fIparams\fR:
.CS


foreach n {100 1000 10000} {
break
puts "Problem size: $n"
puts [::simulation::annealing::findCombinatorialMinimum  -trials 300  -verbose 0  -number-params $n  -code {set result [cost $params]}]
}

.CE
.IP \(bu
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.
.PP
.SH KEYWORDS
math, optimization, simulated annealing
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2008 Arjen Markus <[email protected]>

.fi

Changes to embedded/man/files/modules/simulation/montecarlo.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
You can think of a model of a network of computers, an ecosystem of some
kind or in fact anything that can be quantitatively described and has
some stochastic element in it.
.PP
The package \fIsimulation::montecarlo\fR offers a basic framework for
such a modelling technique:
.CS


#
# MC experiments:
# Determine the mean and median of a set of points and compare them
#
::simulation::montecarlo::singleExperiment -init {
    package require math::statistics

    set prng [::simulation::random::prng_Normal 0.0 1.0]
} -loop {
    set numbers {}
    for { set i 0 } { $i < [getOption samples] } { incr i } {
        lappend numbers [$prng]
    }
    set mean   [::math::statistics::mean $numbers]
    set median [::math::statistics::median $numbers] ;# ? Exists?
    setTrialResult [list $mean $median]
} -final {
    set result [getTrialResults]
    set means   {}
    set medians {}
    foreach r $result {
        foreach {m M} $r break
        lappend means   $m
        lappend medians $M
    }
    puts [getOption reportfile] "Correlation: [::math::statistics::corr $means $medians]"

} -trials 100 -samples 10 -verbose 1 -columns {Mean Median}

.CE
This example attemps to find out how well the median value and the mean
value of a random set of numbers correlate. Sometimes a median value is
a more robust characteristic than a mean value - especially if you have
a statistical distribution with "fat" tails.
.SH PROCEDURES
The package defines the following auxiliary procedures:







<
<





|
<
|

|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
<

<







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
You can think of a model of a network of computers, an ecosystem of some
kind or in fact anything that can be quantitatively described and has
some stochastic element in it.
.PP
The package \fIsimulation::montecarlo\fR offers a basic framework for
such a modelling technique:
.CS


#
# MC experiments:
# Determine the mean and median of a set of points and compare them
#
::simulation::montecarlo::singleExperiment -init {
package require math::statistics

set prng [::simulation::random::prng_Normal 0.0 1.0]
} -loop {
set numbers {}
for { set i 0 } { $i < [getOption samples] } { incr i } {
lappend numbers [$prng]
}
set mean   [::math::statistics::mean $numbers]
set median [::math::statistics::median $numbers] ;# ? Exists?
setTrialResult [list $mean $median]
} -final {
set result [getTrialResults]
set means   {}
set medians {}
foreach r $result {
foreach {m M} $r break
lappend means   $m
lappend medians $M
}
puts [getOption reportfile] "Correlation: [::math::statistics::corr $means $medians]"

} -trials 100 -samples 10 -verbose 1 -columns {Mean Median}

.CE
This example attemps to find out how well the median value and the mean
value of a random set of numbers correlate. Sometimes a median value is
a more robust characteristic than a mean value - especially if you have
a statistical distribution with "fat" tails.
.SH PROCEDURES
The package defines the following auxiliary procedures:
454
455
456
457
458
459
460
461
462
.SH KEYWORDS
math, montecarlo simulation, stochastic modelling
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2008 Arjen Markus <[email protected]>

.fi







<

448
449
450
451
452
453
454

455
.SH KEYWORDS
math, montecarlo simulation, stochastic modelling
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2008 Arjen Markus <[email protected]>

.fi

Changes to embedded/man/files/modules/simulation/simulation_random.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
numbers that are distributed normally, uniformly, according to a
Pareto or Gumbel distribution and so on
.IP \(bu
coordinates of points uniformly spread inside a sphere or a rectangle
.PP
For example:
.CS


    set p [::simulation::random::prng_Normal -1.0 10.0]

.CE
produces a new command (whose name is stored in the variable "p") that
generates normally distributed numbers with a mean of -1.0 and a
standard deviation of 10.0.
.SH PROCEDURES
The package defines the following public procedures for \fIdiscrete\fR
distributions:







<
<
|
<







283
284
285
286
287
288
289


290

291
292
293
294
295
296
297
numbers that are distributed normally, uniformly, according to a
Pareto or Gumbel distribution and so on
.IP \(bu
coordinates of points uniformly spread inside a sphere or a rectangle
.PP
For example:
.CS


set p [::simulation::random::prng_Normal -1.0 10.0]

.CE
produces a new command (whose name is stored in the variable "p") that
generates normally distributed numbers with a mean of -1.0 and a
standard deviation of 10.0.
.SH PROCEDURES
The package defines the following public procedures for \fIdiscrete\fR
distributions:
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
.sp
.TP
\fB::simulation::random::prng_Gumbel\fR \fImin\fR \fIf\fR
Create a command (PRNG) that generates numbers distributed according to
Gumbel with a given minimum value and a given scale factor. The
probability density function is:
.CS


     P(v) = exp( -exp(f*(v-min)))

.CE
.RS
.TP
float \fImin\fR
Minimum number that will be generated
.TP
float \fIf\fR







<
<
|
<







380
381
382
383
384
385
386


387

388
389
390
391
392
393
394
.sp
.TP
\fB::simulation::random::prng_Gumbel\fR \fImin\fR \fIf\fR
Create a command (PRNG) that generates numbers distributed according to
Gumbel with a given minimum value and a given scale factor. The
probability density function is:
.CS


P(v) = exp( -exp(f*(v-min)))

.CE
.RS
.TP
float \fImin\fR
Minimum number that will be generated
.TP
float \fIf\fR
476
477
478
479
480
481
482
483
484
.SH KEYWORDS
math, random numbers, simulation, statistical distribution
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2004 Arjen Markus <[email protected]>

.fi







<

469
470
471
472
473
474
475

476
.SH KEYWORDS
math, random numbers, simulation, statistical distribution
.SH CATEGORY
Mathematics
.SH COPYRIGHT
.nf
Copyright (c) 2004 Arjen Markus <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
Start the service listening on \fIport\fR or the default port 25. If
\fImyaddr\fR is given as a domain-style name or numerical
dotted-quad IP address then the server socket will be bound to that
network interface. By default the server is bound to all network
interfaces. For example:
.sp
.CS


  set sock [::smtpd::start [info hostname] 0]

.CE
.sp
will bind to the hosts internet interface on the first available port.
.sp
At present the package only supports a single instance of a SMTP
server. This could be changed if required at the cost of making the
package a little more complicated to read. If there is a good reason







<
<
|
<







287
288
289
290
291
292
293


294

295
296
297
298
299
300
301
Start the service listening on \fIport\fR or the default port 25. If
\fImyaddr\fR is given as a domain-style name or numerical
dotted-quad IP address then the server socket will be bound to that
network interface. By default the server is bound to all network
interfaces. For example:
.sp
.CS


set sock [::smtpd::start [info hostname] 0]

.CE
.sp
will bind to the hosts internet interface on the first available port.
.sp
At present the package only supports a single instance of a SMTP
server. This could be changed if required at the cost of making the
package a little more complicated to read. If there is a good reason
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
\fBvalidate_host\fR callback
This procedure is called with the clients ip address as soon as a
connection request has been accepted and before any protocol commands
are processed. If you wish to deny access to a specific host then an
error should be returned by this callback. For example:
.sp
.CS


 proc validate_host {ipnum} {
    if {[string match "192.168.1.*" $ipnum]} {
       error "go away!"
    }
 }

.CE
.sp
If access is denied the client will receive a standard message that
includes the text of your error, such as:
.sp
.CS


 550 Access denied: I hate you.

.CE
.sp
As per the SMTP protocol, the connection is not closed but we wait for
the client to send a QUIT command. Any other commands cause a
\fB503 Bad Sequence\fR error.
.TP
\fBvalidate_sender\fR callback
The validate_sender callback is called with the senders mail address
during processing of a MAIL command to allow you to accept or reject
mail based upon the declared sender. To reject mail you should throw
an error. For example, to reject mail from user "denied":
.sp
.CS


 proc validate_sender {address} {
    eval array set addr [mime::parseaddress $address]
    if {[string match "denied" $addr(local)]} {
         error "mailbox $addr(local) denied"
    }
    return
 }

.CE
.sp
The content of any error message will not be passed back to the client.
.TP
\fBvalidate_recipient\fR callback
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,
throw an error as above. The error message is ignored.
.TP
\fBdeliverMIME\fR callback
]
The deliverMIME callback is called once a mail message has been
successfully passed to the server. A mime token is constructed from
the sender, recipients and data and the users procedure it called with
this single argument. When the call returns, the mime token is cleaned
up so if the user wishes to preserve the data she must make a copy.
.sp
.CS


 proc deliverMIME {token} {
     set sender [lindex [mime::getheader $token From] 0]
     set recipients [lindex [mime::getheader $token To] 0]
     set mail "From $sender [clock format [clock seconds]]"
     append mail "\\n" [mime::buildmessage $token]
     puts $mail
 }

.CE
.TP
\fBdeliver\fR callback
The deliver callback is called once a mail message has been
successfully passed to the server and there is no -deliverMIME option
set. The procedure is called with the sender, a list of recipients and
the text of the mail as a list of lines. For example:
.sp
.CS


 proc deliver {sender recipients data} {
    set mail "From $sender  [clock format [clock seconds]]"
    append mail "\\n" [join $data "\\n"]
    puts "$mail"
 }

.CE
.sp
Note that the DATA command will return an error if no sender or
recipient has yet been defined.
.PP
.SH VARIABLES
.TP







<
<
|
|
|
|
|
<






<
<
|
<













<
<
|
|
|
|
|
|
|
<



















<
<
|
|
|
|
|
|
|
<









<
<
|
|
|
|
|
<







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
\fBvalidate_host\fR callback
This procedure is called with the clients ip address as soon as a
connection request has been accepted and before any protocol commands
are processed. If you wish to deny access to a specific host then an
error should be returned by this callback. For example:
.sp
.CS


proc validate_host {ipnum} {
if {[string match "192.168.1.*" $ipnum]} {
error "go away!"
}
}

.CE
.sp
If access is denied the client will receive a standard message that
includes the text of your error, such as:
.sp
.CS


550 Access denied: I hate you.

.CE
.sp
As per the SMTP protocol, the connection is not closed but we wait for
the client to send a QUIT command. Any other commands cause a
\fB503 Bad Sequence\fR error.
.TP
\fBvalidate_sender\fR callback
The validate_sender callback is called with the senders mail address
during processing of a MAIL command to allow you to accept or reject
mail based upon the declared sender. To reject mail you should throw
an error. For example, to reject mail from user "denied":
.sp
.CS


proc validate_sender {address} {
eval array set addr [mime::parseaddress $address]
if {[string match "denied" $addr(local)]} {
error "mailbox $addr(local) denied"
}
return
}

.CE
.sp
The content of any error message will not be passed back to the client.
.TP
\fBvalidate_recipient\fR callback
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,
throw an error as above. The error message is ignored.
.TP
\fBdeliverMIME\fR callback
]
The deliverMIME callback is called once a mail message has been
successfully passed to the server. A mime token is constructed from
the sender, recipients and data and the users procedure it called with
this single argument. When the call returns, the mime token is cleaned
up so if the user wishes to preserve the data she must make a copy.
.sp
.CS


proc deliverMIME {token} {
set sender [lindex [mime::getheader $token From] 0]
set recipients [lindex [mime::getheader $token To] 0]
set mail "From $sender [clock format [clock seconds]]"
append mail "\\n" [mime::buildmessage $token]
puts $mail
}

.CE
.TP
\fBdeliver\fR callback
The deliver callback is called once a mail message has been
successfully passed to the server and there is no -deliverMIME option
set. The procedure is called with the sender, a list of recipients and
the text of the mail as a list of lines. For example:
.sp
.CS


proc deliver {sender recipients data} {
set mail "From $sender  [clock format [clock seconds]]"
append mail "\\n" [join $data "\\n"]
puts "$mail"
}

.CE
.sp
Note that the DATA command will return an error if no sender or
recipient has yet been defined.
.PP
.SH VARIABLES
.TP
488
489
490
491
492
493
494
495
496
.SH KEYWORDS
rfc 2821, rfc 821, services, smtp, smtpd, socket, vwait
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) Pat Thoyts <[email protected]>

.fi







<

469
470
471
472
473
474
475

476
.SH KEYWORDS
rfc 2821, rfc 821, services, smtp, smtpd, socket, vwait
.SH CATEGORY
Networking
.SH COPYRIGHT
.nf
Copyright (c) Pat Thoyts <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
The variable \fBtype\fR is automatically defined in the \fIbody\fR to
the type's fully-qualified name.  In addition,
type variables are automatically visible in the \fIbody\fR
of every type method.
.sp
If the \fIname\fR consists of two or more tokens, Snit handles it specially:
.CS

    typemethod {a b} {arg} { puts "Got $arg" }

.CE
.IP
This statement implicitly defines a type method called \fBa\fR which
has a subcommand \fBb\fR.  \fBb\fR is called like this:
.CS

    $type a b "Hello, world!"

.CE
.IP
\fBa\fR may have any number of subcommands.  This makes it possible
to define a hierarchical command structure; see \fBmethod\fR, below,
for more examples.
.sp
Type methods can call commands from the namespace in which the type is
defined without importing them, e.g., if the type name is
\fB::parentns::typename\fR, then the type's type methods can call
\fB::parentns::someproc\fR just as \fBsomeproc\fR.
\fISnit 1.x Incompatibility:\fR This does not work in Snit 1.x, as
it depends on \fBnamespace path\fR, a new command in Tcl 8.5.
.sp
\fISnit 1.x Incompatibility:\fR In Snit 1.x, the following
following two calls to this type method are equivalent:
.CS

    $type a b "Hello, world!"
    $type {a b} "Hello, world!"

.CE
.IP
In Snit 2.2, the second form is invalid.
.TP
\fBtypeconstructor\fR \fIbody\fR
The type constructor's \fIbody\fR is executed once when the
type is first defined; it is typically used to







<
|
<





<
|
<
















<
|
|
<







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
The variable \fBtype\fR is automatically defined in the \fIbody\fR to
the type's fully-qualified name.  In addition,
type variables are automatically visible in the \fIbody\fR
of every type method.
.sp
If the \fIname\fR consists of two or more tokens, Snit handles it specially:
.CS

typemethod {a b} {arg} { puts "Got $arg" }

.CE
.IP
This statement implicitly defines a type method called \fBa\fR which
has a subcommand \fBb\fR.  \fBb\fR is called like this:
.CS

$type a b "Hello, world!"

.CE
.IP
\fBa\fR may have any number of subcommands.  This makes it possible
to define a hierarchical command structure; see \fBmethod\fR, below,
for more examples.
.sp
Type methods can call commands from the namespace in which the type is
defined without importing them, e.g., if the type name is
\fB::parentns::typename\fR, then the type's type methods can call
\fB::parentns::someproc\fR just as \fBsomeproc\fR.
\fISnit 1.x Incompatibility:\fR This does not work in Snit 1.x, as
it depends on \fBnamespace path\fR, a new command in Tcl 8.5.
.sp
\fISnit 1.x Incompatibility:\fR In Snit 1.x, the following
following two calls to this type method are equivalent:
.CS

$type a b "Hello, world!"
$type {a b} "Hello, world!"

.CE
.IP
In Snit 2.2, the second form is invalid.
.TP
\fBtypeconstructor\fR \fIbody\fR
The type constructor's \fIbody\fR is executed once when the
type is first defined; it is typically used to
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
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
.sp
Type and instance variables are
automatically visible in all instance methods.  If the type has
locally defined options, the \fBoptions\fR array is also visible.
.sp
If the \fIname\fR consists of two or more tokens, Snit handles it specially:
.CS

    method {a b} {} { ... }

.CE
.IP
This statement implicitly defines a method called \fBa\fR which
has a subcommand \fBb\fR.  \fBb\fR is called like this:
.CS

    $self a b "Hello, world!"

.CE
.IP
\fBa\fR may have any number of subcommands.  This makes it possible
to define a hierarchical command structure:
.CS

% snit::type dog {
    method {tail wag}   {} {return "Wag, wag"}
    method {tail droop} {} {return "Droop, droop"}
}
::dog
% dog spot
::spot
% spot tail wag
Wag, wag
% spot tail droop
Droop, droop
%

.CE
.IP
What we've done is implicitly defined a "tail" method with subcommands
"wag" and "droop".  Consequently, it's an error to define "tail"
explicitly.
.sp
Methods can call commands from the namespace in which the type is
defined without importing them, e.g., if the type name is
\fB::parentns::typename\fR, then the type's methods can call
\fB::parentns::someproc\fR just as \fBsomeproc\fR.
\fISnit 1.x Incompatibility:\fR This does not work in Snit 1.x, as
it depends on \fBnamespace path\fR, a new command in Tcl 8.5.
.sp
\fISnit 1.x Incompatibility:\fR In Snit 1.x, the following
following two calls to this method are equivalent:
.CS

    $self a b "Hello, world!"
    $self {a b} "Hello, world!"

.CE
.IP
In Snit 2.2, the second form is invalid.
.TP
\fBoption\fR \fInamespec\fR ?\fIdefaultValue\fR?
.TP
\fBoption\fR \fInamespec\fR ?\fIoptions...\fR?
Defines an option for instances of this type, and optionally gives it
an initial value.  The initial value defaults to the empty string if
no \fIdefaultValue\fR is specified.
.sp
An option defined in this way is said to be \fIlocally defined\fR.
.sp
The \fInamespec\fR is a list defining the option's
name, resource name, and class name, e.g.:
.CS

    option {-font font Font} {Courier 12}

.CE
.IP
The option name must begin with a hyphen, and must not contain any
upper case letters. The resource name and class name are optional; if
not specified, the resource name defaults to the option name, minus
the hyphen, and the class name defaults to the resource name with the
first letter capitalized.  Thus, the following statement is equivalent
to the previous example:
.CS

    option -font {Courier 12}

.CE
.IP
See \fBThe Tk Option Database\fR for more information about
resource and class names.
.sp
Options are normally set and retrieved using the standard
instance methods \fBconfigure\fR and \fBcget\fR; within instance code
(method bodies, etc.), option values are available through the
\fBoptions\fR array:
.CS

    set myfont $options(-font)

.CE
.IP
If the type defines any option handlers (e.g., \fB-configuremethod\fR),
then it should probably use \fBconfigure\fR and \fBcget\fR to
access its options to avoid subtle errors.
.sp
The \fBoption\fR statement may include the following options:







<
|
<





<
|
<





<

|
|









<
















<
|
|
<
















<
|
<









<
|
<










<
|
<







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
647
648
649
650
651
652
653

654

655
656
657
658
659
660
661
.sp
Type and instance variables are
automatically visible in all instance methods.  If the type has
locally defined options, the \fBoptions\fR array is also visible.
.sp
If the \fIname\fR consists of two or more tokens, Snit handles it specially:
.CS

method {a b} {} { ... }

.CE
.IP
This statement implicitly defines a method called \fBa\fR which
has a subcommand \fBb\fR.  \fBb\fR is called like this:
.CS

$self a b "Hello, world!"

.CE
.IP
\fBa\fR may have any number of subcommands.  This makes it possible
to define a hierarchical command structure:
.CS

% snit::type dog {
method {tail wag}   {} {return "Wag, wag"}
method {tail droop} {} {return "Droop, droop"}
}
::dog
% dog spot
::spot
% spot tail wag
Wag, wag
% spot tail droop
Droop, droop
%

.CE
.IP
What we've done is implicitly defined a "tail" method with subcommands
"wag" and "droop".  Consequently, it's an error to define "tail"
explicitly.
.sp
Methods can call commands from the namespace in which the type is
defined without importing them, e.g., if the type name is
\fB::parentns::typename\fR, then the type's methods can call
\fB::parentns::someproc\fR just as \fBsomeproc\fR.
\fISnit 1.x Incompatibility:\fR This does not work in Snit 1.x, as
it depends on \fBnamespace path\fR, a new command in Tcl 8.5.
.sp
\fISnit 1.x Incompatibility:\fR In Snit 1.x, the following
following two calls to this method are equivalent:
.CS

$self a b "Hello, world!"
$self {a b} "Hello, world!"

.CE
.IP
In Snit 2.2, the second form is invalid.
.TP
\fBoption\fR \fInamespec\fR ?\fIdefaultValue\fR?
.TP
\fBoption\fR \fInamespec\fR ?\fIoptions...\fR?
Defines an option for instances of this type, and optionally gives it
an initial value.  The initial value defaults to the empty string if
no \fIdefaultValue\fR is specified.
.sp
An option defined in this way is said to be \fIlocally defined\fR.
.sp
The \fInamespec\fR is a list defining the option's
name, resource name, and class name, e.g.:
.CS

option {-font font Font} {Courier 12}

.CE
.IP
The option name must begin with a hyphen, and must not contain any
upper case letters. The resource name and class name are optional; if
not specified, the resource name defaults to the option name, minus
the hyphen, and the class name defaults to the resource name with the
first letter capitalized.  Thus, the following statement is equivalent
to the previous example:
.CS

option -font {Courier 12}

.CE
.IP
See \fBThe Tk Option Database\fR for more information about
resource and class names.
.sp
Options are normally set and retrieved using the standard
instance methods \fBconfigure\fR and \fBcget\fR; within instance code
(method bodies, etc.), option values are available through the
\fBoptions\fR array:
.CS

set myfont $options(-font)

.CE
.IP
If the type defines any option handlers (e.g., \fB-configuremethod\fR),
then it should probably use \fBconfigure\fR and \fBcget\fR to
access its options to avoid subtle errors.
.sp
The \fBoption\fR statement may include the following options:
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
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
.sp
For example, an option may declare that its value must be an integer
by specifying \fBsnit::integer\fR as its validation type:
.CS

    option -number -type snit::integer

.CE
.IP
It may also declare that its value is an integer between 1 and 10
by specifying a validation subtype:
.CS

    option -number -type {snit::integer -min 1 -max 10}

.CE
.IP
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 \fBconfigure\fR or
\fBconfigurelist\fR methods.  In addition, all such options
will have their values validated automatically immediately







<
|
<





<
|
<







675
676
677
678
679
680
681

682

683
684
685
686
687

688

689
690
691
692
693
694
695
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
.sp
For example, an option may declare that its value must be an integer
by specifying \fBsnit::integer\fR as its validation type:
.CS

option -number -type snit::integer

.CE
.IP
It may also declare that its value is an integer between 1 and 10
by specifying a validation subtype:
.CS

option -number -type {snit::integer -min 1 -max 10}

.CE
.IP
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 \fBconfigure\fR or
\fBconfigurelist\fR methods.  In addition, all such options
will have their values validated automatically immediately
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
\fBcget\fR method.  Whatever the method's \fIbody\fR returns will
be the return value of the call to \fBcget\fR.
.sp
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 \fBcget\fR:
.CS

    option -font -cgetmethod GetOption
    method GetOption {option} {
        return $options($option)
    }

.CE
.IP
Note that it's possible for any number of options to share a
\fB-cgetmethod\fR.
.TP
\fB-configuremethod\fR \fImethodName\fR
Every locally-defined option may define a \fB-configuremethod\fR;
it is called when the option's value is set using the
\fBconfigure\fR or \fBconfigurelist\fR 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 \fBoptions()\fR array unless
the method saves it there.
.sp
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 \fBconfigure\fR:
.CS

    option -font -configuremethod SetOption
    method SetOption {option value} {
        set options($option) $value
    }

.CE
.IP
Note that it's possible for any number of options to share a
single \fB-configuremethod\fR.
.TP
\fB-validatemethod\fR \fImethodName\fR
Every locally-defined option may define a \fB-validatemethod\fR;
it is called when the option's value is set using the
\fBconfigure\fR or \fBconfigurelist\fR methods, just before
the \fB-configuremethod\fR (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.
.sp
The named method must take two arguments, the option name and
its new value.  For example, this code verifies that
\fB-flag\fR's value is a valid Boolean value:
.CS

    option -font -validatemethod CheckBoolean
    method CheckBoolean {option value} {
        if {![string is boolean -strict $value]} {
            error "option $option must have a boolean value."
        }
    }

.CE
.IP
Note that it's possible for any number of options to share a
single \fB-validatemethod\fR.
.RE
.TP
\fBconstructor\fR \fIarglist\fR \fIbody\fR







<
|
|
|
|
<

















<
|
|
|
|
<

















<
|
|
|
|
|
|
<







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
\fBcget\fR method.  Whatever the method's \fIbody\fR returns will
be the return value of the call to \fBcget\fR.
.sp
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 \fBcget\fR:
.CS

option -font -cgetmethod GetOption
method GetOption {option} {
return $options($option)
}

.CE
.IP
Note that it's possible for any number of options to share a
\fB-cgetmethod\fR.
.TP
\fB-configuremethod\fR \fImethodName\fR
Every locally-defined option may define a \fB-configuremethod\fR;
it is called when the option's value is set using the
\fBconfigure\fR or \fBconfigurelist\fR 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 \fBoptions()\fR array unless
the method saves it there.
.sp
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 \fBconfigure\fR:
.CS

option -font -configuremethod SetOption
method SetOption {option value} {
set options($option) $value
}

.CE
.IP
Note that it's possible for any number of options to share a
single \fB-configuremethod\fR.
.TP
\fB-validatemethod\fR \fImethodName\fR
Every locally-defined option may define a \fB-validatemethod\fR;
it is called when the option's value is set using the
\fBconfigure\fR or \fBconfigurelist\fR methods, just before
the \fB-configuremethod\fR (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.
.sp
The named method must take two arguments, the option name and
its new value.  For example, this code verifies that
\fB-flag\fR's value is a valid Boolean value:
.CS

option -font -validatemethod CheckBoolean
method CheckBoolean {option value} {
if {![string is boolean -strict $value]} {
error "option $option must have a boolean value."
}
}

.CE
.IP
Note that it's possible for any number of options to share a
single \fB-validatemethod\fR.
.RE
.TP
\fBconstructor\fR \fIarglist\fR \fIbody\fR
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
variables are automatically visible in its \fIbody\fR.
.sp
If the \fIdefinition\fR 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:
.CS

    constructor {args} {
        $self configurelist $args
    }

.CE
.IP
For standard Tk widget behavior, the argument list should be
the single name \fBargs\fR, as shown.
.sp
If the \fIdefinition\fR defines neither a constructor nor
any options, the default constructor is defined as follows:
.CS

    constructor {} {}

.CE
.IP
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
\fB::parentns::typename\fR, then the constructor can call
\fB::parentns::someproc\fR just as \fBsomeproc\fR.







<
|
|
|
<








<
|
<







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
variables are automatically visible in its \fIbody\fR.
.sp
If the \fIdefinition\fR 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:
.CS

constructor {args} {
$self configurelist $args
}

.CE
.IP
For standard Tk widget behavior, the argument list should be
the single name \fBargs\fR, as shown.
.sp
If the \fIdefinition\fR defines neither a constructor nor
any options, the default constructor is defined as follows:
.CS

constructor {} {}

.CE
.IP
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
\fB::parentns::typename\fR, then the constructor can call
\fB::parentns::someproc\fR just as \fBsomeproc\fR.
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
.TP
\fBdelegate\fR \fBmethod\fR \fIname\fR \fBto\fR \fIcomp\fR ?\fBas\fR \fItarget\fR?
Delegates method \fIname\fR to component \fIcomp\fR.  That is, when
method \fIname\fR 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
.CS

    delegate method wag to tail

.CE
.IP
is roughly equivalent to this explicitly defined method:
.CS

    method wag {args} {
        uplevel $tail wag $args
    }

.CE
.IP
As with methods, the \fIname\fR may have multiple tokens; in this
case, the last token of the name is assumed to be the name of the
component's method.
.sp
The optional \fBas\fR clause allows you to specify the delegated
method name and possibly add some arguments:
.CS

    delegate method wagtail to tail as "wag briskly"

.CE
.sp
A method cannot be both locally defined and delegated.
.sp
\fBNote:\fR All forms of \fBdelegate method\fR can delegate to
both instance components and type components.
.TP
\fBdelegate\fR \fBmethod\fR \fIname\fR ?\fBto\fR \fIcomp\fR? \fBusing\fR \fIpattern\fR
In this form of the \fBdelegate\fR statement, the \fBusing\fR clause
is used to specify the precise form of the command to which method
\fIname\fR name is delegated.  In this form, the \fBto\fR clause is
optional, since the chosen command might not involve any particular
component.
.sp
The value of the \fBusing\fR 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:
.CS

    delegate method wag to tail
    delegate method wag to tail using "%c %m"

.CE
.IP
Each element of the list becomes a single element of the delegated
command--it is never reparsed as a string.
.sp
Substitutions:
.RS







<
|
<




<
|
|
|
<









<
|
<



















<
|
|
<







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
.TP
\fBdelegate\fR \fBmethod\fR \fIname\fR \fBto\fR \fIcomp\fR ?\fBas\fR \fItarget\fR?
Delegates method \fIname\fR to component \fIcomp\fR.  That is, when
method \fIname\fR 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
.CS

delegate method wag to tail

.CE
.IP
is roughly equivalent to this explicitly defined method:
.CS

method wag {args} {
uplevel $tail wag $args
}

.CE
.IP
As with methods, the \fIname\fR may have multiple tokens; in this
case, the last token of the name is assumed to be the name of the
component's method.
.sp
The optional \fBas\fR clause allows you to specify the delegated
method name and possibly add some arguments:
.CS

delegate method wagtail to tail as "wag briskly"

.CE
.sp
A method cannot be both locally defined and delegated.
.sp
\fBNote:\fR All forms of \fBdelegate method\fR can delegate to
both instance components and type components.
.TP
\fBdelegate\fR \fBmethod\fR \fIname\fR ?\fBto\fR \fIcomp\fR? \fBusing\fR \fIpattern\fR
In this form of the \fBdelegate\fR statement, the \fBusing\fR clause
is used to specify the precise form of the command to which method
\fIname\fR name is delegated.  In this form, the \fBto\fR clause is
optional, since the chosen command might not involve any particular
component.
.sp
The value of the \fBusing\fR 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:
.CS

delegate method wag to tail
delegate method wag to tail using "%c %m"

.CE
.IP
Each element of the list becomes a single element of the delegated
command--it is never reparsed as a string.
.sp
Substitutions:
.RS
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
be so delegated. The \fBusing\fR clause is defined as given above.
In this form, the statement must contain the \fBto\fR clause, the
\fBusing\fR clause, or both.
.sp
In fact, the "*" can be a list of two or more tokens whose last
element is "*", as in the following example:
.CS

    delegate method {tail *} to tail

.CE
.IP
This implicitly defines the method \fBtail\fR whose subcommands will
be delegated to the \fBtail\fR component.
.TP
\fBdelegate\fR \fBoption\fR \fInamespec\fR \fBto\fR \fIcomp\fR
.TP
\fBdelegate\fR \fBoption\fR \fInamespec\fR \fBto\fR \fIcomp\fR \fBas\fR \fItarget\fR
.TP
\fBdelegate\fR \fBoption\fR \fB*\fR \fBto\fR \fIcomp\fR
.TP
\fBdelegate\fR \fBoption\fR \fB*\fR \fBto\fR \fIcomp\fR \fBexcept\fR \fIexceptions\fR
Defines a delegated option; the \fInamespec\fR is defined as for the
\fBoption\fR statement.
When the \fBconfigure\fR, \fBconfigurelist\fR, or \fBcget\fR
instance method is used to set or retrieve the option's value, the
equivalent \fBconfigure\fR or \fBcget\fR command will be applied
to the component as though the option was defined with the following
\fB-configuremethod\fR and \fB-cgetmethod\fR:
.CS

    method ConfigureMethod {option value} {
        $comp configure $option $value
    }

    method CgetMethod {option} {
        return [$comp cget $option]
    }

.CE
.IP
Note that delegated options never appear in the \fBoptions\fR array.
.sp
If the \fBas\fR clause is specified, then the \fItarget\fR option
name is used in place of \fIname\fR.
.sp







<
|
<




















<
|
|
|
<
|
|
|
<







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
be so delegated. The \fBusing\fR clause is defined as given above.
In this form, the statement must contain the \fBto\fR clause, the
\fBusing\fR clause, or both.
.sp
In fact, the "*" can be a list of two or more tokens whose last
element is "*", as in the following example:
.CS

delegate method {tail *} to tail

.CE
.IP
This implicitly defines the method \fBtail\fR whose subcommands will
be delegated to the \fBtail\fR component.
.TP
\fBdelegate\fR \fBoption\fR \fInamespec\fR \fBto\fR \fIcomp\fR
.TP
\fBdelegate\fR \fBoption\fR \fInamespec\fR \fBto\fR \fIcomp\fR \fBas\fR \fItarget\fR
.TP
\fBdelegate\fR \fBoption\fR \fB*\fR \fBto\fR \fIcomp\fR
.TP
\fBdelegate\fR \fBoption\fR \fB*\fR \fBto\fR \fIcomp\fR \fBexcept\fR \fIexceptions\fR
Defines a delegated option; the \fInamespec\fR is defined as for the
\fBoption\fR statement.
When the \fBconfigure\fR, \fBconfigurelist\fR, or \fBcget\fR
instance method is used to set or retrieve the option's value, the
equivalent \fBconfigure\fR or \fBcget\fR command will be applied
to the component as though the option was defined with the following
\fB-configuremethod\fR and \fB-cgetmethod\fR:
.CS

method ConfigureMethod {option value} {
$comp configure $option $value
}

method CgetMethod {option} {
return [$comp cget $option]
}

.CE
.IP
Note that delegated options never appear in the \fBoptions\fR array.
.sp
If the \fBas\fR clause is specified, then the \fItarget\fR option
name is used in place of \fIname\fR.
.sp
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
defines the component's instance variable.
.sp
If the \fB-public\fR option is specified, then the option is made
public by defining a \fImethod\fR whose subcommands are delegated
to the component e.g., specifying \fB-public mycomp\fR is
equivalent to the following:
.CS

    component mycomp
    delegate method {mymethod *} to mycomp

.CE
.IP
If the \fB-inherit\fR option is specified, then \fIflag\fR must be a
Boolean value; if \fIflag\fR is true then all unknown methods and
options will be delegated to this component.  The name \fB-inherit\fR
implies that instances of this new type inherit, in a sense, the
methods and options of the component. That is, \fB-inherit yes\fR is
equivalent to:
.CS

    component mycomp
    delegate option * to mycomp
    delegate method * to mycomp

.CE
.TP
\fBdelegate\fR \fBtypemethod\fR \fIname\fR \fBto\fR \fIcomp\fR ?\fBas\fR \fItarget\fR?
Delegates type method \fIname\fR to type component \fIcomp\fR.  That is, when
type method \fIname\fR is called on this type, the type method
and its arguments will be passed to the named type component's command
instead.  That is, the following statement
.CS

    delegate typemethod lostdogs to pound

.CE
.IP
is roughly equivalent to this explicitly defined method:
.CS

    typemethod lostdogs {args} {
        uplevel $pound lostdogs $args
    }

.CE
.IP
As with type methods, the \fIname\fR may have multiple tokens; in this
case, the last token of the name is assumed to be the name of the
component's method.
.sp
The optional \fBas\fR clause allows you to specify the delegated
method name and possibly add some arguments:
.CS

    delegate typemethod lostdogs to pound as "get lostdogs"

.CE
.sp
A type method cannot be both locally defined and delegated.
.TP
\fBdelegate\fR \fBtypemethod\fR \fIname\fR ?\fBto\fR \fIcomp\fR? \fBusing\fR \fIpattern\fR
In this form of the \fBdelegate\fR statement, the \fBusing\fR clause
is used to specify the precise form of the command to which type method
\fIname\fR name is delegated.  In this form, the \fBto\fR clause is
optional, since the chosen command might not involve any particular
type component.
.sp
The value of the \fBusing\fR 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:
.CS

    delegate typemethod lostdogs to pound
    delegate typemethod lostdogs to pound using "%c %m"

.CE
.IP
Each element of the list becomes a single element of the delegated
command--it is never reparsed as a string.
.sp
Substitutions:
.RS







<
|
|
<









<
|
|
|
<








<
|
<




<
|
|
|
<









<
|
<
















<
|
|
<







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
defines the component's instance variable.
.sp
If the \fB-public\fR option is specified, then the option is made
public by defining a \fImethod\fR whose subcommands are delegated
to the component e.g., specifying \fB-public mycomp\fR is
equivalent to the following:
.CS

component mycomp
delegate method {mymethod *} to mycomp

.CE
.IP
If the \fB-inherit\fR option is specified, then \fIflag\fR must be a
Boolean value; if \fIflag\fR is true then all unknown methods and
options will be delegated to this component.  The name \fB-inherit\fR
implies that instances of this new type inherit, in a sense, the
methods and options of the component. That is, \fB-inherit yes\fR is
equivalent to:
.CS

component mycomp
delegate option * to mycomp
delegate method * to mycomp

.CE
.TP
\fBdelegate\fR \fBtypemethod\fR \fIname\fR \fBto\fR \fIcomp\fR ?\fBas\fR \fItarget\fR?
Delegates type method \fIname\fR to type component \fIcomp\fR.  That is, when
type method \fIname\fR is called on this type, the type method
and its arguments will be passed to the named type component's command
instead.  That is, the following statement
.CS

delegate typemethod lostdogs to pound

.CE
.IP
is roughly equivalent to this explicitly defined method:
.CS

typemethod lostdogs {args} {
uplevel $pound lostdogs $args
}

.CE
.IP
As with type methods, the \fIname\fR may have multiple tokens; in this
case, the last token of the name is assumed to be the name of the
component's method.
.sp
The optional \fBas\fR clause allows you to specify the delegated
method name and possibly add some arguments:
.CS

delegate typemethod lostdogs to pound as "get lostdogs"

.CE
.sp
A type method cannot be both locally defined and delegated.
.TP
\fBdelegate\fR \fBtypemethod\fR \fIname\fR ?\fBto\fR \fIcomp\fR? \fBusing\fR \fIpattern\fR
In this form of the \fBdelegate\fR statement, the \fBusing\fR clause
is used to specify the precise form of the command to which type method
\fIname\fR name is delegated.  In this form, the \fBto\fR clause is
optional, since the chosen command might not involve any particular
type component.
.sp
The value of the \fBusing\fR 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:
.CS

delegate typemethod lostdogs to pound
delegate typemethod lostdogs to pound using "%c %m"

.CE
.IP
Each element of the list becomes a single element of the delegated
command--it is never reparsed as a string.
.sp
Substitutions:
.RS
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
\fBfoo\fR is the name of a new instance of the type.  If you
use \fBdelegate typemethod *\fR, then the \fBcreate\fR type
method must always be used explicitly.
.sp
The "*" can be a list of two or more tokens whose last
element is "*", as in the following example:
.CS

    delegate typemethod {tail *} to tail

.CE
.IP
This implicitly defines the type method \fBtail\fR whose subcommands will
be delegated to the \fBtail\fR type component.
.TP
\fBtypecomponent\fR \fIcomp\fR ?\fB-public\fR \fItypemethod\fR? ?\fB-inherit\fR \fIflag\fR?
Explicitly declares a type component called \fIcomp\fR, 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.
.sp
If the \fB-public\fR option is specified, then the type component is made
public by defining a \fItypemethod\fR whose subcommands are delegated to
the type component, e.g., specifying \fB-public mytypemethod\fR
is equivalent to the following:
.CS

    typecomponent mycomp
    delegate typemethod {mytypemethod *} to mycomp

.CE
.IP
If the \fB-inherit\fR option is specified, then \fIflag\fR must be a
Boolean value; if \fIflag\fR is true then all unknown type methods
will be delegated to this type component. (See the note on "delegate
typemethod *", above.) The name \fB-inherit\fR
implies that this type inherits, in a sense, the behavior of
the type component. That is, \fB-inherit yes\fR is equivalent to:
.CS

    typecomponent mycomp
    delegate typemethod * to mycomp

.CE
.TP
\fBpragma\fR ?\fIoptions...\fR?
The \fBpragma\fR statement provides control over how Snit generates a
type.  It takes the following options; in each case, \fIflag\fR must
be a Boolean value recognized by Tcl, e.g., \fB0\fR, \fB1\fR,
\fByes\fR, \fBno\fR, and so







<
|
<
















<
|
|
<









<
|
|
<







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
\fBfoo\fR is the name of a new instance of the type.  If you
use \fBdelegate typemethod *\fR, then the \fBcreate\fR type
method must always be used explicitly.
.sp
The "*" can be a list of two or more tokens whose last
element is "*", as in the following example:
.CS

delegate typemethod {tail *} to tail

.CE
.IP
This implicitly defines the type method \fBtail\fR whose subcommands will
be delegated to the \fBtail\fR type component.
.TP
\fBtypecomponent\fR \fIcomp\fR ?\fB-public\fR \fItypemethod\fR? ?\fB-inherit\fR \fIflag\fR?
Explicitly declares a type component called \fIcomp\fR, 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.
.sp
If the \fB-public\fR option is specified, then the type component is made
public by defining a \fItypemethod\fR whose subcommands are delegated to
the type component, e.g., specifying \fB-public mytypemethod\fR
is equivalent to the following:
.CS

typecomponent mycomp
delegate typemethod {mytypemethod *} to mycomp

.CE
.IP
If the \fB-inherit\fR option is specified, then \fIflag\fR must be a
Boolean value; if \fIflag\fR is true then all unknown type methods
will be delegated to this type component. (See the note on "delegate
typemethod *", above.) The name \fB-inherit\fR
implies that this type inherits, in a sense, the behavior of
the type component. That is, \fB-inherit yes\fR is equivalent to:
.CS

typecomponent mycomp
delegate typemethod * to mycomp

.CE
.TP
\fBpragma\fR ?\fIoptions...\fR?
The \fBpragma\fR statement provides control over how Snit generates a
type.  It takes the following options; in each case, \fIflag\fR must
be a Boolean value recognized by Tcl, e.g., \fB0\fR, \fB1\fR,
\fByes\fR, \fBno\fR, and so
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
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
.TP
\fBonconfigure\fR \fIname\fR \fIarglist\fR \fIbody\fR
\fBDeprecated.\fR  Define \fBoption\fR's \fB-configuremethod\fR
option instead.
.sp
As of version 0.95, the following definitions,
.CS

    option -myoption
    onconfigure -myoption {value} {
        # Code to save the option's value
    }

.CE
.IP
are implemented as follows:
.CS

    option -myoption -configuremethod _configure-myoption
    method _configure-myoption {_option value} {
        # Code to save the option's value
    }

.CE
.TP
\fBoncget\fR \fIname\fR \fIbody\fR
\fBDeprecated.\fR  Define \fBoption\fR's \fB-cgetmethod\fR
option instead.
.sp
As of version 0.95, the following definitions,
.CS

    option -myoption
    oncget -myoption {
        # Code to return the option's value
    }

.CE
.IP
are implemented as follows:
.CS

    option -myoption -cgetmethod _cget-myoption
    method _cget-myoption {_option} {
        # Code to return the option's value
    }

.CE
.RE
.TP
\fBsnit::widget\fR \fIname\fR \fIdefinition\fR
This command defines a Snit megawidget type with the specified
\fIname\fR.  The \fIdefinition\fR is defined as for \fBsnit::type\fR.
A \fBsnit::widget\fR differs from a \fBsnit::type\fR







<
|
|
|
|
<




<
|
|
|
|
<








<
|
|
|
|
<




<
|
|
|
|
<







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
.TP
\fBonconfigure\fR \fIname\fR \fIarglist\fR \fIbody\fR
\fBDeprecated.\fR  Define \fBoption\fR's \fB-configuremethod\fR
option instead.
.sp
As of version 0.95, the following definitions,
.CS

option -myoption
onconfigure -myoption {value} {
# Code to save the option's value
}

.CE
.IP
are implemented as follows:
.CS

option -myoption -configuremethod _configure-myoption
method _configure-myoption {_option value} {
# Code to save the option's value
}

.CE
.TP
\fBoncget\fR \fIname\fR \fIbody\fR
\fBDeprecated.\fR  Define \fBoption\fR's \fB-cgetmethod\fR
option instead.
.sp
As of version 0.95, the following definitions,
.CS

option -myoption
oncget -myoption {
# Code to return the option's value
}

.CE
.IP
are implemented as follows:
.CS

option -myoption -cgetmethod _cget-myoption
method _cget-myoption {_option} {
# Code to return the option's value
}

.CE
.RE
.TP
\fBsnit::widget\fR \fIname\fR \fIdefinition\fR
This command defines a Snit megawidget type with the specified
\fIname\fR.  The \fIdefinition\fR is defined as for \fBsnit::type\fR.
A \fBsnit::widget\fR differs from a \fBsnit::type\fR
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
Furthermore, if the \fB-hastypemethods\fR 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
\fB-hastypemethods\fR pragma is false and the type
has instances, the following commands are equivalent:
.CS

snit::type dog { ... }

set mydog [dog create %AUTO%]
set mydog [dog %AUTO%]
set mydog [dog]

.CE
.IP
This doesn't work for Snit widgets, for obvious reasons.
.sp
\fISnit 1.x Incompatibility:\fR In Snit 1.x, the above behavior is
available whether \fB-hastypemethods\fR is true (the default) or false.
.PP







<

<



<







1374
1375
1376
1377
1378
1379
1380

1381

1382
1383
1384

1385
1386
1387
1388
1389
1390
1391
Furthermore, if the \fB-hastypemethods\fR 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
\fB-hastypemethods\fR pragma is false and the type
has instances, the following commands are equivalent:
.CS

snit::type dog { ... }

set mydog [dog create %AUTO%]
set mydog [dog %AUTO%]
set mydog [dog]

.CE
.IP
This doesn't work for Snit widgets, for obvious reasons.
.sp
\fISnit 1.x Incompatibility:\fR In Snit 1.x, the above behavior is
available whether \fB-hastypemethods\fR is true (the default) or false.
.PP
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
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
The \fBmymethod\fR command is used for formatting callback commands to
be passed to other objects.  It returns a command that when called
will invoke method \fIname\fR 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
\fBdosomething\fR method to be called when the \fB$button\fR is pressed:
.CS

    $button configure -command [list $self dosomething myargument]

    $button configure -command [mymethod dosomething myargument]

.CE
.IP
The chief distinction between the two is that the latter form will not
break if the object's command is renamed.
.TP
\fBmytypemethod\fR \fIname\fR ?\fIargs...\fR?
The \fBmytypemethod\fR command is used for formatting callback commands to
be passed to other objects.  It returns a command that when called
will invoke type method \fIname\fR 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 \fBdosomething\fR type method
to be called when \fB$button\fR is pressed:
.CS

    $button configure -command [list $type dosomething myargument]

    $button configure -command [mytypemethod dosomething myargument]

.CE
.IP
Type commands cannot be renamed, so in practice there's little
difference between the two forms.  \fBmytypemethod\fR is provided for
parallelism with \fBmymethod\fR.
.TP
\fBmyproc\fR \fIname\fR ?\fIargs...\fR?
The \fBmyproc\fR 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 \fIname\fR 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 \fBdosomething\fR proc
to be called when \fB$button\fR is pressed:
.CS

    $button configure -command [list ${type}::dosomething myargument]

    $button configure -command [myproc dosomething myargument]

.CE
.TP
\fBmyvar\fR \fIname\fR
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 \fB-textvariable\fR to a Tk label widget.
.TP







<
|
<
|
<













<
|
<
|
<














<
|
<
|
<







1622
1623
1624
1625
1626
1627
1628

1629

1630

1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643

1644

1645

1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659

1660

1661

1662
1663
1664
1665
1666
1667
1668
The \fBmymethod\fR command is used for formatting callback commands to
be passed to other objects.  It returns a command that when called
will invoke method \fIname\fR 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
\fBdosomething\fR method to be called when the \fB$button\fR is pressed:
.CS

$button configure -command [list $self dosomething myargument]

$button configure -command [mymethod dosomething myargument]

.CE
.IP
The chief distinction between the two is that the latter form will not
break if the object's command is renamed.
.TP
\fBmytypemethod\fR \fIname\fR ?\fIargs...\fR?
The \fBmytypemethod\fR command is used for formatting callback commands to
be passed to other objects.  It returns a command that when called
will invoke type method \fIname\fR 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 \fBdosomething\fR type method
to be called when \fB$button\fR is pressed:
.CS

$button configure -command [list $type dosomething myargument]

$button configure -command [mytypemethod dosomething myargument]

.CE
.IP
Type commands cannot be renamed, so in practice there's little
difference between the two forms.  \fBmytypemethod\fR is provided for
parallelism with \fBmymethod\fR.
.TP
\fBmyproc\fR \fIname\fR ?\fIargs...\fR?
The \fBmyproc\fR 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 \fIname\fR 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 \fBdosomething\fR proc
to be called when \fB$button\fR is pressed:
.CS

$button configure -command [list ${type}::dosomething myargument]

$button configure -command [myproc dosomething myargument]

.CE
.TP
\fBmyvar\fR \fIname\fR
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 \fB-textvariable\fR to a Tk label widget.
.TP
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
and installs it as component \fIcompName\fR,
as described in \fBComponents and Delegation\fR.  Any additional
\fIargs...\fR are passed along with the name to the \fIobjType\fR
command.
If this is a \fBsnit::type\fR, then the following two commands are
equivalent:
.CS

    install myComp using myObjType $self.myComp args...

    set myComp [myObjType $self.myComp args...]

.CE
.IP
Note that whichever method is used, \fIcompName\fR must still be
declared in the type definition using \fBcomponent\fR, or must be
referenced in at least one \fBdelegate\fR statement.
.sp
If this is a \fBsnit::widget\fR or \fBsnit::widgetadaptor\fR, and if







<
|
<
|
<







1690
1691
1692
1693
1694
1695
1696

1697

1698

1699
1700
1701
1702
1703
1704
1705
and installs it as component \fIcompName\fR,
as described in \fBComponents and Delegation\fR.  Any additional
\fIargs...\fR are passed along with the name to the \fIobjType\fR
command.
If this is a \fBsnit::type\fR, then the following two commands are
equivalent:
.CS

install myComp using myObjType $self.myComp args...

set myComp [myObjType $self.myComp args...]

.CE
.IP
Note that whichever method is used, \fIcompName\fR must still be
declared in the type definition using \fBcomponent\fR, or must be
referenced in at least one \fBdelegate\fR statement.
.sp
If this is a \fBsnit::widget\fR or \fBsnit::widgetadaptor\fR, and if
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
1907
1908
1909
1910
1911
1912
1913
1914
1915
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
1975
1976
1977
1978
1979
1980
1981
1982
the included object is called a component.  The standard way to handle
component objects owned by a Snit object is to declare them using
\fBcomponent\fR, which creates a component instance variable.
In the following example, a \fBdog\fR object has a
\fBtail\fR object:
.PP
.CS

    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."}
    }

.CE
.PP
Because the \fBtail\fR object's name is stored in an instance
variable, it's easily accessible in any method.
.PP
The \fBinstall\fR command provides an alternate way
to create and install the component:
.PP
.CS

    snit::type dog {
        component mytail

        constructor {args} {
            install mytail using tail %AUTO% -partof $self
            $self configurelist $args
        }

        method wag {} {
            $mytail wag
        }
    }

.CE
.PP
For \fBsnit::type\fRs, the two methods are equivalent; for
\fBsnit::widget\fRs and \fBsnit::widgetadaptor\fRs, the \fBinstall\fR
command properly initializes the widget's options by querying
\fBThe Tk Option Database\fR.
.PP
In the above examples, the \fBdog\fR object's \fBwag\fR method
simply calls the \fBtail\fR component's \fBwag\fR method.  In OO
jargon, this is called delegation.  Snit provides an easier way to do
this:
.PP
.CS

    snit::type dog {
        delegate method wag to mytail

        constructor {args} {
            install mytail using tail %AUTO% -partof $self
            $self configurelist $args
        }
    }

.CE
.PP
The \fBdelegate\fR statement in the type definition implicitly defines
the instance variable \fBmytail\fR to hold the component's name
(though it's good form to use \fBcomponent\fR to declare it explicitly); it
also defines the \fBdog\fR object's \fBwag\fR method, delegating it
to the \fBmytail\fR component.
.PP
If desired, all otherwise unknown methods can be delegated to a
specific component:
.PP
.CS


    snit::type dog {
	delegate method * to mytail

	constructor {args} {
	    set mytail [tail %AUTO% -partof $self]
	    $self configurelist $args
	}

	method bark { return "Bark, bark, bark!" }
    }

.CE
.PP
In this case, a \fBdog\fR object will handle its own \fBbark\fR
method; but \fBwag\fR will be passed along to \fBmytail\fR.  Any
other method, being recognized by neither \fBdog\fR nor \fBtail\fR,
will simply raise an error.
.PP







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









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













<
|
|
<
|
|
|
|
|
<












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







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
1837
1838
1839
1840
1841
1842

1843
1844

1845
1846
1847
1848
1849

1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861


1862
1863

1864
1865
1866
1867

1868
1869

1870
1871
1872
1873
1874
1875
1876
the included object is called a component.  The standard way to handle
component objects owned by a Snit object is to declare them using
\fBcomponent\fR, which creates a component instance variable.
In the following example, a \fBdog\fR object has a
\fBtail\fR object:
.PP
.CS

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."}
}

.CE
.PP
Because the \fBtail\fR object's name is stored in an instance
variable, it's easily accessible in any method.
.PP
The \fBinstall\fR command provides an alternate way
to create and install the component:
.PP
.CS

snit::type dog {
component mytail

constructor {args} {
install mytail using tail %AUTO% -partof $self
$self configurelist $args
}

method wag {} {
$mytail wag
}
}

.CE
.PP
For \fBsnit::type\fRs, the two methods are equivalent; for
\fBsnit::widget\fRs and \fBsnit::widgetadaptor\fRs, the \fBinstall\fR
command properly initializes the widget's options by querying
\fBThe Tk Option Database\fR.
.PP
In the above examples, the \fBdog\fR object's \fBwag\fR method
simply calls the \fBtail\fR component's \fBwag\fR method.  In OO
jargon, this is called delegation.  Snit provides an easier way to do
this:
.PP
.CS

snit::type dog {
delegate method wag to mytail

constructor {args} {
install mytail using tail %AUTO% -partof $self
$self configurelist $args
}
}

.CE
.PP
The \fBdelegate\fR statement in the type definition implicitly defines
the instance variable \fBmytail\fR to hold the component's name
(though it's good form to use \fBcomponent\fR to declare it explicitly); it
also defines the \fBdog\fR object's \fBwag\fR method, delegating it
to the \fBmytail\fR component.
.PP
If desired, all otherwise unknown methods can be delegated to a
specific component:
.PP
.CS


snit::type dog {
delegate method * to mytail

constructor {args} {
set mytail [tail %AUTO% -partof $self]
$self configurelist $args
}

method bark { return "Bark, bark, bark!" }
}

.CE
.PP
In this case, a \fBdog\fR object will handle its own \fBbark\fR
method; but \fBwag\fR will be passed along to \fBmytail\fR.  Any
other method, being recognized by neither \fBdog\fR nor \fBtail\fR,
will simply raise an error.
.PP
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
\fBbutton\fR widgets is "Button".
.PP
Similarly, the widget class of a \fBsnit::widget\fR defaults to the
unqualified type name with the first letter capitalized.  For example,
the widget class of
.PP
.CS

    snit::widget ::mylibrary::scrolledText { ... }
.CE
.PP
is "ScrolledText".  The widget class can also be set explicitly using
the \fBwidgetclass\fR statement within the \fBsnit::widget\fR
definition.
.PP
Any widget can be used as the \fBhulltype\fR provided that it supports







<
|







1929
1930
1931
1932
1933
1934
1935

1936
1937
1938
1939
1940
1941
1942
1943
\fBbutton\fR widgets is "Button".
.PP
Similarly, the widget class of a \fBsnit::widget\fR defaults to the
unqualified type name with the first letter capitalized.  For example,
the widget class of
.PP
.CS

snit::widget ::mylibrary::scrolledText { ... }
.CE
.PP
is "ScrolledText".  The widget class can also be set explicitly using
the \fBwidgetclass\fR statement within the \fBsnit::widget\fR
definition.
.PP
Any widget can be used as the \fBhulltype\fR provided that it supports
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
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
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
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
\fBtext\fR widget options:
.PP
.CS

    -background         background         Background
    -borderwidth        borderWidth        BorderWidth
    -insertborderwidth  insertBorderWidth  BorderWidth
    -padx               padX               Pad

.CE
.PP
As is easily seen, sometimes the resource and class names can be
inferred from the option name, but not always.
.PP
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:
.PP
.CS

    snit::widget mywidget {
        option -background
        delegate option -borderwidth to hull
        delegate option * to text
	# ...
    }

.CE
.PP
In this case, the widget class name is "Mywidget".  The widget has the
following options: \fB-background\fR, which is locally defined, and
\fB-borderwidth\fR, which is explicitly delegated; all other widgets are
delegated to a component called "text", which is probably a Tk
\fBtext\fR widget.  If so, \fBmywidget\fR has all the same options as
a \fBtext\fR widget.  The option, resource, and class names are as
follows:
.PP
.CS

    -background  background  Background
    -borderwidth borderwidth Borderwidth
    -padx        padX        Pad

.CE
.PP
Note that the locally defined option, \fB-background\fR, happens to have
the same three names as the standard Tk \fB-background\fR option; and
\fB-pad\fR, which is delegated implicitly to the \fBtext\fR
component, has the
same three names for \fBmywidget\fR as it does for the \fBtext\fR
widget.  \fB-borderwidth\fR, on the other hand, has different resource and
class names than usual, because the internal word "width" isn't
capitalized.  For consistency, it should be; this is done as follows:
.PP
.CS

    snit::widget mywidget {
	option -background
	delegate option {-borderwidth borderWidth} to hull
	delegate option * to text
	# ...
    }

.CE
.PP
The class name will default to "BorderWidth", as expected.
.PP
Suppose, however, that \fBmywidget\fR also delegated
\fB-padx\fR and
\fB-pady\fR to the hull.  In this case, both the resource name and the
class name must be specified explicitly:
.PP
.CS

    snit::widget mywidget {
	option -background
	delegate option {-borderwidth borderWidth} to hull
	delegate option {-padx padX Pad} to hull
	delegate option {-pady padY Pad} to hull
	delegate option * to text
	# ...
    }

.CE
.PP
\fBQuerying the option database:\fR If you set your widgetclass and
option names as described above, Snit will query the option database
when each instance is created, and will generally do the right thing
when it comes to querying the option database.  The remainder of this
section goes into the gory details.
.PP
\fBInitializing locally defined options:\fR
When an instance of a snit::widget is created, its locally defined
options are initialized as follows: each option's resource and class
names are used to query the Tk option database.  If the result is
non-empty, it is used as the option's default; otherwise, the default
hardcoded in the type definition is used.  In either case, the default
can be overridden by the caller.  For example,
.PP
.CS

    option add *Mywidget.texture pebbled

    snit::widget mywidget {
	option -texture smooth
	# ...
    }

    mywidget .mywidget -texture greasy

.CE
.PP
Here, \fB-texture\fR would normally default to "smooth", but because of
the entry added to the option database it defaults to "pebbled".
However, the caller has explicitly overridden the default, and so the
new widget will be "greasy".
.PP
\fBInitializing options delegated to the hull:\fR
A \fBsnit::widget\fR'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:
.PP
.CS

    option add *Mywidget.borderWidth 5
    option add *Mywidget.relief sunken
    option add *Mywidget.hullbackground red
    option add *Mywidget.background green

    snit::widget mywidget {
	delegate option -borderwidth to hull
	delegate option -hullbackground to hull as -background
	delegate option * to hull
	# ...
    }

    mywidget .mywidget

    set A [.mywidget cget -relief]
    set B [.mywidget cget -hullbackground]
    set C [.mywidget cget -background]
    set D [.mywidget cget -borderwidth]

.CE
.PP
The question is, what are the values of variables A, B, C and D?
.PP
The value of A is "sunken".  The hull is a Tk frame that has been
given the widget class "Mywidget"; it will automatically query the
option database and pick up this value.  Since the \fB-relief\fR







<
|
|
|
|
<












<
|
|
|
|
|
|
<











<
|
|
|
<












<
|
|
|
|
|
|
<










<
|
|
|
|
|
|
|
|
<

















<
|
<
|
|
|
|
<
|
<














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







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
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
\fBtext\fR widget options:
.PP
.CS

-background         background         Background
-borderwidth        borderWidth        BorderWidth
-insertborderwidth  insertBorderWidth  BorderWidth
-padx               padX               Pad

.CE
.PP
As is easily seen, sometimes the resource and class names can be
inferred from the option name, but not always.
.PP
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:
.PP
.CS

snit::widget mywidget {
option -background
delegate option -borderwidth to hull
delegate option * to text
# ...
}

.CE
.PP
In this case, the widget class name is "Mywidget".  The widget has the
following options: \fB-background\fR, which is locally defined, and
\fB-borderwidth\fR, which is explicitly delegated; all other widgets are
delegated to a component called "text", which is probably a Tk
\fBtext\fR widget.  If so, \fBmywidget\fR has all the same options as
a \fBtext\fR widget.  The option, resource, and class names are as
follows:
.PP
.CS

-background  background  Background
-borderwidth borderwidth Borderwidth
-padx        padX        Pad

.CE
.PP
Note that the locally defined option, \fB-background\fR, happens to have
the same three names as the standard Tk \fB-background\fR option; and
\fB-pad\fR, which is delegated implicitly to the \fBtext\fR
component, has the
same three names for \fBmywidget\fR as it does for the \fBtext\fR
widget.  \fB-borderwidth\fR, on the other hand, has different resource and
class names than usual, because the internal word "width" isn't
capitalized.  For consistency, it should be; this is done as follows:
.PP
.CS

snit::widget mywidget {
option -background
delegate option {-borderwidth borderWidth} to hull
delegate option * to text
# ...
}

.CE
.PP
The class name will default to "BorderWidth", as expected.
.PP
Suppose, however, that \fBmywidget\fR also delegated
\fB-padx\fR and
\fB-pady\fR to the hull.  In this case, both the resource name and the
class name must be specified explicitly:
.PP
.CS

snit::widget mywidget {
option -background
delegate option {-borderwidth borderWidth} to hull
delegate option {-padx padX Pad} to hull
delegate option {-pady padY Pad} to hull
delegate option * to text
# ...
}

.CE
.PP
\fBQuerying the option database:\fR If you set your widgetclass and
option names as described above, Snit will query the option database
when each instance is created, and will generally do the right thing
when it comes to querying the option database.  The remainder of this
section goes into the gory details.
.PP
\fBInitializing locally defined options:\fR
When an instance of a snit::widget is created, its locally defined
options are initialized as follows: each option's resource and class
names are used to query the Tk option database.  If the result is
non-empty, it is used as the option's default; otherwise, the default
hardcoded in the type definition is used.  In either case, the default
can be overridden by the caller.  For example,
.PP
.CS

option add *Mywidget.texture pebbled

snit::widget mywidget {
option -texture smooth
# ...
}

mywidget .mywidget -texture greasy

.CE
.PP
Here, \fB-texture\fR would normally default to "smooth", but because of
the entry added to the option database it defaults to "pebbled".
However, the caller has explicitly overridden the default, and so the
new widget will be "greasy".
.PP
\fBInitializing options delegated to the hull:\fR
A \fBsnit::widget\fR'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:
.PP
.CS

option add *Mywidget.borderWidth 5
option add *Mywidget.relief sunken
option add *Mywidget.hullbackground red
option add *Mywidget.background green

snit::widget mywidget {
delegate option -borderwidth to hull
delegate option -hullbackground to hull as -background
delegate option * to hull
# ...
}

mywidget .mywidget

set A [.mywidget cget -relief]
set B [.mywidget cget -hullbackground]
set C [.mywidget cget -background]
set D [.mywidget cget -borderwidth]

.CE
.PP
The question is, what are the values of variables A, B, C and D?
.PP
The value of A is "sunken".  The hull is a Tk frame that has been
given the widget class "Mywidget"; it will automatically query the
option database and pick up this value.  Since the \fB-relief\fR
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
For \fBsnit::widgetadaptor\fRs, 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 \fBsnit::widgetadaptor\fR
must call \fBinstallhull\fR in its constructor.  The normal way to do
this is as follows:
.PP
.CS

    snit::widgetadaptor mywidget {
	# ...
	constructor {args} {
	    # ...
	    installhull using text -foreground white
	    #
	}
	#...
    }

.CE
.PP
In this case, the \fBinstallhull\fR command will create the hull using
a command like this:
.PP
.CS

    set hull [text $win -foreground white]

.CE
.PP
The hull is a \fBtext\fR widget, so its widget class is "Text".  Just
as with \fBsnit::widget\fR 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.







<
|
|
|
|
|
|
|
|
|
<






<
|
<







2124
2125
2126
2127
2128
2129
2130

2131
2132
2133
2134
2135
2136
2137
2138
2139

2140
2141
2142
2143
2144
2145

2146

2147
2148
2149
2150
2151
2152
2153
For \fBsnit::widgetadaptor\fRs, 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 \fBsnit::widgetadaptor\fR
must call \fBinstallhull\fR in its constructor.  The normal way to do
this is as follows:
.PP
.CS

snit::widgetadaptor mywidget {
# ...
constructor {args} {
# ...
installhull using text -foreground white
#
}
#...
}

.CE
.PP
In this case, the \fBinstallhull\fR command will create the hull using
a command like this:
.PP
.CS

set hull [text $win -foreground white]

.CE
.PP
The hull is a \fBtext\fR widget, so its widget class is "Text".  Just
as with \fBsnit::widget\fR 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.
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
2329
that the \fBinstall\fR command is used to create it.
.PP
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:
.PP
.CS

    snit::widget mywidget {
	delegate option -background to myComp

	constructor {args} {
	    set myComp [text $win.text -foreground black]
	}
    }

.CE
.PP
The drawback of this method is that Snit has no opportunity to
initialize the component properly.  Hence, the following approach is
now used:
.PP
.CS

    snit::widget mywidget {
	delegate option -background to myComp

	constructor {args} {
	    install myComp using text $win.text -foreground black
	}
    }

.CE
.PP
The \fBinstall\fR command does the following:
.PP
.IP \(bu
Builds a list of the options explicitly included in the \fBinstall\fR
command -- in this case, \fB-foreground\fR.







<
|
|
<
|
|
|
|
<







<
|
|
<
|
|
|
|
<







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
that the \fBinstall\fR command is used to create it.
.PP
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:
.PP
.CS

snit::widget mywidget {
delegate option -background to myComp

constructor {args} {
set myComp [text $win.text -foreground black]
}
}

.CE
.PP
The drawback of this method is that Snit has no opportunity to
initialize the component properly.  Hence, the following approach is
now used:
.PP
.CS

snit::widget mywidget {
delegate option -background to myComp

constructor {args} {
install myComp using text $win.text -foreground black
}
}

.CE
.PP
The \fBinstall\fR command does the following:
.PP
.IP \(bu
Builds a list of the options explicitly included in the \fBinstall\fR
command -- in this case, \fB-foreground\fR.
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
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
.PP
.SS "MACROS AND META-PROGRAMMING"
The \fBsnit::macro\fR command enables a certain amount of
meta-programming with Snit classes.  For example, suppose you like to
define properties: instance variables that have set/get methods.  Your
code might look like this:
.CS

    snit::type dog {
        variable mood happy

        method getmood {} {
            return $mood
        }

        method setmood {newmood} {
            set mood $newmood
        }
    }

.CE
That's nine lines of text per property.  Or, you could define the
following \fBsnit::macro\fR:
.CS

    snit::macro property {name initValue} {
        variable $name $initValue

        method get$name {} "return $name"

        method set$name {value} "set $name \\$value"
    }

.CE
Note that a \fBsnit::macro\fR is just a normal Tcl proc defined in
the slave interpreter used to compile type and widget definitions; as
a result, it has access to all the commands used to define types and
widgets.
.PP
Given this new macro, you can define a property in one line of code:
.CS

    snit::type dog {
        property mood happy
    }

.CE
Within a macro, the commands \fBvariable\fR and \fBproc\fR refer to
the Snit type-definition commands, not the standard Tcl commands.  To
get the standard Tcl commands, use \fB_variable\fR and \fB_proc\fR.
.PP
Because a single slave interpreter is used for compiling all Snit
types and widgets in the application, there's the possibility of macro
name collisions.  If you're writing a reuseable package using Snit,
and you use some \fBsnit::macro\fRs, define them in your package
namespace:
.CS

    snit::macro mypkg::property {name initValue} { ... }

    snit::type dog {
        mypkg::property mood happy
    }

.CE
This leaves the global namespace open for application authors.
.PP
.SS "VALIDATION TYPES"
A validation type is an object that can be used to validate
Tcl values of a particular kind.  For example,
\fBsnit::integer\fR is used to validate that a Tcl value is
an integer.
.PP
Every validation type has a \fBvalidate\fR 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:
.CS

    snit::integer validate 5     ;# Does nothing
    snit::integer validate 5.0   ;# Throws an error (not an integer!)

.CE
.PP
The \fBvalidate\fR method will always return the validated value on success,
and throw the \fB-errorcode\fR INVALID on error.
.PP
Snit defines a family of validation types, all of which are
implemented as \fBsnit::type\fR's.  They can be used as is;
in addition, their instances serve as parameterized
subtypes.  For example, a probability is a number between 0.0 and 1.0
inclusive:
.CS

    snit::double probability -min 0.0 -max 1.0

.CE
The example above creates an instance of \fBsnit::double\fR--a
validation subtype--called
\fBprobability\fR, which can be used to validate probability values:
.CS

    probability validate 0.5   ;# Does nothing
    probability validate 7.9   ;# Throws an error

.CE
Validation subtypes can be defined explicitly, as in the above
example; when a locally-defined option's \fB-type\fR is specified,
they may also be created on the fly:
.CS

    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
    }

.CE
.PP
Any object that has a \fBvalidate\fR method with the semantics
described above can be used as a validation type; see
\fBDefining Validation Types\fR for information on how to define
new ones.
.PP







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




<
|
|
<
|
<
|
|
<








<
|
|
|
<











<
|
<
|
|
|
<














<
|
|
<











<
|
<





<
|
|
<





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







2219
2220
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
2248
2249
2250
2251

2252
2253
2254

2255
2256
2257
2258
2259
2260
2261
2262
2263
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

2319
2320
2321
2322
2323
2324
2325
.PP
.SS "MACROS AND META-PROGRAMMING"
The \fBsnit::macro\fR command enables a certain amount of
meta-programming with Snit classes.  For example, suppose you like to
define properties: instance variables that have set/get methods.  Your
code might look like this:
.CS

snit::type dog {
variable mood happy

method getmood {} {
return $mood
}

method setmood {newmood} {
set mood $newmood
}
}

.CE
That's nine lines of text per property.  Or, you could define the
following \fBsnit::macro\fR:
.CS

snit::macro property {name initValue} {
variable $name $initValue

method get$name {} "return $name"

method set$name {value} "set $name \\$value"
}

.CE
Note that a \fBsnit::macro\fR is just a normal Tcl proc defined in
the slave interpreter used to compile type and widget definitions; as
a result, it has access to all the commands used to define types and
widgets.
.PP
Given this new macro, you can define a property in one line of code:
.CS

snit::type dog {
property mood happy
}

.CE
Within a macro, the commands \fBvariable\fR and \fBproc\fR refer to
the Snit type-definition commands, not the standard Tcl commands.  To
get the standard Tcl commands, use \fB_variable\fR and \fB_proc\fR.
.PP
Because a single slave interpreter is used for compiling all Snit
types and widgets in the application, there's the possibility of macro
name collisions.  If you're writing a reuseable package using Snit,
and you use some \fBsnit::macro\fRs, define them in your package
namespace:
.CS

snit::macro mypkg::property {name initValue} { ... }

snit::type dog {
mypkg::property mood happy
}

.CE
This leaves the global namespace open for application authors.
.PP
.SS "VALIDATION TYPES"
A validation type is an object that can be used to validate
Tcl values of a particular kind.  For example,
\fBsnit::integer\fR is used to validate that a Tcl value is
an integer.
.PP
Every validation type has a \fBvalidate\fR 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:
.CS

snit::integer validate 5     ;# Does nothing
snit::integer validate 5.0   ;# Throws an error (not an integer!)

.CE
.PP
The \fBvalidate\fR method will always return the validated value on success,
and throw the \fB-errorcode\fR INVALID on error.
.PP
Snit defines a family of validation types, all of which are
implemented as \fBsnit::type\fR's.  They can be used as is;
in addition, their instances serve as parameterized
subtypes.  For example, a probability is a number between 0.0 and 1.0
inclusive:
.CS

snit::double probability -min 0.0 -max 1.0

.CE
The example above creates an instance of \fBsnit::double\fR--a
validation subtype--called
\fBprobability\fR, which can be used to validate probability values:
.CS

probability validate 0.5   ;# Does nothing
probability validate 7.9   ;# Throws an error

.CE
Validation subtypes can be defined explicitly, as in the above
example; when a locally-defined option's \fB-type\fR is specified,
they may also be created on the fly:
.CS

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
}

.CE
.PP
Any object that has a \fBvalidate\fR method with the semantics
described above can be used as a validation type; see
\fBDefining Validation Types\fR for information on how to define
new ones.
.PP
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
2605
2606
2607
2608
2609
2610
2611
2612
.TP
\fB-type\fR \fItype\fR
Specifies the type of the list elements; \fItype\fR must be
the name of a validation type or subtype.  In the
following example, the value of \fB-numbers\fR must be a list
of integers.
.CS

    option -numbers -type {snit::listtype -type snit::integer}

.CE
.IP
Note that this option doesn't support defining new validation subtypes
on the fly; that is, the following code will not work (yet, anyway):
.CS

    option -numbers -type {
        snit::listtype -type {snit::integer -min 5}
    }

.CE
.IP
Instead, define the subtype explicitly:
.CS

    snit::integer gt4 -min 5

    snit::type mytype {
        option -numbers -type {snit::listtype -type gt4}
    }

.CE
.RE
.TP
\fBsnit::pixels\fR \fBvalidate\fR ?\fIvalue\fR?
.TP
\fBsnit::pixels\fR \fIname\fR ?\fIoption\fR \fIvalue\fR...?
\fITk programs only.\fR Validates screen distances, in any of the







<
|
<





<
|
|
|
<




<
|
<
|
|
|
<







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
.TP
\fB-type\fR \fItype\fR
Specifies the type of the list elements; \fItype\fR must be
the name of a validation type or subtype.  In the
following example, the value of \fB-numbers\fR must be a list
of integers.
.CS

option -numbers -type {snit::listtype -type snit::integer}

.CE
.IP
Note that this option doesn't support defining new validation subtypes
on the fly; that is, the following code will not work (yet, anyway):
.CS

option -numbers -type {
snit::listtype -type {snit::integer -min 5}
}

.CE
.IP
Instead, define the subtype explicitly:
.CS

snit::integer gt4 -min 5

snit::type mytype {
option -numbers -type {snit::listtype -type gt4}
}

.CE
.RE
.TP
\fBsnit::pixels\fR \fBvalidate\fR ?\fIvalue\fR?
.TP
\fBsnit::pixels\fR \fIname\fR ?\fIoption\fR \fIvalue\fR...?
\fITk programs only.\fR Validates screen distances, in any of the
2677
2678
2679
2680
2681
2682
2683
2684
2685
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
2717
2718
2719
2720
2721
2722
2723
2724
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
2765
2766
2767
2768
2769
2770
object that has a \fBvalidate\fR method; the \fBvalidate\fR
method must take one argument, a value, return the value if it is
valid, and throw an error with \fB-errorcode\fR INVALID if the
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;
but for many applications this will be sufficient.
.PP
Finally, one can define a full-fledged, subtype-able validation type
as a \fBsnit::type\fR.  Here's a skeleton to get you started:
.CS

    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 "read-only".
        # After all, you shouldn't be changing their values after
        # a subtype is defined.
        #
        # 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,
        # if any.  Since they are all readonly, we don't need to worry
        # about validating the options on change.

        constructor {args} {
            # FIRST, get the options
            $self configurelist $args

            # NEXT, validate them.

            # I'll leave this to your imagination.
        }

        # Next, define a "validate" instance method; its job is to
        # validate values for subtypes.

        method validate {value} {
            # First, call the type method to do the basic validation.
            $type validate $value

            # Now we know it's a valid integer.

            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
        }
    }

.CE
And now you have a type that can be subtyped.
.PP
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.







<
|
|
|
|
|
<
|
|
<







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







2511
2512
2513
2514
2515
2516
2517

2518
2519
2520
2521
2522

2523
2524

2525
2526
2527
2528
2529
2530
2531

2532
2533
2534
2535
2536
2537
2538
2539

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
2580
2581
2582
2583
2584
object that has a \fBvalidate\fR method; the \fBvalidate\fR
method must take one argument, a value, return the value if it is
valid, and throw an error with \fB-errorcode\fR INVALID if the
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;
but for many applications this will be sufficient.
.PP
Finally, one can define a full-fledged, subtype-able validation type
as a \fBsnit::type\fR.  Here's a skeleton to get you started:
.CS

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 "read-only".
# After all, you shouldn't be changing their values after
# a subtype is defined.
#
# 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,
# if any.  Since they are all readonly, we don't need to worry
# about validating the options on change.

constructor {args} {
# FIRST, get the options
$self configurelist $args

# NEXT, validate them.

# I'll leave this to your imagination.
}

# Next, define a "validate" instance method; its job is to
# validate values for subtypes.

method validate {value} {
# First, call the type method to do the basic validation.
$type validate $value

# Now we know it's a valid integer.

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
}
}

.CE
And now you have a type that can be subtyped.
.PP
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.
2841
2842
2843
2844
2845
2846
2847
2848
2849
.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







<

2655
2656
2657
2658
2659
2660
2661

2662
.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.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
(if your code is unaffected by the minor incompatibilities between the
two versions) you can use Snit 1.3 for Tcl 8.4 and Snit 2.2 for Tcl
8.5.
.SS "HOW DO I SELECT THE VERSION OF SNIT I WANT TO USE?"
To always use Snit 1.3 (or a later version of Snit 1.x), invoke Snit
as follows:
.CS

package require snit 1.3

.CE
To always use Snit 2.2 (or a later version of Snit 2.x), say this
instead:
.CS

package require snit 2.2

.CE
Note that if you request Snit 2.2 explicitly, your application will
halt with Tcl 8.4, since Snit 2.2 is unavailable for Tcl 8.4.
.PP
If you wish your application to always use the latest available
version of Snit, don't specify a version number:
.CS

package require snit

.CE
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.
.SS "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
\fBnamespace ensemble\fR 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.
.PP
There are four specific incompatibilities between Snit 1.3 and Snit 2.2.
.PP
.IP \(bu
Snit 1.3 supports implicit naming of objects.  Suppose you define a
new \fBsnit::type\fR called \fBdog\fR.  You can create instances of
\fBdog\fR in three ways:
.CS

dog spot               ;# Explicit naming
set obj1 [dog %AUTO%]  ;# Automatic naming
set obj2 [dog]         ;# Implicit naming

.CE
.IP
In Snit 2.2, type commands are defined using the \fBnamespace ensemble\fR
mechanism; and \fBnamespace ensemble\fR doesn't allow an ensemble command
to be called without a subcommand.  In short, using
\fBnamespace ensemble\fR there's no way to support implicit naming.
.sp
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
\fBnamespace ensemble\fR is not used.  In this case, implicit naming
is still possible.
.sp
In short, you can have implicit naming if you're willing to do without
type methods (including the standard type methods, like
\fB$type info\fR).  To do so, use the \fB-hastypemethods\fR pragma:
.CS

pragma -hastypemethods 0
.CE
.IP \(bu
Hierarchical methods and type methods are implemented differently in
Snit 2.2.
.sp
A hierarchical method is an instance method which has
subcommands; these subcommands are themselves methods.  The Tk text
widget's \fBtag\fR 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:
.CS

method {tag configure} {tag args} { ... }

method {tag cget} {tag option} {...}

.CE
.IP
Here we've implicitly defined a \fBtag\fR method which has two
subcommands, \fBconfigure\fR and \fBcget\fR.
.sp
In Snit 1.3, hierarchical methods could be called in two ways:
.CS

$obj tag cget -myoption      ;# The good way
$obj {tag cget} -myoption    ;# The weird way

.CE
.IP
In the second call, we see that a hierarchical method or type method
is simply one whose name contains multiple words.
.sp
In Snit 2.2 this is no longer the case, and the "weird" way of calling
hierarchical methods and type methods no longer works.







<

<




<

<







<

<




















<



<
















<












<

<

<







<


<







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
(if your code is unaffected by the minor incompatibilities between the
two versions) you can use Snit 1.3 for Tcl 8.4 and Snit 2.2 for Tcl
8.5.
.SS "HOW DO I SELECT THE VERSION OF SNIT I WANT TO USE?"
To always use Snit 1.3 (or a later version of Snit 1.x), invoke Snit
as follows:
.CS

package require snit 1.3

.CE
To always use Snit 2.2 (or a later version of Snit 2.x), say this
instead:
.CS

package require snit 2.2

.CE
Note that if you request Snit 2.2 explicitly, your application will
halt with Tcl 8.4, since Snit 2.2 is unavailable for Tcl 8.4.
.PP
If you wish your application to always use the latest available
version of Snit, don't specify a version number:
.CS

package require snit

.CE
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.
.SS "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
\fBnamespace ensemble\fR 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.
.PP
There are four specific incompatibilities between Snit 1.3 and Snit 2.2.
.PP
.IP \(bu
Snit 1.3 supports implicit naming of objects.  Suppose you define a
new \fBsnit::type\fR called \fBdog\fR.  You can create instances of
\fBdog\fR in three ways:
.CS

dog spot               ;# Explicit naming
set obj1 [dog %AUTO%]  ;# Automatic naming
set obj2 [dog]         ;# Implicit naming

.CE
.IP
In Snit 2.2, type commands are defined using the \fBnamespace ensemble\fR
mechanism; and \fBnamespace ensemble\fR doesn't allow an ensemble command
to be called without a subcommand.  In short, using
\fBnamespace ensemble\fR there's no way to support implicit naming.
.sp
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
\fBnamespace ensemble\fR is not used.  In this case, implicit naming
is still possible.
.sp
In short, you can have implicit naming if you're willing to do without
type methods (including the standard type methods, like
\fB$type info\fR).  To do so, use the \fB-hastypemethods\fR pragma:
.CS

pragma -hastypemethods 0
.CE
.IP \(bu
Hierarchical methods and type methods are implemented differently in
Snit 2.2.
.sp
A hierarchical method is an instance method which has
subcommands; these subcommands are themselves methods.  The Tk text
widget's \fBtag\fR 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:
.CS

method {tag configure} {tag args} { ... }

method {tag cget} {tag option} {...}

.CE
.IP
Here we've implicitly defined a \fBtag\fR method which has two
subcommands, \fBconfigure\fR and \fBcget\fR.
.sp
In Snit 1.3, hierarchical methods could be called in two ways:
.CS

$obj tag cget -myoption      ;# The good way
$obj {tag cget} -myoption    ;# The weird way

.CE
.IP
In the second call, we see that a hierarchical method or type method
is simply one whose name contains multiple words.
.sp
In Snit 2.2 this is no longer the case, and the "weird" way of calling
hierarchical methods and type methods no longer works.
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
it means that the type can call other commands defined by the
package without any extra work.
.sp
This feature depends on the new Tcl 8.5 \fBnamespace path\fR command,
which is why it hasn't been implemented for V1.x.  V1.x code can
achieve something similar by placing
.CS

namespace import [namespace parent]::*
.CE
.IP
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.
.PP







<







499
500
501
502
503
504
505

506
507
508
509
510
511
512
it means that the type can call other commands defined by the
package without any extra work.
.sp
This feature depends on the new Tcl 8.5 \fBnamespace path\fR command,
which is why it hasn't been implemented for V1.x.  V1.x code can
achieve something similar by placing
.CS

namespace import [namespace parent]::*
.CE
.IP
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.
.PP
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
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 \fBinsert\fR
subcommand:
.PP
.CS

    # Create a text widget and insert some text in it.
    text .mytext -width 80 -height 24
    .mytext insert end "Howdy!"

.CE
.PP
In this example, \fBtext\fR is the \fItype\fR command and \fB.mytext\fR is the \fIinstance\fR command.
.PP
In Snit, object subcommands are generally called
\fBINSTANCE METHODS\fR.
.SS "WHAT KINDS OF ABSTRACT DATA TYPES DOES SNIT PROVIDE?"







<
|
|
|
<







543
544
545
546
547
548
549

550
551
552

553
554
555
556
557
558
559
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 \fBinsert\fR
subcommand:
.PP
.CS

# Create a text widget and insert some text in it.
text .mytext -width 80 -height 24
\.mytext insert end "Howdy!"

.CE
.PP
In this example, \fBtext\fR is the \fItype\fR command and \fB.mytext\fR is the \fIinstance\fR command.
.PP
In Snit, object subcommands are generally called
\fBINSTANCE METHODS\fR.
.SS "WHAT KINDS OF ABSTRACT DATA TYPES DOES SNIT PROVIDE?"
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
.SS "WHAT IS A SNIT::TYPE?"
A \fBsnit::type\fR is a non-GUI abstract data type, e.g., a stack or a
queue.  \fBsnit::type\fRs are defined using the \fBsnit::type\fR
command.  For example, if you were designing a kennel management
system for a dog breeder, you'd need a dog type.
.PP
.CS

% snit::type dog {
    # ...
}
::dog
%

.CE
.PP
This definition defines a new command (\fB::dog\fR, in this case)
that can be used to define dog objects.
.PP
An instance of a \fBsnit::type\fR can have \fBINSTANCE METHODS\fR,
\fBINSTANCE VARIABLES\fR, \fBOPTIONS\fR, and \fBCOMPONENTS\fR.







<

|



<







569
570
571
572
573
574
575

576
577
578
579
580

581
582
583
584
585
586
587
.SS "WHAT IS A SNIT::TYPE?"
A \fBsnit::type\fR is a non-GUI abstract data type, e.g., a stack or a
queue.  \fBsnit::type\fRs are defined using the \fBsnit::type\fR
command.  For example, if you were designing a kennel management
system for a dog breeder, you'd need a dog type.
.PP
.CS

% snit::type dog {
# ...
}
::dog
%

.CE
.PP
This definition defines a new command (\fB::dog\fR, in this case)
that can be used to define dog objects.
.PP
An instance of a \fBsnit::type\fR can have \fBINSTANCE METHODS\fR,
\fBINSTANCE VARIABLES\fR, \fBOPTIONS\fR, and \fBCOMPONENTS\fR.
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
See \fBWIDGET ADAPTORS\fR.
.SS "HOW DO I CREATE AN INSTANCE OF A SNIT::TYPE?"
You create an instance of a \fBsnit::type\fR by passing the new
instance's name to the type's create method.  In the following
example, we create a \fBdog\fR object called \fBspot\fR.
.PP
.CS

% snit::type dog {
    # ....
}
::dog
% dog create spot
::spot
%

.CE
.PP
In general, the \fBcreate\fR method name can be omitted so long as
the instance name doesn't conflict with any defined
\fBTYPE METHODS\fR. (See \fBTYPE COMPONENTS\fR for the
special case in which this doesn't work.)
So the following example is identical to the
previous example:
.PP
.CS

% snit::type dog {
    # ....
}
::dog
% dog spot
::spot
%

.CE
.PP
This document generally uses the shorter form.
.PP
If the \fBdog\fR type defines \fBOPTIONS\fR, these can usually be
given defaults at creation time:
.PP
.CS

% snit::type dog {
    option -breed mongrel
    option -color brown

    method bark {} { return "$self barks." }
}
::dog
% dog create spot -breed dalmation -color spotted
::spot
% spot cget -breed
dalmation
% spot cget -color
spotted
%

.CE
.PP
Once created, the instance name now names a new Tcl command that is used
to manipulate the object.  For example, the following code makes the
dog bark:
.PP
.CS

% spot bark
::spot barks.
%

.CE
.PP
.SS "HOW DO I REFER TO AN OBJECT INDIRECTLY?"
Some programmers prefer to save the object name in a variable, and
reference it that way.  For example,
.PP
.CS

% snit::type dog { ... }
::dog
% set d [dog spot -breed dalmation -color spotted]
::spot
% $d cget -breed
dalmation
% $d bark
::spot barks.
%

.CE
.PP
If you prefer this style, you might prefer to have Snit
generate the instance's name automatically.
.SS "HOW CAN I GENERATE THE OBJECT NAME AUTOMATICALLY?"
If you'd like Snit to generate an object name for you,
use the \fB%AUTO%\fR keyword as the requested name:
.PP
.CS

% snit::type dog { ... }
::dog
% set d [dog %AUTO%]
::dog2
% $d bark
::dog2 barks.
%

.CE
.PP
The \fB%AUTO%\fR keyword can be embedded in a longer string:
.PP
.CS

% set d [dog obj_%AUTO%]
::obj_dog4
% $d bark
::obj_dog4 barks.
%

.CE
.PP
.SS "CAN TYPES BE RENAMED?"
Tcl's \fBrename\fR 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.







<

|





<










<

|





<








<

|
|
<
|









<







<



<







<









<









<







<





<





<







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
See \fBWIDGET ADAPTORS\fR.
.SS "HOW DO I CREATE AN INSTANCE OF A SNIT::TYPE?"
You create an instance of a \fBsnit::type\fR by passing the new
instance's name to the type's create method.  In the following
example, we create a \fBdog\fR object called \fBspot\fR.
.PP
.CS

% snit::type dog {
# ....
}
::dog
% dog create spot
::spot
%

.CE
.PP
In general, the \fBcreate\fR method name can be omitted so long as
the instance name doesn't conflict with any defined
\fBTYPE METHODS\fR. (See \fBTYPE COMPONENTS\fR for the
special case in which this doesn't work.)
So the following example is identical to the
previous example:
.PP
.CS

% snit::type dog {
# ....
}
::dog
% dog spot
::spot
%

.CE
.PP
This document generally uses the shorter form.
.PP
If the \fBdog\fR type defines \fBOPTIONS\fR, these can usually be
given defaults at creation time:
.PP
.CS

% snit::type dog {
option -breed mongrel
option -color brown

method bark {} { return "$self barks." }
}
::dog
% dog create spot -breed dalmation -color spotted
::spot
% spot cget -breed
dalmation
% spot cget -color
spotted
%

.CE
.PP
Once created, the instance name now names a new Tcl command that is used
to manipulate the object.  For example, the following code makes the
dog bark:
.PP
.CS

% spot bark
::spot barks.
%

.CE
.PP
.SS "HOW DO I REFER TO AN OBJECT INDIRECTLY?"
Some programmers prefer to save the object name in a variable, and
reference it that way.  For example,
.PP
.CS

% snit::type dog { ... }
::dog
% set d [dog spot -breed dalmation -color spotted]
::spot
% $d cget -breed
dalmation
% $d bark
::spot barks.
%

.CE
.PP
If you prefer this style, you might prefer to have Snit
generate the instance's name automatically.
.SS "HOW CAN I GENERATE THE OBJECT NAME AUTOMATICALLY?"
If you'd like Snit to generate an object name for you,
use the \fB%AUTO%\fR keyword as the requested name:
.PP
.CS

% snit::type dog { ... }
::dog
% set d [dog %AUTO%]
::dog2
% $d bark
::dog2 barks.
%

.CE
.PP
The \fB%AUTO%\fR keyword can be embedded in a longer string:
.PP
.CS

% set d [dog obj_%AUTO%]
::obj_dog4
% $d bark
::obj_dog4 barks.
%

.CE
.PP
.SS "CAN TYPES BE RENAMED?"
Tcl's \fBrename\fR 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.
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
other instance methods using \fB$self\fR.
.IP \(bu
If the object is renamed, however, then \fB$self\fR's value will change.
Therefore, don't use \fB$self\fR for anything that will break if
\fB$self\fR changes. For example, don't pass a callback command to
another object like this:
.CS


    .btn configure -command [list $self ButtonPress]

.CE
.IP
You'll get an error if \fB.btn\fR calls your command after your object is
renamed.
.IP \(bu
Instead, your object should define its callback command like this:
.CS


    .btn configure -command [mymethod ButtonPress]

.CE
.IP
The \fBmymethod\fR 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.
.IP \(bu
Every object has a private namespace; the name of this namespace is







<
<
|
<







<
<
|
<







724
725
726
727
728
729
730


731

732
733
734
735
736
737
738


739

740
741
742
743
744
745
746
other instance methods using \fB$self\fR.
.IP \(bu
If the object is renamed, however, then \fB$self\fR's value will change.
Therefore, don't use \fB$self\fR for anything that will break if
\fB$self\fR changes. For example, don't pass a callback command to
another object like this:
.CS


\.btn configure -command [list $self ButtonPress]

.CE
.IP
You'll get an error if \fB.btn\fR calls your command after your object is
renamed.
.IP \(bu
Instead, your object should define its callback command like this:
.CS


\.btn configure -command [mymethod ButtonPress]

.CE
.IP
The \fBmymethod\fR 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.
.IP \(bu
Every object has a private namespace; the name of this namespace is
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
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
\fBsnit::widgetadaptor\fR) can be destroyed like any other widget: by
using the Tk \fBdestroy\fR command on the widget or on one of its
ancestors in the window hierarchy.
.PP
Every instance of a \fBsnit::type\fR has a \fBdestroy\fR method:
.PP
.CS

% snit::type dog { ... }
::dog
% dog spot
::spot
% spot bark
::spot barks.
% spot destroy
% spot barks
invalid command name "spot"
%

.CE
.PP
Finally, every Snit type has a type method called \fBdestroy\fR; calling it
destroys the type and all of its instances:
.CS

% snit::type dog { ... }
::dog
% dog spot
::spot
% spot bark
::spot barks.
% dog destroy
% spot bark
invalid command name "spot"
% dog fido
invalid command name "dog"
%

.CE
.SH "INSTANCE METHODS"
.SS "WHAT IS AN INSTANCE METHOD?"
An instance method is a procedure associated with a specific object
and called as a subcommand of the object's command.  It is given free
access to all of the object's type variables, instance variables, and
so forth.
.SS "HOW DO I DEFINE AN INSTANCE METHOD?"
Instance methods are defined in the type definition using
the \fBmethod\fR statement.  Consider the following code that might be
used to add dogs to a computer simulation:
.PP
.CS

% snit::type dog {
    method bark {} {
        return "$self barks."
    }

    method chase {thing} {
        return "$self chases $thing."
    }
}
::dog
%

.CE
.PP
A dog can bark, and it can chase things.
.PP
The \fBmethod\fR statement looks just like a normal Tcl \fBproc\fR,
except that it appears in a \fBsnit::type\fR definition.  Notice that
every instance method gets an implicit argument called \fBself\fR;
this argument contains the object's name.  (There's more on
implicit method arguments below.)
.SS "HOW DOES A CLIENT CALL AN INSTANCE METHOD?"
The method name becomes a subcommand of the object.  For example,
let's put a simulated dog through its paces:
.PP
.CS

% dog spot
::spot
% spot bark
::spot barks.
% spot chase cat
::spot chases cat.
%

.CE
.PP
.SS "HOW DOES AN INSTANCE METHOD CALL ANOTHER INSTANCE METHOD?"
If method A needs to call method B on the same object, it does so just
as a client does: it calls method B as a subcommand of the object
itself, using the object name stored in the implicit argument \fBself\fR.
.PP
Suppose, for example, that our dogs never chase anything without
barking at them:
.PP
.CS

% snit::type dog {
    method bark {} {
        return "$self barks."
    }

    method chase {thing} {
        return "$self chases $thing.  [$self bark]"
    }
}
::dog
% dog spot
::spot
% spot bark
::spot barks.
% spot chase cat
::spot chases cat.  ::spot barks.
%

.CE
.PP
.SS "ARE THERE ANY LIMITATIONS ON INSTANCE METHOD NAMES?"
Not really, so long as you avoid the standard instance method names:
\fBconfigure\fR, \fBconfigurelist\fR, \fBcget\fR,
\fBdestroy\fR, and \fBinfo\fR.  Also, method names consisting of
multiple words define hierarchical methods.
.SS "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 \fBtext\fR widget's \fBtag\fR method are hierarchical methods.
.SS "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 \fBtag\fR method with subcommands \fBcget\fR and
\fBconfigure\fR:
.CS

snit::widget mytext {
    method {tag configure} {tag args} { ... }

    method {tag cget} {tag option} {...}
}

.CE
Note that there is no explicit definition for the \fBtag\fR method;
it is implicit in the definition of \fBtag configure\fR and
\fBtag cget\fR.  If you tried to define \fBtag\fR explicitly in this
example, you'd get an error.
.SS "HOW DO I CALL HIERARCHICAL METHODS?"
As subcommands of subcommands.
.CS

% mytext .text
.text
% .text tag configure redtext -foreground red -background black
% .text tag cget redtext -foreground
red
%

.CE
.SS "HOW DO I MAKE AN INSTANCE METHOD PRIVATE?"
It's often useful to define private methods, that is, instance methods
intended to be called only by other methods of the same object.
.PP
Snit doesn't implement any access control on instance methods, so all
methods are \fIde facto\fR public.  Conventionally, though, the
names of public methods begin with a lower-case letter, and the names
of private methods begin with an upper-case letter.
.PP
For example, suppose our simulated dogs only bark in response to other
stimuli; they never bark just for fun.  So the \fBbark\fR method
becomes \fBBark\fR to indicate that it is private:
.PP
.CS

% snit::type dog {
    # Private by convention: begins with uppercase letter.
    method Bark {} {
        return "$self barks."
    }

    method chase {thing} {
        return "$self chases $thing. [$self Bark]"
    }
}
::dog
% dog fido
::fido
% fido chase cat
::fido chases cat. ::fido barks.
%

.CE
.PP
.SS "ARE THERE ANY LIMITATIONS ON INSTANCE METHOD ARGUMENTS?"
Method argument lists are defined just like normal Tcl \fBproc\fR argument
lists; in particular, they can include arguments with default values
and the \fBargs\fR argument.
.PP
However, every method also has a number of implicit arguments
provided by Snit in addition to those explicitly defined.  The names
of these implicit arguments may not used to name explicit arguments.
.SS "WHAT IMPLICIT ARGUMENTS ARE PASSED TO EACH INSTANCE METHOD?"
The arguments implicitly passed to every method are \fBtype\fR,
\fBselfns\fR, \fBwin\fR, and \fBself\fR.
.SS "WHAT IS $TYPE?"
The implicit argument \fBtype\fR contains the fully qualified name of
the object's type:
.PP
.CS

% snit::type thing {
    method mytype {} {
        return $type
    }
}
::thing
% thing something
::something
% something mytype
::thing
%

.CE
.PP
.SS "WHAT IS $SELF?"
The implicit argument \fBself\fR contains the object's fully
qualified name.
.PP
If the object's command is renamed, then \fB$self\fR will change to
match in subsequent calls.  Thus, your code should not assume that
\fB$self\fR is constant unless you know for sure that the object
will never be renamed.
.PP
.CS

% snit::type thing {
    method myself {} {
        return $self
    }
}
::thing
% thing mutt
::mutt
% mutt myself
::mutt
% rename mutt jeff
% jeff myself
::jeff
%

.CE
.PP
.SS "WHAT IS $SELFNS?"
Each Snit object has a private namespace in which to store its
\fBINSTANCE VARIABLES\fR and \fBOPTIONS\fR.  The implicit argument
\fBselfns\fR contains the name of this namespace; its value never changes, and
is constant for the life of the object, even if the object's name
changes:
.PP
.CS

% snit::type thing {
    method myNameSpace {} {
        return $selfns
    }
}
::thing
% thing jeff
::jeff
% jeff myNameSpace
::thing::Snit_inst3
% rename jeff mutt
% mutt myNameSpace
::thing::Snit_inst3
%

.CE
.PP
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.
.SS "WHAT IS $WIN?"
The implicit argument \fBwin\fR is defined for all Snit methods,







<










<





<












<













<

|
|
|
<
|
|
|



<














<







<











<

|
|
|
<
|
|
|









<




















<

|
<
|

<








<

|




<















<

|
|
|
|
<
|
|
|







<


















<

|
|
|







<












<

|
|
|










<










<

|
|
|










<







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
\fBsnit::widgetadaptor\fR) can be destroyed like any other widget: by
using the Tk \fBdestroy\fR command on the widget or on one of its
ancestors in the window hierarchy.
.PP
Every instance of a \fBsnit::type\fR has a \fBdestroy\fR method:
.PP
.CS

% snit::type dog { ... }
::dog
% dog spot
::spot
% spot bark
::spot barks.
% spot destroy
% spot barks
invalid command name "spot"
%

.CE
.PP
Finally, every Snit type has a type method called \fBdestroy\fR; calling it
destroys the type and all of its instances:
.CS

% snit::type dog { ... }
::dog
% dog spot
::spot
% spot bark
::spot barks.
% dog destroy
% spot bark
invalid command name "spot"
% dog fido
invalid command name "dog"
%

.CE
.SH "INSTANCE METHODS"
.SS "WHAT IS AN INSTANCE METHOD?"
An instance method is a procedure associated with a specific object
and called as a subcommand of the object's command.  It is given free
access to all of the object's type variables, instance variables, and
so forth.
.SS "HOW DO I DEFINE AN INSTANCE METHOD?"
Instance methods are defined in the type definition using
the \fBmethod\fR statement.  Consider the following code that might be
used to add dogs to a computer simulation:
.PP
.CS

% snit::type dog {
method bark {} {
return "$self barks."
}

method chase {thing} {
return "$self chases $thing."
}
}
::dog
%

.CE
.PP
A dog can bark, and it can chase things.
.PP
The \fBmethod\fR statement looks just like a normal Tcl \fBproc\fR,
except that it appears in a \fBsnit::type\fR definition.  Notice that
every instance method gets an implicit argument called \fBself\fR;
this argument contains the object's name.  (There's more on
implicit method arguments below.)
.SS "HOW DOES A CLIENT CALL AN INSTANCE METHOD?"
The method name becomes a subcommand of the object.  For example,
let's put a simulated dog through its paces:
.PP
.CS

% dog spot
::spot
% spot bark
::spot barks.
% spot chase cat
::spot chases cat.
%

.CE
.PP
.SS "HOW DOES AN INSTANCE METHOD CALL ANOTHER INSTANCE METHOD?"
If method A needs to call method B on the same object, it does so just
as a client does: it calls method B as a subcommand of the object
itself, using the object name stored in the implicit argument \fBself\fR.
.PP
Suppose, for example, that our dogs never chase anything without
barking at them:
.PP
.CS

% snit::type dog {
method bark {} {
return "$self barks."
}

method chase {thing} {
return "$self chases $thing.  [$self bark]"
}
}
::dog
% dog spot
::spot
% spot bark
::spot barks.
% spot chase cat
::spot chases cat.  ::spot barks.
%

.CE
.PP
.SS "ARE THERE ANY LIMITATIONS ON INSTANCE METHOD NAMES?"
Not really, so long as you avoid the standard instance method names:
\fBconfigure\fR, \fBconfigurelist\fR, \fBcget\fR,
\fBdestroy\fR, and \fBinfo\fR.  Also, method names consisting of
multiple words define hierarchical methods.
.SS "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 \fBtext\fR widget's \fBtag\fR method are hierarchical methods.
.SS "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 \fBtag\fR method with subcommands \fBcget\fR and
\fBconfigure\fR:
.CS

snit::widget mytext {
method {tag configure} {tag args} { ... }

method {tag cget} {tag option} {...}
}

.CE
Note that there is no explicit definition for the \fBtag\fR method;
it is implicit in the definition of \fBtag configure\fR and
\fBtag cget\fR.  If you tried to define \fBtag\fR explicitly in this
example, you'd get an error.
.SS "HOW DO I CALL HIERARCHICAL METHODS?"
As subcommands of subcommands.
.CS

% mytext .text
\.text
% .text tag configure redtext -foreground red -background black
% .text tag cget redtext -foreground
red
%

.CE
.SS "HOW DO I MAKE AN INSTANCE METHOD PRIVATE?"
It's often useful to define private methods, that is, instance methods
intended to be called only by other methods of the same object.
.PP
Snit doesn't implement any access control on instance methods, so all
methods are \fIde facto\fR public.  Conventionally, though, the
names of public methods begin with a lower-case letter, and the names
of private methods begin with an upper-case letter.
.PP
For example, suppose our simulated dogs only bark in response to other
stimuli; they never bark just for fun.  So the \fBbark\fR method
becomes \fBBark\fR to indicate that it is private:
.PP
.CS

% snit::type dog {
# Private by convention: begins with uppercase letter.
method Bark {} {
return "$self barks."
}

method chase {thing} {
return "$self chases $thing. [$self Bark]"
}
}
::dog
% dog fido
::fido
% fido chase cat
::fido chases cat. ::fido barks.
%

.CE
.PP
.SS "ARE THERE ANY LIMITATIONS ON INSTANCE METHOD ARGUMENTS?"
Method argument lists are defined just like normal Tcl \fBproc\fR argument
lists; in particular, they can include arguments with default values
and the \fBargs\fR argument.
.PP
However, every method also has a number of implicit arguments
provided by Snit in addition to those explicitly defined.  The names
of these implicit arguments may not used to name explicit arguments.
.SS "WHAT IMPLICIT ARGUMENTS ARE PASSED TO EACH INSTANCE METHOD?"
The arguments implicitly passed to every method are \fBtype\fR,
\fBselfns\fR, \fBwin\fR, and \fBself\fR.
.SS "WHAT IS $TYPE?"
The implicit argument \fBtype\fR contains the fully qualified name of
the object's type:
.PP
.CS

% snit::type thing {
method mytype {} {
return $type
}
}
::thing
% thing something
::something
% something mytype
::thing
%

.CE
.PP
.SS "WHAT IS $SELF?"
The implicit argument \fBself\fR contains the object's fully
qualified name.
.PP
If the object's command is renamed, then \fB$self\fR will change to
match in subsequent calls.  Thus, your code should not assume that
\fB$self\fR is constant unless you know for sure that the object
will never be renamed.
.PP
.CS

% snit::type thing {
method myself {} {
return $self
}
}
::thing
% thing mutt
::mutt
% mutt myself
::mutt
% rename mutt jeff
% jeff myself
::jeff
%

.CE
.PP
.SS "WHAT IS $SELFNS?"
Each Snit object has a private namespace in which to store its
\fBINSTANCE VARIABLES\fR and \fBOPTIONS\fR.  The implicit argument
\fBselfns\fR contains the name of this namespace; its value never changes, and
is constant for the life of the object, even if the object's name
changes:
.PP
.CS

% snit::type thing {
method myNameSpace {} {
return $selfns
}
}
::thing
% thing jeff
::jeff
% jeff myNameSpace
::thing::Snit_inst3
% rename jeff mutt
% mutt myNameSpace
::thing::Snit_inst3
%

.CE
.PP
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.
.SS "WHAT IS $WIN?"
The implicit argument \fBwin\fR is defined for all Snit methods,
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
.PP
Suppose in my application I have a \fBdog\fR object named \fBfido\fR,
and I want \fBfido\fR to bark when a Tk button called \fB.bark\fR is
pressed.  In this case, I create the callback command in the usual
way, using \fBlist\fR:
.PP
.CS

    button .bark -text "Bark!" -command [list fido bark]

.CE
.PP
In typical Tcl style, we use a callback to hook two independent
components together.  But suppose that the \fBdog\fR object has
a graphical interface and owns the button itself?  In this case,
the \fBdog\fR must pass one of its own instance methods to the
button it owns.  The obvious thing to do is this:
.PP
.CS

% snit::widget dog {
    constructor {args} {
        #...
        button $win.barkbtn -text "Bark!" -command [list $self bark]
        #...
    }
}
::dog
%

.CE
.PP
(Note that in this example, our \fBdog\fR
becomes a \fBsnit::widget\fR, because it has GUI behavior.  See
\fBWIDGETS\fR for more.)  Thus, if we create a \fBdog\fR called \fB.spot\fR, it will create a Tk button called \fB.spot.barkbtn\fR;
when pressed, the button will call \fB$self bark\fR.
.PP
Now, this will work--provided that \fB.spot\fR is never renamed to
something else.  But surely renaming widgets is
abnormal?  And so it is--unless \fB.spot\fR is the hull component of a
\fBsnit::widgetadaptor\fR.  If it is, then it will be renamed, and \fB.spot\fR will become the name of the \fBsnit::widgetadaptor\fR
object.  When the button is pressed, the command \fB$self bark\fR
will be handled by the \fBsnit::widgetadaptor\fR, which might or might
not do the right thing.
.PP
There's a safer way to do it, and it looks like this:
.PP
.CS

% snit::widget dog {
    constructor {args} {
        #...
        button $win.barkbtn -text "Bark!" -command [mymethod bark]
        #...
    }
}
::dog
%

.CE
.PP
The command \fBmymethod\fR takes any number of arguments, and can be
used like \fBlist\fR to build up a callback command; the only
difference is that \fBmymethod\fR returns a
form of the command that won't change even if the instance's name
changes.







<
|
<









<

|
|
|
|
|



<


















<

|
|
|
|
|



<







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
.PP
Suppose in my application I have a \fBdog\fR object named \fBfido\fR,
and I want \fBfido\fR to bark when a Tk button called \fB.bark\fR is
pressed.  In this case, I create the callback command in the usual
way, using \fBlist\fR:
.PP
.CS

button .bark -text "Bark!" -command [list fido bark]

.CE
.PP
In typical Tcl style, we use a callback to hook two independent
components together.  But suppose that the \fBdog\fR object has
a graphical interface and owns the button itself?  In this case,
the \fBdog\fR must pass one of its own instance methods to the
button it owns.  The obvious thing to do is this:
.PP
.CS

% snit::widget dog {
constructor {args} {
#...
button $win.barkbtn -text "Bark!" -command [list $self bark]
#...
}
}
::dog
%

.CE
.PP
(Note that in this example, our \fBdog\fR
becomes a \fBsnit::widget\fR, because it has GUI behavior.  See
\fBWIDGETS\fR for more.)  Thus, if we create a \fBdog\fR called \fB.spot\fR, it will create a Tk button called \fB.spot.barkbtn\fR;
when pressed, the button will call \fB$self bark\fR.
.PP
Now, this will work--provided that \fB.spot\fR is never renamed to
something else.  But surely renaming widgets is
abnormal?  And so it is--unless \fB.spot\fR is the hull component of a
\fBsnit::widgetadaptor\fR.  If it is, then it will be renamed, and \fB.spot\fR will become the name of the \fBsnit::widgetadaptor\fR
object.  When the button is pressed, the command \fB$self bark\fR
will be handled by the \fBsnit::widgetadaptor\fR, which might or might
not do the right thing.
.PP
There's a safer way to do it, and it looks like this:
.PP
.CS

% snit::widget dog {
constructor {args} {
#...
button $win.barkbtn -text "Bark!" -command [mymethod bark]
#...
}
}
::dog
%

.CE
.PP
The command \fBmymethod\fR takes any number of arguments, and can be
used like \fBlist\fR to build up a callback command; the only
difference is that \fBmymethod\fR returns a
form of the command that won't change even if the instance's name
changes.
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
particular Snit object.  Instance variables can be scalars or arrays.
.SS "HOW IS A SCALAR INSTANCE VARIABLE DEFINED?"
Scalar instance variables are defined in the type definition using the
\fBvariable\fR statement.  You can simply name it, or you can
initialize it with a value:
.PP
.CS

snit::type mytype {
    # Define variable "greeting" and initialize it with "Howdy!"
    variable greeting "Howdy!"
}

.CE
.PP
.SS "HOW IS AN ARRAY INSTANCE VARIABLE DEFINED?"
Array instance variables are also defined in the type definition
using the \fBvariable\fR command.  You can initialize them at the same
time by specifying the \fB-array\fR option:
.PP
.CS

snit::type mytype {
    # Define array variable "greetings"
    variable greetings -array {
        formal "Good Evening"
        casual "Howdy!"
    }
}

.CE
.PP
.SS "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.







<

|
|

<








<

|
|
|
|
|

<







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
particular Snit object.  Instance variables can be scalars or arrays.
.SS "HOW IS A SCALAR INSTANCE VARIABLE DEFINED?"
Scalar instance variables are defined in the type definition using the
\fBvariable\fR statement.  You can simply name it, or you can
initialize it with a value:
.PP
.CS

snit::type mytype {
# Define variable "greeting" and initialize it with "Howdy!"
variable greeting "Howdy!"
}

.CE
.PP
.SS "HOW IS AN ARRAY INSTANCE VARIABLE DEFINED?"
Array instance variables are also defined in the type definition
using the \fBvariable\fR command.  You can initialize them at the same
time by specifying the \fB-array\fR option:
.PP
.CS

snit::type mytype {
# Define array variable "greetings"
variable greetings -array {
formal "Good Evening"
casual "Howdy!"
}
}

.CE
.PP
.SS "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.
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
1313
1314
1315
1316
1317
1318
1319
instance variables include multiple arrays; in Tcl 8.5, however,
the \fBdict\fR command might come to your rescue.
.PP
The second method is to declare your instance variables explicitly
in your instance code, while \fInot\fR including them in the type
definition:
.CS

snit::type dog {
    constructor {} {
        variable mood

        set mood happy
    }

    method setmood {newMood} {
        variable mood

        set mood $newMood
    }

    method getmood {} {
        variable mood

        return $mood
    }
}

.CE
This allows you to ensure that only the required variables are
included in each method, at the cost of longer code and run-time
errors when you forget to declare a variable you need.
.SS "HOW DO I PASS AN INSTANCE 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 \fB-textvariable\fR 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.
.PP
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 \fBmyvar\fR command:
.PP
.CS

snit::widget mywidget {
    variable labeltext ""

    constructor {args} {
        # ...

        label $win.label -textvariable [myvar labeltext]

        # ...
    }
}

.CE
.PP
.SS "HOW DO I MAKE AN INSTANCE VARIABLE PUBLIC?"
Practically speaking, you don't.  Instead, you'll implement public
variables as \fBOPTIONS\fR.
Alternatively, you can write \fBINSTANCE METHODS\fR to set and get
the variable's value.







<

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

<


















<

|
<
|
|
<
|
<
|
|

<







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
instance variables include multiple arrays; in Tcl 8.5, however,
the \fBdict\fR command might come to your rescue.
.PP
The second method is to declare your instance variables explicitly
in your instance code, while \fInot\fR including them in the type
definition:
.CS

snit::type dog {
constructor {} {
variable mood

set mood happy
}

method setmood {newMood} {
variable mood

set mood $newMood
}

method getmood {} {
variable mood

return $mood
}
}

.CE
This allows you to ensure that only the required variables are
included in each method, at the cost of longer code and run-time
errors when you forget to declare a variable you need.
.SS "HOW DO I PASS AN INSTANCE 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 \fB-textvariable\fR 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.
.PP
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 \fBmyvar\fR command:
.PP
.CS

snit::widget mywidget {
variable labeltext ""

constructor {args} {
# ...

label $win.label -textvariable [myvar labeltext]

# ...
}
}

.CE
.PP
.SS "HOW DO I MAKE AN INSTANCE VARIABLE PUBLIC?"
Practically speaking, you don't.  Instead, you'll implement public
variables as \fBOPTIONS\fR.
Alternatively, you can write \fBINSTANCE METHODS\fR to set and get
the variable's value.
1330
1331
1332
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
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
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
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
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
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
\fBsnit::widgetadaptor\fR objects, on the other hand, always do.
.SS "HOW DO I DEFINE AN OPTION?"
Options are defined in the type definition using the \fBoption\fR
statement.  Consider the following type, to be used in an application
that manages a list of dogs for a pet store:
.PP
.CS

snit::type dog {
    option -breed -default mongrel
    option -color -default brown
    option -akc   -default 0
    option -shots -default 0
}

.CE
.PP
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.
.PP
There are a number of options you can specify when defining an option;
if \fB-default\fR is the only one, you can omit the word
\fB-default\fR as follows:
.PP
.CS

snit::type dog {
    option -breed mongrel
    option -color brown
    option -akc   0
    option -shots 0
}

.CE
.PP
If no \fB-default\fR value is specified, the option's default value
will be the empty string (but see \fBTHE TK OPTION DATABASE\fR).
.PP
The Snit man page refers to options like these as "locally defined" options.
.SS "HOW CAN A CLIENT SET OPTIONS AT OBJECT CREATION?"
The normal convention is that the client may pass any number of
options and their values after the object's name at object creation.
For example, the \fB::dog\fR command defined in the previous answer can now
be used to create individual dogs.  Any or all of the options may be
set at creation time.
.PP
.CS

% dog spot -breed beagle -color "mottled" -akc 1 -shots 1
::spot
% dog fido -shots 1
::fido
%

.CE
.PP
So \fB::spot\fR is a pedigreed beagle; \fB::fido\fR is a typical mutt,
but his owners evidently take care of him, because he's had his shots.
.PP
\fINote:\fR If the type defines a constructor, it can specify a
different object-creation syntax.  See \fBCONSTRUCTORS\fR for more
information.
.SS "HOW CAN A CLIENT RETRIEVE AN OPTION'S VALUE?"
Retrieve option values using the \fBcget\fR method:
.PP
.CS

% spot cget -color
mottled
% fido cget -breed
mongrel
%

.CE
.PP
.SS "HOW CAN A CLIENT SET OPTIONS AFTER OBJECT CREATION?"
Any number of options may be set at one time using the
\fBconfigure\fR 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:
.PP
.CS

% fido configure -color dun -breed "Arctic Boar Hound"
% fido cget -color
dun
% fido cget -breed
Arctic Boar Hound

.CE
.PP
Alternatively, the \fBconfigurelist\fR method takes a list of
options and values; occasionally this is more convenient:
.PP
.CS

% set features [list -color dun -breed "Arctic Boar Hound"]
-color dun -breed {Arctic Boar Hound}
% fido configurelist $features
% fido cget -color
dun
% fido cget -breed
Arctic Boar Hound
%

.CE
.PP
In Tcl 8.5, the \fB*\fR keyword can be used with
\fBconfigure\fR in this case:
.PP
.CS

% set features [list -color dun -breed "Arctic Boar Hound"]
-color dun -breed {Arctic Boar Hound}
% fido configure {*}$features
% fido cget -color
dun
% fido cget -breed
Arctic Boar Hound
%

.CE
.PP
The results are the same.
.SS "HOW SHOULD AN INSTANCE METHOD ACCESS AN OPTION VALUE?"
There are two ways an instance method can set and retrieve an option's
value.  One is to use the \fBconfigure\fR and \fBcget\fR
methods, as shown below.
.PP
.CS

% snit::type dog {
    option -weight 10

    method gainWeight {} {
        set wt [$self cget -weight]
        incr wt
        $self configure -weight $wt
    }
}
::dog
% dog fido
::fido
% fido cget -weight
10
% fido gainWeight
% fido cget -weight
11
%

.CE
.PP
Alternatively, Snit provides a built-in array instance variable called
\fBoptions\fR.  The indices are the option names; the values are the
option values.  The method \fBgainWeight\fR can thus be rewritten as
follows:
.PP
.CS


    method gainWeight {} {
        incr options(-weight)
    }

.CE
.PP
As you can see, using the \fBoptions\fR variable involves considerably
less typing and is the usual way to do it.  But if you use
\fB-configuremethod\fR or \fB-cgetmethod\fR (described in the following
answers), you might wish to use the \fBconfigure\fR and
\fBcget\fR methods anyway, just so that any special processing you've







<

|
|
|
|

<












<

|
|
|
|

<














<





<












<





<









<





<






<








<






<








<









<

|
<
|
|
|
|
|










<








<
<
|
|
|
<







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
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
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
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
\fBsnit::widgetadaptor\fR objects, on the other hand, always do.
.SS "HOW DO I DEFINE AN OPTION?"
Options are defined in the type definition using the \fBoption\fR
statement.  Consider the following type, to be used in an application
that manages a list of dogs for a pet store:
.PP
.CS

snit::type dog {
option -breed -default mongrel
option -color -default brown
option -akc   -default 0
option -shots -default 0
}

.CE
.PP
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.
.PP
There are a number of options you can specify when defining an option;
if \fB-default\fR is the only one, you can omit the word
\fB-default\fR as follows:
.PP
.CS

snit::type dog {
option -breed mongrel
option -color brown
option -akc   0
option -shots 0
}

.CE
.PP
If no \fB-default\fR value is specified, the option's default value
will be the empty string (but see \fBTHE TK OPTION DATABASE\fR).
.PP
The Snit man page refers to options like these as "locally defined" options.
.SS "HOW CAN A CLIENT SET OPTIONS AT OBJECT CREATION?"
The normal convention is that the client may pass any number of
options and their values after the object's name at object creation.
For example, the \fB::dog\fR command defined in the previous answer can now
be used to create individual dogs.  Any or all of the options may be
set at creation time.
.PP
.CS

% dog spot -breed beagle -color "mottled" -akc 1 -shots 1
::spot
% dog fido -shots 1
::fido
%

.CE
.PP
So \fB::spot\fR is a pedigreed beagle; \fB::fido\fR is a typical mutt,
but his owners evidently take care of him, because he's had his shots.
.PP
\fINote:\fR If the type defines a constructor, it can specify a
different object-creation syntax.  See \fBCONSTRUCTORS\fR for more
information.
.SS "HOW CAN A CLIENT RETRIEVE AN OPTION'S VALUE?"
Retrieve option values using the \fBcget\fR method:
.PP
.CS

% spot cget -color
mottled
% fido cget -breed
mongrel
%

.CE
.PP
.SS "HOW CAN A CLIENT SET OPTIONS AFTER OBJECT CREATION?"
Any number of options may be set at one time using the
\fBconfigure\fR 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:
.PP
.CS

% fido configure -color dun -breed "Arctic Boar Hound"
% fido cget -color
dun
% fido cget -breed
Arctic Boar Hound

.CE
.PP
Alternatively, the \fBconfigurelist\fR method takes a list of
options and values; occasionally this is more convenient:
.PP
.CS

% set features [list -color dun -breed "Arctic Boar Hound"]
-color dun -breed {Arctic Boar Hound}
% fido configurelist $features
% fido cget -color
dun
% fido cget -breed
Arctic Boar Hound
%

.CE
.PP
In Tcl 8.5, the \fB*\fR keyword can be used with
\fBconfigure\fR in this case:
.PP
.CS

% set features [list -color dun -breed "Arctic Boar Hound"]
-color dun -breed {Arctic Boar Hound}
% fido configure {*}$features
% fido cget -color
dun
% fido cget -breed
Arctic Boar Hound
%

.CE
.PP
The results are the same.
.SS "HOW SHOULD AN INSTANCE METHOD ACCESS AN OPTION VALUE?"
There are two ways an instance method can set and retrieve an option's
value.  One is to use the \fBconfigure\fR and \fBcget\fR
methods, as shown below.
.PP
.CS

% snit::type dog {
option -weight 10

method gainWeight {} {
set wt [$self cget -weight]
incr wt
$self configure -weight $wt
}
}
::dog
% dog fido
::fido
% fido cget -weight
10
% fido gainWeight
% fido cget -weight
11
%

.CE
.PP
Alternatively, Snit provides a built-in array instance variable called
\fBoptions\fR.  The indices are the option names; the values are the
option values.  The method \fBgainWeight\fR can thus be rewritten as
follows:
.PP
.CS


method gainWeight {} {
incr options(-weight)
}

.CE
.PP
As you can see, using the \fBoptions\fR variable involves considerably
less typing and is the usual way to do it.  But if you use
\fB-configuremethod\fR or \fB-cgetmethod\fR (described in the following
answers), you might wish to use the \fBconfigure\fR and
\fBcget\fR methods anyway, just so that any special processing you've
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
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
breed; it might or might not have had its shots, and if not can have
them at a later time.  \fB-breed\fR should be read-only, but
\fB-shots\fR should not be.
.PP
.CS

% snit::type dog {
    option -breed -default mongrel -readonly yes
    option -shots -default no
}
::dog
% dog fido -breed retriever
::fido
% fido configure -shots yes
% fido configure -breed terrier
option -breed can only be set at instance creation
%

.CE
.PP
.SS "HOW CAN I CATCH ACCESSES TO AN OPTION'S VALUE?"
Define a \fB-cgetmethod\fR for the option.
.SS "WHAT IS A -CGETMETHOD?"
A \fB-cgetmethod\fR is a method that's called whenever the related
option's value is queried via the
\fBcget\fR 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.
.PP
Here's what the default behavior would look like if
written using a \fB-cgetmethod\fR:
.PP
.CS

snit::type dog {
    option -color -default brown -cgetmethod GetOption

    method GetOption {option} {
        return $options($option)
    }
}

.CE
.PP
Any instance method can be used, provided that it takes one argument,
the name of the option whose value is to be retrieved.
.SS "HOW CAN I CATCH CHANGES TO AN OPTION'S VALUE?"
Define a \fB-configuremethod\fR for the option.
.SS "WHAT IS A -CONFIGUREMETHOD?"
A \fB-configuremethod\fR is a method that's called whenever the
related option is given a new value via the \fBconfigure\fR or
\fBconfigurelist\fR 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.
.PP
Here's what the default configuration behavior would look like if
written using a \fB-configuremethod\fR:
.PP
.CS

snit::type dog {
    option -color -default brown -configuremethod SetOption

    method SetOption {option value} {
        set options($option) $value
    }
}

.CE
.PP
Any instance method can be used, provided that it takes two arguments,
the name of the option and the new value.
.PP
Note that if your method doesn't store the value in the \fBoptions\fR
array, the \fBoptions\fR array won't get updated.







<

|
|








<














<

|
<
|
|
|

<

















<

|
<
|
|
|

<







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
1453
1454
1455
1456

1457
1458

1459
1460
1461
1462

1463
1464
1465
1466
1467
1468
1469
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
breed; it might or might not have had its shots, and if not can have
them at a later time.  \fB-breed\fR should be read-only, but
\fB-shots\fR should not be.
.PP
.CS

% snit::type dog {
option -breed -default mongrel -readonly yes
option -shots -default no
}
::dog
% dog fido -breed retriever
::fido
% fido configure -shots yes
% fido configure -breed terrier
option -breed can only be set at instance creation
%

.CE
.PP
.SS "HOW CAN I CATCH ACCESSES TO AN OPTION'S VALUE?"
Define a \fB-cgetmethod\fR for the option.
.SS "WHAT IS A -CGETMETHOD?"
A \fB-cgetmethod\fR is a method that's called whenever the related
option's value is queried via the
\fBcget\fR 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.
.PP
Here's what the default behavior would look like if
written using a \fB-cgetmethod\fR:
.PP
.CS

snit::type dog {
option -color -default brown -cgetmethod GetOption

method GetOption {option} {
return $options($option)
}
}

.CE
.PP
Any instance method can be used, provided that it takes one argument,
the name of the option whose value is to be retrieved.
.SS "HOW CAN I CATCH CHANGES TO AN OPTION'S VALUE?"
Define a \fB-configuremethod\fR for the option.
.SS "WHAT IS A -CONFIGUREMETHOD?"
A \fB-configuremethod\fR is a method that's called whenever the
related option is given a new value via the \fBconfigure\fR or
\fBconfigurelist\fR 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.
.PP
Here's what the default configuration behavior would look like if
written using a \fB-configuremethod\fR:
.PP
.CS

snit::type dog {
option -color -default brown -configuremethod SetOption

method SetOption {option value} {
set options($option) $value
}
}

.CE
.PP
Any instance method can be used, provided that it takes two arguments,
the name of the option and the new value.
.PP
Note that if your method doesn't store the value in the \fBoptions\fR
array, the \fBoptions\fR array won't get updated.
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
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
an error if it isn't.  The \fB-validatemethod\fR, if any, is called
before the value is stored in the \fBoptions\fR array; in particular,
it's called before the \fB-configuremethod\fR, if any.
.PP
For example, suppose an option always takes a Boolean value.  You can
ensure that the value is in fact a valid Boolean like this:
.CS

% snit::type dog {
    option -shots -default no -validatemethod BooleanOption

    method BooleanOption {option value} {
        if {![string is boolean -strict $value]} {
            error "expected a boolean value, got \\"$value\\""
        }
    }
}
::dog
% dog fido
% fido configure -shots yes
% fido configure -shots NotABooleanValue
expected a boolean value, got "NotABooleanValue"
%

.CE
Note that the same \fB-validatemethod\fR can be used to validate any number
of boolean options.
.PP
Any method can be a \fB-validatemethod\fR provided that it takes
two arguments, the option name and the new option value.
.SH "TYPE VARIABLES"
.SS "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 \fIstatic member variable\fR is used for the same notion.
Type variables can be scalars or arrays.
.SS "HOW IS A SCALAR TYPE VARIABLE DEFINED?"
Scalar type variables are defined in the type definition using the
\fBtypevariable\fR statement.  You can simply name it, or you can
initialize it with a value:
.PP
.CS


snit::type mytype {
    # Define variable "greeting" and initialize it with "Howdy!"
    typevariable greeting "Howdy!"
}

.CE
.PP
Every object of type \fBmytype\fR now has access to a single variable
called \fBgreeting\fR.
.SS "HOW IS AN ARRAY-VALUED TYPE VARIABLE DEFINED?"
Array-valued type variables are also defined using the
\fBtypevariable\fR command; to initialize them, include the
\fB-array\fR option:
.PP
.CS

snit::type mytype {
    # Define typearray variable "greetings"
    typevariable greetings -array {
        formal "Good Evening"
        casual "Howdy!"
    }
}

.CE
.PP
.SS "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.







<

|
<
|
|
|
|
|







<


















<
<

|
|

<










<

|
|
|
|
|

<







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
1539
1540
1541
1542
1543
an error if it isn't.  The \fB-validatemethod\fR, if any, is called
before the value is stored in the \fBoptions\fR array; in particular,
it's called before the \fB-configuremethod\fR, if any.
.PP
For example, suppose an option always takes a Boolean value.  You can
ensure that the value is in fact a valid Boolean like this:
.CS

% snit::type dog {
option -shots -default no -validatemethod BooleanOption

method BooleanOption {option value} {
if {![string is boolean -strict $value]} {
error "expected a boolean value, got \\"$value\\""
}
}
}
::dog
% dog fido
% fido configure -shots yes
% fido configure -shots NotABooleanValue
expected a boolean value, got "NotABooleanValue"
%

.CE
Note that the same \fB-validatemethod\fR can be used to validate any number
of boolean options.
.PP
Any method can be a \fB-validatemethod\fR provided that it takes
two arguments, the option name and the new option value.
.SH "TYPE VARIABLES"
.SS "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 \fIstatic member variable\fR is used for the same notion.
Type variables can be scalars or arrays.
.SS "HOW IS A SCALAR TYPE VARIABLE DEFINED?"
Scalar type variables are defined in the type definition using the
\fBtypevariable\fR statement.  You can simply name it, or you can
initialize it with a value:
.PP
.CS


snit::type mytype {
# Define variable "greeting" and initialize it with "Howdy!"
typevariable greeting "Howdy!"
}

.CE
.PP
Every object of type \fBmytype\fR now has access to a single variable
called \fBgreeting\fR.
.SS "HOW IS AN ARRAY-VALUED TYPE VARIABLE DEFINED?"
Array-valued type variables are also defined using the
\fBtypevariable\fR command; to initialize them, include the
\fB-array\fR option:
.PP
.CS

snit::type mytype {
# Define typearray variable "greetings"
typevariable greetings -array {
formal "Good Evening"
casual "Howdy!"
}
}

.CE
.PP
.SS "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.
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
1727
1728
1729
1730
1731
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
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
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 \fBmytypevar\fR command:
.PP
.CS

snit::widget mywidget {
    typevariable labeltext ""

    constructor {args} {
        # ...

        label $win.label -textvariable [mytypevar labeltext]

        # ...
    }
}

.CE
.PP
.SS "HOW DO I MAKE A TYPE VARIABLE PUBLIC?"
There are two ways to do this.  The preferred way is to write a pair
of \fBTYPE METHODS\fR to set and query the type variable's value.
.PP
Type variables are stored in the type's namespace, which has
the same name as the type itself.  Thus, you can also
publicize the type variable's name in your
documentation so that clients can access it directly.  For example,
.PP
.CS

snit::type mytype {
    typevariable myvariable
}

set ::mytype::myvariable "New Value"

.CE
.PP
.SH "TYPE METHODS"
.SS "WHAT IS A TYPE METHOD?"
A type method is a procedure associated with the type itself rather
than with any specific instance of the type, and called as a
subcommand of the type command.
.SS "HOW DO I DEFINE A TYPE METHOD?"
Type methods are defined in the type definition using the
\fBtypemethod\fR statement:
.PP
.CS

snit::type dog {
    # List of pedigreed dogs
    typevariable pedigreed

    typemethod pedigreedDogs {} {
        return $pedigreed
    }
}

.CE
.PP
Suppose the \fBdog\fR type maintains a list of the names of the dogs
that have pedigrees.  The \fBpedigreedDogs\fR type method returns this
list.
.PP
The \fBtypemethod\fR statement looks just like a normal Tcl
\fBproc\fR, except that it appears in a \fBsnit::type\fR definition.
Notice that every type method gets an implicit argument called
\fBtype\fR, which contains the fully-qualified type name.
.SS "HOW DOES A CLIENT CALL A TYPE METHOD?"
The type method name becomes a subcommand of the type's command.  For
example, assuming that the constructor adds each pedigreed dog to the
list of \fBpedigreedDogs\fR,
.PP
.CS

snit::type dog {
    option -pedigreed 0

    # List of pedigreed dogs
    typevariable pedigreed

    typemethod pedigreedDogs {} {
        return $pedigreed
    }

    # ...
}

dog spot -pedigreed 1
dog fido

foreach dog [dog pedigreedDogs] { ... }

.CE
.PP
.SS "ARE THERE ANY LIMITATIONS ON TYPE METHOD NAMES?"
Not really, so long as you avoid the standard type method names:
\fBcreate\fR, \fBdestroy\fR, and \fBinfo\fR.
.SS "HOW DO I MAKE A TYPE METHOD PRIVATE?"
It's sometimes useful to define private type methods, that is, type







<

|
<
|
|
<
|
<
|
|

<












<

|

<

<












<

|
|
<
|
|
|

<
















<

|
<
|
|
<
|
|
|
<
|

<


<

<







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

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

1641
1642
1643
1644
1645
1646
1647
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 \fBmytypevar\fR command:
.PP
.CS

snit::widget mywidget {
typevariable labeltext ""

constructor {args} {
# ...

label $win.label -textvariable [mytypevar labeltext]

# ...
}
}

.CE
.PP
.SS "HOW DO I MAKE A TYPE VARIABLE PUBLIC?"
There are two ways to do this.  The preferred way is to write a pair
of \fBTYPE METHODS\fR to set and query the type variable's value.
.PP
Type variables are stored in the type's namespace, which has
the same name as the type itself.  Thus, you can also
publicize the type variable's name in your
documentation so that clients can access it directly.  For example,
.PP
.CS

snit::type mytype {
typevariable myvariable
}

set ::mytype::myvariable "New Value"

.CE
.PP
.SH "TYPE METHODS"
.SS "WHAT IS A TYPE METHOD?"
A type method is a procedure associated with the type itself rather
than with any specific instance of the type, and called as a
subcommand of the type command.
.SS "HOW DO I DEFINE A TYPE METHOD?"
Type methods are defined in the type definition using the
\fBtypemethod\fR statement:
.PP
.CS

snit::type dog {
# List of pedigreed dogs
typevariable pedigreed

typemethod pedigreedDogs {} {
return $pedigreed
}
}

.CE
.PP
Suppose the \fBdog\fR type maintains a list of the names of the dogs
that have pedigrees.  The \fBpedigreedDogs\fR type method returns this
list.
.PP
The \fBtypemethod\fR statement looks just like a normal Tcl
\fBproc\fR, except that it appears in a \fBsnit::type\fR definition.
Notice that every type method gets an implicit argument called
\fBtype\fR, which contains the fully-qualified type name.
.SS "HOW DOES A CLIENT CALL A TYPE METHOD?"
The type method name becomes a subcommand of the type's command.  For
example, assuming that the constructor adds each pedigreed dog to the
list of \fBpedigreedDogs\fR,
.PP
.CS

snit::type dog {
option -pedigreed 0

# List of pedigreed dogs
typevariable pedigreed

typemethod pedigreedDogs {} {
return $pedigreed
}

# ...
}

dog spot -pedigreed 1
dog fido

foreach dog [dog pedigreedDogs] { ... }

.CE
.PP
.SS "ARE THERE ANY LIMITATIONS ON TYPE METHOD NAMES?"
Not really, so long as you avoid the standard type method names:
\fBcreate\fR, \fBdestroy\fR, and \fBinfo\fR.
.SS "HOW DO I MAKE A TYPE METHOD PRIVATE?"
It's sometimes useful to define private type methods, that is, type
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
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
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
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
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
type methods should by convention avoid using the names of the
arguments implicitly defined for \fBINSTANCE METHODS\fR.
.SS "HOW DOES AN INSTANCE OR TYPE METHOD CALL A TYPE METHOD?"
If an instance or type method needs to call a type method, it should
use \fB$type\fR to do so:
.PP
.CS

snit::type dog {

    typemethod pedigreedDogs {} { ... }

    typemethod printPedigrees {} {
        foreach obj [$type pedigreedDogs] { ... }
    }
}

.CE
.PP
.SS "HOW DO I PASS A TYPE METHOD AS A CALLBACK?"
It's common in Tcl to pass a snippet of code to another object, for it
to call later.  Because types cannot be renamed, you can just
use the type name, or, if the callback is registered from within
a type method, \fBtype\fR.  For example, suppose we want to print a
list of pedigreed dogs when a Tk button is pushed:
.PP
.CS


button .btn -text "Pedigrees" -command [list dog printPedigrees]
pack .btn

.CE
Alternatively, from a method or type method you can use the
\fBmytypemethod\fR command, just as you would use \fBmymethod\fR
to define a callback command for \fBINSTANCE METHODS\fR.
.SS "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
\fBINSTANCE METHODS\fR for more.
.SH PROCS
.SS "WHAT IS A PROC?"
A Snit \fBproc\fR 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.
.SS "HOW DO I DEFINE A PROC?"
Procs are defined by including a \fBproc\fR statement in the type
definition:
.PP
.CS

snit::type mytype {
    # Pops and returns the first item from the list stored in the
    # listvar, updating the listvar
   proc pop {listvar} { ... }

   # ...
}

.CE
.PP
.SS "ARE THERE ANY LIMITATIONS ON PROC NAMES?"
Any name can be used, so long as it does not begin with \fBSnit_\fR;
names beginning with \fBSnit_\fR are reserved for Snit's own use.
However, the wise programmer will avoid \fBproc\fR names (\fBset\fR,
\fBlist\fR, \fBif\fR, etc.) that would shadow standard Tcl
command names.
.PP
\fBproc\fR names, being private, should begin with a capital letter according
to convention; however, as there are typically no public \fBproc\fRs
in the type's namespace it doesn't matter much either way.
.SS "HOW DOES A METHOD CALL A PROC?"
Just like it calls any Tcl command.  For example,
.PP
.CS

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]
    }
}

.CE
.PP
.SS "HOW CAN I PASS A PROC TO ANOTHER OBJECT AS A CALLBACK?"
The \fBmyproc\fR command returns a callback command for the
\fBproc\fR, just as \fBmymethod\fR does for a method.
.SH "TYPE CONSTRUCTORS"
.SS "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.
.PP
A type can have at most one type constructor.
.SS "HOW DO I DEFINE A TYPE CONSTRUCTOR?"
A type constructor is defined by using the \fBtypeconstructor\fR
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.
.PP
.CS

% snit::type mytype {
    typevariable lookupTable

    typeconstructor {
        array set lookupTable {key value...}
    }
}

.CE
.PP
.SH CONSTRUCTORS
.SS "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 \fBsnit::type\fR command's







<

<
|
<
|
|
|

<










<
<


<


















<

|
|
|
<
|

<
















<

|
|
|
<
|
<
|
|
|
|

<




















<

|
<
|
|
|

<







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
1727
1728
1729

1730
1731
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
1767
1768
1769
1770
1771
1772
type methods should by convention avoid using the names of the
arguments implicitly defined for \fBINSTANCE METHODS\fR.
.SS "HOW DOES AN INSTANCE OR TYPE METHOD CALL A TYPE METHOD?"
If an instance or type method needs to call a type method, it should
use \fB$type\fR to do so:
.PP
.CS

snit::type dog {

typemethod pedigreedDogs {} { ... }

typemethod printPedigrees {} {
foreach obj [$type pedigreedDogs] { ... }
}
}

.CE
.PP
.SS "HOW DO I PASS A TYPE METHOD AS A CALLBACK?"
It's common in Tcl to pass a snippet of code to another object, for it
to call later.  Because types cannot be renamed, you can just
use the type name, or, if the callback is registered from within
a type method, \fBtype\fR.  For example, suppose we want to print a
list of pedigreed dogs when a Tk button is pushed:
.PP
.CS


button .btn -text "Pedigrees" -command [list dog printPedigrees]
pack .btn

.CE
Alternatively, from a method or type method you can use the
\fBmytypemethod\fR command, just as you would use \fBmymethod\fR
to define a callback command for \fBINSTANCE METHODS\fR.
.SS "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
\fBINSTANCE METHODS\fR for more.
.SH PROCS
.SS "WHAT IS A PROC?"
A Snit \fBproc\fR 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.
.SS "HOW DO I DEFINE A PROC?"
Procs are defined by including a \fBproc\fR statement in the type
definition:
.PP
.CS

snit::type mytype {
# Pops and returns the first item from the list stored in the
# listvar, updating the listvar
proc pop {listvar} { ... }

# ...
}

.CE
.PP
.SS "ARE THERE ANY LIMITATIONS ON PROC NAMES?"
Any name can be used, so long as it does not begin with \fBSnit_\fR;
names beginning with \fBSnit_\fR are reserved for Snit's own use.
However, the wise programmer will avoid \fBproc\fR names (\fBset\fR,
\fBlist\fR, \fBif\fR, etc.) that would shadow standard Tcl
command names.
.PP
\fBproc\fR names, being private, should begin with a capital letter according
to convention; however, as there are typically no public \fBproc\fRs
in the type's namespace it doesn't matter much either way.
.SS "HOW DOES A METHOD CALL A PROC?"
Just like it calls any Tcl command.  For example,
.PP
.CS

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]
}
}

.CE
.PP
.SS "HOW CAN I PASS A PROC TO ANOTHER OBJECT AS A CALLBACK?"
The \fBmyproc\fR command returns a callback command for the
\fBproc\fR, just as \fBmymethod\fR does for a method.
.SH "TYPE CONSTRUCTORS"
.SS "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.
.PP
A type can have at most one type constructor.
.SS "HOW DO I DEFINE A TYPE CONSTRUCTOR?"
A type constructor is defined by using the \fBtypeconstructor\fR
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.
.PP
.CS

% snit::type mytype {
typevariable lookupTable

typeconstructor {
array set lookupTable {key value...}
}
}

.CE
.PP
.SH CONSTRUCTORS
.SS "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 \fBsnit::type\fR command's
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
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.
.PP
.CS

% snit::type dog {
    option -akc 0

    typevariable akcList {}

    constructor {args} {
        $self configurelist $args

        if {$options(-akc)} {
            lappend akcList $self
        }
    }

    typemethod akclist {} {
        return $akcList
    }
}
::dog
% dog spot -akc 1
::spot
% dog fido
::fido
% dog akclist
::spot
%

.CE
.PP
.SS "WHAT DOES THE DEFAULT CONSTRUCTOR DO?"
If you don't provide a constructor explicitly, you get the default
constructor, which is identical to the explicitly-defined
constructor shown here:
.PP
.CS

snit::type dog {
    constructor {args} {
        $self configurelist $args
    }
}

.CE
.PP
When the constructor is called, \fBargs\fR will be set to the list of
arguments that follow the object's name.  The constructor is allowed
to interpret this list any way it chooses; the normal convention is
to assume that it's a list of option names and values, as shown in the
example above.  If you simply want to save the option values, you
should use the \fBconfigurelist\fR method, as shown.
.SS "CAN I CHOOSE A DIFFERENT SET OF ARGUMENTS FOR THE CONSTRUCTOR?"
Yes, you can.  For example, suppose we wanted to be sure that the
breed was explicitly stated for every dog at creation time, and
couldn't be changed thereafter.  One way to do that is as follows:
.PP
.CS

% snit::type dog {
    variable breed

    option -color brown
    option -akc 0

    constructor {theBreed args} {
        set breed $theBreed
        $self configurelist $args
    }

    method breed {} { return $breed }
}
::dog
% dog spot dalmatian -color spotted -akc 1
::spot
% spot breed
dalmatian

.CE
.PP
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
\fBCOMPONENTS\fR using the standard creation syntax.
.SS "ARE THERE ANY LIMITATIONS ON CONSTRUCTOR ARGUMENTS?"







<

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









<








<

|
|
|

<














<

|
<
|
|
<
|
|
|
|
<
|






<







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
1837

1838
1839

1840
1841
1842
1843

1844
1845
1846
1847
1848
1849
1850

1851
1852
1853
1854
1855
1856
1857
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.
.PP
.CS

% snit::type dog {
option -akc 0

typevariable akcList {}

constructor {args} {
$self configurelist $args

if {$options(-akc)} {
lappend akcList $self
}
}

typemethod akclist {} {
return $akcList
}
}
::dog
% dog spot -akc 1
::spot
% dog fido
::fido
% dog akclist
::spot
%

.CE
.PP
.SS "WHAT DOES THE DEFAULT CONSTRUCTOR DO?"
If you don't provide a constructor explicitly, you get the default
constructor, which is identical to the explicitly-defined
constructor shown here:
.PP
.CS

snit::type dog {
constructor {args} {
$self configurelist $args
}
}

.CE
.PP
When the constructor is called, \fBargs\fR will be set to the list of
arguments that follow the object's name.  The constructor is allowed
to interpret this list any way it chooses; the normal convention is
to assume that it's a list of option names and values, as shown in the
example above.  If you simply want to save the option values, you
should use the \fBconfigurelist\fR method, as shown.
.SS "CAN I CHOOSE A DIFFERENT SET OF ARGUMENTS FOR THE CONSTRUCTOR?"
Yes, you can.  For example, suppose we wanted to be sure that the
breed was explicitly stated for every dog at creation time, and
couldn't be changed thereafter.  One way to do that is as follows:
.PP
.CS

% snit::type dog {
variable breed

option -color brown
option -akc 0

constructor {theBreed args} {
set breed $theBreed
$self configurelist $args
}

method breed {} { return $breed }
}
::dog
% dog spot dalmatian -color spotted -akc 1
::spot
% spot breed
dalmatian

.CE
.PP
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
\fBCOMPONENTS\fR using the standard creation syntax.
.SS "ARE THERE ANY LIMITATIONS ON CONSTRUCTOR ARGUMENTS?"
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
Destructors are defined by using the \fBdestructor\fR statement in the
type definition.
.PP
Suppose we're maintaining a list of pedigreed dogs;
then we'll want to remove dogs from it when they are destroyed.
.PP
.CS

snit::type dog {
    option -akc 0

    typevariable akcList {}

    constructor {args} {
        $self configurelist $args

        if {$options(-akc)} {
            lappend akcList $self
        }
    }

    destructor {
        set ndx [lsearch $akcList $self]

        if {$ndx != -1} {
            set akcList [lreplace $akcList $ndx $ndx]
        }
    }

    typemethod akclist {} {
        return $akcList
    }
}

.CE
.PP
.SS "ARE THERE ANY LIMITATIONS ON DESTRUCTOR ARGUMENTS?"
Yes; a destructor has no explicit arguments.
.SS "WHAT IMPLICIT ARGUMENTS ARE PASSED TO THE DESTRUCTOR?"
The destructor gets the same implicit arguments that are passed to
\fBINSTANCE METHODS\fR: \fBtype\fR, \fBselfns\fR, \fBwin\fR, and







<

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

<







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
1902
1903
1904
1905
1906
1907
Destructors are defined by using the \fBdestructor\fR statement in the
type definition.
.PP
Suppose we're maintaining a list of pedigreed dogs;
then we'll want to remove dogs from it when they are destroyed.
.PP
.CS

snit::type dog {
option -akc 0

typevariable akcList {}

constructor {args} {
$self configurelist $args

if {$options(-akc)} {
lappend akcList $self
}
}

destructor {
set ndx [lsearch $akcList $self]

if {$ndx != -1} {
set akcList [lreplace $akcList $ndx $ndx]
}
}

typemethod akclist {} {
return $akcList
}
}

.CE
.PP
.SS "ARE THERE ANY LIMITATIONS ON DESTRUCTOR ARGUMENTS?"
Yes; a destructor has no explicit arguments.
.SS "WHAT IMPLICIT ARGUMENTS ARE PASSED TO THE DESTRUCTOR?"
The destructor gets the same implicit arguments that are passed to
\fBINSTANCE METHODS\fR: \fBtype\fR, \fBselfns\fR, \fBwin\fR, and
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
.PP
For example, a \fBdog\fR might create a \fBtail\fR 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 \fBtail\fR to destroy.  The simplest solution is
generally to catch and ignore any errors while destroying components.
.CS

snit::type dog {
    component tail

    constructor {args} {
        $self configurelist $args

        set tail [tail %AUTO%]
    }

    destructor {
        catch {$tail destroy}
    }
}

.CE
.SH COMPONENTS
.SS "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.







<

|
<
|
|
<
|
|
<
|
|
|

<







1928
1929
1930
1931
1932
1933
1934

1935
1936

1937
1938

1939
1940

1941
1942
1943
1944

1945
1946
1947
1948
1949
1950
1951
.PP
For example, a \fBdog\fR might create a \fBtail\fR 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 \fBtail\fR to destroy.  The simplest solution is
generally to catch and ignore any errors while destroying components.
.CS

snit::type dog {
component tail

constructor {args} {
$self configurelist $args

set tail [tail %AUTO%]
}

destructor {
catch {$tail destroy}
}
}

.CE
.SH COMPONENTS
.SS "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.
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
statement declares an \fIinstance variable\fR which is used to
store the component's command name when the component is created.
.PP
For example, suppose your \fBdog\fR object
creates a \fBtail\fR object (the better to wag with, no doubt):
.PP
.CS

snit::type dog {
    component mytail

    constructor {args} {
        # Create and save the component's command
        set mytail [tail %AUTO% -partof $self]
        $self configurelist $args
    }

    method wag {} {
        $mytail wag
    }
}

.CE
.PP
As shown here, it doesn't matter what the \fBtail\fR object's real
name is; the \fBdog\fR object refers to it by its component name.
.PP
The above example shows one way to delegate the \fBwag\fR method to
the \fBmytail\fR component; see \fBDELEGATION\fR for an easier way.







<

|
<
|
|
|
|
|
<
|
|
|

<







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
statement declares an \fIinstance variable\fR which is used to
store the component's command name when the component is created.
.PP
For example, suppose your \fBdog\fR object
creates a \fBtail\fR object (the better to wag with, no doubt):
.PP
.CS

snit::type dog {
component mytail

constructor {args} {
# Create and save the component's command
set mytail [tail %AUTO% -partof $self]
$self configurelist $args
}

method wag {} {
$mytail wag
}
}

.CE
.PP
As shown here, it doesn't matter what the \fBtail\fR object's real
name is; the \fBdog\fR object refers to it by its component name.
.PP
The above example shows one way to delegate the \fBwag\fR method to
the \fBmytail\fR component; see \fBDELEGATION\fR for an easier way.
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
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
.PP
As stated above, a component is an object to
which our object can delegate methods or options.  Under this
definition, our object will usually create its component objects,
but not necessarily.  Consider the following: a dog object has a tail
component; but tail knows that it's part of the dog:
.CS

snit::type dog {
    component mytail

    constructor {args} {
        set mytail [tail %AUTO% -partof $self]
        $self configurelist $args
    }

    destructor {
        catch {$mytail destroy}
    }

    delegate method wagtail to mytail as wag

    method bark {} {
        return "$self barked."
    }
}

 snit::type tail {
     component mydog
     option -partof -readonly yes

     constructor {args} {
         $self configurelist $args
         set mydog $options(-partof)
     }

     method wag {} {
         return "Wag, wag."
     }

     method pull {} {
         $mydog bark
     }
 }

.CE
Thus, if you ask a dog to wag its tail, it tells its tail to wag;
and if you pull the dog's tail, the tail tells the dog to bark.  In
this scenario, the tail is a component of the dog, and the dog is a
component of the tail, but the dog owns the tail and not the other way
around.
.SS "WHAT DOES THE INSTALL COMMAND DO?"
The \fBinstall\fR command creates an owned component using a specified
command, and assigns the result to the component's instance variable.
For example:
.CS

snit::type dog {
    component mytail

    constructor {args} {
        # set mytail [tail %AUTO% -partof $self]
        install mytail using tail %AUTO% -partof $self
        $self configurelist $args
    }
}

.CE
In a \fBsnit::type\fR's code, the \fBinstall\fR
command shown above is equivalent to the \fBset mytail\fR command
that's commented out.  In a \fBsnit::widget\fR's or
\fBsnit::widgetadaptor\fR's, code, however, the
\fBinstall\fR command also queries \fBTHE TK OPTION DATABASE\fR
and initializes the new component's options accordingly.  For consistency,







<

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

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











<

|
<
|
|
|
|
|

<







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
.PP
As stated above, a component is an object to
which our object can delegate methods or options.  Under this
definition, our object will usually create its component objects,
but not necessarily.  Consider the following: a dog object has a tail
component; but tail knows that it's part of the dog:
.CS

snit::type dog {
component mytail

constructor {args} {
set mytail [tail %AUTO% -partof $self]
$self configurelist $args
}

destructor {
catch {$mytail destroy}
}

delegate method wagtail to mytail as wag

method bark {} {
return "$self barked."
}
}

snit::type tail {
component mydog
option -partof -readonly yes

constructor {args} {
$self configurelist $args
set mydog $options(-partof)
}

method wag {} {
return "Wag, wag."
}

method pull {} {
$mydog bark
}
}

.CE
Thus, if you ask a dog to wag its tail, it tells its tail to wag;
and if you pull the dog's tail, the tail tells the dog to bark.  In
this scenario, the tail is a component of the dog, and the dog is a
component of the tail, but the dog owns the tail and not the other way
around.
.SS "WHAT DOES THE INSTALL COMMAND DO?"
The \fBinstall\fR command creates an owned component using a specified
command, and assigns the result to the component's instance variable.
For example:
.CS

snit::type dog {
component mytail

constructor {args} {
# set mytail [tail %AUTO% -partof $self]
install mytail using tail %AUTO% -partof $self
$self configurelist $args
}
}

.CE
In a \fBsnit::type\fR's code, the \fBinstall\fR
command shown above is equivalent to the \fBset mytail\fR command
that's commented out.  In a \fBsnit::widget\fR's or
\fBsnit::widgetadaptor\fR's, code, however, the
\fBinstall\fR command also queries \fBTHE TK OPTION DATABASE\fR
and initializes the new component's options accordingly.  For consistency,
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
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
fully qualified names.
.PP
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:
.PP
.CS

snit::type tail { ... }

snit::type dog {
    delegate method wag to mytail

    constructor {} {
        install mytail using tail mytail
    }
}

.CE
.PP
This code uses the component name, \fBmytail\fR, as the component object
name.  This is not good, and here's why: Snit instance code executes
in the Snit type's namespace.  In this case, the \fBmytail\fR component is
created in the \fB::dog::\fR namespace, and will thus have the name
\fB::dog::mytail\fR.
.PP
Now, suppose you create two dogs.  Both dogs will attempt to
create a tail called \fB::dog::mytail\fR.  The first will succeed,
and the second will fail, since Snit won't let you create an object if
its name is already a command.  Here are two ways to avoid this situation:
.PP
First, if the component type is a \fBsnit::type\fR you can
specify \fB%AUTO%\fR as its name, and be guaranteed to get a unique name.
This is the safest thing to do:
.PP
.CS


    install mytail using tail %AUTO%

.CE
.PP
If the component type isn't a \fBsnit::type\fR you can create
the component in the object's instance namespace:
.PP
.CS


    install mytail using tail ${selfns}::mytail

.CE
.PP
Make sure you pick a unique name within the instance namespace.
.SS "MUST I DESTROY THE COMPONENTS I OWN?"
That depends.  When a parent widget is destroyed, all child widgets
are destroyed automatically. Thus, if your object is a \fBsnit::widget\fR
or \fBsnit::widgetadaptor\fR you don't need to destroy any components







<

<

|
<
|
|
|

<


















<
<
|
<






<
<
|
<







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
fully qualified names.
.PP
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:
.PP
.CS

snit::type tail { ... }

snit::type dog {
delegate method wag to mytail

constructor {} {
install mytail using tail mytail
}
}

.CE
.PP
This code uses the component name, \fBmytail\fR, as the component object
name.  This is not good, and here's why: Snit instance code executes
in the Snit type's namespace.  In this case, the \fBmytail\fR component is
created in the \fB::dog::\fR namespace, and will thus have the name
\fB::dog::mytail\fR.
.PP
Now, suppose you create two dogs.  Both dogs will attempt to
create a tail called \fB::dog::mytail\fR.  The first will succeed,
and the second will fail, since Snit won't let you create an object if
its name is already a command.  Here are two ways to avoid this situation:
.PP
First, if the component type is a \fBsnit::type\fR you can
specify \fB%AUTO%\fR as its name, and be guaranteed to get a unique name.
This is the safest thing to do:
.PP
.CS


install mytail using tail %AUTO%

.CE
.PP
If the component type isn't a \fBsnit::type\fR you can create
the component in the object's instance namespace:
.PP
.CS


install mytail using tail ${selfns}::mytail

.CE
.PP
Make sure you pick a unique name within the instance namespace.
.SS "MUST I DESTROY THE COMPONENTS I OWN?"
That depends.  When a parent widget is destroyed, all child widgets
are destroyed automatically. Thus, if your object is a \fBsnit::widget\fR
or \fBsnit::widgetadaptor\fR you don't need to destroy any components
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
command.
.PP
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:
.PP
.CS

snit::widget combobox {
     component listbox -public listbox

     constructor {args} {
         install listbox using listbox $win.listbox ....
     }
}

combobox .mycombo
.mycombo listbox configure -width 30

.CE
.PP
Your comobox widget, \fB.mycombo\fR, now has a \fBlistbox\fR method
which has all of the same subcommands as the listbox widget itself.
Thus, the above code sets the listbox component's width to 30.
.PP
Usually you'll let the method name be the same as the component name;







<

|
<
|
|
|

<

|
<







2154
2155
2156
2157
2158
2159
2160

2161
2162

2163
2164
2165
2166

2167
2168

2169
2170
2171
2172
2173
2174
2175
command.
.PP
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:
.PP
.CS

snit::widget combobox {
component listbox -public listbox

constructor {args} {
install listbox using listbox $win.listbox ....
}
}

combobox .mycombo
\.mycombo listbox configure -width 30

.CE
.PP
Your comobox widget, \fB.mycombo\fR, now has a \fBlistbox\fR method
which has all of the same subcommands as the listbox widget itself.
Thus, the above code sets the listbox component's width to 30.
.PP
Usually you'll let the method name be the same as the component name;
2407
2408
2409
2410
2411
2412
2413
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
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
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
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
2605
takes the same options (\fB-inherit\fR and \fB-public\fR) as the
\fBcomponent\fR statement does, and defines a type variable to hold
the type component's object command.
.PP
Suppose in your model you've got many dogs, but only one
veterinarian.  You might make the veterinarian a type component.
.CS

snit::type veterinarian { ... }

snit::type dog {
    typecomponent vet

    # ...
}

.CE
.SS "HOW DO I INSTALL A TYPE COMPONENT?"
Just use the \fBset\fR command to assign the component's object
command to the type component.  Because types
(even \fBsnit::widget\fR types) are not widgets, and do not have
options anyway, the extra features of the \fBinstall\fR command are
not needed.
.PP
You'll usually install type components in the type constructor, as
shown here:
.CS

snit::type veterinarian { ... }

snit::type dog {
    typecomponent vet

    typeconstructor {
        set vet [veterinarian %AUTO%]
    }
}

.CE
.SS "ARE THERE ANY LIMITATIONS ON TYPE COMPONENT NAMES?"
Yes, the same as on \fBINSTANCE VARIABLES\fR,
\fBTYPE VARIABLES\fR, and normal \fBCOMPONENTS\fR.
.SH DELEGATION
.SS "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 \fBdog\fR object can delegate its \fBwag\fR method and its
\fB-taillength\fR option to its \fBtail\fR component.
.PP
.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
    }

    method wag {} {
        $mytail wag
    }

    constructor {args} {
        install mytail using tail %AUTO% -partof $self
        $self configurelist $args
    }

}

.CE
.PP
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.
.PP
Note that the constructor calls the \fBconfigurelist\fR method
\fBafter\fR it creates its \fBtail\fR; otherwise,
if \fB-taillength\fR appeared in the list of \fBargs\fR we'd get an
error.
.SS "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 \fBdelegate\fR statement in the type definition.
(See \fBCOMPONENTS\fR and \fBTYPE COMPONENTS\fR
for more information about component names.)
.PP
For example, here's a much better way to delegate the \fBdog\fR
object's \fBwag\fR method:
.PP
.CS

% snit::type dog {
    delegate method wag to mytail

    constructor {} {
        install mytail using tail %AUTO%
    }
}
::dog
% snit::type tail {
    method wag {} { return "Wag, wag, wag."}
}
::tail
% dog spot
::spot
% spot wag
Wag, wag, wag.

.CE
.PP
This code has the same effect as the code shown under the previous
question: when a \fBdog\fR's \fBwag\fR method is called, the call and
its arguments are passed along automatically to the \fBtail\fR object.
.PP
Note that when a component is mentioned in a \fBdelegate\fR statement,
the component's instance variable is defined implicitly.  However,
it's still good practice to declare it explicitly using the
\fBcomponent\fR statement.
.PP
Note also that you can define a method name using the \fBmethod\fR
statement, or you can define it using \fBdelegate\fR; you can't do
both.
.SS "CAN I DELEGATE TO A METHOD WITH A DIFFERENT NAME?"
Suppose you wanted to delegate the \fBdog\fR's \fBwagtail\fR method to
the \fBtail\fR's \fBwag\fR method.  After all you wag the tail, not
the dog.  It's easily done:
.PP
.CS

snit::type dog {
    delegate method wagtail to mytail as wag

    constructor {args} {
        install mytail using tail %AUTO% -partof $self
        $self configurelist $args
    }
}

.CE
.PP
.SS "CAN I DELEGATE TO A METHOD WITH ADDITIONAL ARGUMENTS?"
Suppose the \fBtail\fR's \fBwag\fR method takes as an argument the
number of times the tail should be wagged.  You want to delegate the
\fBdog\fR's \fBwagtail\fR method to the \fBtail\fR's \fBwag\fR
method, specifying that the tail should be wagged exactly three times.
This is easily done, too:
.PP
.CS

snit::type dog {
    delegate method wagtail to mytail as {wag 3}
    # ...
}

snit::type tail {
    method wag {count} {
        return [string repeat "Wag " $count]
    }
    # ...
}

.CE
.PP
.SS "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 \fBdelegate\fR statement's \fBusing\fR clause.
.PP
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, \fBsaverec\fR
saves a record.  If you let the record ID be the name of the dog
object, you can delegate the dog's \fBsave\fR method to the
\fBsaverec\fR command as follows:
.CS

snit::type dog {
    delegate method save using {saverec %s}
}

.CE
The \fB%s\fR is replaced with the instance name when the
\fBsave\fR method is called; any additional arguments are the
appended to the resulting command.
.PP
The \fBusing\fR clause understands a number of other %-conversions;
in addition to the instance name, you can substitute in the method







<

<

|
<
|

<











<

<

|
<
|
|
|

<













<

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




















<

|
<
|
|
|



|






<




















<

|
<
|
|
|
|

<










<

|
|

<

|
|
|
|

<



















<

|

<







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
2226
2227
2228
2229
2230
2231
2232

2233
2234

2235


2236
2237
2238

2239
2240
2241

2242
2243
2244

2245
2246
2247
2248
2249


2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
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
2319
2320
2321

2322
2323
2324
2325

2326
2327
2328
2329
2330
2331

2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350

2351
2352
2353

2354
2355
2356
2357
2358
2359
2360
takes the same options (\fB-inherit\fR and \fB-public\fR) as the
\fBcomponent\fR statement does, and defines a type variable to hold
the type component's object command.
.PP
Suppose in your model you've got many dogs, but only one
veterinarian.  You might make the veterinarian a type component.
.CS

snit::type veterinarian { ... }

snit::type dog {
typecomponent vet

# ...
}

.CE
.SS "HOW DO I INSTALL A TYPE COMPONENT?"
Just use the \fBset\fR command to assign the component's object
command to the type component.  Because types
(even \fBsnit::widget\fR types) are not widgets, and do not have
options anyway, the extra features of the \fBinstall\fR command are
not needed.
.PP
You'll usually install type components in the type constructor, as
shown here:
.CS

snit::type veterinarian { ... }

snit::type dog {
typecomponent vet

typeconstructor {
set vet [veterinarian %AUTO%]
}
}

.CE
.SS "ARE THERE ANY LIMITATIONS ON TYPE COMPONENT NAMES?"
Yes, the same as on \fBINSTANCE VARIABLES\fR,
\fBTYPE VARIABLES\fR, and normal \fBCOMPONENTS\fR.
.SH DELEGATION
.SS "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 \fBdog\fR object can delegate its \fBwag\fR method and its
\fB-taillength\fR option to its \fBtail\fR component.
.PP
.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
}

method wag {} {
$mytail wag
}

constructor {args} {
install mytail using tail %AUTO% -partof $self
$self configurelist $args
}
}


.CE
.PP
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.
.PP
Note that the constructor calls the \fBconfigurelist\fR method
\fBafter\fR it creates its \fBtail\fR; otherwise,
if \fB-taillength\fR appeared in the list of \fBargs\fR we'd get an
error.
.SS "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 \fBdelegate\fR statement in the type definition.
(See \fBCOMPONENTS\fR and \fBTYPE COMPONENTS\fR
for more information about component names.)
.PP
For example, here's a much better way to delegate the \fBdog\fR
object's \fBwag\fR method:
.PP
.CS

% snit::type dog {
delegate method wag to mytail

constructor {} {
install mytail using tail %AUTO%
}
}
::dog
% snit::type tail {
method wag {} { return "Wag, wag, wag."}
}
::tail
% dog spot
::spot
% spot wag
Wag, wag, wag.

.CE
.PP
This code has the same effect as the code shown under the previous
question: when a \fBdog\fR's \fBwag\fR method is called, the call and
its arguments are passed along automatically to the \fBtail\fR object.
.PP
Note that when a component is mentioned in a \fBdelegate\fR statement,
the component's instance variable is defined implicitly.  However,
it's still good practice to declare it explicitly using the
\fBcomponent\fR statement.
.PP
Note also that you can define a method name using the \fBmethod\fR
statement, or you can define it using \fBdelegate\fR; you can't do
both.
.SS "CAN I DELEGATE TO A METHOD WITH A DIFFERENT NAME?"
Suppose you wanted to delegate the \fBdog\fR's \fBwagtail\fR method to
the \fBtail\fR's \fBwag\fR method.  After all you wag the tail, not
the dog.  It's easily done:
.PP
.CS

snit::type dog {
delegate method wagtail to mytail as wag

constructor {args} {
install mytail using tail %AUTO% -partof $self
$self configurelist $args
}
}

.CE
.PP
.SS "CAN I DELEGATE TO A METHOD WITH ADDITIONAL ARGUMENTS?"
Suppose the \fBtail\fR's \fBwag\fR method takes as an argument the
number of times the tail should be wagged.  You want to delegate the
\fBdog\fR's \fBwagtail\fR method to the \fBtail\fR's \fBwag\fR
method, specifying that the tail should be wagged exactly three times.
This is easily done, too:
.PP
.CS

snit::type dog {
delegate method wagtail to mytail as {wag 3}
# ...
}

snit::type tail {
method wag {count} {
return [string repeat "Wag " $count]
}
# ...
}

.CE
.PP
.SS "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 \fBdelegate\fR statement's \fBusing\fR clause.
.PP
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, \fBsaverec\fR
saves a record.  If you let the record ID be the name of the dog
object, you can delegate the dog's \fBsave\fR method to the
\fBsaverec\fR command as follows:
.CS

snit::type dog {
delegate method save using {saverec %s}
}

.CE
The \fB%s\fR is replaced with the instance name when the
\fBsave\fR method is called; any additional arguments are the
appended to the resulting command.
.PP
The \fBusing\fR clause understands a number of other %-conversions;
in addition to the instance name, you can substitute in the method
2625
2626
2627
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
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
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
2717
2718
2719
2720
The first question in this section (see \fBDELEGATION\fR) shows
one way to delegate an option to a component; but this pattern occurs
often enough that Snit makes it easy.  For example, every \fBtail\fR
object has a \fB-length\fR option; we want to allow the creator of
a \fBdog\fR object to set the tail's length.  We can do this:
.PP
.CS

% snit::type dog {
    delegate option -length to mytail

    constructor {args} {
        install mytail using tail %AUTO% -partof $self
        $self configurelist $args
    }
}
::dog
% snit::type tail {
    option -partof
    option -length 5
}
::tail
% dog spot -length 7
::spot
% spot cget -length
7

.CE
.PP
This produces nearly the same result as the \fB-configuremethod\fR and
\fB-cgetmethod\fR shown under the first question in this
section: whenever a \fBdog\fR object's \fB-length\fR option is set
or retrieved, the underlying \fBtail\fR object's option is set or
retrieved in turn.
.PP
Note that you can define an option name using the \fBoption\fR
statement, or you can define it using \fBdelegate\fR; you can't do
both.
.SS "CAN I DELEGATE TO AN OPTION WITH A DIFFERENT NAME?"
In the previous answer we delegated the \fBdog\fR's \fB-length\fR
option down to its \fBtail\fR.  This is, of course, wrong.  The dog
has a length, and the tail has a length, and they are different.  What
we'd really like to do is give the \fBdog\fR a \fB-taillength\fR
option, but delegate it to the \fBtail\fR's \fB-length\fR option:
.PP
.CS

snit::type dog {
    delegate option -taillength to mytail as -length

    constructor {args} {
        set mytail [tail %AUTO% -partof $self]
        $self configurelist $args
    }
}

.CE
.PP
.SS "HOW CAN I DELEGATE ANY UNRECOGNIZED METHOD OR OPTION TO A COMPONENT OBJECT?"
It may happen that a Snit object gets most of its behavior from one of
its components.  This often happens with \fBsnit::widgetadaptors\fR,
for example, where we wish to slightly the modify the behavior of an
existing widget.  To carry on with our \fBdog\fR example, however, suppose
that we have a \fBsnit::type\fR called \fBanimal\fR that implements a
variety of animal behaviors--moving, eating, sleeping, and so forth.
We want our \fBdog\fR objects to inherit these same behaviors, while
adding dog-like behaviors of its own.
Here's how we can give a \fBdog\fR methods and options of its own
while delegating all other methods and options to its \fBanimal\fR
component:
.PP
.CS

snit::type dog {
    delegate option * to animal
    delegate method * to animal

    option -akc 0

    constructor {args} {
        install animal using animal %AUTO% -name $self
        $self configurelist $args
    }

    method wag {} {
        return "$self wags its tail"
    }
}

.CE
.PP
That's it.  A \fBdog\fR is now an \fBanimal\fR that has a
\fB-akc\fR option and can \fBwag\fR its tail.
.PP
Note that we don't need to specify the full list of method names or
option names that \fBanimal\fR will receive.







<

|
<
|
|
|
|



|
|






<



















<

|
<
|
|
|
|

<
















<

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

<







2380
2381
2382
2383
2384
2385
2386

2387
2388

2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403

2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
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
The first question in this section (see \fBDELEGATION\fR) shows
one way to delegate an option to a component; but this pattern occurs
often enough that Snit makes it easy.  For example, every \fBtail\fR
object has a \fB-length\fR option; we want to allow the creator of
a \fBdog\fR object to set the tail's length.  We can do this:
.PP
.CS

% snit::type dog {
delegate option -length to mytail

constructor {args} {
install mytail using tail %AUTO% -partof $self
$self configurelist $args
}
}
::dog
% snit::type tail {
option -partof
option -length 5
}
::tail
% dog spot -length 7
::spot
% spot cget -length
7

.CE
.PP
This produces nearly the same result as the \fB-configuremethod\fR and
\fB-cgetmethod\fR shown under the first question in this
section: whenever a \fBdog\fR object's \fB-length\fR option is set
or retrieved, the underlying \fBtail\fR object's option is set or
retrieved in turn.
.PP
Note that you can define an option name using the \fBoption\fR
statement, or you can define it using \fBdelegate\fR; you can't do
both.
.SS "CAN I DELEGATE TO AN OPTION WITH A DIFFERENT NAME?"
In the previous answer we delegated the \fBdog\fR's \fB-length\fR
option down to its \fBtail\fR.  This is, of course, wrong.  The dog
has a length, and the tail has a length, and they are different.  What
we'd really like to do is give the \fBdog\fR a \fB-taillength\fR
option, but delegate it to the \fBtail\fR's \fB-length\fR option:
.PP
.CS

snit::type dog {
delegate option -taillength to mytail as -length

constructor {args} {
set mytail [tail %AUTO% -partof $self]
$self configurelist $args
}
}

.CE
.PP
.SS "HOW CAN I DELEGATE ANY UNRECOGNIZED METHOD OR OPTION TO A COMPONENT OBJECT?"
It may happen that a Snit object gets most of its behavior from one of
its components.  This often happens with \fBsnit::widgetadaptors\fR,
for example, where we wish to slightly the modify the behavior of an
existing widget.  To carry on with our \fBdog\fR example, however, suppose
that we have a \fBsnit::type\fR called \fBanimal\fR that implements a
variety of animal behaviors--moving, eating, sleeping, and so forth.
We want our \fBdog\fR objects to inherit these same behaviors, while
adding dog-like behaviors of its own.
Here's how we can give a \fBdog\fR methods and options of its own
while delegating all other methods and options to its \fBanimal\fR
component:
.PP
.CS

snit::type dog {
delegate option * to animal
delegate method * to animal

option -akc 0

constructor {args} {
install animal using animal %AUTO% -name $self
$self configurelist $args
}

method wag {} {
return "$self wags its tail"
}
}

.CE
.PP
That's it.  A \fBdog\fR is now an \fBanimal\fR that has a
\fB-akc\fR option and can \fBwag\fR its tail.
.PP
Note that we don't need to specify the full list of method names or
option names that \fBanimal\fR will receive.
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
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
.PP
One solution is to explicitly delegate all the options and methods,
and forgo the convenience of \fBdelegate method *\fR and
\fBdelegate option *\fR.  But if we wish to suppress only a few
options or methods, there's an easier way:
.PP
.CS

snit::type dog {
    delegate option * to animal except -numlegs
    delegate method * to animal except {fly climb}

    # ...

    constructor {args} {
        install animal using animal %AUTO% -name $self -numlegs 4
        $self configurelist $args
    }

    # ...
}

.CE
.PP
Dogs have four legs, so we specify that explicitly when we create the
\fBanimal\fR component, and explicitly exclude \fB-numlegs\fR from the
set of delegated options.  Similarly, dogs can neither
\fBfly\fR nor \fBclimb\fR,
so we exclude those \fBanimal\fR methods as shown.
.SS "CAN A HIERARCHICAL METHOD BE DELEGATED?"
Yes; just specify multiple words in the delegated method's name:
.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

    # ...

    constructor {args} {
        install mytail using tail %AUTO%
        $self configurelist $args
    }

    # ...
}

.CE
.PP
Unrecognized hierarchical methods can also be delegated; the following
code delegates all subcommands of the "tail" method to the "mytail"
component:
.PP
.CS

snit::type dog {
    delegate method {tail *} to mytail

    # ...
}

.CE
.PP
.SH WIDGETS
.SS "WHAT IS A SNIT::WIDGET?"
A \fBsnit::widget\fR is the Snit version of what Tcl programmers
usually call a \fImegawidget\fR: a widget-like object usually
consisting of one or more Tk widgets all contained within a Tk frame.







<

|
|
<
|
<
|
|
|
|
<
|

<











<

|
|

<
<

|
|
<
|
<
|
|
|
|
<
|

<







<

|
<
|

<







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


2507
2508
2509

2510

2511
2512
2513
2514

2515
2516

2517
2518
2519
2520
2521
2522
2523

2524
2525

2526
2527

2528
2529
2530
2531
2532
2533
2534
.PP
One solution is to explicitly delegate all the options and methods,
and forgo the convenience of \fBdelegate method *\fR and
\fBdelegate option *\fR.  But if we wish to suppress only a few
options or methods, there's an easier way:
.PP
.CS

snit::type dog {
delegate option * to animal except -numlegs
delegate method * to animal except {fly climb}

# ...

constructor {args} {
install animal using animal %AUTO% -name $self -numlegs 4
$self configurelist $args
}

# ...
}

.CE
.PP
Dogs have four legs, so we specify that explicitly when we create the
\fBanimal\fR component, and explicitly exclude \fB-numlegs\fR from the
set of delegated options.  Similarly, dogs can neither
\fBfly\fR nor \fBclimb\fR,
so we exclude those \fBanimal\fR methods as shown.
.SS "CAN A HIERARCHICAL METHOD BE DELEGATED?"
Yes; just specify multiple words in the delegated method's name:
.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

# ...

constructor {args} {
install mytail using tail %AUTO%
$self configurelist $args
}

# ...
}

.CE
.PP
Unrecognized hierarchical methods can also be delegated; the following
code delegates all subcommands of the "tail" method to the "mytail"
component:
.PP
.CS

snit::type dog {
delegate method {tail *} to mytail

# ...
}

.CE
.PP
.SH WIDGETS
.SS "WHAT IS A SNIT::WIDGET?"
A \fBsnit::widget\fR is the Snit version of what Tcl programmers
usually call a \fImegawidget\fR: a widget-like object usually
consisting of one or more Tk widgets all contained within a Tk frame.
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
2884
2885
2886
2887
2888
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
A \fBsnit::widget\fR's hull component will usually be a Tk \fBframe\fR
widget; however, it may be any Tk widget that defines the
\fB-class\fR option.  You can
explicitly choose the hull type you prefer by including the \fBhulltype\fR
command in the widget definition:
.PP
.CS

snit::widget mytoplevel {
    hulltype toplevel

    # ...
}

.CE
.PP
If no \fBhulltype\fR command appears, the hull will be a \fBframe\fR.
.PP
By default, Snit recognizes the following hull types: the Tk widgets
\fBframe\fR, \fBlabelframe\fR, \fBtoplevel\fR, and the Tile widgets
\fBttk::frame\fR, \fBttk::labelframe\fR, and \fBttk::toplevel\fR.  To
enable the use of some other kind of widget as the hull type, you can
\fBlappend\fR the widget command to the variable \fBsnit::hulltypes\fR (always
provided the widget defines the \fB-class\fR option.  For example,
suppose Tk gets a new widget type called a \fBprettyframe\fR:
.PP
.CS

lappend snit::hulltypes prettyframe

snit::widget mywidget {
    hulltype prettyframe

    # ...
}

.CE
.PP
.SS "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 \fBsnit::widget\fR is first
created, its instance name, \fBself\fR, is a Tk window name;
however, if the \fBsnit::widget\fR is used as the hull component by a
\fBsnit::widgetadaptor\fR its instance name will be changed to
something else.  For this reason, every \fBsnit::widget\fR method,
constructor, destructor, and so forth is passed another implicit
argument, \fBwin\fR, which is the window name of the megawidget.  Any
children should be named using \fBwin\fR as the root.
.PP
Thus, suppose you're writing a toolbar widget, a frame consisting of a
number of buttons placed side-by-side.  It might look something like
this:
.PP
.CS

snit::widget toolbar {
    delegate option * to hull

    constructor {args} {
        button $win.open -text Open -command [mymethod open]
        button $win.save -text Save -command [mymethod save]

        # ....

        $self configurelist $args

    }
}

.CE
.PP
See also the question on renaming objects, toward the top of this
file.
.SH "WIDGET ADAPTORS"
.SS "WHAT IS A SNIT::WIDGETADAPTOR?"
A \fBsnit::widgetadaptor\fR is a kind of \fBsnit::widget\fR.  Whereas







<

|
<
|

<













<

<

|
<
|

<


















<

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







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

2605
2606

2607
2608

2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626

2627
2628

2629
2630
2631

2632

2633
2634
2635


2636
2637
2638
2639
2640
2641
2642
A \fBsnit::widget\fR's hull component will usually be a Tk \fBframe\fR
widget; however, it may be any Tk widget that defines the
\fB-class\fR option.  You can
explicitly choose the hull type you prefer by including the \fBhulltype\fR
command in the widget definition:
.PP
.CS

snit::widget mytoplevel {
hulltype toplevel

# ...
}

.CE
.PP
If no \fBhulltype\fR command appears, the hull will be a \fBframe\fR.
.PP
By default, Snit recognizes the following hull types: the Tk widgets
\fBframe\fR, \fBlabelframe\fR, \fBtoplevel\fR, and the Tile widgets
\fBttk::frame\fR, \fBttk::labelframe\fR, and \fBttk::toplevel\fR.  To
enable the use of some other kind of widget as the hull type, you can
\fBlappend\fR the widget command to the variable \fBsnit::hulltypes\fR (always
provided the widget defines the \fB-class\fR option.  For example,
suppose Tk gets a new widget type called a \fBprettyframe\fR:
.PP
.CS

lappend snit::hulltypes prettyframe

snit::widget mywidget {
hulltype prettyframe

# ...
}

.CE
.PP
.SS "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 \fBsnit::widget\fR is first
created, its instance name, \fBself\fR, is a Tk window name;
however, if the \fBsnit::widget\fR is used as the hull component by a
\fBsnit::widgetadaptor\fR its instance name will be changed to
something else.  For this reason, every \fBsnit::widget\fR method,
constructor, destructor, and so forth is passed another implicit
argument, \fBwin\fR, which is the window name of the megawidget.  Any
children should be named using \fBwin\fR as the root.
.PP
Thus, suppose you're writing a toolbar widget, a frame consisting of a
number of buttons placed side-by-side.  It might look something like
this:
.PP
.CS

snit::widget toolbar {
delegate option * to hull

constructor {args} {
button $win.open -text Open -command [mymethod open]
button $win.save -text Save -command [mymethod save]

# ....

$self configurelist $args
}
}


.CE
.PP
See also the question on renaming objects, toward the top of this
file.
.SH "WIDGET ADAPTORS"
.SS "WHAT IS A SNIT::WIDGETADAPTOR?"
A \fBsnit::widgetadaptor\fR is a kind of \fBsnit::widget\fR.  Whereas
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
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
methods into no-ops.  Then, we define new methods, \fBins\fR and
\fBdel\fR,
which get delegated to the hull component as \fBinsert\fR and
\fBdelete\fR.  Thus, we've adapted the text widget and given it new
behavior while still leaving it fundamentally a text widget.
.PP
.CS

::snit::widgetadaptor rotext {

    constructor {args} {
        # Create the text widget; turn off its insert cursor
        installhull using text -insertwidth 0

        # Apply any options passed at creation time.
        $self configurelist $args
    }

    # Disable the text widget's insert and delete methods, to
    # 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
}

.CE
.PP
The most important part is in the constructor.
Whereas \fBsnit::widget\fR creates the hull for you,
\fBsnit::widgetadaptor\fR cannot -- it doesn't know what kind of
widget you want.  So the first thing the constructor does is create
the hull component (a Tk text widget in this case), and then installs







<

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

<







2658
2659
2660
2661
2662
2663
2664

2665

2666
2667
2668

2669
2670
2671

2672
2673
2674
2675

2676
2677
2678
2679

2680
2681
2682
2683
2684

2685
2686
2687
2688
2689
2690
2691
methods into no-ops.  Then, we define new methods, \fBins\fR and
\fBdel\fR,
which get delegated to the hull component as \fBinsert\fR and
\fBdelete\fR.  Thus, we've adapted the text widget and given it new
behavior while still leaving it fundamentally a text widget.
.PP
.CS

::snit::widgetadaptor rotext {

constructor {args} {
# Create the text widget; turn off its insert cursor
installhull using text -insertwidth 0

# Apply any options passed at creation time.
$self configurelist $args
}

# Disable the text widget's insert and delete methods, to
# 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
}

.CE
.PP
The most important part is in the constructor.
Whereas \fBsnit::widget\fR creates the hull for you,
\fBsnit::widgetadaptor\fR cannot -- it doesn't know what kind of
widget you want.  So the first thing the constructor does is create
the hull component (a Tk text widget in this case), and then installs
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
do what we'd like them to do.
.PP
In a case like this, the Tk widget will already exist when the
\fBsnit::widgetadaptor\fR is created.  Snit provides an alternate form
of the \fBinstallhull\fR command for this purpose:
.PP
.CS

snit::widgetadaptor pageadaptor {
    constructor {args} {
        # The widget already exists; just install it.
        installhull $win

        # ...
    }
}

.CE
.SS "CAN I ADAPT ANOTHER MEGAWIDGET?"
Maybe. If the other megawidget is a \fBsnit::widget\fR or
\fBsnit::widgetadaptor\fR, 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 \fB<Destroy>\fR event before the







<

|
|
|
<
|
|

<







2707
2708
2709
2710
2711
2712
2713

2714
2715
2716
2717

2718
2719
2720

2721
2722
2723
2724
2725
2726
2727
do what we'd like them to do.
.PP
In a case like this, the Tk widget will already exist when the
\fBsnit::widgetadaptor\fR is created.  Snit provides an alternate form
of the \fBinstallhull\fR command for this purpose:
.PP
.CS

snit::widgetadaptor pageadaptor {
constructor {args} {
# The widget already exists; just install it.
installhull $win

# ...
}
}

.CE
.SS "CAN I ADAPT ANOTHER MEGAWIDGET?"
Maybe. If the other megawidget is a \fBsnit::widget\fR or
\fBsnit::widgetadaptor\fR, 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 \fB<Destroy>\fR event before the
3081
3082
3083
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
3109
3110
3111
3112
\fBButton\fR.
.PP
Similarly, the widget class of a \fBsnit::widget\fR defaults to the
unqualified type name with the first letter capitalized.  For example,
the widget class of
.PP
.CS

snit::widget ::mylibrary::scrolledText { ... }

.CE
.PP
is \fBScrolledText\fR.
.PP
The widget class can also be set explicitly using the
\fBwidgetclass\fR statement within the \fBsnit::widget\fR definition:
.PP
.CS

snit::widget ::mylibrary::scrolledText {
    widgetclass Text

    # ...
}

.CE
.PP
The above definition says that a \fBscrolledText\fR megawidget has the
same widget class as an ordinary \fBtext\fR 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.
.SS "WHAT IS MY SNIT::WIDGETADAPTOR'S WIDGET CLASS?"







<

<








<

|
<
|

<







2787
2788
2789
2790
2791
2792
2793

2794

2795
2796
2797
2798
2799
2800
2801
2802

2803
2804

2805
2806

2807
2808
2809
2810
2811
2812
2813
\fBButton\fR.
.PP
Similarly, the widget class of a \fBsnit::widget\fR defaults to the
unqualified type name with the first letter capitalized.  For example,
the widget class of
.PP
.CS

snit::widget ::mylibrary::scrolledText { ... }

.CE
.PP
is \fBScrolledText\fR.
.PP
The widget class can also be set explicitly using the
\fBwidgetclass\fR statement within the \fBsnit::widget\fR definition:
.PP
.CS

snit::widget ::mylibrary::scrolledText {
widgetclass Text

# ...
}

.CE
.PP
The above definition says that a \fBscrolledText\fR megawidget has the
same widget class as an ordinary \fBtext\fR 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.
.SS "WHAT IS MY SNIT::WIDGETADAPTOR'S WIDGET CLASS?"
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
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
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
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
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 \fBtext\fR
widget options:
.PP
.CS

    -background         background         Background
    -borderwidth        borderWidth        BorderWidth
    -insertborderwidth  insertBorderWidth  BorderWidth
    -padx               padX               Pad

.CE
.PP
As is easily seen, sometimes the resource and class names can be
inferred from the option name, but not always.
.SS "WHAT ARE THE RESOURCE AND CLASS NAMES FOR MY MEGAWIDGET'S OPTIONS?"
For options implicitly delegated to a component using
\fBdelegate option *\fR, the resource and class names will be
exactly those defined by the component.  The \fBconfigure\fR method
returns these names, along with the option's default and current
values:
.PP
.CS

% snit::widget mytext {
    delegate option * to text

    constructor {args} {
        install text using text .text
        # ...
    }

    # ...
}
::mytext
% mytext .text
.text
% .text configure -padx
-padx padX Pad 1 1
%

.CE
.PP
For all other options (whether locally defined or explicitly
delegated), the resource and class names can be defined explicitly, or
they can be allowed to have default values.
.PP
By default, the resource name is just the option name minus the
hyphen; the the class name is just the option name with an initial
capital letter.  For example, suppose we explicitly delegate "-padx":
.PP
.CS

% snit::widget mytext {
    option -myvalue 5

    delegate option -padx to text
    delegate option * to text

    constructor {args} {
        install text using text .text
        # ...
    }

    # ...
}
::mytext
% mytext .text
.text
% .text configure -myvalue
-myvalue myvalue Myvalue 5 5
% .text configure -padx
-padx padx Padx 1 1
%

.CE
.PP
Here the resource and class names are chosen using the default rules.
Often these rules are sufficient, but in the case of "-padx" we'd most
likely prefer that the option's resource and class names are the same
as for the built-in Tk widgets.  This is easily done:
.PP
.CS

% snit::widget mytext {
    delegate option {-padx padX Pad} to text

    # ...
}
::mytext
% mytext .text
.text
% .text configure -padx
-padx padX Pad 1 1
%

.CE
.SS "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,
.PP
.CS

option add *Mywidget.texture pebbled

snit::widget mywidget {
    option -texture smooth
    # ...
}

mywidget .mywidget -texture greasy

.CE
.PP
Here, \fB-texture\fR would normally default to "smooth", but because of
the entry added to the option database it defaults to "pebbled".
However, the caller has explicitly overridden the default, and so the
new widget will be "greasy".
.SS "HOW DOES SNIT INITIALIZE DELEGATED OPTIONS?"
That depends on whether the options are delegated to the hull, or to
some other component.
.SS "HOW DOES SNIT INITIALIZE OPTIONS DELEGATED TO THE HULL?"
A \fBsnit::widget\fR'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:
.PP
.CS

option add *Mywidget.borderWidth 5
option add *Mywidget.relief sunken
option add *Mywidget.hullbackground red
option add *Mywidget.background green

snit::widget mywidget {
    delegate option -borderwidth to hull
    delegate option -hullbackground to hull as -background
    delegate option * to hull
    # ...
}

mywidget .mywidget

set A [.mywidget cget -relief]
set B [.mywidget cget -hullbackground]
set C [.mywidget cget -background]
set D [.mywidget cget -borderwidth]

.CE
.PP
The question is, what are the values of variables A, B, C and D?
.PP
The value of A is "sunken".  The hull is a Tk frame which has been
given the widget class \fBMywidget\fR; it will automatically query the
option database and pick up this value.  Since the \fB-relief\fR option is







<
|
|
|
|
<












<

|
<
|
|
|
|
<
|



|



<











<

|
<
|
|
<
|
|
|
|
<
|



|





<








<

|
<
|



|



<









<

<

|
|

<

<
















<




<

|
|
|
|

<

<




<







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
2866
2867
2868
2869
2870

2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881

2882
2883

2884
2885

2886
2887
2888
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
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
2970
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 \fBtext\fR
widget options:
.PP
.CS

-background         background         Background
-borderwidth        borderWidth        BorderWidth
-insertborderwidth  insertBorderWidth  BorderWidth
-padx               padX               Pad

.CE
.PP
As is easily seen, sometimes the resource and class names can be
inferred from the option name, but not always.
.SS "WHAT ARE THE RESOURCE AND CLASS NAMES FOR MY MEGAWIDGET'S OPTIONS?"
For options implicitly delegated to a component using
\fBdelegate option *\fR, the resource and class names will be
exactly those defined by the component.  The \fBconfigure\fR method
returns these names, along with the option's default and current
values:
.PP
.CS

% snit::widget mytext {
delegate option * to text

constructor {args} {
install text using text .text
# ...
}

# ...
}
::mytext
% mytext .text
\.text
% .text configure -padx
-padx padX Pad 1 1
%

.CE
.PP
For all other options (whether locally defined or explicitly
delegated), the resource and class names can be defined explicitly, or
they can be allowed to have default values.
.PP
By default, the resource name is just the option name minus the
hyphen; the the class name is just the option name with an initial
capital letter.  For example, suppose we explicitly delegate "-padx":
.PP
.CS

% snit::widget mytext {
option -myvalue 5

delegate option -padx to text
delegate option * to text

constructor {args} {
install text using text .text
# ...
}

# ...
}
::mytext
% mytext .text
\.text
% .text configure -myvalue
-myvalue myvalue Myvalue 5 5
% .text configure -padx
-padx padx Padx 1 1
%

.CE
.PP
Here the resource and class names are chosen using the default rules.
Often these rules are sufficient, but in the case of "-padx" we'd most
likely prefer that the option's resource and class names are the same
as for the built-in Tk widgets.  This is easily done:
.PP
.CS

% snit::widget mytext {
delegate option {-padx padX Pad} to text

# ...
}
::mytext
% mytext .text
\.text
% .text configure -padx
-padx padX Pad 1 1
%

.CE
.SS "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,
.PP
.CS

option add *Mywidget.texture pebbled

snit::widget mywidget {
option -texture smooth
# ...
}

mywidget .mywidget -texture greasy

.CE
.PP
Here, \fB-texture\fR would normally default to "smooth", but because of
the entry added to the option database it defaults to "pebbled".
However, the caller has explicitly overridden the default, and so the
new widget will be "greasy".
.SS "HOW DOES SNIT INITIALIZE DELEGATED OPTIONS?"
That depends on whether the options are delegated to the hull, or to
some other component.
.SS "HOW DOES SNIT INITIALIZE OPTIONS DELEGATED TO THE HULL?"
A \fBsnit::widget\fR'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:
.PP
.CS

option add *Mywidget.borderWidth 5
option add *Mywidget.relief sunken
option add *Mywidget.hullbackground red
option add *Mywidget.background green

snit::widget mywidget {
delegate option -borderwidth to hull
delegate option -hullbackground to hull as -background
delegate option * to hull
# ...
}

mywidget .mywidget

set A [.mywidget cget -relief]
set B [.mywidget cget -hullbackground]
set C [.mywidget cget -background]
set D [.mywidget cget -borderwidth]

.CE
.PP
The question is, what are the values of variables A, B, C and D?
.PP
The value of A is "sunken".  The hull is a Tk frame which has been
given the widget class \fBMywidget\fR; it will automatically query the
option database and pick up this value.  Since the \fB-relief\fR option is
3316
3317
3318
3319
3320
3321
3322
3323
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
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
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
\fB-borderwidth\fR option
should have been delegated like this:
.PP
.CS

    delegate option {-borderwidth borderWidth BorderWidth} to hull

.CE
.PP
For \fBsnit::widgetadaptor\fRs, 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 \fBsnit::widgetadaptor\fR
must call \fBinstallhull\fR in its constructor.  The normal way
to do this is as follows:
.PP
.CS

snit::widgetadaptor mywidget {
    # ...
    constructor {args} {
        # ...
        installhull using text -foreground white
        # ...
    }
    # ...
}

.CE
.PP
In this case, the \fBinstallhull\fR command will create the hull using
a command like this:
.PP
.CS

    set hull [text $win -foreground white]

.CE
.PP
The hull is a \fBtext\fR widget, so its widget class is \fBText\fR.  Just
as with \fBsnit::widget\fR 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.
.PP
In earlier versions of Snit, \fBsnit::widgetadaptor\fRs were expected
to call \fBinstallhull\fR like this:
.PP
.CS

    installhull [text $win -foreground white]

.CE
.PP
This form still works--but Snit will not query the option database as
described above.
.SS "HOW DOES SNIT INITIALIZE OPTIONS DELEGATED TO OTHER COMPONENTS?"
For hull components, Snit assumes that Tk will do most of the work
automatically.  Non-hull components are somewhat more complicated, because







<
|
<









<

|
|
|
|
|
|
|

<






<
|
<












<
|
<







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
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
\fB-borderwidth\fR option
should have been delegated like this:
.PP
.CS

delegate option {-borderwidth borderWidth BorderWidth} to hull

.CE
.PP
For \fBsnit::widgetadaptor\fRs, 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 \fBsnit::widgetadaptor\fR
must call \fBinstallhull\fR in its constructor.  The normal way
to do this is as follows:
.PP
.CS

snit::widgetadaptor mywidget {
# ...
constructor {args} {
# ...
installhull using text -foreground white
# ...
}
# ...
}

.CE
.PP
In this case, the \fBinstallhull\fR command will create the hull using
a command like this:
.PP
.CS

set hull [text $win -foreground white]

.CE
.PP
The hull is a \fBtext\fR widget, so its widget class is \fBText\fR.  Just
as with \fBsnit::widget\fR 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.
.PP
In earlier versions of Snit, \fBsnit::widgetadaptor\fRs were expected
to call \fBinstallhull\fR like this:
.PP
.CS

installhull [text $win -foreground white]

.CE
.PP
This form still works--but Snit will not query the option database as
described above.
.SS "HOW DOES SNIT INITIALIZE OPTIONS DELEGATED TO OTHER COMPONENTS?"
For hull components, Snit assumes that Tk will do most of the work
automatically.  Non-hull components are somewhat more complicated, because
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
that the \fBinstall\fR command is used to create it.
.PP
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:
.PP
.CS

snit::widget mywidget {
    delegate option -background to myComp

    constructor {args} {
        set myComp [text $win.text -foreground black]
    }
}

.CE
.PP
The drawback of this method is that Snit has no opportunity to
initialize the component properly.  Hence, the following approach is
now used:
.PP
.CS

snit::widget mywidget {
    delegate option -background to myComp

    constructor {args} {
        install myComp using text $win.text -foreground black
    }
}

.CE
.PP
The \fBinstall\fR command does the following:
.PP
.IP \(bu
Builds a list of the options explicitly included in the \fBinstall\fR
command--in this case, \fB-foreground\fR.







<

|
<
|
|
|

<







<

|
<
|
|
|

<







3056
3057
3058
3059
3060
3061
3062

3063
3064

3065
3066
3067
3068

3069
3070
3071
3072
3073
3074
3075

3076
3077

3078
3079
3080
3081

3082
3083
3084
3085
3086
3087
3088
that the \fBinstall\fR command is used to create it.
.PP
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:
.PP
.CS

snit::widget mywidget {
delegate option -background to myComp

constructor {args} {
set myComp [text $win.text -foreground black]
}
}

.CE
.PP
The drawback of this method is that Snit has no opportunity to
initialize the component properly.  Hence, the following approach is
now used:
.PP
.CS

snit::widget mywidget {
delegate option -background to myComp

constructor {args} {
install myComp using text $win.text -foreground black
}
}

.CE
.PP
The \fBinstall\fR command does the following:
.PP
.IP \(bu
Builds a list of the options explicitly included in the \fBinstall\fR
command--in this case, \fB-foreground\fR.
3465
3466
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
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
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
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
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
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
Define a type whose \fBINSTANCE METHODS\fR are the subcommands
of your ensemble command.  Then, create an instance of the type with
the desired name.
.PP
For example, the following code uses \fBDELEGATION\fR to create
a work-alike for the standard \fBstring\fR command:
.CS

snit::type ::mynamespace::mystringtype {
    delegate method * to stringhandler

    constructor {} {
        set stringhandler string
    }
}

::mynamespace::mystringtype mystring

.CE
We create the type in a namespace, so that the type command is hidden;
then we create a single instance with the desired name--
\fBmystring\fR, in this case.
.PP
This method has two drawbacks.  First, it leaves the type command
floating about.  More seriously, your shiny new ensemble
command will have \fBinfo\fR and \fBdestroy\fR subcommands that
you probably have no use for.  But read on.
.SS "HOW CAN I CREATE AN ENSEMBLE COMMAND USING A SNIT::TYPE?"
Define a type whose \fBTYPE METHODS\fR are the subcommands
of your ensemble command.
.PP
For example, the following code uses \fBDELEGATION\fR to create
a work-alike for the standard \fBstring\fR command:
.CS

snit::type mystring {
    delegate typemethod * to stringhandler

    typeconstructor {
        set stringhandler string
    }
}

.CE
Now the type command itself is your ensemble command.
.PP
This method has only one drawback, and though it's major, it's
also surmountable.  Your new ensemble command will have
\fBcreate\fR, \fBinfo\fR and \fBdestroy\fR subcommands
you don't want.  And worse yet, since the \fBcreate\fR method
can be implicit, users of your command will accidentally be creating
instances of your \fBmystring\fR 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.
.PP
The work around is to set some \fBPRAGMAS\fR, as shown here:
.CS

snit::type mystring {
    pragma -hastypeinfo    no
    pragma -hastypedestroy no
    pragma -hasinstances   no

    delegate typemethod * to stringhandler

    typeconstructor {
        set stringhandler string
    }
}

.CE
Here we've used the \fBpragma\fR statement to tell Snit that we don't
want the \fBinfo\fR typemethod or the \fBdestroy\fR typemethod,
and that our type has no instances; this eliminates the
\fBcreate\fR typemethod and all related code.  As
a result, our ensemble command will be well-behaved, with no
unexpected subcommands.
.SH PRAGMAS
.SS "WHAT IS A PRAGMA?"
A pragma is an option you can set in your type definitions that
affects how the type is defined and how it works once it is defined.
.SS "HOW DO I SET A PRAGMA?"
Use the \fBpragma\fR statement.  Each pragma is an option with a
value; each time you use the \fBpragma\fR statement you can set one or
more of them.
.SS "HOW CAN I GET RID OF THE "INFO" TYPE METHOD?"
Set the \fB-hastypeinfo\fR pragma to \fBno\fR:
.CS

snit::type dog {
    pragma -hastypeinfo no
    # ...
}

.CE
Snit will refrain from defining the \fBinfo\fR type method.
.SS "HOW CAN I GET RID OF THE "DESTROY" TYPE METHOD?"
Set the \fB-hastypedestroy\fR pragma to \fBno\fR:
.CS

snit::type dog {
    pragma -hastypedestroy no
    # ...
}

.CE
Snit will refrain from defining the \fBdestroy\fR type method.
.SS "HOW CAN I GET RID OF THE "CREATE" TYPE METHOD?"
Set the \fB-hasinstances\fR pragma to \fBno\fR:
.CS

snit::type dog {
    pragma -hasinstances no
    # ...
}

.CE
Snit will refrain from defining the \fBcreate\fR type method;
if you call the type command with an unknown method name, you'll get
an error instead of a new instance of the type.
.PP
This is useful if you wish to use a \fBsnit::type\fR to define
an ensemble command rather than a type with instances.
.PP
Pragmas \fB-hastypemethods\fR and \fB-hasinstances\fR cannot
both be false (or there'd be nothing left).
.SS "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
\fBcreate\fR type method directly.  To get the same behavior from
Snit, set the \fB-hastypemethods\fR pragma to \fBno\fR:
.CS

snit::type dog {
    pragma -hastypemethods no
    #...
}

# Creates ::spot
dog spot

# Tries to create an instance called ::create
dog create spot

.CE
Pragmas \fB-hastypemethods\fR and \fB-hasinstances\fR cannot
both be false (or there'd be nothing left).
.SS "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
\fBsnit::type\fR, even if the name was already in use by some other
object or command.  You could do the following, for example:
.CS

snit::type dog { ... }

dog proc

.CE
You now have a new dog named "proc", 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 \fB-canreplace\fR pragma to \fByes\fR:
.CS

snit::type dog {
    pragma -canreplace yes
    # ...
}

.CE
.SS "HOW CAN I MAKE MY SIMPLE TYPE RUN FASTER?"
In Snit 1.x, you can set the \fB-simpledispatch\fR pragma to \fByes\fR.
.PP
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
\fB-simpledispatch\fR pragma allows you to substitute a simpler







<

|
<
|
|
|

<

<
















<

|
<
|
|
|

<














<

|
|
|
<
|
<
|
|
|

<


















<

|
|

<





<

|
|

<





<

|
|

<
















<

|
|

<


<


<








<

<

<






<

|
|

<







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
3158

3159
3160

3161
3162
3163
3164

3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178

3179
3180
3181
3182

3183

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
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243

3244
3245
3246
3247

3248
3249

3250
3251

3252
3253
3254
3255
3256
3257
3258
3259

3260

3261

3262
3263
3264
3265
3266
3267

3268
3269
3270
3271

3272
3273
3274
3275
3276
3277
3278
Define a type whose \fBINSTANCE METHODS\fR are the subcommands
of your ensemble command.  Then, create an instance of the type with
the desired name.
.PP
For example, the following code uses \fBDELEGATION\fR to create
a work-alike for the standard \fBstring\fR command:
.CS

snit::type ::mynamespace::mystringtype {
delegate method * to stringhandler

constructor {} {
set stringhandler string
}
}

::mynamespace::mystringtype mystring

.CE
We create the type in a namespace, so that the type command is hidden;
then we create a single instance with the desired name--
\fBmystring\fR, in this case.
.PP
This method has two drawbacks.  First, it leaves the type command
floating about.  More seriously, your shiny new ensemble
command will have \fBinfo\fR and \fBdestroy\fR subcommands that
you probably have no use for.  But read on.
.SS "HOW CAN I CREATE AN ENSEMBLE COMMAND USING A SNIT::TYPE?"
Define a type whose \fBTYPE METHODS\fR are the subcommands
of your ensemble command.
.PP
For example, the following code uses \fBDELEGATION\fR to create
a work-alike for the standard \fBstring\fR command:
.CS

snit::type mystring {
delegate typemethod * to stringhandler

typeconstructor {
set stringhandler string
}
}

.CE
Now the type command itself is your ensemble command.
.PP
This method has only one drawback, and though it's major, it's
also surmountable.  Your new ensemble command will have
\fBcreate\fR, \fBinfo\fR and \fBdestroy\fR subcommands
you don't want.  And worse yet, since the \fBcreate\fR method
can be implicit, users of your command will accidentally be creating
instances of your \fBmystring\fR 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.
.PP
The work around is to set some \fBPRAGMAS\fR, as shown here:
.CS

snit::type mystring {
pragma -hastypeinfo    no
pragma -hastypedestroy no
pragma -hasinstances   no

delegate typemethod * to stringhandler

typeconstructor {
set stringhandler string
}
}

.CE
Here we've used the \fBpragma\fR statement to tell Snit that we don't
want the \fBinfo\fR typemethod or the \fBdestroy\fR typemethod,
and that our type has no instances; this eliminates the
\fBcreate\fR typemethod and all related code.  As
a result, our ensemble command will be well-behaved, with no
unexpected subcommands.
.SH PRAGMAS
.SS "WHAT IS A PRAGMA?"
A pragma is an option you can set in your type definitions that
affects how the type is defined and how it works once it is defined.
.SS "HOW DO I SET A PRAGMA?"
Use the \fBpragma\fR statement.  Each pragma is an option with a
value; each time you use the \fBpragma\fR statement you can set one or
more of them.
.SS "HOW CAN I GET RID OF THE "INFO" TYPE METHOD?"
Set the \fB-hastypeinfo\fR pragma to \fBno\fR:
.CS

snit::type dog {
pragma -hastypeinfo no
# ...
}

.CE
Snit will refrain from defining the \fBinfo\fR type method.
.SS "HOW CAN I GET RID OF THE "DESTROY" TYPE METHOD?"
Set the \fB-hastypedestroy\fR pragma to \fBno\fR:
.CS

snit::type dog {
pragma -hastypedestroy no
# ...
}

.CE
Snit will refrain from defining the \fBdestroy\fR type method.
.SS "HOW CAN I GET RID OF THE "CREATE" TYPE METHOD?"
Set the \fB-hasinstances\fR pragma to \fBno\fR:
.CS

snit::type dog {
pragma -hasinstances no
# ...
}

.CE
Snit will refrain from defining the \fBcreate\fR type method;
if you call the type command with an unknown method name, you'll get
an error instead of a new instance of the type.
.PP
This is useful if you wish to use a \fBsnit::type\fR to define
an ensemble command rather than a type with instances.
.PP
Pragmas \fB-hastypemethods\fR and \fB-hasinstances\fR cannot
both be false (or there'd be nothing left).
.SS "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
\fBcreate\fR type method directly.  To get the same behavior from
Snit, set the \fB-hastypemethods\fR pragma to \fBno\fR:
.CS

snit::type dog {
pragma -hastypemethods no
#...
}

# Creates ::spot
dog spot

# Tries to create an instance called ::create
dog create spot

.CE
Pragmas \fB-hastypemethods\fR and \fB-hasinstances\fR cannot
both be false (or there'd be nothing left).
.SS "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
\fBsnit::type\fR, even if the name was already in use by some other
object or command.  You could do the following, for example:
.CS

snit::type dog { ... }

dog proc

.CE
You now have a new dog named "proc", 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 \fB-canreplace\fR pragma to \fByes\fR:
.CS

snit::type dog {
pragma -canreplace yes
# ...
}

.CE
.SS "HOW CAN I MAKE MY SIMPLE TYPE RUN FASTER?"
In Snit 1.x, you can set the \fB-simpledispatch\fR pragma to \fByes\fR.
.PP
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
\fB-simpledispatch\fR pragma allows you to substitute a simpler
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
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
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
You want to define one set of methods in the first case, and another
set in the second case.  But how can your type definition know whether
the fast C extension is available or not?
.PP
It's easily done.  Outside of any type definition, define a macro that
returns 1 if the extension is available, and 0 otherwise:
.CS

if {$gotFastExtension} {
    snit::macro fastcode {} {return 1}
} else {
    snit::macro fastcode {} {return 0}
}

.CE
Then, use your macro in your type definition:
.CS

snit::type dog {

    if {[fastcode]} {
        # Fast methods
        method bark {} {...}
        method wagtail {} {...}
    } else {
        # Slow methods
        method bark {} {...}
        method wagtail {} {...}
    }
}

.CE
.SS "HOW DO I DEFINE NEW TYPE DEFINITION SYNTAX?"
Use a macro.  For example, your \fBsnit::widget\fR's
\fB-background\fR option should be propagated to a number
of component widgets.  You could implement that like this:
.CS

snit::widget mywidget {
    option -background -default white -configuremethod PropagateBackground

    method PropagateBackground {option value} {
        $comp1 configure $option $value
        $comp2 configure $option $value
        $comp3 configure $option $value
    }
}

.CE
For one option, this is fine; if you've got a number of options, it
becomes tedious and error prone.  So package it as a macro:
.CS

snit::macro propagate {option "to" components} {
    option $option -configuremethod Propagate$option

    set body "\\n"

    foreach comp $components {
        append body "\\$$comp configure $option \\$value\\n"
    }

    method Propagate$option {option value} $body
}

.CE
Then you can use it like this:
.CS

snit::widget mywidget {
    option -background default -white
    option -foreground default -black

    propagate -background to {comp1 comp2 comp3}
    propagate -foreground to {comp1 comp2 comp3}
}

.CE
.SS "ARE THERE ARE RESTRICTIONS ON MACRO NAMES?"
Yes, there are.  You can't redefine any standard Tcl commands or Snit
type definition statements.  You can use any other command name,
including the name of a previously defined macro.
.PP
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.
.PP
If my fancy \fBsnit::widget\fR is called \fB::mylib::mywidget\fR,
for example, then I should define my \fBpropagate\fR macro as
\fB::mylib::propagate\fR:
.CS

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}
}

.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







<

|

|

<



<

<
|
|
|
|
|
|
|
|
|

<






<

|
<
|
|
|
|
|

<




<

|
<
|
<
|
|
|
<
|

<



<

|
|
<
|
|

<
















<

<

|
|
<
|
|

<















<

3304
3305
3306
3307
3308
3309
3310

3311
3312
3313
3314
3315

3316
3317
3318

3319

3320
3321
3322
3323
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
3349

3350

3351
3352
3353

3354
3355

3356
3357
3358

3359
3360
3361

3362
3363
3364

3365
3366
3367
3368
3369
3370
3371
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
3397
3398
3399
3400
3401
3402

3403
You want to define one set of methods in the first case, and another
set in the second case.  But how can your type definition know whether
the fast C extension is available or not?
.PP
It's easily done.  Outside of any type definition, define a macro that
returns 1 if the extension is available, and 0 otherwise:
.CS

if {$gotFastExtension} {
snit::macro fastcode {} {return 1}
} else {
snit::macro fastcode {} {return 0}
}

.CE
Then, use your macro in your type definition:
.CS

snit::type dog {

if {[fastcode]} {
# Fast methods
method bark {} {...}
method wagtail {} {...}
} else {
# Slow methods
method bark {} {...}
method wagtail {} {...}
}
}

.CE
.SS "HOW DO I DEFINE NEW TYPE DEFINITION SYNTAX?"
Use a macro.  For example, your \fBsnit::widget\fR's
\fB-background\fR option should be propagated to a number
of component widgets.  You could implement that like this:
.CS

snit::widget mywidget {
option -background -default white -configuremethod PropagateBackground

method PropagateBackground {option value} {
$comp1 configure $option $value
$comp2 configure $option $value
$comp3 configure $option $value
}
}

.CE
For one option, this is fine; if you've got a number of options, it
becomes tedious and error prone.  So package it as a macro:
.CS

snit::macro propagate {option "to" components} {
option $option -configuremethod Propagate$option

set body "\\n"

foreach comp $components {
append body "\\$$comp configure $option \\$value\\n"
}

method Propagate$option {option value} $body
}

.CE
Then you can use it like this:
.CS

snit::widget mywidget {
option -background default -white
option -foreground default -black

propagate -background to {comp1 comp2 comp3}
propagate -foreground to {comp1 comp2 comp3}
}

.CE
.SS "ARE THERE ARE RESTRICTIONS ON MACRO NAMES?"
Yes, there are.  You can't redefine any standard Tcl commands or Snit
type definition statements.  You can use any other command name,
including the name of a previously defined macro.
.PP
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.
.PP
If my fancy \fBsnit::widget\fR is called \fB::mylib::mywidget\fR,
for example, then I should define my \fBpropagate\fR macro as
\fB::mylib::propagate\fR:
.CS

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}
}

.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

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

220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







220
221
222
223
224
225
226

227
228
229
230
231
232
233
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
\fB::soundex::knuth\fR \fIstring\fR
Computes the soundex code of the input \fIstring\fR using
Knuth's algorithm and returns it as the result of the
command.
.PP
.SH EXAMPLES
.CS


    % ::soundex::knuth Knuth
    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
.nf
Copyright (c) ????, Algorithm: Donald E. Knuth
Copyright (c) 2003, Documentation: Andreas Kupries <[email protected]>
Copyright (c) 1998, Tcl port: Evan Rempel <[email protected]>

.fi







<
<
|
|
<

















<

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
\fB::soundex::knuth\fR \fIstring\fR
Computes the soundex code of the input \fIstring\fR using
Knuth's algorithm and returns it as the result of the
command.
.PP
.SH EXAMPLES
.CS


% ::soundex::knuth Knuth
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
.nf
Copyright (c) ????, Algorithm: Donald E. Knuth
Copyright (c) 2003, Documentation: Andreas Kupries <[email protected]>
Copyright (c) 1998, Tcl port: Evan Rempel <[email protected]>

.fi

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
name (as in C++). It must have a single argument named \fBthis\fR.
.TP
\fBproc\fR \fIname\fR {\fBthis\fR ?\fIarg arg ...\fR?} \fIbody\fR
This is a member procedure of the class, as its first argument is
named \fBthis\fR. It allows a simple access of member data for the
object referenced by \fBthis\fR inside the procedure. For example:
.CS


   set ($this,data) 0

.CE
.TP
\fBproc\fR \fIname\fR {?\fIarg arg ...\fR?} \fIbody\fR
This is a static (as in C++) member procedure of the class, as its
first argument is not named \fBthis\fR. Static (global) class data
can be accessed as in:
.CS


   set (data) 0

.CE
.TP
\fBproc\fR \fIclass\fR {\fBthis copy\fR} \fIbody\fR
This is the optional copy procedure for the class. It must have the
same name as the class and exactly 2 arguments named \fBthis\fR and
\fBcopy\fR. It is invoked following a \fBnew\fR invocation on an
existing object of the class.







<
<
|
<







<
<
|
<







300
301
302
303
304
305
306


307

308
309
310
311
312
313
314


315

316
317
318
319
320
321
322
name (as in C++). It must have a single argument named \fBthis\fR.
.TP
\fBproc\fR \fIname\fR {\fBthis\fR ?\fIarg arg ...\fR?} \fIbody\fR
This is a member procedure of the class, as its first argument is
named \fBthis\fR. It allows a simple access of member data for the
object referenced by \fBthis\fR inside the procedure. For example:
.CS


set ($this,data) 0

.CE
.TP
\fBproc\fR \fIname\fR {?\fIarg arg ...\fR?} \fIbody\fR
This is a static (as in C++) member procedure of the class, as its
first argument is not named \fBthis\fR. Static (global) class data
can be accessed as in:
.CS


set (data) 0

.CE
.TP
\fBproc\fR \fIclass\fR {\fBthis copy\fR} \fIbody\fR
This is the optional copy procedure for the class. It must have the
same name as the class and exactly 2 arguments named \fBthis\fR and
\fBcopy\fR. It is invoked following a \fBnew\fR invocation on an
existing object of the class.

Changes to embedded/man/files/modules/string/token.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

Changes to embedded/man/files/modules/string/token_shell.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
profile \fIprofile\fR. The command returns 0 if prepared strings are equal,
-1 if \fIstring1\fR is lexicographically less than \fIstring2\fR, or
1 if \fIstring1\fR is lexicographically greater than \fIstring2\fR.
.PP
.SH EXAMPLES
Nameprep profile definition (see RFC-3491):
.CS


::stringprep::register nameprep  -mapping {B.1 B.2}  -normalization KC  -prohibited {A.1 C.1.2 C.2.2 C.3 C.4 C.5 C.6 C.7 C.8 C.9}  -prohibitedBidi 1

.CE
Nodeprep and resourceprep profile definitions (see RFC-3920):
.CS


::stringprep::register nodeprep  -mapping {B.1 B.2}  -normalization KC  -prohibited {A.1 C.1.1 C.1.2 C.2.1 C.2.2 C.3 C.4 C.5 C.6 C.7 C.8 C.9}  -prohibitedList {0x22 0x26 0x27 0x2f 0x3a 0x3c 0x3e 0x40}  -prohibitedBidi 1

::stringprep::register resourceprep  -mapping {B.1}  -normalization KC  -prohibited {A.1 C.1.2 C.2.1 C.2.2 C.3 C.4 C.5 C.6 C.7 C.8 C.9}  -prohibitedBidi 1

.CE
.SH REFERENCES
.IP [1]
"Preparation of Internationalized Strings ('stringprep')",
(\fIhttp://www.ietf.org/rfc/rfc3454.txt\fR)
.IP [2]
"Nameprep: A Stringprep Profile for Internationalized Domain Names (IDN)",







<
<

<



<
<

<

<







308
309
310
311
312
313
314


315

316
317
318


319

320

321
322
323
324
325
326
327
profile \fIprofile\fR. The command returns 0 if prepared strings are equal,
-1 if \fIstring1\fR is lexicographically less than \fIstring2\fR, or
1 if \fIstring1\fR is lexicographically greater than \fIstring2\fR.
.PP
.SH EXAMPLES
Nameprep profile definition (see RFC-3491):
.CS


::stringprep::register nameprep  -mapping {B.1 B.2}  -normalization KC  -prohibited {A.1 C.1.2 C.2.2 C.3 C.4 C.5 C.6 C.7 C.8 C.9}  -prohibitedBidi 1

.CE
Nodeprep and resourceprep profile definitions (see RFC-3920):
.CS


::stringprep::register nodeprep  -mapping {B.1 B.2}  -normalization KC  -prohibited {A.1 C.1.1 C.1.2 C.2.1 C.2.2 C.3 C.4 C.5 C.6 C.7 C.8 C.9}  -prohibitedList {0x22 0x26 0x27 0x2f 0x3a 0x3c 0x3e 0x40}  -prohibitedBidi 1

::stringprep::register resourceprep  -mapping {B.1}  -normalization KC  -prohibited {A.1 C.1.2 C.2.1 C.2.2 C.3 C.4 C.5 C.6 C.7 C.8 C.9}  -prohibitedBidi 1

.CE
.SH REFERENCES
.IP [1]
"Preparation of Internationalized Strings ('stringprep')",
(\fIhttp://www.ietf.org/rfc/rfc3454.txt\fR)
.IP [2]
"Nameprep: A Stringprep Profile for Internationalized Domain Names (IDN)",
350
351
352
353
354
355
356
357
358
.SH "SEE ALSO"
unicode(n)
.SH KEYWORDS
stringprep, unicode
.SH COPYRIGHT
.nf
Copyright (c) 2007-2009, Sergei Golovan <[email protected]>

.fi







<

342
343
344
345
346
347
348

349
.SH "SEE ALSO"
unicode(n)
.SH KEYWORDS
stringprep, unicode
.SH COPYRIGHT
.nf
Copyright (c) 2007-2009, Sergei Golovan <[email protected]>

.fi

Changes to embedded/man/files/modules/stringprep/stringprep_data.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
263
264
265
266
267
268
269
270
271
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 <[email protected]>

.fi







<

262
263
264
265
266
267
268

269
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 <[email protected]>

.fi

Changes to embedded/man/files/modules/stringprep/unicode.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
\fB::unicode::normalizeS\fR \fIform\fR \fIstring\fR
A shortcut to
::unicode::tostring [unicode::normalize \\$form [::unicode::fromstring \\$string]].
Normalizes Tcl string and returns normalized string.
.PP
.SH EXAMPLES
.CS


% ::unicode::fromstring "\\u0410\\u0411\\u0412\\u0413"
1040 1041 1042 1043
% ::unicode::tostring {49 50 51 52 53}
12345
%

.CE
.CS


% ::unicode::normalize D {7692 775}
68 803 775
% ::unicode::normalizeS KD "\\u1d2c"
A
%

.CE
.SH REFERENCES
.IP [1]
"Unicode Standard Annex #15: Unicode Normalization Forms",
(\fIhttp://unicode.org/reports/tr15/\fR)
.PP
.SH AUTHORS







<
<





<


<
<





<







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
\fB::unicode::normalizeS\fR \fIform\fR \fIstring\fR
A shortcut to
::unicode::tostring [unicode::normalize \\$form [::unicode::fromstring \\$string]].
Normalizes Tcl string and returns normalized string.
.PP
.SH EXAMPLES
.CS


% ::unicode::fromstring "\\u0410\\u0411\\u0412\\u0413"
1040 1041 1042 1043
% ::unicode::tostring {49 50 51 52 53}
12345
%

.CE
.CS


% ::unicode::normalize D {7692 775}
68 803 775
% ::unicode::normalizeS KD "\\u1d2c"
A
%

.CE
.SH REFERENCES
.IP [1]
"Unicode Standard Annex #15: Unicode Normalization Forms",
(\fIhttp://unicode.org/reports/tr15/\fR)
.PP
.SH AUTHORS
318
319
320
321
322
323
324
325
326
.SH "SEE ALSO"
stringprep(n)
.SH KEYWORDS
normalization, unicode
.SH COPYRIGHT
.nf
Copyright (c) 2007, Sergei Golovan <[email protected]>

.fi







<

311
312
313
314
315
316
317

318
.SH "SEE ALSO"
stringprep(n)
.SH KEYWORDS
normalization, unicode
.SH COPYRIGHT
.nf
Copyright (c) 2007, Sergei Golovan <[email protected]>

.fi

Changes to embedded/man/files/modules/stringprep/unicode_data.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
263
264
265
266
267
268
269
270
271
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 <[email protected]>

.fi







<

262
263
264
265
266
267
268

269
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 <[email protected]>

.fi

Changes to embedded/man/files/modules/struct/disjointset.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.IP \(bu
An alternative name for the \fIpartitions\fR would be
\fIequvalence classes\fR, and all elements in the same
class are considered as equal.
.PP
Here is a pictorial representation of the concepts listed above:
.CS


	+-----------------+ The outer lines are the boundaries of the set S.
	|           /     | The inner regions delineated by the skewed lines
	|  *       /   *  | are the partitions P. The *'s denote the elements
	|      *  / \\     | E in the set, each in a single partition, their
	|*       /   \\    | equivalence class.
	|       /  *  \\   |
	|      / *   /    |
	| *   /\\  * /     |
	|    /  \\  /      |
	|   /    \\/  *    |
	|  / *    \\       |
	| /     *  \\      |
	+-----------------+

.CE
.PP
For more information see \fIhttp://en.wikipedia.org/wiki/Disjoint_set_data_structure\fR.
.SH API
The package exports a single command, \fB::struct::disjointset\fR. All
functionality provided here can be reached through a subcommand of
this command.







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







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
.IP \(bu
An alternative name for the \fIpartitions\fR would be
\fIequvalence classes\fR, and all elements in the same
class are considered as equal.
.PP
Here is a pictorial representation of the concepts listed above:
.CS


+-----------------+ The outer lines are the boundaries of the set S.
|           /     | The inner regions delineated by the skewed lines
|  *       /   *  | are the partitions P. The *'s denote the elements
|      *  / \\     | E in the set, each in a single partition, their
|*       /   \\    | equivalence class.
|       /  *  \\   |
|      / *   /    |
| *   /\\  * /     |
|    /  \\  /      |
|   /    \\/  *    |
|  / *    \\       |
| /     *  \\      |
+-----------------+

.CE
.PP
For more information see \fIhttp://en.wikipedia.org/wiki/Disjoint_set_data_structure\fR.
.SH API
The package exports a single command, \fB::struct::disjointset\fR. All
functionality provided here can be reached through a subcommand of
this command.

Changes to embedded/man/files/modules/struct/graph.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
another graph object, and the assignment operator \fB=\fR will be
executed. For the operator \fBdeserialize\fR the \fIsource\fR is a
serialized graph object and \fBdeserialize\fR will be executed.
.sp
In other words
.sp
.CS


    ::struct::graph mygraph = b

.CE
.sp
is equivalent to
.sp
.CS


    ::struct::graph mygraph
    mygraph = b

.CE
.sp
and
.sp
.CS


    ::struct::graph mygraph deserialize $b

.CE
.sp
is equivalent to
.sp
.CS


    ::struct::graph mygraph
    mygraph deserialize $b

.CE
.PP
.PP
The following commands are possible for graph objects:
.TP
\fIgraphName\fR \fB=\fR \fIsourcegraph\fR
This is the \fIassignment\fR operator for graph objects. It copies
the graph contained in the graph object \fIsourcegraph\fR over the
graph data in \fIgraphName\fR. The old contents of \fIgraphName\fR are
deleted by this operation.
.sp
This operation is in effect equivalent to
.sp
.CS


    \fIgraphName\fR \fBdeserialize\fR [\fIsourcegraph\fR \fBserialize\fR]

.CE
.sp
The operation assumes that the \fIsourcegraph\fR provides the method
\fBserialize\fR and that this method returns a valid graph
serialization.
.TP
\fIgraphName\fR \fB-->\fR \fIdestgraph\fR
This is the \fIreverse assignment\fR operator for graph objects. It
copies the graph contained in the graph object \fIgraphName\fR over
the graph data in the object \fIdestgraph\fR.
The old contents of \fIdestgraph\fR are deleted by this operation.
.sp
This operation is in effect equivalent to
.sp
.CS


    \fIdestgraph\fR \fBdeserialize\fR [\fIgraphName\fR \fBserialize\fR]

.CE
.sp
The operation assumes that the \fIdestgraph\fR provides the method
\fBdeserialize\fR and that this method takes a graph serialization.
.TP
\fIgraphName\fR \fBappend\fR \fIkey\fR \fIvalue\fR
Appends a \fIvalue\fR to one of the keyed values associated with the graph.







<
<
|
<





<
<
|
|
<





<
<
|
<





<
<
|
|
<














<
<
|
<















<
<
|
<







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
another graph object, and the assignment operator \fB=\fR will be
executed. For the operator \fBdeserialize\fR the \fIsource\fR is a
serialized graph object and \fBdeserialize\fR will be executed.
.sp
In other words
.sp
.CS


::struct::graph mygraph = b

.CE
.sp
is equivalent to
.sp
.CS


::struct::graph mygraph
mygraph = b

.CE
.sp
and
.sp
.CS


::struct::graph mygraph deserialize $b

.CE
.sp
is equivalent to
.sp
.CS


::struct::graph mygraph
mygraph deserialize $b

.CE
.PP
.PP
The following commands are possible for graph objects:
.TP
\fIgraphName\fR \fB=\fR \fIsourcegraph\fR
This is the \fIassignment\fR operator for graph objects. It copies
the graph contained in the graph object \fIsourcegraph\fR over the
graph data in \fIgraphName\fR. The old contents of \fIgraphName\fR are
deleted by this operation.
.sp
This operation is in effect equivalent to
.sp
.CS


\fIgraphName\fR \fBdeserialize\fR [\fIsourcegraph\fR \fBserialize\fR]

.CE
.sp
The operation assumes that the \fIsourcegraph\fR provides the method
\fBserialize\fR and that this method returns a valid graph
serialization.
.TP
\fIgraphName\fR \fB-->\fR \fIdestgraph\fR
This is the \fIreverse assignment\fR operator for graph objects. It
copies the graph contained in the graph object \fIgraphName\fR over
the graph data in the object \fIdestgraph\fR.
The old contents of \fIdestgraph\fR are deleted by this operation.
.sp
This operation is in effect equivalent to
.sp
.CS


\fIdestgraph\fR \fBdeserialize\fR [\fIgraphName\fR \fBserialize\fR]

.CE
.sp
The operation assumes that the \fIdestgraph\fR provides the method
\fBdeserialize\fR and that this method takes a graph serialization.
.TP
\fIgraphName\fR \fBappend\fR \fIkey\fR \fIvalue\fR
Appends a \fIvalue\fR to one of the keyed values associated with the graph.
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
.sp
For all attribute dictionaries they keys are the names of the
attributes, and the values are the values for each name.
.sp
\fINote:\fR The order of the nodes in the serialization has no
relevance, nor has the order of the arcs per node.
.CS


    # A possible serialization for the graph structure
    #
    #        d -----> %2
    #       /         ^ \\\\
    #      /         /   \\\\
    #     /         b     \\\\
    #    /         /       \\\\
    #  %1 <- a - %0         e
    #    ^         \\\\      /
    #     \\\\        c     /
    #      \\\\        \\\\  /
    #       \\\\        v v
    #        f ------ %3
    # is
    #
    # %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.

.CE
.sp
.TP
\fIgraphName\fR \fBset\fR \fIkey\fR ?\fIvalue\fR?
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 \fIvalue\fR
is not specified, this command returns the current value assigned to







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







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
.sp
For all attribute dictionaries they keys are the names of the
attributes, and the values are the values for each name.
.sp
\fINote:\fR The order of the nodes in the serialization has no
relevance, nor has the order of the arcs per node.
.CS


# A possible serialization for the graph structure
#
#        d -----> %2
#       /         ^ \\\\
#      /         /   \\\\
#     /         b     \\\\
#    /         /       \\\\
#  %1 <- a - %0         e
#    ^         \\\\      /
#     \\\\        c     /
#      \\\\        \\\\  /
#       \\\\        v v
#        f ------ %3
# is
#
# %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.

.CE
.sp
.TP
\fIgraphName\fR \fBset\fR \fIkey\fR ?\fIvalue\fR?
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 \fIvalue\fR
is not specified, this command returns the current value assigned to
1122
1123
1124
1125
1126
1127
1128
1129
1130
.SH KEYWORDS
adjacent, arc, cgraph, degree, edge, graph, loop, neighbour, node, serialization, subgraph, vertex
.SH CATEGORY
Data structures
.SH COPYRIGHT
.nf
Copyright (c) 2002-2009 Andreas Kupries <[email protected]>

.fi







<

1100
1101
1102
1103
1104
1105
1106

1107
.SH KEYWORDS
adjacent, arc, cgraph, degree, edge, graph, loop, neighbour, node, serialization, subgraph, vertex
.SH CATEGORY
Data structures
.SH COPYRIGHT
.nf
Copyright (c) 2002-2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/struct/graph1.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
612
613
614
615
616
617
618
619
620
.SH KEYWORDS
cgraph, graph
.SH CATEGORY
Data structures
.SH COPYRIGHT
.nf
Copyright (c) 2002 Andreas Kupries <[email protected]>

.fi







<

611
612
613
614
615
616
617

618
.SH KEYWORDS
cgraph, graph
.SH CATEGORY
Data structures
.SH COPYRIGHT
.nf
Copyright (c) 2002 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/struct/graphops.n.

220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







220
221
222
223
224
225
226

227
228
229
230
231
232
233
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
1469
1470
1471
1472
1473
1474
1475
1476
1477
.SH CATEGORY
Data structures
.SH COPYRIGHT
.nf
Copyright (c) 2008 Alejandro Paz <[email protected]>
Copyright (c) 2008 (docs) Andreas Kupries <[email protected]>
Copyright (c) 2009 Michal Antoniewski <[email protected]>

.fi







<

1468
1469
1470
1471
1472
1473
1474

1475
.SH CATEGORY
Data structures
.SH COPYRIGHT
.nf
Copyright (c) 2008 Alejandro Paz <[email protected]>
Copyright (c) 2008 (docs) Andreas Kupries <[email protected]>
Copyright (c) 2009 Michal Antoniewski <[email protected]>

.fi

Changes to embedded/man/files/modules/struct/matrix.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
another matrix object, and the assignment operator \fB=\fR will be
executed. For \fBdeserialize\fR the \fIsource\fR is a serialized
matrix object and \fBdeserialize\fR will be executed.
.sp
In other words
.sp
.CS


    ::struct::matrix mymatrix = b

.CE
.sp
is equivalent to
.sp
.CS


    ::struct::matrix mymatrix
    mymatrix = b

.CE
.sp
and
.sp
.CS


    ::struct::matrix mymatrix deserialize $b

.CE
.sp
is equivalent to
.sp
.CS


    ::struct::matrix mymatrix
    mymatrix deserialize $b

.CE
.PP
.PP
The following commands are possible for matrix objects:
.TP
\fImatrixName\fR \fB=\fR \fIsourcematrix\fR
This is the assignment operator for matrix objects. It copies the matrix
contained in the matrix object \fIsourcematrix\fR over the matrix data in
\fImatrixName\fR. The old contents of \fImatrixName\fR are deleted by
this operation.
.sp
This operation is in effect equivalent to
.sp
.CS


    \fImatrixName\fR \fBdeserialize\fR [\fIsourcematrix\fR \fBserialize\fR]

.CE
.TP
\fImatrixName\fR \fB-->\fR \fIdestmatrix\fR
This is the reverse assignment operator for matrix objects. It copies
the matrix contained in the matrix object \fImatrixName\fR over the matrix
data in the object \fIdestmatrix\fR.
The old contents of \fIdestmatrix\fR are deleted by this operation.
.sp
This operation is in effect equivalent to
.sp
.CS


    \fIdestmatrix\fR \fBdeserialize\fR [\fImatrixName\fR \fBserialize\fR]

.CE
.TP
\fImatrixName\fR \fBadd column\fR ?\fIvalues\fR?
Extends the matrix by one column and then acts like \fBset column\fR
(see below) on this new column if there were \fIvalues\fR
supplied. Without \fIvalues\fR the new cells will be set to the empty
string. The new column is appended immediately behind the last







<
<
|
<





<
<
|
|
<





<
<
|
<





<
<
|
|
<














<
<
|
<











<
<
|
<







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
another matrix object, and the assignment operator \fB=\fR will be
executed. For \fBdeserialize\fR the \fIsource\fR is a serialized
matrix object and \fBdeserialize\fR will be executed.
.sp
In other words
.sp
.CS


::struct::matrix mymatrix = b

.CE
.sp
is equivalent to
.sp
.CS


::struct::matrix mymatrix
mymatrix = b

.CE
.sp
and
.sp
.CS


::struct::matrix mymatrix deserialize $b

.CE
.sp
is equivalent to
.sp
.CS


::struct::matrix mymatrix
mymatrix deserialize $b

.CE
.PP
.PP
The following commands are possible for matrix objects:
.TP
\fImatrixName\fR \fB=\fR \fIsourcematrix\fR
This is the assignment operator for matrix objects. It copies the matrix
contained in the matrix object \fIsourcematrix\fR over the matrix data in
\fImatrixName\fR. The old contents of \fImatrixName\fR are deleted by
this operation.
.sp
This operation is in effect equivalent to
.sp
.CS


\fImatrixName\fR \fBdeserialize\fR [\fIsourcematrix\fR \fBserialize\fR]

.CE
.TP
\fImatrixName\fR \fB-->\fR \fIdestmatrix\fR
This is the reverse assignment operator for matrix objects. It copies
the matrix contained in the matrix object \fImatrixName\fR over the matrix
data in the object \fIdestmatrix\fR.
The old contents of \fIdestmatrix\fR are deleted by this operation.
.sp
This operation is in effect equivalent to
.sp
.CS


\fIdestmatrix\fR \fBdeserialize\fR [\fImatrixName\fR \fBserialize\fR]

.CE
.TP
\fImatrixName\fR \fBadd column\fR ?\fIvalues\fR?
Extends the matrix by one column and then acts like \fBset column\fR
(see below) on this new column if there were \fIvalues\fR
supplied. Without \fIvalues\fR the new cells will be set to the empty
string. The new column is appended immediately behind the last
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
The last element of the list contains the values of the matrix cells
we have serialized, in the form of a value like it is returned by the
\fBget rect\fR. However empty cells to the right and bottom of
the matrix can be left out of that value as the size information in
the serialization allows the receiver the creation of a matrix with
the proper size despite the missing values.
.CS


    # A possible serialization for the matrix structure
    #
    # | a b d g |
    # | c e     |
    # | f       |
    #
    # is
    #
    # 3 4 {{a b d g} {c e} {f}}

.CE
.sp
.TP
\fImatrixName\fR \fBset cell\fR \fIcolumn row value\fR
Sets the value in the cell identified by row and column index to the
data in the third argument.
.TP







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







643
644
645
646
647
648
649


650
651
652
653
654
655
656
657
658

659
660
661
662
663
664
665
The last element of the list contains the values of the matrix cells
we have serialized, in the form of a value like it is returned by the
\fBget rect\fR. However empty cells to the right and bottom of
the matrix can be left out of that value as the size information in
the serialization allows the receiver the creation of a matrix with
the proper size despite the missing values.
.CS


# A possible serialization for the matrix structure
#
# | a b d g |
# | c e     |
# | f       |
#
# is
#
# 3 4 {{a b d g} {c e} {f}}

.CE
.sp
.TP
\fImatrixName\fR \fBset cell\fR \fIcolumn row value\fR
Sets the value in the cell identified by row and column index to the
data in the third argument.
.TP
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
.PP
The examples below assume a 5x5 matrix M with the first row containing
the values 1 to 5, with 1 in the top-left cell. Each other row
contains the contents of the row above it, rotated by one cell to the
right.
.PP
.CS


 % M getrect 0 0 4 4
 {{1 2 3 4 5} {5 1 2 3 4} {4 5 1 2 3} {3 4 5 1 2} {2 3 4 5 1}}

.CE
.PP
.CS


 % M setrect 1 1 {{0 0 0} {0 0 0} {0 0 0}}
 % M getrect 0 0 4 4
 {{1 2 3 4 5} {5 0 0 0 4} {4 0 0 0 3} {3 0 0 0 2} {2 3 4 5 1}}

.CE
.PP
Assuming that the style definitions in the example section of the
manpage for the package \fBreport\fR are loaded into the
interpreter now an example which formats a matrix into a tabular
report. The code filling the matrix with data is not shown.  contains
useful data.
.PP
.CS


    % ::struct::matrix m
    % # ... fill m with data, assume 5 columns
    % ::report::report r 5 style captionedtable 1
    % m format 2string r
    +---+-------------------+-------+-------+--------+
    |000|VERSIONS:          |2:8.4a3|1:8.4a3|1:8.4a3%|
    +---+-------------------+-------+-------+--------+
    |001|CATCH return ok    |7      |13     |53.85   |
    |002|CATCH return error |68     |91     |74.73   |
    |003|CATCH no catch used|7      |14     |50.00   |
    |004|IF if true numeric |12     |33     |36.36   |
    |005|IF elseif          |15     |47     |31.91   |
    |   |true numeric       |       |       |        |
    +---+-------------------+-------+-------+--------+
    %
    % # alternate way of doing the above
    % 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
.nf
Copyright (c) 2002 Andreas Kupries <[email protected]>

.fi







<
<
|
|
<



<
<
|
|
|
<









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















<

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
.PP
The examples below assume a 5x5 matrix M with the first row containing
the values 1 to 5, with 1 in the top-left cell. Each other row
contains the contents of the row above it, rotated by one cell to the
right.
.PP
.CS


% M getrect 0 0 4 4
{{1 2 3 4 5} {5 1 2 3 4} {4 5 1 2 3} {3 4 5 1 2} {2 3 4 5 1}}

.CE
.PP
.CS


% M setrect 1 1 {{0 0 0} {0 0 0} {0 0 0}}
% M getrect 0 0 4 4
{{1 2 3 4 5} {5 0 0 0 4} {4 0 0 0 3} {3 0 0 0 2} {2 3 4 5 1}}

.CE
.PP
Assuming that the style definitions in the example section of the
manpage for the package \fBreport\fR are loaded into the
interpreter now an example which formats a matrix into a tabular
report. The code filling the matrix with data is not shown.  contains
useful data.
.PP
.CS


% ::struct::matrix m
% # ... fill m with data, assume 5 columns
% ::report::report r 5 style captionedtable 1
% m format 2string r
+---+-------------------+-------+-------+--------+
|000|VERSIONS:          |2:8.4a3|1:8.4a3|1:8.4a3%|
+---+-------------------+-------+-------+--------+
|001|CATCH return ok    |7      |13     |53.85   |
|002|CATCH return error |68     |91     |74.73   |
|003|CATCH no catch used|7      |14     |50.00   |
|004|IF if true numeric |12     |33     |36.36   |
|005|IF elseif          |15     |47     |31.91   |
|   |true numeric       |       |       |        |
+---+-------------------+-------+-------+--------+
%
% # alternate way of doing the above
% 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
.nf
Copyright (c) 2002 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/struct/matrix1.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.PP
The examples below assume a 5x5 matrix M with the first row containing
the values 1 to 5, with 1 in the top-left cell. Each other row
contains the contents of the row above it, rotated by one cell to the
right.
.PP
.CS


 % M getrect 0 0 4 4
 {{1 2 3 4 5} {5 1 2 3 4} {4 5 1 2 3} {3 4 5 1 2} {2 3 4 5 1}}

.CE
.PP
.CS


 % M setrect 1 1 {{0 0 0} {0 0 0} {0 0 0}}
 % M getrect 0 0 4 4
 {{1 2 3 4 5} {5 0 0 0 4} {4 0 0 0 3} {3 0 0 0 2} {2 3 4 5 1}}

.CE
.PP
Assuming that the style definitions in the example section of the
manpage for the package \fBreport\fR are loaded into the
interpreter now an example which formats a matrix into a tabular
report. The code filling the matrix with data is not shown.  contains
useful data.
.PP
.CS


    % ::struct::matrix m
    % # ... fill m with data, assume 5 columns
    % ::report::report r 5 style captionedtable 1
    % m format 2string r
    +---+-------------------+-------+-------+--------+
    |000|VERSIONS:          |2:8.4a3|1:8.4a3|1:8.4a3%|
    +---+-------------------+-------+-------+--------+
    |001|CATCH return ok    |7      |13     |53.85   |
    |002|CATCH return error |68     |91     |74.73   |
    |003|CATCH no catch used|7      |14     |50.00   |
    |004|IF if true numeric |12     |33     |36.36   |
    |005|IF elseif          |15     |47     |31.91   |
    |   |true numeric       |       |       |        |
    +---+-------------------+-------+-------+--------+
    %
    % # alternate way of doing the above
    % 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
.nf
Copyright (c) 2002 Andreas Kupries <[email protected]>

.fi







<
<
|
|
<



<
<
|
|
|
<









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















<

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
.PP
The examples below assume a 5x5 matrix M with the first row containing
the values 1 to 5, with 1 in the top-left cell. Each other row
contains the contents of the row above it, rotated by one cell to the
right.
.PP
.CS


% M getrect 0 0 4 4
{{1 2 3 4 5} {5 1 2 3 4} {4 5 1 2 3} {3 4 5 1 2} {2 3 4 5 1}}

.CE
.PP
.CS


% M setrect 1 1 {{0 0 0} {0 0 0} {0 0 0}}
% M getrect 0 0 4 4
{{1 2 3 4 5} {5 0 0 0 4} {4 0 0 0 3} {3 0 0 0 2} {2 3 4 5 1}}

.CE
.PP
Assuming that the style definitions in the example section of the
manpage for the package \fBreport\fR are loaded into the
interpreter now an example which formats a matrix into a tabular
report. The code filling the matrix with data is not shown.  contains
useful data.
.PP
.CS


% ::struct::matrix m
% # ... fill m with data, assume 5 columns
% ::report::report r 5 style captionedtable 1
% m format 2string r
+---+-------------------+-------+-------+--------+
|000|VERSIONS:          |2:8.4a3|1:8.4a3|1:8.4a3%|
+---+-------------------+-------+-------+--------+
|001|CATCH return ok    |7      |13     |53.85   |
|002|CATCH return error |68     |91     |74.73   |
|003|CATCH no catch used|7      |14     |50.00   |
|004|IF if true numeric |12     |33     |36.36   |
|005|IF elseif          |15     |47     |31.91   |
|   |true numeric       |       |       |        |
+---+-------------------+-------+-------+--------+
%
% # alternate way of doing the above
% 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
.nf
Copyright (c) 2002 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/struct/pool.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
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
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.
.PP
.CS


     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

.CE
.PP
Suspend the interactive session temporarily, and show the programmatic
use of the request subcommand:
.PP
.CS


     # 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."
     }

.CE
.PP
Note how the \fBif\fR command uses the value returned by the
\fBrequest\fR subcommand.
.PP
.CS


     # 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."
     }

.CE
.PP
Resume the interactive session:
.PP
.CS


     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

.CE
.PP
\fIExample 2\fR
.PP
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.
.PP
.CS


     # 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.
     }

.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
.nf
Copyright (c) 2002, Erik Leunissen <[email protected]>

.fi







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






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






<
<
|
|
|
|
|
|
|
|
<





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















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















<

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
594
595
596
597
598
599

600
601
602
603
604
605
606
607
608
609
610
611
612
613
614

615
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.
.PP
.CS


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

.CE
.PP
Suspend the interactive session temporarily, and show the programmatic
use of the request subcommand:
.PP
.CS


# 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."
}

.CE
.PP
Note how the \fBif\fR command uses the value returned by the
\fBrequest\fR subcommand.
.PP
.CS


# 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."
}

.CE
.PP
Resume the interactive session:
.PP
.CS


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

.CE
.PP
\fIExample 2\fR
.PP
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.
.PP
.CS


# 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.
}

.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
.nf
Copyright (c) 2002, Erik Leunissen <[email protected]>

.fi

Changes to embedded/man/files/modules/struct/prioqueue.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
351
352
353
354
355
356
357
358
359
.SH KEYWORDS
ordered list, prioqueue, priority queue
.SH CATEGORY
Data structures
.SH COPYRIGHT
.nf
Copyright (c) 2003 Michael Schlenker <[email protected]>

.fi







<

350
351
352
353
354
355
356

357
.SH KEYWORDS
ordered list, prioqueue, priority queue
.SH CATEGORY
Data structures
.SH COPYRIGHT
.nf
Copyright (c) 2003 Michael Schlenker <[email protected]>

.fi

Changes to embedded/man/files/modules/struct/queue.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

Changes to embedded/man/files/modules/struct/record.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
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 \fBrecord\fR 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:
.PP
.CS


# this is the nested record
record define mynestedrecord {
    nest1
    nest2
}

# This is the main record
record define myrecord {
    mem1
    mem2
    {record mynestedrecord mem3}
}


.CE
You can also assign default or initial values to the members of a record,
by enclosing the member entry in braces:
.PP
.CS



record define myrecord {
    mem1
    {mem2 5}
}


.CE
All instances created from this record definition, will initially have 5 as
the value for \fImem2\fR. If no default is given, then the value will be the empty string.
.PP
\fIGetting Values\fR
.PP
To get a value of a member, there are several ways to do this.







<
<


|
|

<


|
|
|

<
<





<
<
<

|
|

<
<







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
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 \fBrecord\fR 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:
.PP
.CS


# this is the nested record
record define mynestedrecord {
nest1
nest2
}

# This is the main record
record define myrecord {
mem1
mem2
{record mynestedrecord mem3}
}


.CE
You can also assign default or initial values to the members of a record,
by enclosing the member entry in braces:
.PP
.CS



record define myrecord {
mem1
{mem2 5}
}


.CE
All instances created from this record definition, will initially have 5 as
the value for \fImem2\fR. If no default is given, then the value will be the empty string.
.PP
\fIGetting Values\fR
.PP
To get a value of a member, there are several ways to do this.
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
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.
.PP
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:
.PP
.CS


# 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
%







<
<







408
409
410
411
412
413
414


415
416
417
418
419
420
421
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.
.PP
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:
.PP
.CS


# 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
%
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
% # 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 {}
%


.CE
.SH "RECORD COMMAND"
The following subcommands and corresponding arguments are available to any
record command:
.TP
\fIrecordName\fR \fB\fIinstanceName|#auto\fR\fR ?\fI-member1 value1 -member2 value2 ...\fR?
Using the \fIrecordName\fR object command that was created from the record definition,







<
<







435
436
437
438
439
440
441


442
443
444
445
446
447
448
% # 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 {}
%


.CE
.SH "RECORD COMMAND"
The following subcommands and corresponding arguments are available to any
record command:
.TP
\fIrecordName\fR \fB\fIinstanceName|#auto\fR\fR ?\fI-member1 value1 -member2 value2 ...\fR?
Using the \fIrecordName\fR object command that was created from the record definition,
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
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:
.PP
.CS



##
##  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
% # Display some introspection values
% record show records







<
<
<




<

<


|
|
|
|
|
|
|




|
|
|
|
|







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
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:
.PP
.CS



##
##  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
% # Display some introspection values
% record show records
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
% record define contacts2 [record show members contacts]
::contacts2
% 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}
%

.CE
.PP
\fIExample 1\fR
.PP
This next example just illustrates a simple linked list
.PP
.CS



% # define a very simple record for linked list
% record define llist {
    value
    next
}
::llist
% llist lstart
::lstart
% lstart config -value 1 -next [llist #auto]
% [lstart cget -next] config -value 2 -next [llist #auto]
% [[lstart cget -next] cget -next] config -value 3 -next "end"







<







<
<
<


|
|







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
% record define contacts2 [record show members contacts]
::contacts2
% 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}
%

.CE
.PP
\fIExample 1\fR
.PP
This next example just illustrates a simple linked list
.PP
.CS



% # define a very simple record for linked list
% record define llist {
value
next
}
::llist
% llist lstart
::lstart
% lstart config -value 1 -next [llist #auto]
% [lstart cget -next] config -value 2 -next [llist #auto]
% [[lstart cget -next] cget -next] config -value 3 -next "end"
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
% # cleanup linked list
% # We could just use delete record llist also
% foreach I [record show instances llist] {
record delete instance $I
}
% record show instances llist
%


.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
.nf
Copyright (c) 2002, Brett Schwarz <[email protected]>

.fi







<
<
















<

569
570
571
572
573
574
575


576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591

592
% # cleanup linked list
% # We could just use delete record llist also
% foreach I [record show instances llist] {
record delete instance $I
}
% record show instances llist
%


.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
.nf
Copyright (c) 2002, Brett Schwarz <[email protected]>

.fi

Changes to embedded/man/files/modules/struct/skiplist.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
322
323
324
325
326
327
328
329
330
.SH KEYWORDS
skiplist
.SH CATEGORY
Data structures
.SH COPYRIGHT
.nf
Copyright (c) 2000 Keith Vetter

.fi







<

321
322
323
324
325
326
327

328
.SH KEYWORDS
skiplist
.SH CATEGORY
Data structures
.SH COPYRIGHT
.nf
Copyright (c) 2000 Keith Vetter

.fi

Changes to embedded/man/files/modules/struct/stack.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

Changes to embedded/man/files/modules/struct/struct_list.n.

219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







219
220
221
222
223
224
225

226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
The pair of indices into \fIsequence2\fR describes the range of items
replacing the original range. Again the first index refers to the
first item in the range, and the second index refers to the last item
in the range.
.RE
.sp
.CS


    sequence 1 = {a b r a c a d a b r a}
    lcs 1      =   {1 2   4 5     8 9 10}
    lcs 2      =   {0 1   3 4     5 6 7}
    sequence 2 =   {b r i c a     b r a c}

    Inversion  = {{deleted  {0  0} {-1 0}}
                  {changed  {3  3}  {2 2}}
                  {deleted  {6  7}  {4 5}}
                  {added   {10 11}  {8 8}}}

.CE
.IP
\fINotes:\fR
.sp
.RS
.IP \(bu
An index of \fB-1\fR in a \fIdeleted\fR chunk refers to just before







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







394
395
396
397
398
399
400


401
402
403
404

405
406
407
408

409
410
411
412
413
414
415
The pair of indices into \fIsequence2\fR describes the range of items
replacing the original range. Again the first index refers to the
first item in the range, and the second index refers to the last item
in the range.
.RE
.sp
.CS


sequence 1 = {a b r a c a d a b r a}
lcs 1      =   {1 2   4 5     8 9 10}
lcs 2      =   {0 1   3 4     5 6 7}
sequence 2 =   {b r i c a     b r a c}

Inversion  = {{deleted  {0  0} {-1 0}}
{changed  {3  3}  {2 2}}
{deleted  {6  7}  {4 5}}
{added   {10 11}  {8 8}}}

.CE
.IP
\fINotes:\fR
.sp
.RS
.IP \(bu
An index of \fB-1\fR in a \fIdeleted\fR chunk refers to just before
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
.sp
These new chunks describe the parts which are unchanged between the
two sequences. This means that the result of this command describes
both the changed and unchanged parts of the two sequences in one
structure.
.sp
.CS


    sequence 1 = {a b r a c a d a b r a}
    lcs 1      =   {1 2   4 5     8 9 10}
    lcs 2      =   {0 1   3 4     5 6 7}
    sequence 2 =   {b r i c a     b r a c}

    Inversion/Merge  = {{deleted   {0  0} {-1 0}}
                        {unchanged {1  2}  {0 1}}
                        {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}}}

.CE
.TP
\fB::struct::list\fR \fBlcsInvertMerge2\fR \fIlcs1\fR \fIlcs2\fR \fIlen1\fR \fIlen2\fR
Similar to \fBlcsInvertMerge\fR. Instead of directly taking the
result of a call to \fBlongestCommonSubsequence\fR this subcommand
expects the indices for the two sequences in two separate lists.
.TP







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







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
.sp
These new chunks describe the parts which are unchanged between the
two sequences. This means that the result of this command describes
both the changed and unchanged parts of the two sequences in one
structure.
.sp
.CS


sequence 1 = {a b r a c a d a b r a}
lcs 1      =   {1 2   4 5     8 9 10}
lcs 2      =   {0 1   3 4     5 6 7}
sequence 2 =   {b r i c a     b r a c}

Inversion/Merge  = {{deleted   {0  0} {-1 0}}
{unchanged {1  2}  {0 1}}
{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}}}

.CE
.TP
\fB::struct::list\fR \fBlcsInvertMerge2\fR \fIlcs1\fR \fIlcs2\fR \fIlen1\fR \fIlen2\fR
Similar to \fBlcsInvertMerge\fR. Instead of directly taking the
result of a call to \fBlongestCommonSubsequence\fR this subcommand
expects the indices for the two sequences in two separate lists.
.TP
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
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
\fIsequence\fR the empty string will be assigned to the superfluous
variables.
.sp
If there are more elements in the \fIsequence\fR than variable names
specified the subcommand returns a list containing the unassigned
elements. Else an empty list is returned.
.CS


    tclsh> ::struct::list assign {a b c d e} foo bar
    c d e
    tclsh> set foo
    a
    tclsh> set bar
    b

.CE
.TP
\fB::struct::list\fR \fBflatten\fR ?\fB-full\fR? ?\fB--\fR? \fIsequence\fR
The subcommand takes a single \fIsequence\fR 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.
.sp
The subcommand will remove any nesting it finds if the option
\fB-full\fR is specified.
.CS


    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

.CE
.TP
\fB::struct::list\fR \fBmap\fR \fIsequence\fR \fIcmdprefix\fR
The subcommand takes a \fIsequence\fR to operate on and a command
prefix (\fIcmdprefix\fR) specifying an operation, applies the command
prefix to each element of the sequence and returns a sequence
consisting of the results of that application.
.sp
The command prefix will be evaluated with a single word appended to
it. The evaluation takes place in the context of the caller of the
subcommand.
.sp
.CS


    tclsh> # squaring all elements in a list

    tclsh> proc sqr {x} {expr {$x*$x}}
    tclsh> ::struct::list map {1 2 3 4 5} sqr
    1 4 9 16 25

    tclsh> # Retrieving the second column from a matrix
    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

.CE
.TP
\fB::struct::list\fR \fBmapfor\fR \fIvar\fR \fIsequence\fR \fIscript\fR
The subcommand takes a \fIsequence\fR to operate on and a tcl \fIscript\fR,
applies the script to each element of the sequence and returns a sequence
consisting of the results of that application.
.sp
The script will be evaluated as is, and has access to the current list element
through the specified iteration variable \fIvar\fR. The evaluation takes place
in the context of the caller of the subcommand.
.sp
.CS


    tclsh> # squaring all elements in a list

    tclsh> ::struct::list mapfor x {1 2 3 4 5} {
	expr {$x * $x}
    }
    1 4 9 16 25

    tclsh> # Retrieving the second column from a matrix
    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

.CE
.TP
\fB::struct::list\fR \fBfilter\fR \fIsequence\fR \fIcmdprefix\fR
The subcommand takes a \fIsequence\fR to operate on and a command
prefix (\fIcmdprefix\fR) specifying an operation, applies the command
prefix to each element of the sequence and returns a sequence
consisting of all elements of the \fIsequence\fR for which the command
prefix returned \fBtrue\fR.
In other words, this command filters out all elements of the input
\fIsequence\fR which fail the test the \fIcmdprefix\fR represents, and
returns the remaining elements.
.sp
The command prefix will be evaluated with a single word appended to
it. The evaluation takes place in the context of the caller of the
subcommand.
.sp
.CS


    tclsh> # removing all odd numbers from the input

    tclsh> proc even {x} {expr {($x % 2) == 0}}
    tclsh> ::struct::list filter {1 2 3 4 5} even
    2 4

.CE
.sp
\fINote:\fR The \fBfilter\fR is a specialized application of
\fBfold\fR where the result is extended with the current item or
not, depending o nthe result of the test.
.TP
\fB::struct::list\fR \fBfilterfor\fR \fIvar\fR \fIsequence\fR \fIexpr\fR
The subcommand takes a \fIsequence\fR to operate on and a tcl expression
(\fIexpr\fR) specifying a condition, applies the conditionto each element
of the sequence and returns a sequence consisting of all elements of the
\fIsequence\fR for which the expression returned \fBtrue\fR.
In other words, this command filters out all elements of the input
\fIsequence\fR which fail the test the condition \fIexpr\fR represents, and
returns the remaining elements.
.sp
The expression will be evaluated as is, and has access to the current list
element through the specified iteration variable \fIvar\fR. The evaluation
takes place in the context of the caller of the subcommand.
.sp
.CS


    tclsh> # removing all odd numbers from the input

    tclsh> ::struct::list filterfor x {1 2 3 4 5} {($x % 2) == 0}
    2 4

.CE
.TP
\fB::struct::list\fR \fBsplit\fR \fIsequence\fR \fIcmdprefix\fR ?\fIpassVar\fR \fIfailVar\fR?
This is a variant of method \fBfilter\fR, see above. Instead of
returning just the elements passing the test we get lists of both
passing and failing elements.
.sp







<
<
|
|
|
|
|
|
<











<
<
|
|
|
|
<













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












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

















<
<
|
<
|
|
|
<




















<
<
|
<
|
|
<







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
580
581
582
583
584
585
586
587


588

589
590

591
592
593
594
595
596
597
\fIsequence\fR the empty string will be assigned to the superfluous
variables.
.sp
If there are more elements in the \fIsequence\fR than variable names
specified the subcommand returns a list containing the unassigned
elements. Else an empty list is returned.
.CS


tclsh> ::struct::list assign {a b c d e} foo bar
c d e
tclsh> set foo
a
tclsh> set bar
b

.CE
.TP
\fB::struct::list\fR \fBflatten\fR ?\fB-full\fR? ?\fB--\fR? \fIsequence\fR
The subcommand takes a single \fIsequence\fR 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.
.sp
The subcommand will remove any nesting it finds if the option
\fB-full\fR is specified.
.CS


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

.CE
.TP
\fB::struct::list\fR \fBmap\fR \fIsequence\fR \fIcmdprefix\fR
The subcommand takes a \fIsequence\fR to operate on and a command
prefix (\fIcmdprefix\fR) specifying an operation, applies the command
prefix to each element of the sequence and returns a sequence
consisting of the results of that application.
.sp
The command prefix will be evaluated with a single word appended to
it. The evaluation takes place in the context of the caller of the
subcommand.
.sp
.CS


tclsh> # squaring all elements in a list

tclsh> proc sqr {x} {expr {$x*$x}}
tclsh> ::struct::list map {1 2 3 4 5} sqr
1 4 9 16 25

tclsh> # Retrieving the second column from a matrix
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

.CE
.TP
\fB::struct::list\fR \fBmapfor\fR \fIvar\fR \fIsequence\fR \fIscript\fR
The subcommand takes a \fIsequence\fR to operate on and a tcl \fIscript\fR,
applies the script to each element of the sequence and returns a sequence
consisting of the results of that application.
.sp
The script will be evaluated as is, and has access to the current list element
through the specified iteration variable \fIvar\fR. The evaluation takes place
in the context of the caller of the subcommand.
.sp
.CS


tclsh> # squaring all elements in a list

tclsh> ::struct::list mapfor x {1 2 3 4 5} {
expr {$x * $x}
}
1 4 9 16 25

tclsh> # Retrieving the second column from a matrix
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

.CE
.TP
\fB::struct::list\fR \fBfilter\fR \fIsequence\fR \fIcmdprefix\fR
The subcommand takes a \fIsequence\fR to operate on and a command
prefix (\fIcmdprefix\fR) specifying an operation, applies the command
prefix to each element of the sequence and returns a sequence
consisting of all elements of the \fIsequence\fR for which the command
prefix returned \fBtrue\fR.
In other words, this command filters out all elements of the input
\fIsequence\fR which fail the test the \fIcmdprefix\fR represents, and
returns the remaining elements.
.sp
The command prefix will be evaluated with a single word appended to
it. The evaluation takes place in the context of the caller of the
subcommand.
.sp
.CS


tclsh> # removing all odd numbers from the input

tclsh> proc even {x} {expr {($x % 2) == 0}}
tclsh> ::struct::list filter {1 2 3 4 5} even
2 4

.CE
.sp
\fINote:\fR The \fBfilter\fR is a specialized application of
\fBfold\fR where the result is extended with the current item or
not, depending o nthe result of the test.
.TP
\fB::struct::list\fR \fBfilterfor\fR \fIvar\fR \fIsequence\fR \fIexpr\fR
The subcommand takes a \fIsequence\fR to operate on and a tcl expression
(\fIexpr\fR) specifying a condition, applies the conditionto each element
of the sequence and returns a sequence consisting of all elements of the
\fIsequence\fR for which the expression returned \fBtrue\fR.
In other words, this command filters out all elements of the input
\fIsequence\fR which fail the test the condition \fIexpr\fR represents, and
returns the remaining elements.
.sp
The expression will be evaluated as is, and has access to the current list
element through the specified iteration variable \fIvar\fR. The evaluation
takes place in the context of the caller of the subcommand.
.sp
.CS


tclsh> # removing all odd numbers from the input

tclsh> ::struct::list filterfor x {1 2 3 4 5} {($x % 2) == 0}
2 4

.CE
.TP
\fB::struct::list\fR \fBsplit\fR \fIsequence\fR \fIcmdprefix\fR ?\fIpassVar\fR \fIfailVar\fR?
This is a variant of method \fBfilter\fR, see above. Instead of
returning just the elements passing the test we get lists of both
passing and failing elements.
.sp
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
\fB1\fR
Application of the command to the initial value and the first element
of the list.
.TP
\fB2\fR
Application of the command to the result of the last call and the
second element of the list.

.TP \fB...\fR
.TP
\fBi\fR
Application of the command to the result of the last call and the
\fBi\fR'th element of the list.

.TP \fB...\fR
.TP
\fBend\fR
Application of the command to the result of the last call and the last
element of the list. The result of this call is returned as the result
of the subcommand.
.RE
.sp
.CS


    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

.CE
.TP
\fB::struct::list\fR \fBshift\fR \fIlistvar\fR
The subcommand takes the list contained in the variable named by
\fIlistvar\fR and shifts it down one element.
After the call \fIlistvar\fR will contain a list containing the second
to last elements of the input list. The first element of the ist is







>
|




>
|








<
<
|
|
|
|
<







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
\fB1\fR
Application of the command to the initial value and the first element
of the list.
.TP
\fB2\fR
Application of the command to the result of the last call and the
second element of the list.
.TP
\fB...\fR
.TP
\fBi\fR
Application of the command to the result of the last call and the
\fBi\fR'th element of the list.
.TP
\fB...\fR
.TP
\fBend\fR
Application of the command to the result of the last call and the last
element of the list. The result of this call is returned as the result
of the subcommand.
.RE
.sp
.CS


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

.CE
.TP
\fB::struct::list\fR \fBshift\fR \fIlistvar\fR
The subcommand takes the list contained in the variable named by
\fIlistvar\fR and shifts it down one element.
After the call \fIlistvar\fR will contain a list containing the second
to last elements of the input list. The first element of the ist is
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
Note that \fBrepeat 1 arg ...\fR  is identical to
\fBlist arg ...\fR, though the \fIarg\fR is required
with \fBrepeat\fR.
.sp
\fIExamples:\fR
.sp
.CS


    tclsh> ::struct::list repeat 3 a
    a a a
    tclsh> ::struct::list repeat 3 [::struct::list repeat 3 0]
    {0 0 0} {0 0 0} {0 0 0}
    tclsh> ::struct::list repeat 3 a b c
    a b c a b c a b c
    tclsh> ::struct::list repeat 3 [::struct::list repeat 2 a] b c
    {a a} b c {a a} b c {a a} b c

.CE
.TP
\fB::struct::list\fR \fBrepeatn\fR \fIvalue\fR \fIsize\fR...
The subcommand creates a (nested) list containing the \fIvalue\fR in
all positions. The exact size and degree of nesting is determined by
the \fIsize\fR arguments, all of which have to be integer numbers
greater than or equal to zero.







<
<
|
|
|
|
|
|
|
|
<







683
684
685
686
687
688
689


690
691
692
693
694
695
696
697

698
699
700
701
702
703
704
Note that \fBrepeat 1 arg ...\fR  is identical to
\fBlist arg ...\fR, though the \fIarg\fR is required
with \fBrepeat\fR.
.sp
\fIExamples:\fR
.sp
.CS


tclsh> ::struct::list repeat 3 a
a a a
tclsh> ::struct::list repeat 3 [::struct::list repeat 3 0]
{0 0 0} {0 0 0} {0 0 0}
tclsh> ::struct::list repeat 3 a b c
a b c a b c a b c
tclsh> ::struct::list repeat 3 [::struct::list repeat 2 a] b c
{a a} b c {a a} b c {a a} b c

.CE
.TP
\fB::struct::list\fR \fBrepeatn\fR \fIvalue\fR \fIsize\fR...
The subcommand creates a (nested) list containing the \fIvalue\fR in
all positions. The exact size and degree of nesting is determined by
the \fIsize\fR arguments, all of which have to be integer numbers
greater than or equal to zero.
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
\fIsize\fR argument given to it. The elements of that list
are defined as the result of \fBRepeat\fR for the same arguments,
but with the last \fIsize\fR value removed.
.sp
An empty list will be returned if no \fIsize\fR arguments are present.
.sp
.CS


    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}
    {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}}

.CE
.TP
\fB::struct::list\fR \fBdbJoin\fR ?\fB-inner\fR|\fB-left\fR|\fB-right\fR|\fB-full\fR? ?\fB-keys\fR \fIvarname\fR? {\fIkeycol\fR \fItable\fR}...
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 \fB-left\fR, \fB-right\fR, or
\fB-full\fR. If none of these options is present a regular inner







<
<
|
|
|
|
|
|
<







714
715
716
717
718
719
720


721
722
723
724
725
726

727
728
729
730
731
732
733
\fIsize\fR argument given to it. The elements of that list
are defined as the result of \fBRepeat\fR for the same arguments,
but with the last \fIsize\fR value removed.
.sp
An empty list will be returned if no \fIsize\fR arguments are present.
.sp
.CS


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}
{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}}

.CE
.TP
\fB::struct::list\fR \fBdbJoin\fR ?\fB-inner\fR|\fB-left\fR|\fB-right\fR|\fB-full\fR? ?\fB-keys\fR \fIvarname\fR? {\fIkeycol\fR \fItable\fR}...
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 \fB-left\fR, \fB-right\fR, or
\fB-full\fR. If none of these options is present a regular inner
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
words, the additional rows are as defined for left outer join, and
right outer join, combined.
.PP
.PP
We extend all the joins from two to \fBn\fR tables (\fBn\fR > 2) by
executing
.CS


    (...((table1 join table2) join table3) ...) join tableN

.CE
.PP
Examples for all the joins:
.CS


    Inner Join

    {0 foo}              {0 bagel}    {0 foo   0 bagel}
    {1 snarf} inner join {1 snatz}  = {1 snarf 1 snatz}
    {2 blue}             {3 driver}

    Left Outer Join

    {0 foo}                   {0 bagel}    {0 foo   0 bagel}
    {1 snarf} left outer join {1 snatz}  = {1 snarf 1 snatz}
    {2 blue}                  {3 driver}   {2 blue  {} {}}

    Right Outer Join

    {0 foo}                    {0 bagel}    {0 foo   0 bagel}
    {1 snarf} right outer join {1 snatz}  = {1 snarf 1 snatz}
    {2 blue}                   {3 driver}   {{} {}   3 driver}

    Full Outer Join

    {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}

.CE
.SH REFERENCES
.IP [1]
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: \fIhttp://www.cs.dartmouth.edu/~doug/\fR







<
<
|
<




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







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
words, the additional rows are as defined for left outer join, and
right outer join, combined.
.PP
.PP
We extend all the joins from two to \fBn\fR tables (\fBn\fR > 2) by
executing
.CS


(...((table1 join table2) join table3) ...) join tableN

.CE
.PP
Examples for all the joins:
.CS


Inner Join

{0 foo}              {0 bagel}    {0 foo   0 bagel}
{1 snarf} inner join {1 snatz}  = {1 snarf 1 snatz}
{2 blue}             {3 driver}

Left Outer Join

{0 foo}                   {0 bagel}    {0 foo   0 bagel}
{1 snarf} left outer join {1 snatz}  = {1 snarf 1 snatz}
{2 blue}                  {3 driver}   {2 blue  {} {}}

Right Outer Join

{0 foo}                    {0 bagel}    {0 foo   0 bagel}
{1 snarf} right outer join {1 snatz}  = {1 snarf 1 snatz}
{2 blue}                   {3 driver}   {{} {}   3 driver}

Full Outer Join

{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}

.CE
.SH REFERENCES
.IP [1]
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: \fIhttp://www.cs.dartmouth.edu/~doug/\fR
963
964
965
966
967
968
969
970
971
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
.nf
Copyright (c) 2003-2005 by Kevin B. Kenny. All rights reserved
Copyright (c) 2003-2012 Andreas Kupries <[email protected]>

.fi







<

908
909
910
911
912
913
914

915
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
.nf
Copyright (c) 2003-2005 by Kevin B. Kenny. All rights reserved
Copyright (c) 2003-2012 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/struct/struct_set.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
374
375
376
377
378
379
380
381
382
.SH KEYWORDS
cardinality, difference, emptiness, exclusion, inclusion, intersection, membership, set, symmetric difference, union
.SH CATEGORY
Data structures
.SH COPYRIGHT
.nf
Copyright (c) 2004-2008 Andreas Kupries <[email protected]>

.fi







<

373
374
375
376
377
378
379

380
.SH KEYWORDS
cardinality, difference, emptiness, exclusion, inclusion, intersection, membership, set, symmetric difference, union
.SH CATEGORY
Data structures
.SH COPYRIGHT
.nf
Copyright (c) 2004-2008 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/struct/struct_tree.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
object, and the assignment operator \fB=\fR will be executed. For
\fBdeserialize\fR the \fIsource\fR is a serialized tree object and
\fBdeserialize\fR will be executed.
.sp
In other words
.sp
.CS


    ::struct::tree mytree = b

.CE
.sp
is equivalent to
.sp
.CS


    ::struct::tree mytree
    mytree = b

.CE
.sp
and
.sp
.CS


    ::struct::tree mytree deserialize $b

.CE
.sp
is equivalent to
.sp
.CS


    ::struct::tree mytree
    mytree deserialize $b

.CE
.TP
\fB::struct::tree::prune\fR
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
\fBwalk\fR. When used in the walk script it causes the traversal to
ignore the children of the node we are currently at.







<
<
|
<





<
<
|
|
<





<
<
|
<





<
<
|
|
<







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
object, and the assignment operator \fB=\fR will be executed. For
\fBdeserialize\fR the \fIsource\fR is a serialized tree object and
\fBdeserialize\fR will be executed.
.sp
In other words
.sp
.CS


::struct::tree mytree = b

.CE
.sp
is equivalent to
.sp
.CS


::struct::tree mytree
mytree = b

.CE
.sp
and
.sp
.CS


::struct::tree mytree deserialize $b

.CE
.sp
is equivalent to
.sp
.CS


::struct::tree mytree
mytree deserialize $b

.CE
.TP
\fB::struct::tree::prune\fR
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
\fBwalk\fR. When used in the walk script it causes the traversal to
ignore the children of the node we are currently at.
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
contained in the tree object \fIsourcetree\fR over the tree data in
\fItreeName\fR. The old contents of \fItreeName\fR are deleted by this
operation.
.sp
This operation is in effect equivalent to
.sp
.CS


    \fItreeName\fR \fBdeserialize\fR [\fIsourcetree\fR \fBserialize\fR]

.CE
.TP
\fItreeName\fR \fB-->\fR \fIdesttree\fR
This is the reverse assignment operator for tree objects. It copies the tree
contained in the tree object \fItreeName\fR over the tree data in the object
\fIdesttree\fR. The old contents of \fIdesttree\fR are deleted by this
operation.
.sp
This operation is in effect equivalent to
.sp
.CS


    \fIdesttree\fR \fBdeserialize\fR [\fItreeName\fR \fBserialize\fR]

.CE
.TP
\fItreeName\fR \fBancestors\fR \fInode\fR
This method extends the method \fBparent\fR and returns a list
containing all ancestor nodes to the specified \fInode\fR. 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







<
<
|
<











<
<
|
<







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
contained in the tree object \fIsourcetree\fR over the tree data in
\fItreeName\fR. The old contents of \fItreeName\fR are deleted by this
operation.
.sp
This operation is in effect equivalent to
.sp
.CS


\fItreeName\fR \fBdeserialize\fR [\fIsourcetree\fR \fBserialize\fR]

.CE
.TP
\fItreeName\fR \fB-->\fR \fIdesttree\fR
This is the reverse assignment operator for tree objects. It copies the tree
contained in the tree object \fItreeName\fR over the tree data in the object
\fIdesttree\fR. The old contents of \fIdesttree\fR are deleted by this
operation.
.sp
This operation is in effect equivalent to
.sp
.CS


\fIdesttree\fR \fBdeserialize\fR [\fItreeName\fR \fBserialize\fR]

.CE
.TP
\fItreeName\fR \fBancestors\fR \fInode\fR
This method extends the method \fBparent\fR and returns a list
containing all ancestor nodes to the specified \fInode\fR. 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
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
and has to return a boolean value. Nodes for which the command returns
\fBfalse\fR are removed from the result list before it is returned
to the caller.
.sp
Some examples:
.sp
.CS


    mytree insert root end 0 ; mytree set 0 volume 30
    mytree insert root end 1
    mytree insert root end 2
    mytree insert 0    end 3
    mytree insert 0    end 4
    mytree insert 4    end 5 ; mytree set 5 volume 50
    mytree insert 4    end 6

    proc vol {t n} {
	$t keyexists $n volume
    }
    proc vgt40 {t n} {
	if {![$t keyexists $n volume]} {return 0}
	expr {[$t get $n volume] > 40}
    }

    tclsh> lsort [mytree children -all root filter vol]
    0 5

    tclsh> lsort [mytree children -all root filter vgt40]
    5

    tclsh> lsort [mytree children root filter vol]
    0

    tclsh> puts ([lsort [mytree children root filter vgt40]])
    ()

.CE
.TP
\fItreeName\fR \fBcut\fR \fInode\fR
Removes the node specified by \fInode\fR from the tree, but not its
children.  The children of \fInode\fR are made children of the parent
of the \fInode\fR, at the index at which \fInode\fR was located.
.TP







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







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
and has to return a boolean value. Nodes for which the command returns
\fBfalse\fR are removed from the result list before it is returned
to the caller.
.sp
Some examples:
.sp
.CS


mytree insert root end 0 ; mytree set 0 volume 30
mytree insert root end 1
mytree insert root end 2
mytree insert 0    end 3
mytree insert 0    end 4
mytree insert 4    end 5 ; mytree set 5 volume 50
mytree insert 4    end 6

proc vol {t n} {
$t keyexists $n volume
}
proc vgt40 {t n} {
if {![$t keyexists $n volume]} {return 0}
expr {[$t get $n volume] > 40}
}

tclsh> lsort [mytree children -all root filter vol]
0 5

tclsh> lsort [mytree children -all root filter vgt40]
5

tclsh> lsort [mytree children root filter vol]
0

tclsh> puts ([lsort [mytree children root filter vgt40]])
()

.CE
.TP
\fItreeName\fR \fBcut\fR \fInode\fR
Removes the node specified by \fInode\fR from the tree, but not its
children.  The children of \fInode\fR are made children of the parent
of the \fInode\fR, at the index at which \fInode\fR was located.
.TP
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
The only information a reader of the serialized data can rely on for
the structure of the tree is that the root node is signaled by the
empty string for the parent reference, that all other nodes refer to
their parent through the index in the list, and that children occur in
the same order as in their parent.
.sp
.CS


 A possible serialization for the tree structure

             +- d
       +- a -+
 root -+- b  +- e
       +- c
 is

 {root {} {} a 0 {} d 3 {} e 3 {} b 0 {} c 0 {}}

 The above assumes that none of the nodes have attributes.

.CE
.TP
\fItreeName\fR \fBset\fR \fInode\fR \fIkey\fR ?\fIvalue\fR?
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 \fIvalue\fR is
not specified, this command returns the current value assigned to the
key; if \fIvalue\fR is specified, this command assigns that value to







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







718
719
720
721
722
723
724


725

726
727
728
729
730

731

732

733
734
735
736
737
738
739
The only information a reader of the serialized data can rely on for
the structure of the tree is that the root node is signaled by the
empty string for the parent reference, that all other nodes refer to
their parent through the index in the list, and that children occur in
the same order as in their parent.
.sp
.CS


A possible serialization for the tree structure

+- d
+- a -+
root -+- b  +- e
+- c
is

{root {} {} a 0 {} d 3 {} e 3 {} b 0 {} c 0 {}}

The above assumes that none of the nodes have attributes.

.CE
.TP
\fItreeName\fR \fBset\fR \fInode\fR \fIkey\fR ?\fIvalue\fR?
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 \fIvalue\fR is
not specified, this command returns the current value assigned to the
key; if \fIvalue\fR is specified, this command assigns that value to
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
may succeed, error out, silently compute the wrong result, or anything
in between.
.sp
At last a small table showing the relationship between the various
options and the possible actions.
.sp
.CS


 order       type    actions         notes
 -----       ----    -----           -----
 pre         dfs     enter           parent before children
 post        dfs     leave           parent after children
 in          dfs     visit           parent between first and second child.
 both        dfs     enter, leave    parent before and after children
 -----       ----    -----           -----
 pre         bfs     enter           parent before children
 post        bfs     leave           parent after children
 in          bfs             -- illegal --
 both        bfs     enter, leave    parent before and after children
 -----       ----    -----           -----

.CE
.sp
Note the command \fB::struct::tree::prune\fR. 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 \fBpost\fR or \fBin\fR as these modes visit
the children before their parent, making pruning non-sensical.







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







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
may succeed, error out, silently compute the wrong result, or anything
in between.
.sp
At last a small table showing the relationship between the various
options and the possible actions.
.sp
.CS


order       type    actions         notes
-----       ----    -----           -----
pre         dfs     enter           parent before children
post        dfs     leave           parent after children
in          dfs     visit           parent between first and second child.
both        dfs     enter, leave    parent before and after children
-----       ----    -----           -----
pre         bfs     enter           parent before children
post        bfs     leave           parent after children
in          bfs             -- illegal --
both        bfs     enter, leave    parent before and after children
-----       ----    -----           -----

.CE
.sp
Note the command \fB::struct::tree::prune\fR. 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 \fBpost\fR or \fBin\fR as these modes visit
the children before their parent, making pruning non-sensical.
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
select from the children of the node based on an arbitrary filtering
criterium. Another extension is the ability to look not only at the
immediate children of the node, but the whole tree below it.
.PP
.SH EXAMPLES
The following example demonstrates the creation of new nodes:
.CS


    mytree insert root end 0   ; # Create node 0, as child of the root
    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.

.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
.nf
Copyright (c) 2002-2004,2012 Andreas Kupries <[email protected]>

.fi







<
<
|
|
|
|
|
|
<















<

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
select from the children of the node based on an arbitrary filtering
criterium. Another extension is the ability to look not only at the
immediate children of the node, but the whole tree below it.
.PP
.SH EXAMPLES
The following example demonstrates the creation of new nodes:
.CS


mytree insert root end 0   ; # Create node 0, as child of the root
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.

.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
.nf
Copyright (c) 2002-2004,2012 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/struct/struct_tree1.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
526
527
528
529
530
531
532
533
534
.SH KEYWORDS
tree
.SH CATEGORY
Data structures
.SH COPYRIGHT
.nf
Copyright (c) 2002 Andreas Kupries <[email protected]>

.fi







<

525
526
527
528
529
530
531

532
.SH KEYWORDS
tree
.SH CATEGORY
Data structures
.SH COPYRIGHT
.nf
Copyright (c) 2002 Andreas Kupries <[email protected]>

.fi

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
.TP
\fB::tar::stat\fR \fItarball\fR ?file? ?\fB-chan\fR?
Returns a nested dict containing information on the named ?file? in \fItarball\fR,
or all files if none is specified. The top level are pairs of filename and info. The info is a dict with the keys
"\fBmode\fR \fBuid\fR \fBgid\fR \fBsize\fR \fBmtime\fR \fBtype\fR \fBlinkname\fR \fBuname\fR \fBgname\fR
\fBdevmajor\fR \fBdevminor\fR"
.CS


% ::tar::stat tarball.tar
foo.jpg {mode 0644 uid 1000 gid 0 size 7580 mtime 811903867 type file linkname {} uname user gname wheel devmajor 0 devminor 0}

.CE
.sp
If the option \fB-chan\fR is present \fItarball\fR is interpreted as an open channel.
It is assumed that the channel was opened for reading, and configured for binary input.
The command will \fInot\fR close the channel.
.TP
\fB::tar::untar\fR \fItarball\fR \fIargs\fR







<
<


<







273
274
275
276
277
278
279


280
281

282
283
284
285
286
287
288
.TP
\fB::tar::stat\fR \fItarball\fR ?file? ?\fB-chan\fR?
Returns a nested dict containing information on the named ?file? in \fItarball\fR,
or all files if none is specified. The top level are pairs of filename and info. The info is a dict with the keys
"\fBmode\fR \fBuid\fR \fBgid\fR \fBsize\fR \fBmtime\fR \fBtype\fR \fBlinkname\fR \fBuname\fR \fBgname\fR
\fBdevmajor\fR \fBdevminor\fR"
.CS


% ::tar::stat tarball.tar
foo.jpg {mode 0644 uid 1000 gid 0 size 7580 mtime 811903867 type file linkname {} uname user gname wheel devmajor 0 devminor 0}

.CE
.sp
If the option \fB-chan\fR is present \fItarball\fR is interpreted as an open channel.
It is assumed that the channel was opened for reading, and configured for binary input.
The command will \fInot\fR close the channel.
.TP
\fB::tar::untar\fR \fItarball\fR \fIargs\fR
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
\fB-chan\fR
If this option is present \fItarball\fR is interpreted as an open channel.
It is assumed that the channel was opened for reading, and configured for binary input.
The command will \fInot\fR close the channel.
.RE
.sp
.CS


% foreach {file size} [::tar::untar tarball.tar -glob *.jpg] {
puts "Extracted $file ($size bytes)"
}

.CE
.TP
\fB::tar::get\fR \fItarball\fR \fIfileName\fR ?\fB-chan\fR?
Returns the contents of \fIfileName\fR from the \fItarball\fR
.sp
.CS


% set readme [::tar::get tarball.tar doc/README] {
% puts $readme
}

.CE
.sp
If the option \fB-chan\fR is present \fItarball\fR is interpreted as an open channel.
It is assumed that the channel was opened for reading, and configured for binary input.
The command will \fInot\fR close the channel.
.TP
\fB::tar::create\fR \fItarball\fR \fIfiles\fR \fIargs\fR







<
<



<






<
<



<







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
\fB-chan\fR
If this option is present \fItarball\fR is interpreted as an open channel.
It is assumed that the channel was opened for reading, and configured for binary input.
The command will \fInot\fR close the channel.
.RE
.sp
.CS


% foreach {file size} [::tar::untar tarball.tar -glob *.jpg] {
puts "Extracted $file ($size bytes)"
}

.CE
.TP
\fB::tar::get\fR \fItarball\fR \fIfileName\fR ?\fB-chan\fR?
Returns the contents of \fIfileName\fR from the \fItarball\fR
.sp
.CS


% set readme [::tar::get tarball.tar doc/README] {
% puts $readme
}

.CE
.sp
If the option \fB-chan\fR is present \fItarball\fR is interpreted as an open channel.
It is assumed that the channel was opened for reading, and configured for binary input.
The command will \fInot\fR close the channel.
.TP
\fB::tar::create\fR \fItarball\fR \fIfiles\fR \fIargs\fR
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
\fB-chan\fR
If this option is present \fItarball\fR is interpreted as an open channel.
It is assumed that the channel was opened for writing, and configured for binary output.
The command will \fInot\fR close the channel.
.RE
.sp
.CS


% ::tar::create new.tar [glob -nocomplain file*]
% ::tar::contents new.tar
file1 file2 file3

.CE
.TP
\fB::tar::add\fR \fItarball\fR \fIfiles\fR \fIargs\fR
Appends \fIfiles\fR to the end of the existing \fItarball\fR. \fIfiles\fR must be specified
as a single argument which is a proper list of filenames.
.RS
.TP







<
<



<







351
352
353
354
355
356
357


358
359
360

361
362
363
364
365
366
367
\fB-chan\fR
If this option is present \fItarball\fR is interpreted as an open channel.
It is assumed that the channel was opened for writing, and configured for binary output.
The command will \fInot\fR close the channel.
.RE
.sp
.CS


% ::tar::create new.tar [glob -nocomplain file*]
% ::tar::contents new.tar
file1 file2 file3

.CE
.TP
\fB::tar::add\fR \fItarball\fR \fIfiles\fR \fIargs\fR
Appends \fIfiles\fR to the end of the existing \fItarball\fR. \fIfiles\fR must be specified
as a single argument which is a proper list of filenames.
.RS
.TP
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
.sp
.TP
\fB::tar::remove\fR \fItarball\fR \fIfiles\fR
Removes \fIfiles\fR from the \fItarball\fR. 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.
.CS


% ::tar::remove new.tar {file2 file3}
% ::tar::contents new.tar
file3

.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







<
<



<













385
386
387
388
389
390
391


392
393
394

395
396
397
398
399
400
401
402
403
404
405
406
407
.sp
.TP
\fB::tar::remove\fR \fItarball\fR \fIfiles\fR
Removes \fIfiles\fR from the \fItarball\fR. 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.
.CS


% ::tar::remove new.tar {file2 file3}
% ::tar::contents new.tar
file3

.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

Changes to embedded/man/files/modules/tepam/tepam_argument_dialogbox.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
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
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
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
\fBtepam::argument_dialogbox\fR \fIitem_name item_attributes ?item_name item_attributes? ?...?\fR
Using this first format, each \fIdata entry item\fR is defined via a pair of two arguments. The first one is the \fIitem name\fR that defines the entry widget that has to be used in the form. The second argument, called \fIitem attributes\fR, specifies the variable which is attributed to the data entry element as well as eventual formatting and context information.
.sp
The \fBargument_dialogbox\fR returns \fBok\fR if the entered data have been acknowledged (via the \fIOK\fR button) and validated by a data checker. If the entered data have been rejected (via the \fICancel\fR button) the \fBargument_dialogbox\fR returns \fBcancel\fR.
.sp
A small example illustrates how the \fBargument_dialogbox\fR can be employed:
.CS

set DialogResult [\fBtepam::argument_dialogbox\fR \\
   \fB-title\fR "Itinerary selection" \\
   \fB-file\fR {\fI-label "Itinerary report" -variable report_file\fR} \\
   \fB-frame\fR {\fI-label "Itinerary start"\fR} \\
      \fB-comment\fR {\fI-text "Specify your itinerary start location"\fR} \\
      \fB-entry\fR {\fI-label "City" -variable start_city -type string\fR} \\
      \fB-entry\fR {\fI-label "Street" -variable start_street -type string -optional 1\fR} \\
      \fB-entry\fR {\fI-label "Street number" -variable start_street_nbr -type integer -optional 1\fR} \\
   \fB-frame\fR {\fI-label "Itinerary destination"\fR} \\
      \fB-comment\fR {\fI-text "Specify your itinerary destination"\fR} \\
      \fB-entry\fR {\fI-label "City" -variable dest_city -type string\fR} \\
      \fB-entry\fR {\fI-label "Street" -variable dest_street -type string -optional 1\fR} \\
      \fB-entry\fR {\fI-label "Street number" -variable dest_street_nbr -type integer -optional 1\fR} \\
   \fB-frame\fR {} \\
   \fB-checkbutton\fR {\fI-label "Don't use highways" -variable no_highway\fR}]
.CE
.IP
This example opens a dialog box that has the title \fIItinerary selection\fR. A first entry widget in this box allows selecting a report file. It follows two frames to define respectively an itinerary start and end location. Each of these locations that are described with a comment has three entry widgets to specify respectively the city, street and the street number. Bellow the second frame there is a check button that allows specifying if eventual highways should be ignored.
.TP
\fBtepam::argument_dialogbox\fR {\fIitem_name item_attributes ?item_name item_attributes? ?...?\fR}
Sometimes it is simpler to provide all the data entry item definitions in form of a single list to \fBargument_dialogbox\fR, and not as individual arguments. The second format that is supported by \fBargument_dialogbox\fR corresponds exactly to the first one, except that all item definitions are packed into a single list that is provided to \fBargument_dialogbox\fR. The previous example can therefore also be written in the following way:
.CS

set DialogResult [\fBtepam::argument_dialogbox {\fR
   \fB-title\fR "Itinerary selection"
   \fB-file\fR {\fI-label "Itinerary report" -variable report_file\fR}
   ...
   \fB-checkbutton\fR {\fI-label "Don't use highways" -variable no_highway\fR} \fB}\fR]
.CE
.PP
The commands \fBargument_dialogbox\fR as well as \fBprocedure\fR are exported from the namespace \fBtepam\fR. To use these commands without the \fBtepam::\fR namespace prefix, it is sufficient to import them into the main namespace:
.CS

\fBnamespace import tepam::*\fR

set DialogResult [\fBargument_dialogbox\fR \\
   -title "Itinerary selection"
   ...
.CE
The following subsections explain the different argument item types that are accepted by the \fBargument_dialogbox\fR, 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 \fBargument_dialogbox\fR.
.SS "CONTEXT DEFINITION ITEMS"
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:
.CS

tepam::argument_dialogbox \\
   \fB-<argument_name>\fR \fIstring\fR \\
   ...
.CE
The following items are classified into this group:
.TP
-title \fIstring\fR
The dialog box window's title which is by default \fIDialog\fR can be changed with the \fI-title\fR item:
.CS

tepam::argument_dialogbox \\
   \fB-title\fR "System configuration" \\
   ...
.CE
.TP
-window \fIstring\fR
The argument dialog box uses by default \fI.dialog\fR as dialog top level window. This path can be changed with the \fI-window\fR item:
.CS

tepam::argument_dialogbox \\
   \fB-window\fR .dialog \\
   ...
.CE
.TP
-parent \fIstring\fR
By defining a parent window, the argument dialog box will be displayed beside this one. Without explicit parent window definition, the top-level window will be considered as parent window.
.CS

tepam::argument_dialogbox \\
   \fB-parent\fR .my_appl \\
   ...
.CE
.TP
-context \fIstring\fR
If a context is defined the dialog box's state, e.g. the entered data as well as the window size and position, is saved and restored then the next time the argument dialog box is called. The assignment of a context allows saving the dialog box' state in its context to distinguish between different usages of the argument dialog box.
.CS

tepam::argument_dialogbox \\
   \fB-context\fR destination_definitions \\
   ...
.CE
.PP
.SS "FORMATTING AND DISPLAY OPTIONS"
Especially for big, complex forms it becomes important that the different data entry widgets are graphically well organized and commented to provide an immediate and clear overview to the user. A couple of items allow structuring and commenting the dialog boxes.
.PP
The items of this classification group require as item attributes a definition list, which contains itself attribute name and value pairs:
.CS

tepam::argument_dialogbox \\
   ...
   \fB-<argument_name>\fR { \fI
      ?-<attribute_name> <attribute_value>?
      ?-<attribute_name> <attribute_value>?
      ?...?\fR
   }
   ...
.CE
The following items are classified into this group:
.TP
-frame \fIlist\fR
The \fI-frame\fR item allows packing all following entry widgets into a labeled frame, until a next frame item is defined or until the last entry widget has been defined. It recognizes the following attributes inside the item attribute list:
.RS
.TP
-label \fIstring\fR
An optional frame label can be specified with the \fI-label\fR statement.
.RE
.IP
Example:
.CS

tepam::argument_dialogbox \\
   ...
   \fB-frame\fR {\fI-label "Destination address"\fR}
   ...
.CE
.IP
To close an open frame without opening a new one, an empty list has to be provided to the \fI-frame\fR statement.
.CS

tepam::argument_dialogbox \\
   ...
   \fB-frame\fR {}
   ...
.CE
.TP
-sep [const {{}}]
Entry widgets can be separated with the \fI-sep\fR statement which doesn't require additional definitions. The related definition list has to exist, but its content is ignored.
.CS

tepam::argument_dialogbox \\
   ...
   \fB-sep\fR {}
   ...
.CE
.TP
-comment \fIstring\fR
Comments and descriptions can be added with the \fI-text\fR attribute of the \fI-comment\fR item. Please note that each entry widget itself can also contain a \fI-text\fR attribute for comments and descriptions. But the \fI-comment\fR item allows for example adding a description between two frames.
.CS

tepam::argument_dialogbox \\
   ...
   \fB-comment\fR {\fI-text "Specify bellow the destination address"\fR}
   ...
.CE
.TP
-yscroll \fB0\fR|\fB1\fR|\fBauto\fR
This attribute allows controlling an eventual vertical scrollbar. Setting it to \fB0\fR will permanently disable the scrollbar, setting it to \fB1\fR will enable it. By default it is set to \fBauto\fR. The scrollbar is enabled in this mode only if the vertical data entry form size exceeds 66% of the screen height.
.CS

tepam::argument_dialogbox \\
   ...
   \fB-yscroll\fR \fBauto\fR
   ...
.CE
.PP
.SS "DATA ENTRY WIDGET ITEMS"
Data entry widgets are created with the widget items. These items require as item attributes a definition list, which contains itself attribute name and value pairs:
.CS

tepam::argument_dialogbox \\
   ...
   \fB-<argument_name>\fR { \fI
      ?-<attribute_name> <attribute_value>?
      ?-<attribute_name> <attribute_value>?
      ?...?\fR
   }
   ...
.CE
The attribute list can contain various attributes to describe and comment an entry widget and to constrain its entered value. All entry widgets are accepting a common set of attributes that are described in the section \fBEntry Widget Item Attributes\fR.
.PP
TEPAM defines a rich set of entry widgets. If necessary, this set can be extended with additional application specific entry widgets (see \fBAPPLICATION SPECIFIC ENTRY WIDGETS\fR):
.TP
-entry \fIlist\fR
The \fI-entry\fR item generates the simplest but most universal data entry widget. It allows entering any kind of data in form of single line strings.
.CS

tepam::argument_dialogbox \\
   \fB-entry\fR {-label Name -variable Entry}
.CE
.TP
-text \fIlist\fR
The \fI-text\fR item generates a multi line text entry widget. The widget's height can be selected with the \fI-height\fR attribute.
.CS

tepam::argument_dialogbox \\
   \fB-text\fR {-label Name -variable Text -height 5}
.CE
.TP
-checkbox \fIlist\fR
A group of check boxes is created with the \fI-checkbox\fR item. The number of check boxes and their option values are specified with a list assigned to the \fI-choices\fR attribute or via a variable declared with the \fI-choicevariable\fR attribute:
.CS

tepam::argument_dialogbox \\
   \fB-checkbox\fR {-label "Font sytle" -variable FontStyle \\
               -choices {bold italic underline} -default italic}
.CE
.IP
If the check boxes' labels should differ from the option values, their labels can be defined with the \fI-choicelabels\fR attribute:
.CS

tepam::argument_dialogbox \\
   \fB-checkbox\fR {-label "Font sytle" -variable FontStyle \\
              -choices {bold italic underline} \\
              -choicelabels {Bold Italic Underline} \\
              -default italic}
.CE
.IP
In contrast to a radio box group, a check box group allows selecting simultaneously several choice options. The selection is stored for this reason inside the defined variable in form of a list, even if only one choice option has been selected.
.TP
-radiobox \fIlist\fR
A group of radio boxes is created with the \fI-radiobox\fR item. The number of radio boxes and their option values are specified with a list assigned to the \fI-choices\fR attribute or via a variable declared with the \fI-choicevariable\fR attribute.
.sp
In contrast to a check box group, a radio box group allows selecting simultaneously only one choice option. The selected option value is stored directly, and not in form of a list, inside the defined variable.
.CS

tepam::argument_dialogbox \\
   \fB-radiobox\fR {-label "Text adjustment" -variable Adjustment \\
              -choices {left center right} -default left}
.CE
.IP
If the radio boxes' labels should differ from the option values, their labels can be defined with the \fI-choicelabels\fR attribute:
.CS

tepam::argument_dialogbox \\
   \fB-radiobox\fR {-label "Text adjustment" -variable Adjustment \\
              -choices {left center right} \\
              -choicelabels {Left Center Right} -default left}
.CE
.TP
-checkbutton \fIlist\fR
The \fI-checkbutton\fR entry widget allows activating or deactivating a single choice option. The result written into the variable will either be \fB0\fR if the check button was not activated or \fB1\fR if it was activated. An eventually provided default value has also to be either \fB0\fR or \fB1\fR.
.CS

tepam::argument_dialogbox \\
   \fB-checkbutton\fR {-label Capitalize -variable Capitalize -default 1}
.CE
.PP
Several types of list and combo boxes are available to handle selection lists.
.TP
-combobox \fIlist\fR
The combobox is a combination of a normal entry widget together with a drop-down list box. The combobox allows selecting from this drop-down list box a single element. The list of the available elements can be provided either as a list to the \fI-choices\fR attribute, or via a variable that is specified with the \fI-choicevariable\fR attribute.
.CS

tepam::argument_dialogbox \\
   \fB-combobox\fR {-label "Text size" -variable Size -choices {8 9 10 12 15 18} -default 12}
.CE
.IP
And here is an example of using a variable to define the selection list:
.CS

set TextSizes {8 9 10 12 15 18}
tepam::argument_dialogbox \\
   \fB-combobox\fR {-label "Text size" -variable Size -choicevariable TextSizes -default 12}
.CE
.TP
-listbox \fIlist\fR
In contrast to the combo box, the list box is always displayed by the \fIlistbox\fR entry widget. Only one element is selectable unless the \fI-multiple_selection\fR attribute is set. The list box height can be selected with the \fI-height\fR 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:
.CS

set set AvailableSizes
for {set k 0} {$k<16} {incr k} {lappend AvailableSizes [expr 1<<$k]}

tepam::argument_dialogbox \\
   \fB-listbox\fR {-label "Distance" -variable Distance \\
             -choicevariable AvailableSizes -default 6 -height 5}
.CE
.IP
Here is a multi-element selection example. Please note that also the default selection can contain multiple elements:
.CS

tepam::argument_dialogbox \\
   \fB-listbox\fR {-label "Text styles" -variable Styles \\
             -choices {bold italic underline overstrike} \\
             -choicelabels {Bold Italic Underline Overstrike} \\
             -default {bold underline} -multiple_selection 1 \\
             -height 3}
.CE
.TP
-disjointlistbox \fIlist\fR
A disjoint list box has to be used instead of a normal list box if the selection order is important. The disjoint list box entry widget has in fact two list boxes, one to select elements and one to display the selected elements in the chosen order.
.sp
Disjoint listboxes allow always selecting multiple elements. With the exception of the \fI-multiple_selection\fR attribute, disjointed list boxes are accepting the same attributes as the normal listbox, e.g. \fI-height, -choices, -choicevariable, -default\fR.
.CS

tepam::argument_dialogbox \\
   \fB-disjointlistbox\fR {-label "Preferred scripting languages" -variable Languages \\
             -comment "Please select your preferred languages in the order" \\
             -choices {JavaScript Lisp Lua Octave PHP Perl Python Ruby Scheme Tcl} \\
             -default {Tcl Perl Python}}
.CE
.PP
The file and directory selectors are building a next group of data entry widgets. A paragraph of section \fBEntry Widget Item Attributes\fR explains the widget specific attributes that allow specifying the targeted file types, active directory etc.
.TP
-file \fIlist\fR
The item \fI-file\fR creates a group composed by an entry widget together with a button that allows opening a file browser. The data type \fIfile\fR is automatically selected for this entry if no data type has been explicitly defined with the \fI-type\fR attribute.
.CS

tepam::argument_dialogbox \\
   \fB-file\fR {-label "Image file" -variable ImageF \\
          -filetypes {{"GIF" {*.gif}} {"JPG" {*.jpg}}} \\
          -initialfile "picture.gif"}
.CE
.TP
-existingfile \fIlist\fR
The item \fI-existingfile\fR creates a group composed by an entry widget together with a button that allows opening a browser to select an existing file. The data type \fIexistingfile\fR is automatically selected for this entry if no data type has been explicitly defined with the \fI-type\fR attribute.
.CS

tepam::argument_dialogbox \\
   \fB-existingfile\fR {-label "Image file" -variable ImageF \\
                  -filetypes {{"GIF" {*.gif}} {"JPG" {*.jpg}}} \\
                  -initialfile "picture.gif"}
.CE
.TP
-directory \fIlist\fR
The item \fI-directory\fR creates a group composed by an entry widget together with a button that allows opening a directory browser. The data type \fIdirectory\fR is automatically selected for this entry if no data type has been explicitly defined with the \fI-type\fR attribute.
.CS

tepam::argument_dialogbox \\
   \fB-directory\fR {-label "Report directory" -variable ReportDir}
.CE
.TP
-existingdirectory \fIlist\fR
The item \fI-existingdirectory\fR creates a group composed by an entry widget together with a button that allows opening a browser to select an existing directory. The data type \fIexistingdirectory\fR is automatically selected for this entry if no data type has been explicitly defined with the \fI-type\fR attribute.
.CS

tepam::argument_dialogbox \\
   \fB-existingdirectory\fR {-label "Report directory" -variable ReportDir}
.CE
.PP
Finally, there is a last group of some other special data entry widgets.
.TP
-color \fIlist\fR
The color selector is composed by an entry widget together with a button that allows opening a color browser. The data type \fIcolor\fR is automatically selected for this entry widget type if no data type has been explicitly defined with the \fI-type\fR attribute.
.CS

tepam::argument_dialogbox \\
   \fB-color\fR {-label "Background color" -variable Color -default red}
.CE
.TP
-font \fIlist\fR
The font selector is composed by an entry widget together with a button that allows opening a font browser. The data type \fIfont\fR is automatically selected for this entry widget type if no data type has been explicitly defined with the \fI-type\fR attribute. The entry widget displays an example text in the format of the selected font.
.sp
The font browser allows selecting by default the font families provided by the \fBfont families\fR Tk command as well as a reasonable set of different font sizes between 6 points and 40 points. Different sets of font families and font sizes can be specified respectively via the \fI-font_families\fR or \fI-font_sizes\fR attributes.
.sp
If no default font is provided via the \fI-default\fR attribute, the default font of the label widget to display the selected font will be used as default selected font. If the font family of this label widget is not part of the available families the first available family is used as default. If the font size of this label widget is not part of the available sizes the next close available size is selected as default size.
.CS

tepam::argument_dialogbox \\
   \fB-font\fR {-label "Font" -variable Font \\
          -font_sizes {8 10 12 16} \\
          -default {Arial 20 italic}}
.CE
.PP
.SS "ENTRY WIDGET ITEM ATTRIBUTES"
All the entry widget items are accepting the following attributes:
.TP
-text \fIstring\fR
Eventual descriptions and comments specified with the \fI-text\fR attribute are displayed above the entry widget.
.CS

tepam::argument_dialogbox \\
   -entry {\fB-text "Please enter your name bellow"\fR -variable Name}
.CE
.TP
-label \fIstring\fR
The label attribute creates left to the entry widget a label using the provided string as label text:
.CS

tepam::argument_dialogbox \\
   -entry {\fB-label Name\fR -variable Name}
.CE
.TP
-variable \fIstring\fR
All entry widgets require a specified variable. After accepting the entered information with the OK button, the entry widget's data are stored inside the defined variables.
.CS

tepam::argument_dialogbox \\
   -existingdirectory {-label "Report directory" \fB-variable ReportDir\fR}
.CE
.TP
-default \fIstring\fR
Eventual default data for the entry widgets can be provided via the \fI-default\fR attribute. The default value is overridden if an argument dialog box with a defined context is called another time. The value acknowledged in a previous call will be used in this case as default value.
.CS

tepam::argument_dialogbox \\
   -checkbox {-label "Font sytle" -variable FontStyle \\
               -choices {bold italic underline} \fB-default italic\fR}
.CE
.TP
-optional \fB0\fR|\fB1\fR
Data can be specified as optional or mandatory with the \fI-optional\fR attribute that requires either \fB0\fR (mandatory) or \fB1\fR (optional) as attribute data.
.sp
In case an entry is optional and no data has been entered, e.g. the entry contains an empty character string, the entry will be considered as undefined and the assigned variable will not be defined.
.CS

tepam::argument_dialogbox \\
   -entry {-label "City" -variable start_city -type string} \\
   -entry {-label "Street" -variable start_street -type string \fB-optional 0\fR} \\
   -entry {-label "Street number" -variable start_street_nbr -type integer \fB-optional 1\fR} \\
.CE
.TP
-type \fIstring\fR
If the data type is defined with the \fI-type\fR 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.
.sp
The argument dialog box accepts all types that have been specified by the TEPAM package and that are also used by \fBtepam::procedure\fR (see the \fItepam::procedure reference manual\fR).
.sp
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 \fI-type\fR attribute.
.CS

tepam::argument_dialogbox \\
   \fB-entry\fR {-label "Street number" -variable start_street_nbr \fB-type integer\fR} \\
.CE
.TP
-range \fIstring\fR
Values can be constrained with the \fI-range\fR attribute. The valid range is defined with a list containing the minimum valid value and a maximum valid value.
.sp
The \fI-range\fR attribute has to be used only for numerical arguments, like integers and doubles.
.CS

tepam::argument_dialogbox \\
   -entry {-label Month -variable Month -type integer \fB-range {1 12}\fR}
.CE
.TP
-validatecommand \fIstring\fR
More complex value validations than type checks can be performed via specific validation commands that are declared with the \fI-validatecommand\fR attribute.
The provided validation command can be a script (command sequence) in which the pattern \fI%P\fR is replaced by the value that has to be checked.
.CS

tepam::argument_dialogbox \\
   -entry {-label "Your comment" -variable YourCom \\
           \fB-validatecommand\fR "IllegalWordDetector %P"} ]
.CE
.PP
Some other attributes are supported by the list and combo boxes as well as by the radio and check buttons.
.TP
-choices \fIstring\fR
Choice lists can directly be defined with the \fI-choices\fR attribute. This way to define choice lists is especially adapted for smaller, fixed selection lists.
.CS

tepam::argument_dialogbox \\
   -listbox {-label "Text styles" -variable Styles \\
             \fB-choices {bold italic underline}\fR -default underline
.CE
.TP
-choicelabels \fIstring\fR \fI(only check and radio buttons)\fR
If the check and radio boxes' labels should differ from the option values, they can be defined with the \fI-choicelabels\fR attribute:
.CS

tepam::argument_dialogbox \\
   -checkbox {-label "Font sytle" -variable FontStyle \\
              -choices {bold italic underline} \\
              \fB-choicelabels {Bold Italic Underline}\fR
.CE
.TP
-choicevariable \fIstring\fR
Another way to define the choice lists is using the \fI-choicevariable\fR attribute. This way to define choice lists is especially adapted for huge and eventually variable selection lists.
.CS

set TextSizes {8 9 10 12 15 18}
tepam::argument_dialogbox \\
   -combobox {-label "Text size" -variable Size \fB-choicevariable TextSizes\fR}
.CE
.TP
-multiple_selection \fB0\fR|\fB1\fR
The list box item (\fB-listbox\fR) allows by default selecting only one list element. By setting the \fI-multiple_selection\fR attribute to \fB1\fR, multiple elements can be selected.
.CS

tepam::argument_dialogbox \\
   -listbox {-label "Text styles" -variable Styles \\
             -choices {bold italic underline} -default underline \\
             \fB-multiple_selection 1\fR -height 3}
.CE
.PP
Some additional attributes are supported by the file and directory selection widgets.
.TP
-filetypes \fIstring\fR
The file type attribute is used by the \fB-file\fR and \fB-existingfile\fR items to define the file endings that are searched by the file browser.
.CS

tepam::argument_dialogbox \\
   -file {-label "Image file" -variable ImageF \\
          \fB-filetypes {{"GIF" {*.gif}} {"JPG" {*.jpg}}}\fR}
.CE
.TP
-initialfile \fIstring\fR
The initial file used by the file browsers of the \fB-file\fR and \fB-existingfile\fR widgets are by default the file defined with the \fI-default\fR attribute, unless a file is specified with the \fI-initialfile\fR attribute.
.CS

tepam::argument_dialogbox \\
   -file {-variable ImageF \fB-initialfile "picture.gif"\fR}
.CE
.TP
-activedir \fIstring\fR
The \fI-activedir\fR attribute will override the default active search directory used by the file browsers of all file and directory entry widgets. The default active search directory is defined by the directory of a specified initial file (\fI-initialfile\fR) if defined, and otherwise by the directory of the default file/directory, specified with the \fI-default\fR attribute.
.CS

tepam::argument_dialogbox \\
   -file "-variable ImageF \fB-activedir $pwd\fR"
.CE
.PP
Finally, there is a last attribute supported by some widgets:
.TP
-height \fIstring\fR
All widgets containing a selection list (\fB-listbox\fR, \fB-disjointlistbox\fR, \fB-font\fR) as well as the multi line \fB-text\fR widget are accepting the \fI-height\fR attribute that defines the number of displayed rows of the selection lists.
.CS

tepam::argument_dialogbox \\
   -listbox {-label "Text size" -variable Size \\
             -choices {8 9 10 12 15 18} -default 12 \fB-height 3\fR}
.CE
.IP
If the no height has been explicitly specified the height of the widget will be dynamically adapted to the argument dialog box' size.
.PP
.SH "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 \fBtepam\fR 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:
.CS

\fIproc\fR tepam::ad_form(<WidgetName>) {W Command {Par ""}} {
   \fIupvar Option Option; # if required\fR
   \fIvariable argument_dialogbox; # if required\fR
   switch $Command {
      "create" <CreateCommandSequence>
      "set_choice" <SetChoiceCommandSequence>
      "set" <SetCommandv>
      "get" <GetCommandSequence>
   }
}
.CE
\fBArgument_dialogbox\fR takes care about the \fI-label\fR and \fI-text\fR 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 \fIW\fR argument.
.PP
The entry widget procedure has to support 3 mandatory and an optional command that are selected via the argument \fICommand\fR:
.TP
\fIcreate\fR







<

|
|
|
|
|
|
|
|
|
|
|
|
|
|







<

|
|
|
|




<

<

|
|





<

|
|






<

|
|





<

|
|





<

|
|





<

|
|







<

|
|
|
|
|
|
|













<

|
|
|




<

|
|
|





<

|
|
|





<

|
|
|





<

|
|
|





<

|
|
|
|
|
|
|








<

|





<

|





<

|
|




<

|
|
|
|









<

|
|




<

|
|
|





<

|







<

|




<


|






<


<

|
|




<

|
|
|
|
|







<

|
|
|
|







<

|
|
|





<

|
|
|





<

|





<

|







<

|









<

|
|
|








<

|





<

|





<

|





<

|
|







<

|
|
|









<

|







<

|






<

|
|







<

|
|





<

|
|
|





<


|





<

|
|
|







<

|
|





<

|





<

|







<

|
|







<

|
|
|
|
|
|
|
|







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
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
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
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
\fBtepam::argument_dialogbox\fR \fIitem_name item_attributes ?item_name item_attributes? ?...?\fR
Using this first format, each \fIdata entry item\fR is defined via a pair of two arguments. The first one is the \fIitem name\fR that defines the entry widget that has to be used in the form. The second argument, called \fIitem attributes\fR, specifies the variable which is attributed to the data entry element as well as eventual formatting and context information.
.sp
The \fBargument_dialogbox\fR returns \fBok\fR if the entered data have been acknowledged (via the \fIOK\fR button) and validated by a data checker. If the entered data have been rejected (via the \fICancel\fR button) the \fBargument_dialogbox\fR returns \fBcancel\fR.
.sp
A small example illustrates how the \fBargument_dialogbox\fR can be employed:
.CS

set DialogResult [\fBtepam::argument_dialogbox\fR \\
\fB-title\fR "Itinerary selection" \\
\fB-file\fR {\fI-label "Itinerary report" -variable report_file\fR} \\
\fB-frame\fR {\fI-label "Itinerary start"\fR} \\
\fB-comment\fR {\fI-text "Specify your itinerary start location"\fR} \\
\fB-entry\fR {\fI-label "City" -variable start_city -type string\fR} \\
\fB-entry\fR {\fI-label "Street" -variable start_street -type string -optional 1\fR} \\
\fB-entry\fR {\fI-label "Street number" -variable start_street_nbr -type integer -optional 1\fR} \\
\fB-frame\fR {\fI-label "Itinerary destination"\fR} \\
\fB-comment\fR {\fI-text "Specify your itinerary destination"\fR} \\
\fB-entry\fR {\fI-label "City" -variable dest_city -type string\fR} \\
\fB-entry\fR {\fI-label "Street" -variable dest_street -type string -optional 1\fR} \\
\fB-entry\fR {\fI-label "Street number" -variable dest_street_nbr -type integer -optional 1\fR} \\
\fB-frame\fR {} \\
\fB-checkbutton\fR {\fI-label "Don't use highways" -variable no_highway\fR}]
.CE
.IP
This example opens a dialog box that has the title \fIItinerary selection\fR. A first entry widget in this box allows selecting a report file. It follows two frames to define respectively an itinerary start and end location. Each of these locations that are described with a comment has three entry widgets to specify respectively the city, street and the street number. Bellow the second frame there is a check button that allows specifying if eventual highways should be ignored.
.TP
\fBtepam::argument_dialogbox\fR {\fIitem_name item_attributes ?item_name item_attributes? ?...?\fR}
Sometimes it is simpler to provide all the data entry item definitions in form of a single list to \fBargument_dialogbox\fR, and not as individual arguments. The second format that is supported by \fBargument_dialogbox\fR corresponds exactly to the first one, except that all item definitions are packed into a single list that is provided to \fBargument_dialogbox\fR. The previous example can therefore also be written in the following way:
.CS

set DialogResult [\fBtepam::argument_dialogbox {\fR
\fB-title\fR "Itinerary selection"
\fB-file\fR {\fI-label "Itinerary report" -variable report_file\fR}
\...
\fB-checkbutton\fR {\fI-label "Don't use highways" -variable no_highway\fR} \fB}\fR]
.CE
.PP
The commands \fBargument_dialogbox\fR as well as \fBprocedure\fR are exported from the namespace \fBtepam\fR. To use these commands without the \fBtepam::\fR namespace prefix, it is sufficient to import them into the main namespace:
.CS

\fBnamespace import tepam::*\fR

set DialogResult [\fBargument_dialogbox\fR \\
-title "Itinerary selection"
\...
.CE
The following subsections explain the different argument item types that are accepted by the \fBargument_dialogbox\fR, 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 \fBargument_dialogbox\fR.
.SS "CONTEXT DEFINITION ITEMS"
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:
.CS

tepam::argument_dialogbox \\
\fB-<argument_name>\fR \fIstring\fR \\
\...
.CE
The following items are classified into this group:
.TP
-title \fIstring\fR
The dialog box window's title which is by default \fIDialog\fR can be changed with the \fI-title\fR item:
.CS

tepam::argument_dialogbox \\
\fB-title\fR "System configuration" \\
\...
.CE
.TP
-window \fIstring\fR
The argument dialog box uses by default \fI.dialog\fR as dialog top level window. This path can be changed with the \fI-window\fR item:
.CS

tepam::argument_dialogbox \\
\fB-window\fR .dialog \\
\...
.CE
.TP
-parent \fIstring\fR
By defining a parent window, the argument dialog box will be displayed beside this one. Without explicit parent window definition, the top-level window will be considered as parent window.
.CS

tepam::argument_dialogbox \\
\fB-parent\fR .my_appl \\
\...
.CE
.TP
-context \fIstring\fR
If a context is defined the dialog box's state, e.g. the entered data as well as the window size and position, is saved and restored then the next time the argument dialog box is called. The assignment of a context allows saving the dialog box' state in its context to distinguish between different usages of the argument dialog box.
.CS

tepam::argument_dialogbox \\
\fB-context\fR destination_definitions \\
\...
.CE
.PP
.SS "FORMATTING AND DISPLAY OPTIONS"
Especially for big, complex forms it becomes important that the different data entry widgets are graphically well organized and commented to provide an immediate and clear overview to the user. A couple of items allow structuring and commenting the dialog boxes.
.PP
The items of this classification group require as item attributes a definition list, which contains itself attribute name and value pairs:
.CS

tepam::argument_dialogbox \\
\...
\fB-<argument_name>\fR { \fI
?-<attribute_name> <attribute_value>?
?-<attribute_name> <attribute_value>?
?...?\fR
}
\...
.CE
The following items are classified into this group:
.TP
-frame \fIlist\fR
The \fI-frame\fR item allows packing all following entry widgets into a labeled frame, until a next frame item is defined or until the last entry widget has been defined. It recognizes the following attributes inside the item attribute list:
.RS
.TP
-label \fIstring\fR
An optional frame label can be specified with the \fI-label\fR statement.
.RE
.IP
Example:
.CS

tepam::argument_dialogbox \\
\...
\fB-frame\fR {\fI-label "Destination address"\fR}
\...
.CE
.IP
To close an open frame without opening a new one, an empty list has to be provided to the \fI-frame\fR statement.
.CS

tepam::argument_dialogbox \\
\...
\fB-frame\fR {}
\...
.CE
.TP
-sep [const {{}}]
Entry widgets can be separated with the \fI-sep\fR statement which doesn't require additional definitions. The related definition list has to exist, but its content is ignored.
.CS

tepam::argument_dialogbox \\
\...
\fB-sep\fR {}
\...
.CE
.TP
-comment \fIstring\fR
Comments and descriptions can be added with the \fI-text\fR attribute of the \fI-comment\fR item. Please note that each entry widget itself can also contain a \fI-text\fR attribute for comments and descriptions. But the \fI-comment\fR item allows for example adding a description between two frames.
.CS

tepam::argument_dialogbox \\
\...
\fB-comment\fR {\fI-text "Specify bellow the destination address"\fR}
\...
.CE
.TP
-yscroll \fB0\fR|\fB1\fR|\fBauto\fR
This attribute allows controlling an eventual vertical scrollbar. Setting it to \fB0\fR will permanently disable the scrollbar, setting it to \fB1\fR will enable it. By default it is set to \fBauto\fR. The scrollbar is enabled in this mode only if the vertical data entry form size exceeds 66% of the screen height.
.CS

tepam::argument_dialogbox \\
\...
\fB-yscroll\fR \fBauto\fR
\...
.CE
.PP
.SS "DATA ENTRY WIDGET ITEMS"
Data entry widgets are created with the widget items. These items require as item attributes a definition list, which contains itself attribute name and value pairs:
.CS

tepam::argument_dialogbox \\
\...
\fB-<argument_name>\fR { \fI
?-<attribute_name> <attribute_value>?
?-<attribute_name> <attribute_value>?
?...?\fR
}
\...
.CE
The attribute list can contain various attributes to describe and comment an entry widget and to constrain its entered value. All entry widgets are accepting a common set of attributes that are described in the section \fBEntry Widget Item Attributes\fR.
.PP
TEPAM defines a rich set of entry widgets. If necessary, this set can be extended with additional application specific entry widgets (see \fBAPPLICATION SPECIFIC ENTRY WIDGETS\fR):
.TP
-entry \fIlist\fR
The \fI-entry\fR item generates the simplest but most universal data entry widget. It allows entering any kind of data in form of single line strings.
.CS

tepam::argument_dialogbox \\
\fB-entry\fR {-label Name -variable Entry}
.CE
.TP
-text \fIlist\fR
The \fI-text\fR item generates a multi line text entry widget. The widget's height can be selected with the \fI-height\fR attribute.
.CS

tepam::argument_dialogbox \\
\fB-text\fR {-label Name -variable Text -height 5}
.CE
.TP
-checkbox \fIlist\fR
A group of check boxes is created with the \fI-checkbox\fR item. The number of check boxes and their option values are specified with a list assigned to the \fI-choices\fR attribute or via a variable declared with the \fI-choicevariable\fR attribute:
.CS

tepam::argument_dialogbox \\
\fB-checkbox\fR {-label "Font sytle" -variable FontStyle \\
-choices {bold italic underline} -default italic}
.CE
.IP
If the check boxes' labels should differ from the option values, their labels can be defined with the \fI-choicelabels\fR attribute:
.CS

tepam::argument_dialogbox \\
\fB-checkbox\fR {-label "Font sytle" -variable FontStyle \\
-choices {bold italic underline} \\
-choicelabels {Bold Italic Underline} \\
-default italic}
.CE
.IP
In contrast to a radio box group, a check box group allows selecting simultaneously several choice options. The selection is stored for this reason inside the defined variable in form of a list, even if only one choice option has been selected.
.TP
-radiobox \fIlist\fR
A group of radio boxes is created with the \fI-radiobox\fR item. The number of radio boxes and their option values are specified with a list assigned to the \fI-choices\fR attribute or via a variable declared with the \fI-choicevariable\fR attribute.
.sp
In contrast to a check box group, a radio box group allows selecting simultaneously only one choice option. The selected option value is stored directly, and not in form of a list, inside the defined variable.
.CS

tepam::argument_dialogbox \\
\fB-radiobox\fR {-label "Text adjustment" -variable Adjustment \\
-choices {left center right} -default left}
.CE
.IP
If the radio boxes' labels should differ from the option values, their labels can be defined with the \fI-choicelabels\fR attribute:
.CS

tepam::argument_dialogbox \\
\fB-radiobox\fR {-label "Text adjustment" -variable Adjustment \\
-choices {left center right} \\
-choicelabels {Left Center Right} -default left}
.CE
.TP
-checkbutton \fIlist\fR
The \fI-checkbutton\fR entry widget allows activating or deactivating a single choice option. The result written into the variable will either be \fB0\fR if the check button was not activated or \fB1\fR if it was activated. An eventually provided default value has also to be either \fB0\fR or \fB1\fR.
.CS

tepam::argument_dialogbox \\
\fB-checkbutton\fR {-label Capitalize -variable Capitalize -default 1}
.CE
.PP
Several types of list and combo boxes are available to handle selection lists.
.TP
-combobox \fIlist\fR
The combobox is a combination of a normal entry widget together with a drop-down list box. The combobox allows selecting from this drop-down list box a single element. The list of the available elements can be provided either as a list to the \fI-choices\fR attribute, or via a variable that is specified with the \fI-choicevariable\fR attribute.
.CS

tepam::argument_dialogbox \\
\fB-combobox\fR {-label "Text size" -variable Size -choices {8 9 10 12 15 18} -default 12}
.CE
.IP
And here is an example of using a variable to define the selection list:
.CS

set TextSizes {8 9 10 12 15 18}
tepam::argument_dialogbox \\
\fB-combobox\fR {-label "Text size" -variable Size -choicevariable TextSizes -default 12}
.CE
.TP
-listbox \fIlist\fR
In contrast to the combo box, the list box is always displayed by the \fIlistbox\fR entry widget. Only one element is selectable unless the \fI-multiple_selection\fR attribute is set. The list box height can be selected with the \fI-height\fR 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:
.CS

set set AvailableSizes
for {set k 0} {$k<16} {incr k} {lappend AvailableSizes [expr 1<<$k]}

tepam::argument_dialogbox \\
\fB-listbox\fR {-label "Distance" -variable Distance \\
-choicevariable AvailableSizes -default 6 -height 5}
.CE
.IP
Here is a multi-element selection example. Please note that also the default selection can contain multiple elements:
.CS

tepam::argument_dialogbox \\
\fB-listbox\fR {-label "Text styles" -variable Styles \\
-choices {bold italic underline overstrike} \\
-choicelabels {Bold Italic Underline Overstrike} \\
-default {bold underline} -multiple_selection 1 \\
-height 3}
.CE
.TP
-disjointlistbox \fIlist\fR
A disjoint list box has to be used instead of a normal list box if the selection order is important. The disjoint list box entry widget has in fact two list boxes, one to select elements and one to display the selected elements in the chosen order.
.sp
Disjoint listboxes allow always selecting multiple elements. With the exception of the \fI-multiple_selection\fR attribute, disjointed list boxes are accepting the same attributes as the normal listbox, e.g. \fI-height, -choices, -choicevariable, -default\fR.
.CS

tepam::argument_dialogbox \\
\fB-disjointlistbox\fR {-label "Preferred scripting languages" -variable Languages \\
-comment "Please select your preferred languages in the order" \\
-choices {JavaScript Lisp Lua Octave PHP Perl Python Ruby Scheme Tcl} \\
-default {Tcl Perl Python}}
.CE
.PP
The file and directory selectors are building a next group of data entry widgets. A paragraph of section \fBEntry Widget Item Attributes\fR explains the widget specific attributes that allow specifying the targeted file types, active directory etc.
.TP
-file \fIlist\fR
The item \fI-file\fR creates a group composed by an entry widget together with a button that allows opening a file browser. The data type \fIfile\fR is automatically selected for this entry if no data type has been explicitly defined with the \fI-type\fR attribute.
.CS

tepam::argument_dialogbox \\
\fB-file\fR {-label "Image file" -variable ImageF \\
-filetypes {{"GIF" {*.gif}} {"JPG" {*.jpg}}} \\
-initialfile "picture.gif"}
.CE
.TP
-existingfile \fIlist\fR
The item \fI-existingfile\fR creates a group composed by an entry widget together with a button that allows opening a browser to select an existing file. The data type \fIexistingfile\fR is automatically selected for this entry if no data type has been explicitly defined with the \fI-type\fR attribute.
.CS

tepam::argument_dialogbox \\
\fB-existingfile\fR {-label "Image file" -variable ImageF \\
-filetypes {{"GIF" {*.gif}} {"JPG" {*.jpg}}} \\
-initialfile "picture.gif"}
.CE
.TP
-directory \fIlist\fR
The item \fI-directory\fR creates a group composed by an entry widget together with a button that allows opening a directory browser. The data type \fIdirectory\fR is automatically selected for this entry if no data type has been explicitly defined with the \fI-type\fR attribute.
.CS

tepam::argument_dialogbox \\
\fB-directory\fR {-label "Report directory" -variable ReportDir}
.CE
.TP
-existingdirectory \fIlist\fR
The item \fI-existingdirectory\fR creates a group composed by an entry widget together with a button that allows opening a browser to select an existing directory. The data type \fIexistingdirectory\fR is automatically selected for this entry if no data type has been explicitly defined with the \fI-type\fR attribute.
.CS

tepam::argument_dialogbox \\
\fB-existingdirectory\fR {-label "Report directory" -variable ReportDir}
.CE
.PP
Finally, there is a last group of some other special data entry widgets.
.TP
-color \fIlist\fR
The color selector is composed by an entry widget together with a button that allows opening a color browser. The data type \fIcolor\fR is automatically selected for this entry widget type if no data type has been explicitly defined with the \fI-type\fR attribute.
.CS

tepam::argument_dialogbox \\
\fB-color\fR {-label "Background color" -variable Color -default red}
.CE
.TP
-font \fIlist\fR
The font selector is composed by an entry widget together with a button that allows opening a font browser. The data type \fIfont\fR is automatically selected for this entry widget type if no data type has been explicitly defined with the \fI-type\fR attribute. The entry widget displays an example text in the format of the selected font.
.sp
The font browser allows selecting by default the font families provided by the \fBfont families\fR Tk command as well as a reasonable set of different font sizes between 6 points and 40 points. Different sets of font families and font sizes can be specified respectively via the \fI-font_families\fR or \fI-font_sizes\fR attributes.
.sp
If no default font is provided via the \fI-default\fR attribute, the default font of the label widget to display the selected font will be used as default selected font. If the font family of this label widget is not part of the available families the first available family is used as default. If the font size of this label widget is not part of the available sizes the next close available size is selected as default size.
.CS

tepam::argument_dialogbox \\
\fB-font\fR {-label "Font" -variable Font \\
-font_sizes {8 10 12 16} \\
-default {Arial 20 italic}}
.CE
.PP
.SS "ENTRY WIDGET ITEM ATTRIBUTES"
All the entry widget items are accepting the following attributes:
.TP
-text \fIstring\fR
Eventual descriptions and comments specified with the \fI-text\fR attribute are displayed above the entry widget.
.CS

tepam::argument_dialogbox \\
-entry {\fB-text "Please enter your name bellow"\fR -variable Name}
.CE
.TP
-label \fIstring\fR
The label attribute creates left to the entry widget a label using the provided string as label text:
.CS

tepam::argument_dialogbox \\
-entry {\fB-label Name\fR -variable Name}
.CE
.TP
-variable \fIstring\fR
All entry widgets require a specified variable. After accepting the entered information with the OK button, the entry widget's data are stored inside the defined variables.
.CS

tepam::argument_dialogbox \\
-existingdirectory {-label "Report directory" \fB-variable ReportDir\fR}
.CE
.TP
-default \fIstring\fR
Eventual default data for the entry widgets can be provided via the \fI-default\fR attribute. The default value is overridden if an argument dialog box with a defined context is called another time. The value acknowledged in a previous call will be used in this case as default value.
.CS

tepam::argument_dialogbox \\
-checkbox {-label "Font sytle" -variable FontStyle \\
-choices {bold italic underline} \fB-default italic\fR}
.CE
.TP
-optional \fB0\fR|\fB1\fR
Data can be specified as optional or mandatory with the \fI-optional\fR attribute that requires either \fB0\fR (mandatory) or \fB1\fR (optional) as attribute data.
.sp
In case an entry is optional and no data has been entered, e.g. the entry contains an empty character string, the entry will be considered as undefined and the assigned variable will not be defined.
.CS

tepam::argument_dialogbox \\
-entry {-label "City" -variable start_city -type string} \\
-entry {-label "Street" -variable start_street -type string \fB-optional 0\fR} \\
-entry {-label "Street number" -variable start_street_nbr -type integer \fB-optional 1\fR} \\
.CE
.TP
-type \fIstring\fR
If the data type is defined with the \fI-type\fR 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.
.sp
The argument dialog box accepts all types that have been specified by the TEPAM package and that are also used by \fBtepam::procedure\fR (see the \fItepam::procedure reference manual\fR).
.sp
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 \fI-type\fR attribute.
.CS

tepam::argument_dialogbox \\
\fB-entry\fR {-label "Street number" -variable start_street_nbr \fB-type integer\fR} \\
.CE
.TP
-range \fIstring\fR
Values can be constrained with the \fI-range\fR attribute. The valid range is defined with a list containing the minimum valid value and a maximum valid value.
.sp
The \fI-range\fR attribute has to be used only for numerical arguments, like integers and doubles.
.CS

tepam::argument_dialogbox \\
-entry {-label Month -variable Month -type integer \fB-range {1 12}\fR}
.CE
.TP
-validatecommand \fIstring\fR
More complex value validations than type checks can be performed via specific validation commands that are declared with the \fI-validatecommand\fR attribute.
The provided validation command can be a script (command sequence) in which the pattern \fI%P\fR is replaced by the value that has to be checked.
.CS

tepam::argument_dialogbox \\
-entry {-label "Your comment" -variable YourCom \\
\fB-validatecommand\fR "IllegalWordDetector %P"} ]
.CE
.PP
Some other attributes are supported by the list and combo boxes as well as by the radio and check buttons.
.TP
-choices \fIstring\fR
Choice lists can directly be defined with the \fI-choices\fR attribute. This way to define choice lists is especially adapted for smaller, fixed selection lists.
.CS

tepam::argument_dialogbox \\
-listbox {-label "Text styles" -variable Styles \\
\fB-choices {bold italic underline}\fR -default underline
.CE
.TP
-choicelabels \fIstring\fR \fI(only check and radio buttons)\fR
If the check and radio boxes' labels should differ from the option values, they can be defined with the \fI-choicelabels\fR attribute:
.CS

tepam::argument_dialogbox \\
-checkbox {-label "Font sytle" -variable FontStyle \\
-choices {bold italic underline} \\
\fB-choicelabels {Bold Italic Underline}\fR
.CE
.TP
-choicevariable \fIstring\fR
Another way to define the choice lists is using the \fI-choicevariable\fR attribute. This way to define choice lists is especially adapted for huge and eventually variable selection lists.
.CS

set TextSizes {8 9 10 12 15 18}
tepam::argument_dialogbox \\
-combobox {-label "Text size" -variable Size \fB-choicevariable TextSizes\fR}
.CE
.TP
-multiple_selection \fB0\fR|\fB1\fR
The list box item (\fB-listbox\fR) allows by default selecting only one list element. By setting the \fI-multiple_selection\fR attribute to \fB1\fR, multiple elements can be selected.
.CS

tepam::argument_dialogbox \\
-listbox {-label "Text styles" -variable Styles \\
-choices {bold italic underline} -default underline \\
\fB-multiple_selection 1\fR -height 3}
.CE
.PP
Some additional attributes are supported by the file and directory selection widgets.
.TP
-filetypes \fIstring\fR
The file type attribute is used by the \fB-file\fR and \fB-existingfile\fR items to define the file endings that are searched by the file browser.
.CS

tepam::argument_dialogbox \\
-file {-label "Image file" -variable ImageF \\
\fB-filetypes {{"GIF" {*.gif}} {"JPG" {*.jpg}}}\fR}
.CE
.TP
-initialfile \fIstring\fR
The initial file used by the file browsers of the \fB-file\fR and \fB-existingfile\fR widgets are by default the file defined with the \fI-default\fR attribute, unless a file is specified with the \fI-initialfile\fR attribute.
.CS

tepam::argument_dialogbox \\
-file {-variable ImageF \fB-initialfile "picture.gif"\fR}
.CE
.TP
-activedir \fIstring\fR
The \fI-activedir\fR attribute will override the default active search directory used by the file browsers of all file and directory entry widgets. The default active search directory is defined by the directory of a specified initial file (\fI-initialfile\fR) if defined, and otherwise by the directory of the default file/directory, specified with the \fI-default\fR attribute.
.CS

tepam::argument_dialogbox \\
-file "-variable ImageF \fB-activedir $pwd\fR"
.CE
.PP
Finally, there is a last attribute supported by some widgets:
.TP
-height \fIstring\fR
All widgets containing a selection list (\fB-listbox\fR, \fB-disjointlistbox\fR, \fB-font\fR) as well as the multi line \fB-text\fR widget are accepting the \fI-height\fR attribute that defines the number of displayed rows of the selection lists.
.CS

tepam::argument_dialogbox \\
-listbox {-label "Text size" -variable Size \\
-choices {8 9 10 12 15 18} -default 12 \fB-height 3\fR}
.CE
.IP
If the no height has been explicitly specified the height of the widget will be dynamically adapted to the argument dialog box' size.
.PP
.SH "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 \fBtepam\fR 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:
.CS

\fIproc\fR tepam::ad_form(<WidgetName>) {W Command {Par ""}} {
\fIupvar Option Option; # if required\fR
\fIvariable argument_dialogbox; # if required\fR
switch $Command {
"create" <CreateCommandSequence>
"set_choice" <SetChoiceCommandSequence>
"set" <SetCommandv>
"get" <GetCommandSequence>
}
}
.CE
\fBArgument_dialogbox\fR takes care about the \fI-label\fR and \fI-text\fR 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 \fIW\fR argument.
.PP
The entry widget procedure has to support 3 mandatory and an optional command that are selected via the argument \fICommand\fR:
.TP
\fIcreate\fR
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
.PP
Eventually specified entry widget item attributes are available via the \fBOption\fR array variable of the calling procedure. This variable becomes accessible inside the entry widget procedure via the \fBupvar\fR command.
.PP
There may be a need to store some information in a variable. The array variable \fBargument_dialogbox\fR has to be used for this purpose together with array indexes starting with \fI"$W,"\fR, e.g. \fIargument_dialogbox($W,values)\fR.
.PP
Examples of entry widget procedures are directly provided by the TEPAM package source file that specifies the standard entry widget procedures. The simplest procedure is the one for the basic \fIentry\fR widget:
.CS

proc tepam::ad_form(entry) {W Command {Par ""}} {
   switch $Command {
      "create" {pack [entry \\$W.entry] -fill x \\
                        -expand yes -pady 4 -side left}
      "set" {\\$W.entry insert 0 $Par}
      "get" {return [\\$W.entry get]}
   }
}
.CE
It is also possible to relay on an existing entry widget procedure to derive a new, more specific one. The \fIradiobox\fR widget is used for example, to create a new entry widget that allows selecting either \fIleft\fR, \fIcenter\fR or \fIright\fR. The original \fIradiobox\fR widget is called with the \fIset_choice\fR command immediately after the \fIcreate\fR command, to define the fixed list of selection options.
.CS

proc tepam::ad_form(rcl) {W Command {Par ""}} {
   set Res [ad_form(radiobox) $W $Command $Par]
   if {$Command=="create"} {
      ad_form(radiobox) $W set_choice {left center right}
   }
   return $Res
}
.CE
Please consult the TEPAM package source file to find additional and more complex examples of entry widget procedures.
.SH VARIABLES
The \fBargument_dialogbox\fR is using two variables inside the namespace \fB::tepam\fR:
.TP
\fBargument_dialogbox\fR







<

|
|
|
|
|
|




<

|
|
|
|
|







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
.PP
Eventually specified entry widget item attributes are available via the \fBOption\fR array variable of the calling procedure. This variable becomes accessible inside the entry widget procedure via the \fBupvar\fR command.
.PP
There may be a need to store some information in a variable. The array variable \fBargument_dialogbox\fR has to be used for this purpose together with array indexes starting with \fI"$W,"\fR, e.g. \fIargument_dialogbox($W,values)\fR.
.PP
Examples of entry widget procedures are directly provided by the TEPAM package source file that specifies the standard entry widget procedures. The simplest procedure is the one for the basic \fIentry\fR widget:
.CS

proc tepam::ad_form(entry) {W Command {Par ""}} {
switch $Command {
"create" {pack [entry \\$W.entry] -fill x \\
-expand yes -pady 4 -side left}
"set" {\\$W.entry insert 0 $Par}
"get" {return [\\$W.entry get]}
}
}
.CE
It is also possible to relay on an existing entry widget procedure to derive a new, more specific one. The \fIradiobox\fR widget is used for example, to create a new entry widget that allows selecting either \fIleft\fR, \fIcenter\fR or \fIright\fR. The original \fIradiobox\fR widget is called with the \fIset_choice\fR command immediately after the \fIcreate\fR command, to define the fixed list of selection options.
.CS

proc tepam::ad_form(rcl) {W Command {Par ""}} {
set Res [ad_form(radiobox) $W $Command $Par]
if {$Command=="create"} {
ad_form(radiobox) $W set_choice {left center right}
}
return $Res
}
.CE
Please consult the TEPAM package source file to find additional and more complex examples of entry widget procedures.
.SH VARIABLES
The \fBargument_dialogbox\fR is using two variables inside the namespace \fB::tepam\fR:
.TP
\fBargument_dialogbox\fR
863
864
865
866
867
868
869
870
871
.SH KEYWORDS
data entry form, parameter entry form
.SH CATEGORY
Argument entry form, mega widget
.SH COPYRIGHT
.nf
Copyright (c) 2009/2010, Andreas Drollinger

.fi







<

808
809
810
811
812
813
814

815
.SH KEYWORDS
data entry form, parameter entry form
.SH CATEGORY
Argument entry form, mega widget
.SH COPYRIGHT
.nf
Copyright (c) 2009/2010, Andreas Drollinger

.fi

Changes to embedded/man/files/modules/tepam/tepam_introduction.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
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
Powerful and code efficient generation of complex parameter definition forms.
.PP
.SH "PROCEDURE DECLARATION"
TEPAM's procedure declaration syntax is simple and self-explaining. Instead of declaring a procedure with the Tcl key word \fBproc\fR, a procedure is declared with the TEPAM command \fBprocedure\fR which takes as \fBproc\fR also 3 arguments: The procedure name, the procedure header and the procedure body.
.PP
The following example declares the subcommand \fBmessage\fR of the procedure \fBdisplay\fR. This command has several named and unnamed arguments:
.CS

\fBtepam::procedure\fR {display message} {
   -return            -
   -short_description "Displays a simple message box"
   -description       "This procedure allows displaying a configurable message box.
   -args {
      {-mtype -default Warning -choices {Info Warning Error} -description "Message type"}
      {-font -type font -default {Arial 10 italic} -description "Message text font"}
      {-level -type integer -optional -range {1 10} -description "Message level"}
      {-fg -type color -default black -description "Message color"}
      {-bg -type color -optional -description "Background color"}
      {-no_border -type none -description "Use a splash window style (no border)"}
      {-log_file -type file -optional -description "Optional message log file"}
      {text -type string -multiple -description "Multiple text lines to display"}
   }
} {
\fI   puts "display message:"
   foreach var {mtype font level fg bg no_border log_file text} {
      if {[info exists $var]} {
         puts  "  $var=[set $var]"
      }
   }
\fR}
.CE
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.
.PP
As the example above shows, the TEPAM command \fBprocedure\fR 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 \fBproc\fR and a command declared with \fBprocedure\fR.
.PP
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.
.PP
A list of argument definition statements assigned to the \fI-args\fR argument is defining the procedure arguments. Each argument definition statement starts with the argument name, optionally followed by some argument attributes.
.PP
Three types of arguments can be defined: Unnamed arguments, named arguments and flags. The distinction between the named and unnamed arguments is made by the first argument name character which is simply "-" for named arguments. A flag is defined as named argument that has the type  \fInone\fR.
.PP
Named and unnamed arguments are mandatory, unless they are declared with the \fI-optional\fR flag and unless they have a default value specified with the \fI-default\fR option. Named arguments and the last unnamed argument can have the attribute \fI-multiple\fR, which means that they can be defined multiple times. The expected argument data type is specified with the \fI-type\fR option. TEPAM defines a large set of standard data types which can easily be completed with application specific data types.
.PP
The argument declaration order has only an importance for unnamed arguments that are by default parsed after the named arguments (Tcl style). A variable allows changing this behavior in a way that unnamed arguments are parsed first, before the named arguments (Tk style).
.SH "PROCEDURE HELP"
The declared procedure can simply be called with the \fI-help\fR option to get the information about the usage of the procedure and its arguments:
.CS

\fBdisplay message\fR -help
\fI  ->
NAME
      display message - Displays a simple message box
SYNOPSYS
      display message
            [-mtype <mtype>] :
               Message type, default: "Warning", choices: {Info Warning Error}
            [-font <font>] :
               Message text font, type: font, default: Arial 10 italic
            [-level <level>] :
               Message level, type: integer, range: 1..10
            [-fg <fg>] :
               Message color, type: color, default: black
            [-bg <bg>] :
               Background color, type: color
            [-no_border ] :
               Use a splash window style (no border)
            [-log_file <log_file>] :
               Optional message log file, type: file
            <text> :
               Multiple text lines to display, type: string
DESCRIPTION
      This procedure allows displaying a configurable message box.\fR
.CE
.SH "PROCEDURE CALL"
The specified procedure can be called in many ways. The following listing shows some valid procedure calls:
.CS

\fBdisplay message\fR "The document hasn't yet been saved!"
\fI-> display message:
     mtype=Warning
     font=Arial 10 italic
     fg=black
     no_border=0
     text={The document hasn't yet been saved!}\fR

\fBdisplay message\fR -fg red -bg black "Please save first the document"
\fI-> display message:
     mtype=Warning
     font=Arial 10 italic
     fg=red
     bg=black
     no_border=0
     text={Please save first the document}\fR

\fBdisplay message\fR -mtype Error -no_border "Why is here no border?"
\fI-> display message:
     mtype=Error
     font=Arial 10 italic
     fg=black
     no_border=1
     text={Why is here no border?}\fR

\fBdisplay message\fR -font {Courier 12} -level 10 \\
   "Is there enough space?" "Reduce otherwise the font size!"
\fI-> display message:
     mtype=Warning
     font=Courier 12
     level=10
     fg=black
     no_border=0
     text={Is there enough space?} {Reduce otherwise the font size!}\fR
.CE
The next lines show how wrong arguments are recognized. The \fItext\fR argument that is mandatory is missing in the first procedure call:
.CS

\fBdisplay message\fR -font {Courier 12}
\fI  -> display message: Required argument is missing: text\fR
.CE
Only known arguments are accepted:
.CS

\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
.SH "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 \fI-interactive\fR flag.
.CS

\fBdisplay message\fR -interactive
.CE
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.
.PP
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.
.PP
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.
.SH "FLEXIBLE ARGUMENT DIALOG BOX"
The form generator that creates in the previous example the argument dialog box for the interactive procedure call is also available for other purposes than for the definition of procedure arguments. TEPAM's provided argument dialog box allows crating complex parameter definition forms in a very efficient way.
.PP
The following example tries to illustrate the simplicity to create complex data entry forms. It creates an input mask that allows specifying a file to copy, a destination folder as well as a checkbox that allows specifying if an eventual existing file can be overwritten. Comfortable browsers can be used to select files and directories. And finally, the form offers also the possibility to accept and decline the selection. Here is the code snippet that is doing all this:
.CS

\fBtepam::argument_dialogbox\fR \\
   \fB-existingfile\fR {-label "Source file" -variable SourceFile} \\
   \fB-existingdirectory\fR {-label "Destination folder" -variable DestDir} \\
   \fB-checkbutton\fR {-label "Overwrite existing file" -variable Overwrite}
.CE
The \fBargument_dialogbox\fR returns \fBok\fR if the entered data are validated. It will return \fBcancel\fR if the data entry has been canceled. After the validation of the entered data, the \fBargument_dialogbox\fR defines all the specified variables with the entered data inside the calling context.
.PP
An \fBargument_dialogbox\fR 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.
.PP
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.
.PP
The attribute list contains pairs of attribute names and attribute data. The primary attribute is \fI-variable\fR used to specify the variable in the calling context into which the entered data has to be stored. Another often used attribute is \fI-label\fR 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.
.PP
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 \fI-frame\fR and \fI-sep\fR which allows organizing the different entry widgets in frames and sections:
.CS

set ChoiceList {"Choice 1" "Choice 2" "Choice 3" "Choice 4" "Choice 5" "Choice 6"}

set Result [\fBtepam::argument_dialogbox\fR \\
   \fB-title\fR "System configuration" \\
   \fB-context\fR test_1 \\
   \fB-frame\fR {-label "Entries"} \\
      \fB-entry\fR {-label Entry1 -variable Entry1} \\
      \fB-entry\fR {-label Entry2 -variable Entry2 -default "my default"} \\
   \fB-frame\fR {-label "Listbox & combobox"} \\
      \fB-listbox\fR {-label "Listbox, single selection" -variable Listbox1 \\
                -choices {1 2 3 4 5 6 7 8} -default 1 -height 3} \\
      \fB-listbox\fR {-label "Listbox, multiple selection" -variable Listbox2
                -choicevariable ChoiceList -default {"Choice 2" "Choice 3"}
                -multiple_selection 1 -height 3} \\
      \fB-disjointlistbox\fR {-label "Disjoined listbox" -variable DisJntListbox
                        -choicevariable ChoiceList \\
                        -default {"Choice 3" "Choice 5"} -height 3} \\
      \fB-combobox\fR {-label "Combobox" -variable Combobox \\
                 -choices {1 2 3 4 5 6 7 8} -default 3} \\
   \fB-frame\fR {-label "Checkbox, radiobox and checkbutton"} \\
      \fB-checkbox\fR {-label Checkbox -variable Checkbox
                 -choices {bold italic underline} -choicelabels {Bold Italic Underline} \\
                 -default italic} \\
      \fB-radiobox\fR {-label Radiobox -variable Radiobox
                 -choices {bold italic underline} -choicelabels {Bold Italic Underline} \\
                 -default underline} \\
      \fB-checkbutton\fR {-label CheckButton -variable Checkbutton -default 1} \\
   \fB-frame\fR {-label "Files & directories"} \\
      \fB-existingfile\fR {-label "Input file" -variable InputFile} \\
      \fB-file\fR {-label "Output file" -variable OutputFile} \\
      \fB-sep\fR {} \\
      \fB-existingdirectory\fR {-label "Input directory" -variable InputDirectory} \\
      \fB-directory\fR {-label "Output irectory" -variable OutputDirectory} \\
   \fB-frame\fR {-label "Colors and fonts"} \\
      \fB-color\fR {-label "Background color" -variable Color -default red} \\
      \fB-sep\fR {} \\
      \fB-font\fR {-label "Font" -variable Font -default {Courier 12 italic}}]
.CE
The \fBargument_dialogbox\fR defines all the specified variables with the entered data and returns \fBok\fR if the data have been validated via the Ok button. If the data entry is cancelled by activating the Cancel button, the \fBargument_dialogbox\fR returns \fBcancel\fR.
.CS

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: '[set $Var]'"
   }
}
\fI-> Arguments:
   Entry1: 'Hello, this is a trial'
   Entry2: 'my default'
   Listbox1: '1'
   Listbox2: '{Choice 2} {Choice 3}'
   DisJntListbox: '{Choice 3} {Choice 5}'
   Combobox: '3'
   Checkbox: 'italic'
   Radiobox: 'underline'
   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'\fR
.CE
.SH "SEE ALSO"
tepam::argument_dialogbox(n), tepam::procedure(n)
.SH KEYWORDS
argument integrity, argument validation, arguments, entry mask, parameter entry form, procedure, subcommand
.SH CATEGORY
Procedures, arguments, parameters, options
.SH COPYRIGHT
.nf
Copyright (c) 2009/2010, Andreas Drollinger

.fi







<

|
|
|
|
|
|
|
|
|
|
|
|
|


|
|
|
|
|


















<



|

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

|




<


|
|
|
|
|
<


|
|
|
|
|
|
<


|
|
|
|
|
<

|

|
|
|
|
|
|



<





<





<


|



<


|

|

<






<












<

|
|
|











<

<

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|



<

|

|
|
|
|
|
|
|
|
|
|


|
|
|
|
|
|
|
|
|
|
|
|
|
|
|










<

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
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
Powerful and code efficient generation of complex parameter definition forms.
.PP
.SH "PROCEDURE DECLARATION"
TEPAM's procedure declaration syntax is simple and self-explaining. Instead of declaring a procedure with the Tcl key word \fBproc\fR, a procedure is declared with the TEPAM command \fBprocedure\fR which takes as \fBproc\fR also 3 arguments: The procedure name, the procedure header and the procedure body.
.PP
The following example declares the subcommand \fBmessage\fR of the procedure \fBdisplay\fR. This command has several named and unnamed arguments:
.CS

\fBtepam::procedure\fR {display message} {
-return            -
-short_description "Displays a simple message box"
-description       "This procedure allows displaying a configurable message box.
-args {
{-mtype -default Warning -choices {Info Warning Error} -description "Message type"}
{-font -type font -default {Arial 10 italic} -description "Message text font"}
{-level -type integer -optional -range {1 10} -description "Message level"}
{-fg -type color -default black -description "Message color"}
{-bg -type color -optional -description "Background color"}
{-no_border -type none -description "Use a splash window style (no border)"}
{-log_file -type file -optional -description "Optional message log file"}
{text -type string -multiple -description "Multiple text lines to display"}
}
} {
\fI   puts "display message:"
foreach var {mtype font level fg bg no_border log_file text} {
if {[info exists $var]} {
puts  "  $var=[set $var]"
}
}
\fR}
.CE
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.
.PP
As the example above shows, the TEPAM command \fBprocedure\fR 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 \fBproc\fR and a command declared with \fBprocedure\fR.
.PP
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.
.PP
A list of argument definition statements assigned to the \fI-args\fR argument is defining the procedure arguments. Each argument definition statement starts with the argument name, optionally followed by some argument attributes.
.PP
Three types of arguments can be defined: Unnamed arguments, named arguments and flags. The distinction between the named and unnamed arguments is made by the first argument name character which is simply "-" for named arguments. A flag is defined as named argument that has the type  \fInone\fR.
.PP
Named and unnamed arguments are mandatory, unless they are declared with the \fI-optional\fR flag and unless they have a default value specified with the \fI-default\fR option. Named arguments and the last unnamed argument can have the attribute \fI-multiple\fR, which means that they can be defined multiple times. The expected argument data type is specified with the \fI-type\fR option. TEPAM defines a large set of standard data types which can easily be completed with application specific data types.
.PP
The argument declaration order has only an importance for unnamed arguments that are by default parsed after the named arguments (Tcl style). A variable allows changing this behavior in a way that unnamed arguments are parsed first, before the named arguments (Tk style).
.SH "PROCEDURE HELP"
The declared procedure can simply be called with the \fI-help\fR option to get the information about the usage of the procedure and its arguments:
.CS

\fBdisplay message\fR -help
\fI  ->
NAME
display message - Displays a simple message box
SYNOPSYS
display message
[-mtype <mtype>] :
Message type, default: "Warning", choices: {Info Warning Error}
[-font <font>] :
Message text font, type: font, default: Arial 10 italic
[-level <level>] :
Message level, type: integer, range: 1..10
[-fg <fg>] :
Message color, type: color, default: black
[-bg <bg>] :
Background color, type: color
[-no_border ] :
Use a splash window style (no border)
[-log_file <log_file>] :
Optional message log file, type: file
<text> :
Multiple text lines to display, type: string
DESCRIPTION
This procedure allows displaying a configurable message box.\fR
.CE
.SH "PROCEDURE CALL"
The specified procedure can be called in many ways. The following listing shows some valid procedure calls:
.CS

\fBdisplay message\fR "The document hasn't yet been saved!"
\fI-> display message:
mtype=Warning
font=Arial 10 italic
fg=black
no_border=0
text={The document hasn't yet been saved!}\fR

\fBdisplay message\fR -fg red -bg black "Please save first the document"
\fI-> display message:
mtype=Warning
font=Arial 10 italic
fg=red
bg=black
no_border=0
text={Please save first the document}\fR

\fBdisplay message\fR -mtype Error -no_border "Why is here no border?"
\fI-> display message:
mtype=Error
font=Arial 10 italic
fg=black
no_border=1
text={Why is here no border?}\fR

\fBdisplay message\fR -font {Courier 12} -level 10 \\
"Is there enough space?" "Reduce otherwise the font size!"
\fI-> display message:
mtype=Warning
font=Courier 12
level=10
fg=black
no_border=0
text={Is there enough space?} {Reduce otherwise the font size!}\fR
.CE
The next lines show how wrong arguments are recognized. The \fItext\fR argument that is mandatory is missing in the first procedure call:
.CS

\fBdisplay message\fR -font {Courier 12}
\fI  -> display message: Required argument is missing: text\fR
.CE
Only known arguments are accepted:
.CS

\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
.SH "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 \fI-interactive\fR flag.
.CS

\fBdisplay message\fR -interactive
.CE
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.
.PP
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.
.PP
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.
.SH "FLEXIBLE ARGUMENT DIALOG BOX"
The form generator that creates in the previous example the argument dialog box for the interactive procedure call is also available for other purposes than for the definition of procedure arguments. TEPAM's provided argument dialog box allows crating complex parameter definition forms in a very efficient way.
.PP
The following example tries to illustrate the simplicity to create complex data entry forms. It creates an input mask that allows specifying a file to copy, a destination folder as well as a checkbox that allows specifying if an eventual existing file can be overwritten. Comfortable browsers can be used to select files and directories. And finally, the form offers also the possibility to accept and decline the selection. Here is the code snippet that is doing all this:
.CS

\fBtepam::argument_dialogbox\fR \\
\fB-existingfile\fR {-label "Source file" -variable SourceFile} \\
\fB-existingdirectory\fR {-label "Destination folder" -variable DestDir} \\
\fB-checkbutton\fR {-label "Overwrite existing file" -variable Overwrite}
.CE
The \fBargument_dialogbox\fR returns \fBok\fR if the entered data are validated. It will return \fBcancel\fR if the data entry has been canceled. After the validation of the entered data, the \fBargument_dialogbox\fR defines all the specified variables with the entered data inside the calling context.
.PP
An \fBargument_dialogbox\fR 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.
.PP
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.
.PP
The attribute list contains pairs of attribute names and attribute data. The primary attribute is \fI-variable\fR used to specify the variable in the calling context into which the entered data has to be stored. Another often used attribute is \fI-label\fR 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.
.PP
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 \fI-frame\fR and \fI-sep\fR which allows organizing the different entry widgets in frames and sections:
.CS

set ChoiceList {"Choice 1" "Choice 2" "Choice 3" "Choice 4" "Choice 5" "Choice 6"}

set Result [\fBtepam::argument_dialogbox\fR \\
\fB-title\fR "System configuration" \\
\fB-context\fR test_1 \\
\fB-frame\fR {-label "Entries"} \\
\fB-entry\fR {-label Entry1 -variable Entry1} \\
\fB-entry\fR {-label Entry2 -variable Entry2 -default "my default"} \\
\fB-frame\fR {-label "Listbox & combobox"} \\
\fB-listbox\fR {-label "Listbox, single selection" -variable Listbox1 \\
-choices {1 2 3 4 5 6 7 8} -default 1 -height 3} \\
\fB-listbox\fR {-label "Listbox, multiple selection" -variable Listbox2
-choicevariable ChoiceList -default {"Choice 2" "Choice 3"}
-multiple_selection 1 -height 3} \\
\fB-disjointlistbox\fR {-label "Disjoined listbox" -variable DisJntListbox
-choicevariable ChoiceList \\
-default {"Choice 3" "Choice 5"} -height 3} \\
\fB-combobox\fR {-label "Combobox" -variable Combobox \\
-choices {1 2 3 4 5 6 7 8} -default 3} \\
\fB-frame\fR {-label "Checkbox, radiobox and checkbutton"} \\
\fB-checkbox\fR {-label Checkbox -variable Checkbox
-choices {bold italic underline} -choicelabels {Bold Italic Underline} \\
-default italic} \\
\fB-radiobox\fR {-label Radiobox -variable Radiobox
-choices {bold italic underline} -choicelabels {Bold Italic Underline} \\
-default underline} \\
\fB-checkbutton\fR {-label CheckButton -variable Checkbutton -default 1} \\
\fB-frame\fR {-label "Files & directories"} \\
\fB-existingfile\fR {-label "Input file" -variable InputFile} \\
\fB-file\fR {-label "Output file" -variable OutputFile} \\
\fB-sep\fR {} \\
\fB-existingdirectory\fR {-label "Input directory" -variable InputDirectory} \\
\fB-directory\fR {-label "Output irectory" -variable OutputDirectory} \\
\fB-frame\fR {-label "Colors and fonts"} \\
\fB-color\fR {-label "Background color" -variable Color -default red} \\
\fB-sep\fR {} \\
\fB-font\fR {-label "Font" -variable Font -default {Courier 12 italic}}]
.CE
The \fBargument_dialogbox\fR defines all the specified variables with the entered data and returns \fBok\fR if the data have been validated via the Ok button. If the data entry is cancelled by activating the Cancel button, the \fBargument_dialogbox\fR returns \fBcancel\fR.
.CS

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: '[set $Var]'"
}
}
\fI-> Arguments:
Entry1: 'Hello, this is a trial'
Entry2: 'my default'
Listbox1: '1'
Listbox2: '{Choice 2} {Choice 3}'
DisJntListbox: '{Choice 3} {Choice 5}'
Combobox: '3'
Checkbox: 'italic'
Radiobox: 'underline'
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'\fR
.CE
.SH "SEE ALSO"
tepam::argument_dialogbox(n), tepam::procedure(n)
.SH KEYWORDS
argument integrity, argument validation, arguments, entry mask, parameter entry form, procedure, subcommand
.SH CATEGORY
Procedures, arguments, parameters, options
.SH COPYRIGHT
.nf
Copyright (c) 2009/2010, Andreas Drollinger

.fi

Changes to embedded/man/files/modules/tepam/tepam_procedure.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
The exact meaning of several terms that are used in this document will be shortly explained to avoid any ambiguities and misunderstandings.
.TP
\fISubcommand\fR
The usage of subcommands is heavily used in the Tcl language. Several commands are incorporated into a single main command and are selectable via the first argument.
.sp
The \fBstring\fR command is an example of such a command that implements for example subcommands to check a character string's length, to compare strings, to extract substrings, etc:
.CS

\fBstring length\fR \fIstring\fR
\fBstring compare\fR \fIstring\fR \fIstring\fR
\fBstring range\fR \fIstring\fR \fIfirst\fR \fIlast\fR
...
.CE
.sp
TEPAM provides a framework that allows implementing easily such subcommands in form of Tcl procedures. It allows not only defining a first level of subcommands, but also a higher level of subcommands. The \fBstring\fR command's class check could be implemented as independent sub-sub-commands of the \fBstring\fR command:
.CS

\fBstring is alnum\fR \fIstring\fR
\fBstring is integer\fR \fIstring\fR
\fBstring is double\fR \fIstring\fR
...
.CE
.TP
\fIProcedure attribute\fR
TEPAM allows attaching to a declared procedure different kind of attributes. Some of these attributes are \fIjust\fR used for documentation purposes, but other attributes specify the way how the procedure has to be called. Also the procedure arguments are defined in form of a procedure attribute.
.TP
\fIArgument\fR
TEPAM uses the term \fIargument\fR for the parameters of a procedure.
.sp
The following example calls the subcommand \fBstring compare\fR with several arguments:
.CS

\fBstring compare\fR \fI-nocase -length 3 "emphasized" "emphasised"\fR
.CE
.IP
The following paragraphs discuss these different argument types.
.TP
\fINamed argument\fR
Some parameters, as \fI-length 3\fR of the subcommand \fBstring compare\fR have to be provided as pairs of argument names and argument values. This parameter type is often also called \fIoption\fR.







<



|




<



|










<







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
The exact meaning of several terms that are used in this document will be shortly explained to avoid any ambiguities and misunderstandings.
.TP
\fISubcommand\fR
The usage of subcommands is heavily used in the Tcl language. Several commands are incorporated into a single main command and are selectable via the first argument.
.sp
The \fBstring\fR command is an example of such a command that implements for example subcommands to check a character string's length, to compare strings, to extract substrings, etc:
.CS

\fBstring length\fR \fIstring\fR
\fBstring compare\fR \fIstring\fR \fIstring\fR
\fBstring range\fR \fIstring\fR \fIfirst\fR \fIlast\fR
\...
.CE
.sp
TEPAM provides a framework that allows implementing easily such subcommands in form of Tcl procedures. It allows not only defining a first level of subcommands, but also a higher level of subcommands. The \fBstring\fR command's class check could be implemented as independent sub-sub-commands of the \fBstring\fR command:
.CS

\fBstring is alnum\fR \fIstring\fR
\fBstring is integer\fR \fIstring\fR
\fBstring is double\fR \fIstring\fR
\...
.CE
.TP
\fIProcedure attribute\fR
TEPAM allows attaching to a declared procedure different kind of attributes. Some of these attributes are \fIjust\fR used for documentation purposes, but other attributes specify the way how the procedure has to be called. Also the procedure arguments are defined in form of a procedure attribute.
.TP
\fIArgument\fR
TEPAM uses the term \fIargument\fR for the parameters of a procedure.
.sp
The following example calls the subcommand \fBstring compare\fR with several arguments:
.CS

\fBstring compare\fR \fI-nocase -length 3 "emphasized" "emphasised"\fR
.CE
.IP
The following paragraphs discuss these different argument types.
.TP
\fINamed argument\fR
Some parameters, as \fI-length 3\fR of the subcommand \fBstring compare\fR have to be provided as pairs of argument names and argument values. This parameter type is often also called \fIoption\fR.
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
The \fBstring compare\fR command of the previous example requires that the \fInamed arguments\fR (options, flags) are provided first. The two mandatory (unnamed) arguments have to be provided as last argument.
.sp
This is the usual Tcl style (exceptions exist) which is referred in the TEPAM documentation as \fInamed arguments first, unnamed arguments later style\fR.
.TP
\fIUnnamed arguments first, named arguments later\fR
In contrast to most Tcl commands, Tk uses generally (exceptions exist also here) a different calling style where the \fIunnamed arguments\fR have to be provided first, before the \fInamed arguments\fR have to be provided:
.CS

\fBpack\fR \fI.ent1 .ent2 -fill x -expand yes -side left\fR
.CE
.IP
This style is referred in the TEPAM documentation as \fIunnamed arguments first, named arguments later style\fR.
.PP
.SH "PROCEDURE DECLARATION"
TEPAM allows declaring new Tcl procedures with the command \fBtepam::procedure\fR that has similar to the standard Tcl command \fBproc\fR also 3 arguments:
.TP
\fBtepam::procedure\fR \fIname\fR \fIattributes\fR \fIbody\fR
.PP
The TEPAM procedure declaration syntax is demonstrated by the following example:
.CS

\fBtepam::procedure\fR {display message} {
   -short_description
      "Displays a simple message box"
   -description
      "This procedure allows displaying a configurable\\
       message box. The default message type that is\\
       created is a warning, but also errors and info can\\
       be generated.
       The procedure accepts multiple text lines."
   -example
      {display message -mtype Warning "Save first your job"}
   -args {
      {-mtype -choices {Info Warning Error} \\
              -default Warning -description "Message type"}
      {text   -type string -multiple \\
              -description "Multiple text lines to display"}
   }
} {
   puts "Message type: $mtype"
   puts "Message: $text"
}
.CE
The 3 arguments of \fBprocedure\fR are:
.TP
\fIname\fR
The procedure name can be used in very flexible ways. Procedure names can have namespace qualifiers. By providing a two element name list as procedure name, a subcommand of a procedure will be declared. It is even possible to declare sub-sub-commands of a procedure by providing name lists with three elements.
.sp
Here are some valid procedure declarations using different procedure names (the attribute and body arguments are empty for simplicity):
.CS

\fI# Simple procedure name:\fR
tepam::procedure \fBdisplay_message\fR {} {}
\fI\fR
\fI# Procedure declared in the main namespace:\fR
tepam::procedure \fB::display_message\fR {} {}
\fI\fR
\fI# Procedure in the namespace\fR \fB::ns\fR\fI:\fR







<












<

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

|
|









<







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
The \fBstring compare\fR command of the previous example requires that the \fInamed arguments\fR (options, flags) are provided first. The two mandatory (unnamed) arguments have to be provided as last argument.
.sp
This is the usual Tcl style (exceptions exist) which is referred in the TEPAM documentation as \fInamed arguments first, unnamed arguments later style\fR.
.TP
\fIUnnamed arguments first, named arguments later\fR
In contrast to most Tcl commands, Tk uses generally (exceptions exist also here) a different calling style where the \fIunnamed arguments\fR have to be provided first, before the \fInamed arguments\fR have to be provided:
.CS

\fBpack\fR \fI.ent1 .ent2 -fill x -expand yes -side left\fR
.CE
.IP
This style is referred in the TEPAM documentation as \fIunnamed arguments first, named arguments later style\fR.
.PP
.SH "PROCEDURE DECLARATION"
TEPAM allows declaring new Tcl procedures with the command \fBtepam::procedure\fR that has similar to the standard Tcl command \fBproc\fR also 3 arguments:
.TP
\fBtepam::procedure\fR \fIname\fR \fIattributes\fR \fIbody\fR
.PP
The TEPAM procedure declaration syntax is demonstrated by the following example:
.CS

\fBtepam::procedure\fR {display message} {
-short_description
"Displays a simple message box"
-description
"This procedure allows displaying a configurable\\
message box. The default message type that is\\
created is a warning, but also errors and info can\\
be generated.
The procedure accepts multiple text lines."
-example
{display message -mtype Warning "Save first your job"}
-args {
{-mtype -choices {Info Warning Error} \\
-default Warning -description "Message type"}
{text   -type string -multiple \\
-description "Multiple text lines to display"}
}
} {
puts "Message type: $mtype"
puts "Message: $text"
}
.CE
The 3 arguments of \fBprocedure\fR are:
.TP
\fIname\fR
The procedure name can be used in very flexible ways. Procedure names can have namespace qualifiers. By providing a two element name list as procedure name, a subcommand of a procedure will be declared. It is even possible to declare sub-sub-commands of a procedure by providing name lists with three elements.
.sp
Here are some valid procedure declarations using different procedure names (the attribute and body arguments are empty for simplicity):
.CS

\fI# Simple procedure name:\fR
tepam::procedure \fBdisplay_message\fR {} {}
\fI\fR
\fI# Procedure declared in the main namespace:\fR
tepam::procedure \fB::display_message\fR {} {}
\fI\fR
\fI# Procedure in the namespace\fR \fB::ns\fR\fI:\fR
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
The procedure arguments are defined in form of a special procedure attribute. Most of the information provided in the argument definition is not just used for documentation purposes. This information is in fact used by the TEPAM argument manager to handle and validate the various forms of arguments that are provided during the procedure calls. The section \fBArgument Declaration\fR discusses in detail all the argument definition attributes.
.TP
\fIbody\fR
This is the normal procedure body. The declared arguments will be available to the procedure body in form of variables.
.sp
The procedure body will only be executed if the provided set of arguments could be validated by the TEPAM argument manager.
.CS

tepam::procedure {display_message} {
   -args {
      {-\fBmtype\fR -default Warning -choices {Warning Error}}
      {\fBtext\fR -type string}
   }
} {
   puts "Message type: \fB$mtype\fR"
   puts "Message: \fB$text\fR"
}
.CE
.PP
The commands \fBprocedure\fR as well as \fBargument_dialogbox\fR are exported from the namespace \fBtepam\fR. To use these commands without the \fBtepam::\fR namespace prefix, it is sufficient to import them into the main namespace:
.CS

\fBnamespace import tepam::*\fR

\fBprocedure\fR {display_message} {
   -args {
      ...
.CE
.SS "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:
.TP
-category \fIstring\fR
A category can be assigned to a procedure for documentation purposes. Any string is accepted as category.
.TP







<

|
|
|
|

|
|





<

<

|
|







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
The procedure arguments are defined in form of a special procedure attribute. Most of the information provided in the argument definition is not just used for documentation purposes. This information is in fact used by the TEPAM argument manager to handle and validate the various forms of arguments that are provided during the procedure calls. The section \fBArgument Declaration\fR discusses in detail all the argument definition attributes.
.TP
\fIbody\fR
This is the normal procedure body. The declared arguments will be available to the procedure body in form of variables.
.sp
The procedure body will only be executed if the provided set of arguments could be validated by the TEPAM argument manager.
.CS

tepam::procedure {display_message} {
-args {
{-\fBmtype\fR -default Warning -choices {Warning Error}}
{\fBtext\fR -type string}
}
} {
puts "Message type: \fB$mtype\fR"
puts "Message: \fB$text\fR"
}
.CE
.PP
The commands \fBprocedure\fR as well as \fBargument_dialogbox\fR are exported from the namespace \fBtepam\fR. To use these commands without the \fBtepam::\fR namespace prefix, it is sufficient to import them into the main namespace:
.CS

\fBnamespace import tepam::*\fR

\fBprocedure\fR {display_message} {
-args {
\...
.CE
.SS "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:
.TP
-category \fIstring\fR
A category can be assigned to a procedure for documentation purposes. Any string is accepted as category.
.TP
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
This argument configures the logging of the procedure calls into the list variable \fBtepam::ProcedureCallLogList\fR. The default configuration defined by the variable \fBtepam::command_log\fR will be used if this argument is not defined in a procedure declaration.
.sp
Setting this argument to \fB0\fR will disable any procedure call loggings, setting it to \fB1\fR will log any procedure calls and setting it to \fBinteractive\fR will log just the procedures that are called interactively (procedures called with the \fB-interactive\fR flag).
.PP
.SS "ARGUMENT DECLARATION"
The following example shows the structure that is used for the argument definitions in the context of a procedure declaration:
.CS

tepam::procedure {display_message} {
   -args \fB{
      {-mtype -default Warning -choices {Info Warning Error} -description "Message type"}
      {-font -type font -default {Arial 10 italic} -description "Message text font"}
      {-level -type integer -optional -range {1 10} -description "Message level"}
      {-fg -type color -optional -description "Message color"}
      {-log_file -type file -optional -description "Optional message log file"}
      {text -type string -multiple -description "Multiple text lines to display"}
   }\fR
} {
}
.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)
The provided argument name specifies whether the argument is an \fIunnamed argument\fR or a \fInamed argument\fR. 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.
.RS
.TP
\fI"<Name>"\fR
This is the simplest form of an argument name: An argument whose name is not starting with '-' is an \fIunnamed argument\fR. The parameter provided during a procedure call will be assigned to a variable with the name \fI<Name>\fR.
.CS

tepam::procedure {print_string} {
   -args {
      {\fBtext\fR -type string -description "This is an unnamed argument"}
   }
} {
   puts \fB$text\fR
}

print_string \fB"Hello"\fR
\fI -> Hello\fR
.CE
.TP
\fI"-<Name>"\fR
An argument whose name starts with '-' is a \fInamed argument\fR (also called \fIoption\fR). The parameter provided during a procedure call will be assigned to a variable with the name \fI<Name>\fR (not \fI-<Name>\fR).
.CS

tepam::procedure {print_string} {
   -args {
      {\fB-text\fR -type string -description "This is a named argument"}
   }
} {
   puts \fB$text\fR
}

print_string \fB-text "Hello"\fR
\fI -> Hello\fR
.CE
.TP
\fI"--"\fR
This flag allows clearly specifying the end of the named arguments and the beginning of the unnamed arguments, in case the \fInamed arguments first, unnamed arguments later style (Tcl)\fR has been selected.
.sp
If the \fIunnamed arguments first, named arguments later style (Tk)\fR style is selected, this flag is ignored if the unnamed arguments have already been parsed. Otherwise it will be assigned to the corresponding unnamed argument.
.TP
\fI"-"\fR or \fI""\fR
A blank argument name (either '-' or \fI''\fR) starts a comment for the following arguments.
.CS

tepam::procedure {print_time} {
   -interactive_display_format short
   -args {
      {hours -type integer -description "Hour"}
      {minutes -type integer -description "Minute"}

      \fB{- The following arguments are optional:}\fR
      {seconds -type integer -default 0 -description "Seconds"}
      {milliseconds -type integer -default 0 -description "Milliseconds"}
   }
} {
   puts "${hour}h${minutes}:[expr $seconds+0.001*$milliseconds]"
}
.CE
.IP
Argument comments are basically used in the graphical argument definition forms that are created if a procedure is called interactively.
.TP
\fI"#*"\fR
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.
.sp
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.
.CS

tepam::procedure {complex_multiply} {
   -description "This function perform a complex multiplication"
   -args {
      \fB{#### First complex number ####}\fR
      {-r0 -type double -description "First number's real part"}
      {-i0 -type double -description "First number's imaginary part"}

      \fB{#### Second complex number ####}\fR
      {-r1 -type double -description "Second number's real part"}
      {-i1 -type double -description "Second number's imaginary part"}
   }
} {
   return [expr $r0*$r1 - $i0*$i1]
}
.CE
.RE
.TP
Argument attributes (\fI<arg_attr_name_<mn>> <arg_attr_value_<mn>>\fR)
The following argument attributes are supported:
.RS







<

|
|
|
|
|
|
|
|





<

|
|
|
|
|
|
|











<

|
|
|

|

<







<

|
|
|

|

<












<

|
|
|
|
<
|
|
|
|

|










<

|
|
|
|
|
<
|
|
|
|

|







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
This argument configures the logging of the procedure calls into the list variable \fBtepam::ProcedureCallLogList\fR. The default configuration defined by the variable \fBtepam::command_log\fR will be used if this argument is not defined in a procedure declaration.
.sp
Setting this argument to \fB0\fR will disable any procedure call loggings, setting it to \fB1\fR will log any procedure calls and setting it to \fBinteractive\fR will log just the procedures that are called interactively (procedures called with the \fB-interactive\fR flag).
.PP
.SS "ARGUMENT DECLARATION"
The following example shows the structure that is used for the argument definitions in the context of a procedure declaration:
.CS

tepam::procedure {display_message} {
-args \fB{
{-mtype -default Warning -choices {Info Warning Error} -description "Message type"}
{-font -type font -default {Arial 10 italic} -description "Message text font"}
{-level -type integer -optional -range {1 10} -description "Message level"}
{-fg -type color -optional -description "Message color"}
{-log_file -type file -optional -description "Optional message log file"}
{text -type string -multiple -description "Multiple text lines to display"}
}\fR
} {
}
.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)
The provided argument name specifies whether the argument is an \fIunnamed argument\fR or a \fInamed argument\fR. 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.
.RS
.TP
\fI"<Name>"\fR
This is the simplest form of an argument name: An argument whose name is not starting with '-' is an \fIunnamed argument\fR. The parameter provided during a procedure call will be assigned to a variable with the name \fI<Name>\fR.
.CS

tepam::procedure {print_string} {
-args {
{\fBtext\fR -type string -description "This is an unnamed argument"}
}
} {
puts \fB$text\fR
}

print_string \fB"Hello"\fR
\fI -> Hello\fR
.CE
.TP
\fI"-<Name>"\fR
An argument whose name starts with '-' is a \fInamed argument\fR (also called \fIoption\fR). The parameter provided during a procedure call will be assigned to a variable with the name \fI<Name>\fR (not \fI-<Name>\fR).
.CS

tepam::procedure {print_string} {
-args {
{\fB-text\fR -type string -description "This is a named argument"}
}
} {
puts \fB$text\fR
}

print_string \fB-text "Hello"\fR
\fI -> Hello\fR
.CE
.TP
\fI"--"\fR
This flag allows clearly specifying the end of the named arguments and the beginning of the unnamed arguments, in case the \fInamed arguments first, unnamed arguments later style (Tcl)\fR has been selected.
.sp
If the \fIunnamed arguments first, named arguments later style (Tk)\fR style is selected, this flag is ignored if the unnamed arguments have already been parsed. Otherwise it will be assigned to the corresponding unnamed argument.
.TP
\fI"-"\fR or \fI""\fR
A blank argument name (either '-' or \fI''\fR) starts a comment for the following arguments.
.CS

tepam::procedure {print_time} {
-interactive_display_format short
-args {
{hours -type integer -description "Hour"}
{minutes -type integer -description "Minute"}

\fB{- The following arguments are optional:}\fR
{seconds -type integer -default 0 -description "Seconds"}
{milliseconds -type integer -default 0 -description "Milliseconds"}
}
} {
puts "${hour}h${minutes}:[expr $seconds+0.001*$milliseconds]"
}
.CE
.IP
Argument comments are basically used in the graphical argument definition forms that are created if a procedure is called interactively.
.TP
\fI"#*"\fR
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.
.sp
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.
.CS

tepam::procedure {complex_multiply} {
-description "This function perform a complex multiplication"
-args {
\fB{#### First complex number ####}\fR
{-r0 -type double -description "First number's real part"}
{-i0 -type double -description "First number's imaginary part"}

\fB{#### Second complex number ####}\fR
{-r1 -type double -description "Second number's real part"}
{-i1 -type double -description "Second number's imaginary part"}
}
} {
return [expr $r0*$r1 - $i0*$i1]
}
.CE
.RE
.TP
Argument attributes (\fI<arg_attr_name_<mn>> <arg_attr_value_<mn>>\fR)
The following argument attributes are supported:
.RS
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
-range \fI{double double}\fR
Another argument constraint can be defined with the \fI-range\fR attribute. The valid range is defined with a list containing the minimum valid value and a maximum valid value. The \fI-range\fR attribute has to be used only for numerical arguments, like integers and doubles.
.TP
-validatecommand \fIscript\fR
Eventual more complex argument value validations can be performed via specific validation commands that are assigned to the \fI-validatecommand\fR attribute. The provided validation command can be a complete script in which the pattern \fI%P\fR is replaced by the argument value that has to be validated.
An example of a validation command declaration is:
.CS

tepam::procedure {display_message} {
   -args {
      {text -type string -description "Message text" \\
            \fB-validatecommand "IllegalWordDetector %P"\fR}
} {
}
.CE
.TP
-widget \fIstring\fR
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 \fI-widget\fR attribute allows specifying explicitly a certain widget type for an argument.
.sp
.TP
-auxargs \fIlist\fR
In case a procedure is called interactively, additional argument attributes can be provided to the interactive argument definition form via the \fI-auxargs\fR attribute that is itself a list of attribute name/attribute value pairs:
.CS

-auxargs {-<arg_attr_name_1a> <arg_attr_value_1a> \\
          -<arg_attr_name_1b> <arg_attr_value_1b>
          ...
}
.CE
.IP
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 \fI-auxargs\fR attribute to the argument definition form:
.CS

tepam::procedure LoadPicture {
   -args {
      {FileName -type existingfile -description "Picture file" \\
                 \fB-auxargs {-filetypes {{"GIF" {*.gif}} {"JPG" {*.jpg}} }}\fR}
   }
} {
}
.CE
.TP
-auxargs_commands \fIscript\fR
If the auxiliary argument attributes are not static but have to be dynamically adaptable, the \fI-auxargs_commands\fR 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 \fI-auxargs_commands\fR attribute. The provided commands are executed in the context of the calling procedure.
.CS

-auxargs_commands {-<arg_attr_name_1a> <arg_attr_command_1a> \\
                   -<arg_attr_name_1b> <arg_attr_command_1b>
                   ...
}
.CE
.RE
.PP
.SH VARIABLES
Several variables defined inside the \fB::tepam\fR namespace are impacting the mode of operation of the procedures that have been declared with TEPAM' \fBprocedure\fR command.
.TP
\fBnamed_arguments_first\fR
This variable defines the general calling style of the procedures. It is by default set to \fB1\fR which selects the \fInamed arguments first, unnamed arguments later\fR style (Tcl style).
.sp
By setting this variable to \fB0\fR, the \fInamed arguments first, unnamed arguments later\fR style is globally selected (Tk style):
.CS

set tepam::named_arguments_first 0
.CE
.sp
While this variable defines the general calling style, the procedure attribute \fI-named_arguments_first\fR can adapt this style individually for each declared procedure.
.TP
\fBauto_argument_name_completion\fR
This variable controls the general automatic argument name matching mode. By default it is set to \fB1\fR, meaning that the called procedures are trying to match eventually abbreviated argument names with the declared argument names.
.sp
By setting this variable to \fB0\fR the automatic argument name matching mode is disabled:
.CS

set tepam::auto_argument_name_completion 0
.CE
.sp
While this variable defines the general matching mode, the procedure attribute \fI-auto_argument_name_completion\fR can adapt this mode individually for each declared procedure.
.TP
\fBinteractive_display_format\fR
A procedure declared via the TEPAM \fBprocedure\fR command can always be called with the \fB-interactive\fR switch. By doing so, a graphical form will be generated that allows entering interactively all procedure arguments.
.sp
There are two display modes for these interactive forms. The \fIextended\fR mode which is the default mode is more adapted for small procedure argument sets. The \fBshort\fR form is more adequate for huge procedure argument sets:
.CS

set tepam::interactive_display_format "short"
.CE
.sp
The choice to use short or extended forms can be globally configured via the variable \fBinteractive_display_format\fR.
This global setting can be changed individually for a procedure with the procedure attribute \fI-interactive_display_format\fR.
.TP
\fBhelp_line_length\fR
The maximum line length used by the procedure help text generator can be specified with this variable. The default length which is set to 80 (characters) can easily be adapted to the need of an application:
.CS

set tepam::help_line_length 120
.CE
.IP
Since this variable is applied directly during the help text generation, its value can continuously be adapted to the current need.
.TP
\fBcommand_log\fR
Procedure calls can be logged inside the list variable \fBtepam::ProcedureCallLogList\fR. The variable \fBtepam::command_log\fR controls the default logging settings for any procedures. The following configurations are supported:







<

|
|
|











<

|
|





<

|
|
|
|







<

|
|












<










<










<









<







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
-range \fI{double double}\fR
Another argument constraint can be defined with the \fI-range\fR attribute. The valid range is defined with a list containing the minimum valid value and a maximum valid value. The \fI-range\fR attribute has to be used only for numerical arguments, like integers and doubles.
.TP
-validatecommand \fIscript\fR
Eventual more complex argument value validations can be performed via specific validation commands that are assigned to the \fI-validatecommand\fR attribute. The provided validation command can be a complete script in which the pattern \fI%P\fR is replaced by the argument value that has to be validated.
An example of a validation command declaration is:
.CS

tepam::procedure {display_message} {
-args {
{text -type string -description "Message text" \\
\fB-validatecommand "IllegalWordDetector %P"\fR}
} {
}
.CE
.TP
-widget \fIstring\fR
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 \fI-widget\fR attribute allows specifying explicitly a certain widget type for an argument.
.sp
.TP
-auxargs \fIlist\fR
In case a procedure is called interactively, additional argument attributes can be provided to the interactive argument definition form via the \fI-auxargs\fR attribute that is itself a list of attribute name/attribute value pairs:
.CS

-auxargs {-<arg_attr_name_1a> <arg_attr_value_1a> \\
-<arg_attr_name_1b> <arg_attr_value_1b>
\...
}
.CE
.IP
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 \fI-auxargs\fR attribute to the argument definition form:
.CS

tepam::procedure LoadPicture {
-args {
{FileName -type existingfile -description "Picture file" \\
\fB-auxargs {-filetypes {{"GIF" {*.gif}} {"JPG" {*.jpg}} }}\fR}
}
} {
}
.CE
.TP
-auxargs_commands \fIscript\fR
If the auxiliary argument attributes are not static but have to be dynamically adaptable, the \fI-auxargs_commands\fR 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 \fI-auxargs_commands\fR attribute. The provided commands are executed in the context of the calling procedure.
.CS

-auxargs_commands {-<arg_attr_name_1a> <arg_attr_command_1a> \\
-<arg_attr_name_1b> <arg_attr_command_1b>
\...
}
.CE
.RE
.PP
.SH VARIABLES
Several variables defined inside the \fB::tepam\fR namespace are impacting the mode of operation of the procedures that have been declared with TEPAM' \fBprocedure\fR command.
.TP
\fBnamed_arguments_first\fR
This variable defines the general calling style of the procedures. It is by default set to \fB1\fR which selects the \fInamed arguments first, unnamed arguments later\fR style (Tcl style).
.sp
By setting this variable to \fB0\fR, the \fInamed arguments first, unnamed arguments later\fR style is globally selected (Tk style):
.CS

set tepam::named_arguments_first 0
.CE
.sp
While this variable defines the general calling style, the procedure attribute \fI-named_arguments_first\fR can adapt this style individually for each declared procedure.
.TP
\fBauto_argument_name_completion\fR
This variable controls the general automatic argument name matching mode. By default it is set to \fB1\fR, meaning that the called procedures are trying to match eventually abbreviated argument names with the declared argument names.
.sp
By setting this variable to \fB0\fR the automatic argument name matching mode is disabled:
.CS

set tepam::auto_argument_name_completion 0
.CE
.sp
While this variable defines the general matching mode, the procedure attribute \fI-auto_argument_name_completion\fR can adapt this mode individually for each declared procedure.
.TP
\fBinteractive_display_format\fR
A procedure declared via the TEPAM \fBprocedure\fR command can always be called with the \fB-interactive\fR switch. By doing so, a graphical form will be generated that allows entering interactively all procedure arguments.
.sp
There are two display modes for these interactive forms. The \fIextended\fR mode which is the default mode is more adapted for small procedure argument sets. The \fBshort\fR form is more adequate for huge procedure argument sets:
.CS

set tepam::interactive_display_format "short"
.CE
.sp
The choice to use short or extended forms can be globally configured via the variable \fBinteractive_display_format\fR.
This global setting can be changed individually for a procedure with the procedure attribute \fI-interactive_display_format\fR.
.TP
\fBhelp_line_length\fR
The maximum line length used by the procedure help text generator can be specified with this variable. The default length which is set to 80 (characters) can easily be adapted to the need of an application:
.CS

set tepam::help_line_length 120
.CE
.IP
Since this variable is applied directly during the help text generation, its value can continuously be adapted to the current need.
.TP
\fBcommand_log\fR
Procedure calls can be logged inside the list variable \fBtepam::ProcedureCallLogList\fR. The variable \fBtepam::command_log\fR controls the default logging settings for any procedures. The following configurations are supported:
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
This default logging configuration can be changed individually for each procedure with the \fI-command_log\fR attribute.
.PP
.SH "ARGUMENT TYPES"
A comprehensive set of procedure argument types that is already predefined by TEPAM can easily be completed with additional types that are required for a specific application.
.SS "PREDEFINED ARGUMENT TYPES"
To remember, a type can be assigned to each specified procedure argument:
.CS

tepam::procedure {warning} {
   -args {
      {-font \fB-type font\fR -default {Arial 10 italic}}
      {-severity_level \fB-type integer\fR -optional -range {1 10}}
      {-fg \fB-type color\fR -optional -description "Message color"}
      {text \fB-type string\fR -multiple -description "Multiple text lines to display"}
   }
} {
   ...
}
.CE
There are some \fIspecial purpose types\fR that are building the first category of predefined argument types:
.IP \(bu
\fBnone\fR
.sp
A \fIflag\fR, also called \fIswitch\fR, is defined as a named argument that has the type \fBnone\fR. Flags are always optional and the default value of the assigned variable is set to \fB0\fR. In contrast to the (normal) named arguments, no argument value has to be provided to a flag.
.CS

tepam::procedure flag_test {
   -args {
      \fB{-flag -type none -description "This is a flag"}\fR
   }
} {
   puts \fB$flag\fR
}

flag_test
\fI-> 0\fR

flag_test -flag
\fI-> 1\fR
.CE
.sp
Since no argument value has to be provided to a flag, also no data check is performed for this argument type.
.IP \(bu
\fBstring\fR







<

|
|
|
|
|
|

|








<

|
|
|

|

<


<







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
This default logging configuration can be changed individually for each procedure with the \fI-command_log\fR attribute.
.PP
.SH "ARGUMENT TYPES"
A comprehensive set of procedure argument types that is already predefined by TEPAM can easily be completed with additional types that are required for a specific application.
.SS "PREDEFINED ARGUMENT TYPES"
To remember, a type can be assigned to each specified procedure argument:
.CS

tepam::procedure {warning} {
-args {
{-font \fB-type font\fR -default {Arial 10 italic}}
{-severity_level \fB-type integer\fR -optional -range {1 10}}
{-fg \fB-type color\fR -optional -description "Message color"}
{text \fB-type string\fR -multiple -description "Multiple text lines to display"}
}
} {
\...
}
.CE
There are some \fIspecial purpose types\fR that are building the first category of predefined argument types:
.IP \(bu
\fBnone\fR
.sp
A \fIflag\fR, also called \fIswitch\fR, is defined as a named argument that has the type \fBnone\fR. Flags are always optional and the default value of the assigned variable is set to \fB0\fR. In contrast to the (normal) named arguments, no argument value has to be provided to a flag.
.CS

tepam::procedure flag_test {
-args {
\fB{-flag -type none -description "This is a flag"}\fR
}
} {
puts \fB$flag\fR
}

flag_test
\fI-> 0\fR

flag_test -flag
\fI-> 1\fR
.CE
.sp
Since no argument value has to be provided to a flag, also no data check is performed for this argument type.
.IP \(bu
\fBstring\fR
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
\fB{}\fR
.sp
A \fBblank\fR argument type signifies an undefined argument type. This is the default argument type that will be used if no type has been explicitly specified. An argument that has a \fBblank\fR type behaves identically than an argument that has a \fBstring\fR type, e.g. no argument data checks are performed. The only difference is that the data type \fBstring\fR is mentioned in the generated help documentation, while this is not the case for \fBblank\fR type.
.PP
.PP
Several \fInumerical types\fR are defined by TEPAM. The type validation procedures are using the \fBstring is <type> -strict\fR commands to check the validity of the provided arguments, which assures that no empty strings are accepted as argument value. The type validation expression for the numerical types and the argument types to which this expression is applied are:
.CS

string is \fB<type_to_check>\fR -strict \fI<argument_value>\fR
.CE
.IP \(bu
\fIboolean\fR
.sp
.IP \(bu
\fIinteger\fR
.sp
.IP \(bu
\fIdouble\fR
.sp
.PP
Empty strings are accepted as argument value for all the alpha numeric argument types. The argument types that are falling into this category and validation expression used for them are:
.CS

string is \fI<type_to_check>\fR \fI<argument_value>\fR
.CE
.IP \(bu
\fIalnum\fR
.sp
.IP \(bu
\fIalpha\fR







<














<







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
\fB{}\fR
.sp
A \fBblank\fR argument type signifies an undefined argument type. This is the default argument type that will be used if no type has been explicitly specified. An argument that has a \fBblank\fR type behaves identically than an argument that has a \fBstring\fR type, e.g. no argument data checks are performed. The only difference is that the data type \fBstring\fR is mentioned in the generated help documentation, while this is not the case for \fBblank\fR type.
.PP
.PP
Several \fInumerical types\fR are defined by TEPAM. The type validation procedures are using the \fBstring is <type> -strict\fR commands to check the validity of the provided arguments, which assures that no empty strings are accepted as argument value. The type validation expression for the numerical types and the argument types to which this expression is applied are:
.CS

string is \fB<type_to_check>\fR -strict \fI<argument_value>\fR
.CE
.IP \(bu
\fIboolean\fR
.sp
.IP \(bu
\fIinteger\fR
.sp
.IP \(bu
\fIdouble\fR
.sp
.PP
Empty strings are accepted as argument value for all the alpha numeric argument types. The argument types that are falling into this category and validation expression used for them are:
.CS

string is \fI<type_to_check>\fR \fI<argument_value>\fR
.CE
.IP \(bu
\fIalnum\fR
.sp
.IP \(bu
\fIalpha\fR
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
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
.PP
In addition to the data types checked with the \fBstring is <type>\fR commands, TEPAM specifies some other useful data types:
.IP \(bu
\fIchar\fR
.sp
Each string that has a length of 1 character meets the \fIcharacter\fR type. The type check is made with the following expression:
.CS

expr [string length \fI<argument_value>\fR]==1
.CE
.IP \(bu
\fIcolor\fR
.sp
Any character strings that are accepted by Tk as a color are considered as valid color argument. Please note that the Tk package has to be loaded to use the type \fIcolor\fR. TEPAM is using the following command to validate the color type:
.CS

expr ![catch {winfo rgb . \fI<argument_value>\fR}]
.CE
.IP \(bu
\fIfont\fR
.sp
Any character strings that are accepted by Tk as a font are considered as valid font argument. Please note that the Tk package has to be loaded to use the \fIfont\fR type. TEPAM is using the following command to validate the color type:
.CS

expr ![catch {font measure <argument_value> ""}]
.CE
.IP \(bu
\fIfile\fR
.sp
Any strings that are not containing one of the following characters are considered as valid file names: * ? " < >. It is not necessary that the file and its containing directory exist. Zero-length strings are not considered as valid file names.
.sp
The following expression is used to validate the file names:
.CS

expr [string length <argument_value>]>0 && ![regexp {[\\"*?<>:]} <argument_value>]
.CE
.IP \(bu
\fIexistingfile\fR
.sp
The argument is valid if it matches with an existing file. The following check is performed to validate the arguments of this type:
.CS

file exists <argument_value>
.CE
.IP \(bu
\fIdirectory\fR
.sp
The directory argument is validated exactly in the same way as the file arguments.
.IP \(bu
\fIexistingdirectory\fR
.sp
The argument is valid if it matches with an existing directory. The following check is performed to validate the arguments of this type:
.CS

file isdirectory <argument_value>
.CE
.PP
.SS "DEFINING APPLICATION SPECIFIC ARGUMENT TYPES"
To add support for a new application specific argument type it is just necessary to add into the namespace \fBtepam\fR a validation function \fBValidation(<type>)\fR. This function requires one argument. It has to returns \fB1\fR if the provided argument matches with the relevant data type. The function has to return otherwise \fB0\fR.
.PP
The validation command section of the "\fItepam.tcl\fR" package provides sufficient examples of validation functions, since it implements the ones for the standard TEPAM types.
.PP
The following additional code snippet shows the validation function for a custom argument type that requires values that have a character string length of exactly 2:
.CS

proc tepam::Validate(two_char) {v} {expr [string length $v]==2}
.CE
.SH "PROCEDURE CALLS"
.SS HELP
Each procedure can be called with the \fI-help\fR flag. The procedure will then print a generated help text to \fIstdout\fR and will then return without performing any additional actions.
.PP
Taking the first procedure declared in \fBPROCEDURE CALLS\fR, the help request and the printed help text would be:
.CS

\fBdisplay message -help\fR
\fI->
NAME
      display message - Displays a simple message box
SYNOPSIS
      display message
            [-mtype <mtype>]
               Message type, default: "Warning", choices: {Info, Warning, Error}
            <text>
               Multiple text lines to display, type: string
DESCRIPTION
      This procedure allows displaying a configurable message box. The default
      message type that is created is a warning, but also errors and info can
      be generated.
      The procedure accepts multiple text lines.
EXAMPLE
      display message -mtype Warning "Save first your job"\fR
.CE
The argument manager is checking if the last provided argument is \fI-help\fR and generates the requested help message if this is the case. So, also the following example will print the help message:
.CS

\fBdisplay message -mtype Info "It is 7:00" -help\fR
.CE
On the other hand, the following call will result in an error:
.CS

\fBdisplay message -help -mtype Info "It is 7:00"\fR
\fI->
display message: Argument '-help' not known\fR
.CE
.SS "INTERACTIVE PROCEDURE CALL"
Calling a procedure with the \fI-interactive\fR flag will open a graphical form that allows specifying interactively all procedure arguments. The Tk library has to be loaded to use the interactive call. The following example assures that the Tk library is loaded and shows the command line to call interactively the procedure declared in \fBPROCEDURE CALLS\fR:
.CS

package require Tk
\fBdisplay message -interactive\fR
.CE
Also the \fI-interactive\fR flag has to be placed at the last argument position as this is also required for the \fI-help\fR flag. Arguments defined before the \fI-interactive\fR flag will be ignored. The following example is therefore also a valid interactive procedure call:
.CS

\fBdisplay message\fR -mtype Info "It is 7:00" \fB-interactive\fR
.CE
.SS "UNNAMED ARGUMENTS"
Unnamed arguments are typically provided to the called procedure as simple parameters. This procedure calling form requires that the provided arguments are strictly following the order of the specified arguments. Several parameters can be assigned to the last argument if this one has the \fI-multiple\fR attribute. So, the following declared procedure ...
.CS

tepam::procedure {display_message} {
   -args {
      {mtype -choices {Info Warning Error}}
      {text -type string -multiple}
   }
} {
   puts "$mtype: [join $text]"
}
.CE
... can for example be called in the following ways:
.CS

\fBdisplay_message Info "It is PM 7:00."\fR
\fI-> Info: It is PM 7:00.\fR

\fBdisplay_message Info "It is PM 7:00." "You should go home."\fR
\fI-> Info: It is PM 7:00. You should go home.\fR
.CE
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:
.CS

\fBdisplay_message -mtype Info -text "It is PM 7:00."\fR
\fI-> Info: It is PM 7:00.\fR

\fBdisplay_message -text "It is PM 7:00." -mtype Info\fR
\fI-> Info: It is PM 7:00.\fR

\fBdisplay_message -mtype Info -text "It is PM 7:00." -text "You should go home."\fR
\fI-> Info: It is PM 7:00. You should go home.\fR

\fBdisplay_message -text "It is PM 7:00." -text "You should go home." -mtype Info\fR
\fI-> Info: It is PM 7:00. You should go home.\fR
.CE
.SS "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.
.PP
The following declared procedure ...
.CS

tepam::procedure {display_message} {
   -args {
      {-mtype -choices {Info Warning Error}}
      {-text -type string -multiple}
   }
} {
   puts "$mtype: [join $text]"
}
.CE
... can be called in the following ways:
.CS

\fBdisplay_message -mtype Info -text "It is PM 7:00."\fR
\fI-> Info: It is PM 7:00.\fR

\fBdisplay_message -text "It is PM 7:00." -mtype Info\fR
\fI-> Info: It is PM 7:00.\fR

\fBdisplay_message -mtype Info -text "It is PM 7:00." -text "You should go home."\fR
\fI-> Info: It is PM 7:00. You should go home.\fR

\fBdisplay_message -text "It is PM 7:00." -text "You should go home." -mtype Info\fR
\fI-> Info: It is PM 7:00. You should go home.\fR
.CE
Also named arguments that have not the \fI-multiple\fR attribute can be provided multiple times. Only the last provided argument will be retained in such a case:
.CS

\fBdisplay_message -mtype Info -text "It is PM 7:00." -mtype Warning\fR
\fI-> Warning: It is PM 7:00.\fR
.CE
.SS "UNNAMED ARGUMENTS FIRST, NAMED ARGUMENTS LATER (TK STYLE)"
A procedure that has been defined while the variable \fBtepam::named_arguments_first\fR was set to 1, or with the procedure attribute \fI-named_arguments_first\fR set to 1 has to be called in the Tcl style. The following procedure declaration will be used in this section to illustrate the meaning of this calling style:
.CS

\fBset tepam::named_arguments_first 1\fR
tepam::procedure my_proc {
   -args {
      {-n1 -default ""}
      {-n2 -default ""}
      {u1 -default ""}
      {u2 -default ""}
   }
} {
   puts "n1:'$n1', n2:'$n2', u1:'$u1', u2:'$u2'"
}
.CE
The unnamed arguments are placed at the end of procedure call, after the named arguments:
.CS

my_proc \fB-n1 N1 -n2 N2 U1 U2\fR
\fI-> n1:'N1', n2:'N2', u1:'U1', u2:'U2'\fR
.CE
The argument parser considers the first argument that doesn't start with the '-' character as well as all following arguments as unnamed argument:
.CS

my_proc \fBU1 U2\fR
\fI-> n1:'', n2:'', u1:'U1', u2:'U2'\fR
.CE
Named arguments can be defined multiple times. If the named argument has the \fI-multiply\fR attribute, all argument values will be collected in a list. Otherwise, only the last provided attribute value will be retained:
.CS

my_proc \fB-n1 N1 -n2 N2 -n1 M1 U1 U2\fR
\fI-> n1:'M1', n2:'N2', u1:'U1', u2:'U2'\fR
.CE
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:
.CS

my_proc \fB-n1 N1 -n2 N2 "->" "<-"\fR
\fI-> my_proc: Argument '->' not known\fR

set U1 "->"
my_proc -n1 N1 -n2 N2 $U1 U2}]
my_proc: Argument '->' not known
.CE
The '--' flag allows separating unambiguously the unnamed arguments from the named arguments. All data after the '--' flag will be considered as unnamed argument:
.CS

my_proc \fB-n1 N1 -n2 N2 -- "->" "<-"\fR
\fI-> n1:'N1', n2:'N2', u1:'->', u2:'<-'\fR

set U1 "->"
my_proc \fB-n1 N1 -n2 N2 -- $U1 U2\fR
\fI-> n1:'N1', n2:'N2', u1:'->', u2:'<-'\fR
.CE
.SS "NAMED ARGUMENTS FIRST, UNNAMED ARGUMENTS LATER (TCL STYLE)"
The Tk calling style will be chosen if a procedure is defined while the variable \fBtepam::named_arguments_first\fR is set to 0, or if the procedure attribute \fI-named_arguments_first\fR has been set to 0. The following procedure will be used in this section to illustrate this calling style:
.CS

\fBset tepam::named_arguments_first 0\fR
tepam::procedure my_proc {
   -args {
      {-n1 -default ""}
      {-n2 -default ""}
      {u1}
      {u2 -default "" -multiple}
   }
} {
   puts "n1:'$n1', n2:'$n2', u1:'$u1', u2:'$u2'"
}
.CE
The unnamed arguments have to be provided first in this case. The named arguments are provided afterwards:
.CS

my_proc \fBU1 U2 -n1 N1 -n2 N2\fR
\fI-> n1:'N1', n1:'N1', u1:'U1', u2:'U2'\fR
.CE
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.
.PP
An argument value will only be assigned to an unnamed argument that is optional (that has either the \fI-optional\fR 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.
.PP
Argument values are assigned to an argument that has the \fI-multiple\fR attribute as long as the parameter value doesn't starts with the '-' character.
.PP
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.
.PP
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 \fIu1\fR is a mandatory argument:
.CS

my_proc
\fI-> my_proc: Required argument is missing: u1\fR
.CE
The procedure call is valid if one parameter is provided for \fIu1\fR:
.CS

my_proc \fBU1\fR
\fI-> n1:'', n2:'', u1:'U1', u2:''\fR
.CE
If more parameters are provided that are not starting with the '-' character, they will be attributed to the unnamed arguments. \fIU2\fR will receive 3 of these parameters, since it accepts multiple values:
.CS

my_proc \fBU1 U2 U3 U4\fR
\fI-> n1:'', n2:'', u1:'U1', u2:'U2 U3 U4'\fR
.CE
As soon as one parameter starts with '-' and all unnamed arguments have been assigned, the argument manager tries to interpret the parameter as name of a named argument. The procedure call will fail if a value beginning with '-' is assigned to an unnamed argument:
.CS

my_proc \fBU1 U2 U3 U4 -U5\fR
\fI-> my_proc: Argument '-U5' not known\fR
.CE
The attribution of a parameter to a named argument will fail if there are undefined unnamed (non optional) arguments. The name specification will in this case simply be considered as a parameter value that is attributed to the \fInext\fR unnamed argument. This was certainly not the intention in the following example:
.CS

my_proc \fB-n1 N1\fR
\fI-> n1:'', n2:'', u1:'-n1', u2:'N1'\fR
.CE
The situation is completely different if values have already been assigned to all mandatory unnamed arguments. A parameter beginning with the '-' character will in this case be considered as a name identifier for a named argument:
.CS

my_proc \fBU1 -n1 N1\fR
\fI-> n1:'N1', n2:'', u1:'U1', u2:''\fR
.CE
No unnamed arguments are allowed behind the named arguments:
.CS

my_proc \fBU1 -n1 N1 U2\fR
\fI-> my_proc: Argument 'U2' is not an option\fR
.CE
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:
.CS

my_proc \fB-- -n1 N1\fR
\fI-> n1:'N1', n2:'', u1:'--', u2:''\fR
.CE
But the '--' flag is simply ignored if the argument parser has started to handle the named arguments:
.CS

my_proc \fBU1 -- -n1 N1\fR
\fI-> n1:'N1', n2:'', u1:'U1', u2:''\fR

my_proc \fBU1 -n1 N1 -- -n2 N2\fR
\fI-> n1:'N1', n2:'N2', u1:'U1', u2:''\fR
.CE
.SS "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 \fBargs\fR variable that contains always the unprocessed argument list:
.CS

tepam::procedure {display_message} {
   -args {
      {-mtype -choices {Warning Error} -default Warning}
      {text -type string -multiple}

   }
} {
   puts "args: \fB$args\fR"
}
display_message -mtype Warning "It is 7:00"
\fI-> args: -mtype Warning {It is 7:00}\fR
.CE
.SH "SEE ALSO"
tepam(n), tepam::argument_dialogbox(n)
.SH KEYWORDS
argument integrity, argument validation, arguments, procedure, subcommand
.SH CATEGORY
Procedures, arguments, parameters, options
.SH COPYRIGHT
.nf
Copyright (c) 2009/2010, Andreas Drollinger

.fi







<







<







<









<







<











<










<








<



|

|
|
|
|
|

|
|
|
|

|



<




<







<





<





<

|
|
|
|

|


|

<


<





<


<


<


<








<

|
|
|
|

|


|

<


<


<


<





<






<


|
|
|
|
|
|

|




<





<





<





<


<






<


<







<


|
|
|
|
|
|

|




<













<





<





<





<





<





<





<





<





<


<






<

|
|
|
|
<

|













<

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
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
.PP
In addition to the data types checked with the \fBstring is <type>\fR commands, TEPAM specifies some other useful data types:
.IP \(bu
\fIchar\fR
.sp
Each string that has a length of 1 character meets the \fIcharacter\fR type. The type check is made with the following expression:
.CS

expr [string length \fI<argument_value>\fR]==1
.CE
.IP \(bu
\fIcolor\fR
.sp
Any character strings that are accepted by Tk as a color are considered as valid color argument. Please note that the Tk package has to be loaded to use the type \fIcolor\fR. TEPAM is using the following command to validate the color type:
.CS

expr ![catch {winfo rgb . \fI<argument_value>\fR}]
.CE
.IP \(bu
\fIfont\fR
.sp
Any character strings that are accepted by Tk as a font are considered as valid font argument. Please note that the Tk package has to be loaded to use the \fIfont\fR type. TEPAM is using the following command to validate the color type:
.CS

expr ![catch {font measure <argument_value> ""}]
.CE
.IP \(bu
\fIfile\fR
.sp
Any strings that are not containing one of the following characters are considered as valid file names: * ? " < >. It is not necessary that the file and its containing directory exist. Zero-length strings are not considered as valid file names.
.sp
The following expression is used to validate the file names:
.CS

expr [string length <argument_value>]>0 && ![regexp {[\\"*?<>:]} <argument_value>]
.CE
.IP \(bu
\fIexistingfile\fR
.sp
The argument is valid if it matches with an existing file. The following check is performed to validate the arguments of this type:
.CS

file exists <argument_value>
.CE
.IP \(bu
\fIdirectory\fR
.sp
The directory argument is validated exactly in the same way as the file arguments.
.IP \(bu
\fIexistingdirectory\fR
.sp
The argument is valid if it matches with an existing directory. The following check is performed to validate the arguments of this type:
.CS

file isdirectory <argument_value>
.CE
.PP
.SS "DEFINING APPLICATION SPECIFIC ARGUMENT TYPES"
To add support for a new application specific argument type it is just necessary to add into the namespace \fBtepam\fR a validation function \fBValidation(<type>)\fR. This function requires one argument. It has to returns \fB1\fR if the provided argument matches with the relevant data type. The function has to return otherwise \fB0\fR.
.PP
The validation command section of the "\fItepam.tcl\fR" package provides sufficient examples of validation functions, since it implements the ones for the standard TEPAM types.
.PP
The following additional code snippet shows the validation function for a custom argument type that requires values that have a character string length of exactly 2:
.CS

proc tepam::Validate(two_char) {v} {expr [string length $v]==2}
.CE
.SH "PROCEDURE CALLS"
.SS HELP
Each procedure can be called with the \fI-help\fR flag. The procedure will then print a generated help text to \fIstdout\fR and will then return without performing any additional actions.
.PP
Taking the first procedure declared in \fBPROCEDURE CALLS\fR, the help request and the printed help text would be:
.CS

\fBdisplay message -help\fR
\fI->
NAME
display message - Displays a simple message box
SYNOPSIS
display message
[-mtype <mtype>]
Message type, default: "Warning", choices: {Info, Warning, Error}
<text>
Multiple text lines to display, type: string
DESCRIPTION
This procedure allows displaying a configurable message box. The default
message type that is created is a warning, but also errors and info can
be generated.
The procedure accepts multiple text lines.
EXAMPLE
display message -mtype Warning "Save first your job"\fR
.CE
The argument manager is checking if the last provided argument is \fI-help\fR and generates the requested help message if this is the case. So, also the following example will print the help message:
.CS

\fBdisplay message -mtype Info "It is 7:00" -help\fR
.CE
On the other hand, the following call will result in an error:
.CS

\fBdisplay message -help -mtype Info "It is 7:00"\fR
\fI->
display message: Argument '-help' not known\fR
.CE
.SS "INTERACTIVE PROCEDURE CALL"
Calling a procedure with the \fI-interactive\fR flag will open a graphical form that allows specifying interactively all procedure arguments. The Tk library has to be loaded to use the interactive call. The following example assures that the Tk library is loaded and shows the command line to call interactively the procedure declared in \fBPROCEDURE CALLS\fR:
.CS

package require Tk
\fBdisplay message -interactive\fR
.CE
Also the \fI-interactive\fR flag has to be placed at the last argument position as this is also required for the \fI-help\fR flag. Arguments defined before the \fI-interactive\fR flag will be ignored. The following example is therefore also a valid interactive procedure call:
.CS

\fBdisplay message\fR -mtype Info "It is 7:00" \fB-interactive\fR
.CE
.SS "UNNAMED ARGUMENTS"
Unnamed arguments are typically provided to the called procedure as simple parameters. This procedure calling form requires that the provided arguments are strictly following the order of the specified arguments. Several parameters can be assigned to the last argument if this one has the \fI-multiple\fR attribute. So, the following declared procedure ...
.CS

tepam::procedure {display_message} {
-args {
{mtype -choices {Info Warning Error}}
{text -type string -multiple}
}
} {
puts "$mtype: [join $text]"
}
.CE
\... can for example be called in the following ways:
.CS

\fBdisplay_message Info "It is PM 7:00."\fR
\fI-> Info: It is PM 7:00.\fR

\fBdisplay_message Info "It is PM 7:00." "You should go home."\fR
\fI-> Info: It is PM 7:00. You should go home.\fR
.CE
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:
.CS

\fBdisplay_message -mtype Info -text "It is PM 7:00."\fR
\fI-> Info: It is PM 7:00.\fR

\fBdisplay_message -text "It is PM 7:00." -mtype Info\fR
\fI-> Info: It is PM 7:00.\fR

\fBdisplay_message -mtype Info -text "It is PM 7:00." -text "You should go home."\fR
\fI-> Info: It is PM 7:00. You should go home.\fR

\fBdisplay_message -text "It is PM 7:00." -text "You should go home." -mtype Info\fR
\fI-> Info: It is PM 7:00. You should go home.\fR
.CE
.SS "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.
.PP
The following declared procedure ...
.CS

tepam::procedure {display_message} {
-args {
{-mtype -choices {Info Warning Error}}
{-text -type string -multiple}
}
} {
puts "$mtype: [join $text]"
}
.CE
\... can be called in the following ways:
.CS

\fBdisplay_message -mtype Info -text "It is PM 7:00."\fR
\fI-> Info: It is PM 7:00.\fR

\fBdisplay_message -text "It is PM 7:00." -mtype Info\fR
\fI-> Info: It is PM 7:00.\fR

\fBdisplay_message -mtype Info -text "It is PM 7:00." -text "You should go home."\fR
\fI-> Info: It is PM 7:00. You should go home.\fR

\fBdisplay_message -text "It is PM 7:00." -text "You should go home." -mtype Info\fR
\fI-> Info: It is PM 7:00. You should go home.\fR
.CE
Also named arguments that have not the \fI-multiple\fR attribute can be provided multiple times. Only the last provided argument will be retained in such a case:
.CS

\fBdisplay_message -mtype Info -text "It is PM 7:00." -mtype Warning\fR
\fI-> Warning: It is PM 7:00.\fR
.CE
.SS "UNNAMED ARGUMENTS FIRST, NAMED ARGUMENTS LATER (TK STYLE)"
A procedure that has been defined while the variable \fBtepam::named_arguments_first\fR was set to 1, or with the procedure attribute \fI-named_arguments_first\fR set to 1 has to be called in the Tcl style. The following procedure declaration will be used in this section to illustrate the meaning of this calling style:
.CS

\fBset tepam::named_arguments_first 1\fR
tepam::procedure my_proc {
-args {
{-n1 -default ""}
{-n2 -default ""}
{u1 -default ""}
{u2 -default ""}
}
} {
puts "n1:'$n1', n2:'$n2', u1:'$u1', u2:'$u2'"
}
.CE
The unnamed arguments are placed at the end of procedure call, after the named arguments:
.CS

my_proc \fB-n1 N1 -n2 N2 U1 U2\fR
\fI-> n1:'N1', n2:'N2', u1:'U1', u2:'U2'\fR
.CE
The argument parser considers the first argument that doesn't start with the '-' character as well as all following arguments as unnamed argument:
.CS

my_proc \fBU1 U2\fR
\fI-> n1:'', n2:'', u1:'U1', u2:'U2'\fR
.CE
Named arguments can be defined multiple times. If the named argument has the \fI-multiply\fR attribute, all argument values will be collected in a list. Otherwise, only the last provided attribute value will be retained:
.CS

my_proc \fB-n1 N1 -n2 N2 -n1 M1 U1 U2\fR
\fI-> n1:'M1', n2:'N2', u1:'U1', u2:'U2'\fR
.CE
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:
.CS

my_proc \fB-n1 N1 -n2 N2 "->" "<-"\fR
\fI-> my_proc: Argument '->' not known\fR

set U1 "->"
my_proc -n1 N1 -n2 N2 $U1 U2}]
my_proc: Argument '->' not known
.CE
The '--' flag allows separating unambiguously the unnamed arguments from the named arguments. All data after the '--' flag will be considered as unnamed argument:
.CS

my_proc \fB-n1 N1 -n2 N2 -- "->" "<-"\fR
\fI-> n1:'N1', n2:'N2', u1:'->', u2:'<-'\fR

set U1 "->"
my_proc \fB-n1 N1 -n2 N2 -- $U1 U2\fR
\fI-> n1:'N1', n2:'N2', u1:'->', u2:'<-'\fR
.CE
.SS "NAMED ARGUMENTS FIRST, UNNAMED ARGUMENTS LATER (TCL STYLE)"
The Tk calling style will be chosen if a procedure is defined while the variable \fBtepam::named_arguments_first\fR is set to 0, or if the procedure attribute \fI-named_arguments_first\fR has been set to 0. The following procedure will be used in this section to illustrate this calling style:
.CS

\fBset tepam::named_arguments_first 0\fR
tepam::procedure my_proc {
-args {
{-n1 -default ""}
{-n2 -default ""}
{u1}
{u2 -default "" -multiple}
}
} {
puts "n1:'$n1', n2:'$n2', u1:'$u1', u2:'$u2'"
}
.CE
The unnamed arguments have to be provided first in this case. The named arguments are provided afterwards:
.CS

my_proc \fBU1 U2 -n1 N1 -n2 N2\fR
\fI-> n1:'N1', n1:'N1', u1:'U1', u2:'U2'\fR
.CE
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.
.PP
An argument value will only be assigned to an unnamed argument that is optional (that has either the \fI-optional\fR 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.
.PP
Argument values are assigned to an argument that has the \fI-multiple\fR attribute as long as the parameter value doesn't starts with the '-' character.
.PP
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.
.PP
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 \fIu1\fR is a mandatory argument:
.CS

my_proc
\fI-> my_proc: Required argument is missing: u1\fR
.CE
The procedure call is valid if one parameter is provided for \fIu1\fR:
.CS

my_proc \fBU1\fR
\fI-> n1:'', n2:'', u1:'U1', u2:''\fR
.CE
If more parameters are provided that are not starting with the '-' character, they will be attributed to the unnamed arguments. \fIU2\fR will receive 3 of these parameters, since it accepts multiple values:
.CS

my_proc \fBU1 U2 U3 U4\fR
\fI-> n1:'', n2:'', u1:'U1', u2:'U2 U3 U4'\fR
.CE
As soon as one parameter starts with '-' and all unnamed arguments have been assigned, the argument manager tries to interpret the parameter as name of a named argument. The procedure call will fail if a value beginning with '-' is assigned to an unnamed argument:
.CS

my_proc \fBU1 U2 U3 U4 -U5\fR
\fI-> my_proc: Argument '-U5' not known\fR
.CE
The attribution of a parameter to a named argument will fail if there are undefined unnamed (non optional) arguments. The name specification will in this case simply be considered as a parameter value that is attributed to the \fInext\fR unnamed argument. This was certainly not the intention in the following example:
.CS

my_proc \fB-n1 N1\fR
\fI-> n1:'', n2:'', u1:'-n1', u2:'N1'\fR
.CE
The situation is completely different if values have already been assigned to all mandatory unnamed arguments. A parameter beginning with the '-' character will in this case be considered as a name identifier for a named argument:
.CS

my_proc \fBU1 -n1 N1\fR
\fI-> n1:'N1', n2:'', u1:'U1', u2:''\fR
.CE
No unnamed arguments are allowed behind the named arguments:
.CS

my_proc \fBU1 -n1 N1 U2\fR
\fI-> my_proc: Argument 'U2' is not an option\fR
.CE
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:
.CS

my_proc \fB-- -n1 N1\fR
\fI-> n1:'N1', n2:'', u1:'--', u2:''\fR
.CE
But the '--' flag is simply ignored if the argument parser has started to handle the named arguments:
.CS

my_proc \fBU1 -- -n1 N1\fR
\fI-> n1:'N1', n2:'', u1:'U1', u2:''\fR

my_proc \fBU1 -n1 N1 -- -n2 N2\fR
\fI-> n1:'N1', n2:'N2', u1:'U1', u2:''\fR
.CE
.SS "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 \fBargs\fR variable that contains always the unprocessed argument list:
.CS

tepam::procedure {display_message} {
-args {
{-mtype -choices {Warning Error} -default Warning}
{text -type string -multiple}
}

} {
puts "args: \fB$args\fR"
}
display_message -mtype Warning "It is 7:00"
\fI-> args: -mtype Warning {It is 7:00}\fR
.CE
.SH "SEE ALSO"
tepam(n), tepam::argument_dialogbox(n)
.SH KEYWORDS
argument integrity, argument validation, arguments, procedure, subcommand
.SH CATEGORY
Procedures, arguments, parameters, options
.SH COPYRIGHT
.nf
Copyright (c) 2009/2010, Andreas Drollinger

.fi

Changes to embedded/man/files/modules/term/ansi_cattr.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
457
458
459
460
461
462
463
464
465
.SH KEYWORDS
ansi, attribute control, color control, control, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi







<

456
457
458
459
460
461
462

463
.SH KEYWORDS
ansi, attribute control, color control, control, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/term/ansi_cctrl.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
748
749
750
751
752
753
754
755
756
.SH KEYWORDS
ansi, attribute control, color control, control, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006-2008 Andreas Kupries <[email protected]>

.fi







<

747
748
749
750
751
752
753

754
.SH KEYWORDS
ansi, attribute control, color control, control, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006-2008 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/term/ansi_cmacros.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
304
305
306
307
308
309
310
311
312
.SH KEYWORDS
ansi, control, frame, menu, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi







<

303
304
305
306
307
308
309

310
.SH KEYWORDS
ansi, control, frame, menu, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/term/ansi_code.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
288
289
290
291
292
293
294
295
296
.SH KEYWORDS
control, declare, define, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi







<

287
288
289
290
291
292
293

294
.SH KEYWORDS
control, declare, define, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/term/ansi_ctrlu.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
312
313
314
315
316
317
318
319
320
.SH KEYWORDS
ansi, columns, control, cooked, input mode, lines, raw, rows, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006-2011 Andreas Kupries <[email protected]>

.fi







<

311
312
313
314
315
316
317

318
.SH KEYWORDS
ansi, columns, control, cooked, input mode, lines, raw, rows, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006-2011 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/term/ansi_send.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
740
741
742
743
744
745
746
747
748
.SH KEYWORDS
character output, control, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi







<

739
740
741
742
743
744
745

746
.SH KEYWORDS
character output, control, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/term/imenu.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
379
380
381
382
383
384
385
386
387
.SH KEYWORDS
control, menu, terminal, text display
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi







<

378
379
380
381
382
383
384

385
.SH KEYWORDS
control, menu, terminal, text display
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/term/ipager.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
380
381
382
383
384
385
386
387
388
.SH KEYWORDS
control, pager, terminal, text display
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi







<

379
380
381
382
383
384
385

386
.SH KEYWORDS
control, pager, terminal, text display
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/term/receive.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
308
309
310
311
312
313
314
315
316
.SH KEYWORDS
character input, control, get character, listener, receiver, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi







<

307
308
309
310
311
312
313

314
.SH KEYWORDS
character input, control, get character, listener, receiver, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
263
264
265
266
267
268
269
270
271
.SH KEYWORDS
control, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi







<

262
263
264
265
266
267
268

269
.SH KEYWORDS
control, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/term/term_bind.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
352
353
354
355
356
357
358
359
360
.SH KEYWORDS
character input, control, dispatcher, listener, receiver, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi







<

351
352
353
354
355
356
357

358
.SH KEYWORDS
character input, control, dispatcher, listener, receiver, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/term/term_send.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
278
279
280
281
282
283
284
285
286
.SH KEYWORDS
character output, control, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi







<

277
278
279
280
281
282
283

284
.SH KEYWORDS
character output, control, terminal
.SH CATEGORY
Terminal control
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/textutil/adjust.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

Changes to embedded/man/files/modules/textutil/expander.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
.PP
The Tcl \fBsubst\fR command is often used to support a kind of
template processing. Given a string with embedded variables or
function calls, \fBsubst\fR will interpolate the variable and function
values, returning the new string:
.PP
.CS


    % set greeting "Howdy"
    Howdy
    % proc place {} {return "World"}
    % subst {$greeting, [place]!}
    Howdy, World!
    %

.CE
.PP
By defining a suitable set of Tcl commands, \fBsubst\fR can be used to
implement a markup language similar to HTML.
.PP
The \fBsubst\fR command is efficient, but it has three drawbacks for
this kind of template processing:







<
<
|
|
|
|
|
|
<







289
290
291
292
293
294
295


296
297
298
299
300
301

302
303
304
305
306
307
308
.PP
The Tcl \fBsubst\fR command is often used to support a kind of
template processing. Given a string with embedded variables or
function calls, \fBsubst\fR will interpolate the variable and function
values, returning the new string:
.PP
.CS


% set greeting "Howdy"
Howdy
% proc place {} {return "World"}
% subst {$greeting, [place]!}
Howdy, World!
%

.CE
.PP
By defining a suitable set of Tcl commands, \fBsubst\fR can be used to
implement a markup language similar to HTML.
.PP
The \fBsubst\fR command is efficient, but it has three drawbacks for
this kind of template processing:
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
\fB::textutil::expander\fR \fIexpanderName\fR
The command creates a new expander object with an associated Tcl
command whose name is \fIexpanderName\fR. This command may be used to
invoke various operations on the graph. If the \fIexpanderName\fR is
not fully qualified it is interpreted as relative to the current
namespace.  The command has the following general form:
.CS


\fIexpanderName\fR option ?\fIarg arg ...\fR?

.CE
.IP
\fIOption\fR and the \fIarg\fRs determine the exact behavior of the
command.
.PP
.PP
The following commands are possible for expander objects:







<
<

<







335
336
337
338
339
340
341


342

343
344
345
346
347
348
349
\fB::textutil::expander\fR \fIexpanderName\fR
The command creates a new expander object with an associated Tcl
command whose name is \fIexpanderName\fR. This command may be used to
invoke various operations on the graph. If the \fIexpanderName\fR is
not fully qualified it is interpreted as relative to the current
namespace.  The command has the following general form:
.CS


\fIexpanderName\fR option ?\fIarg arg ...\fR?

.CE
.IP
\fIOption\fR and the \fIarg\fRs determine the exact behavior of the
command.
.PP
.PP
The following commands are possible for expander objects:
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
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
current input string.
.PP
.SH TUTORIAL
.SS BASICS
To begin, create an expander object:
.PP
.CS


    % package require expander
    1.2
    % ::expander::expander myexp
    ::myexp
    %

.CE
.PP
The created \fB::myexp\fR object can be used to expand text strings
containing embedded Tcl commands.  By default, embedded commands are
delimited by square brackets.  Note that expander doesn't attempt to
interpolate variables, since variables can be referenced by embedded
commands:
.PP
.CS


    % set greeting "Howdy"
    Howdy
    % proc place {} {return "World"}
    % ::myexp expand {[set greeting], [place]!}
    Howdy, World!
    %

.CE
.SS "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,
.PP
.CS


    % set greetings {Howdy Hi "What's up"}
    Howdy Hi "What's up"
    % ::myexp expand {There are many ways to say "Hello, World!":
    [set result {}
    foreach greeting $greetings {
	append result "$greeting, World!\\\\n"
    }
    set result]
    And that's just a small sample!}
    There are many ways to say "Hello, World!":
    Howdy, World!
    Hi, World!
    What's up, World!

    And that's just a small sample!
    %

.CE
.SS "WRITING MACRO COMMANDS"
More typically, \fImacro commands\fR 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:
.PP
.CS


    % proc bold {} {return "<b>"}
    % proc /bold {} {return "</b>"}
    % ::myexp expand {Some of this text is in [bold]boldface[/bold]}
    Some of this text is in <b>boldface</b>
    %

.CE
.PP
The above definitions of \fBbold\fR and \fB/bold\fR 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.
.SS "CHANGING THE EXPANSION BRACKETS"
By default, embedded macros are enclosed in square brackets,
\fB[\fR and \fB]\fR.  If square brackets need to be
included in the output, the input can contain the \fBlb\fR and
\fBrb\fR commands.  Alternatively, or if square brackets are
objectionable for some other reason, the macro expansion brackets can
be changed to any pair of non-empty strings.
.PP
The \fBsetbrackets\fR command changes the brackets permanently.
For example, you can write pseudo-html by change them to \fB<\fR
and \fB>\fR:
.PP
.CS


    % ::myexp setbrackets < >
    % ::myexp expand {<bold>This is boldface</bold>}
    <b>This is boldface</b>

.CE
.PP
Alternatively, you can change the expansion brackets temporarily by
passing the desired brackets to the \fBexpand\fR command:
.PP
.CS


    % ::myexp setbrackets "\\\\[" "\\\\]"
    % ::myexp expand {<bold>This is boldface</bold>} {< >}
    <b>This is boldface</b>
    %

.CE
.SS "CUSTOMIZED MACRO EXPANSION"
By default, macros are evaluated using the Tcl \fBuplevel #0\fR
command, so that the embedded code executes in the global context.
The application can provide a different evaluation command using
\fBevalcmd\fR; 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.
.PP
For example, the following code "evaluates" each macro by returning
the macro text itself.
.PP
.CS


    proc identity {macro} {return $macro}
    ::myexp evalcmd identity

.CE
.SS "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:
.PP
.CS


    Dr. Pangloss, however, thinks that this is the best of all
    possible worlds.[footnote "See Candide, by Voltaire"]

.CE
.PP
The \fBfootnote\fR macro would, presumably, assign a number to this
footnote and save the text to be formatted later on.  However, this
solution is ugly if the footnote text is long or should contain
additional markup.  Consider the following instead:
.PP
.CS


    Dr. Pangloss, however, thinks that this is the best of all
    possible worlds.[footnote]See [bookTitle "Candide"], by
    [authorsName "Voltaire"], for more information.[/footnote]

.CE
.PP
Here the footnote text is contained between \fBfootnote\fR and
\fB/footnote\fR macros, continues onto a second line, and contains
several macros of its own.  This is both clearer and more flexible;
however, with the features presented so far there's no easy way to do
it.  That's the purpose of the context stack.
.PP
All macro expansion takes place in a particular context.  Here, the
\fBfootnote\fR macro pushes a new context onto the context stack.
Then, all expanded text gets placed in that new context.
\fB/footnote\fR retrieves it by popping the context.  Here's a
skeleton implementation of these two macros:
.PP
.CS


    proc footnote {} {
        ::myexp cpush footnote
    }

    proc /footnote {} {
        set footnoteText [::myexp cpop footnote]

        # Save the footnote text, and return an appropriate footnote
        # number and link.
    }

.CE
.PP
The \fBcpush\fR command pushes a new context onto the stack; the
argument is the context's name.  It can be any string, but would
typically be the name of the macro itself.  Then, \fBcpop\fR
verifies that the current context has the expected name, pops it off
of the stack, and returns the accumulated text.
.PP
Expand provides several other tools related to the context stack.
Suppose the first macro in a context pair takes arguments or computes
values which the second macro in the pair needs.  After calling
\fBcpush\fR, the first macro can define one or more context
variables; the second macro can retrieve their values any time before
calling \fBcpop\fR.  For example, suppose the document must specify
the footnote number explicitly:
.PP
.CS


    proc footnote {footnoteNumber} {
        ::myexp cpush footnote
        ::myexp csave num $footnoteNumber
        # Return an appropriate link
    }

    proc /footnote {} {
        set footnoteNumber [::myexp cget num]
        set footnoteText [::myexp cpop footnote]

        # Save the footnote text and its footnoteNumber for future
        # output.
    }

.CE
.PP
At times, it might be desirable to define macros that are valid only
within a particular context pair; such macros should verify that they
are only called within the correct context using either \fBcis\fR
or \fBcname\fR.
.SH HISTORY







<
<
|
|
|
|
|
<









<
<
|
|
|
|
|
|
<







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









<
<
|
|
|
|
|
<


















<
<
|
|
|
<






<
<
|
|
|
|
<














<
<
|
|
<








<
<
|
|
<








<
<
|
|
|
<















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

















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







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
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
current input string.
.PP
.SH TUTORIAL
.SS BASICS
To begin, create an expander object:
.PP
.CS


% package require expander
1.2
% ::expander::expander myexp
::myexp
%

.CE
.PP
The created \fB::myexp\fR object can be used to expand text strings
containing embedded Tcl commands.  By default, embedded commands are
delimited by square brackets.  Note that expander doesn't attempt to
interpolate variables, since variables can be referenced by embedded
commands:
.PP
.CS


% set greeting "Howdy"
Howdy
% proc place {} {return "World"}
% ::myexp expand {[set greeting], [place]!}
Howdy, World!
%

.CE
.SS "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,
.PP
.CS


% set greetings {Howdy Hi "What's up"}
Howdy Hi "What's up"
% ::myexp expand {There are many ways to say "Hello, World!":
[set result {}
foreach greeting $greetings {
append result "$greeting, World!\\\\n"
}
set result]
And that's just a small sample!}
There are many ways to say "Hello, World!":
Howdy, World!
Hi, World!
What's up, World!

And that's just a small sample!
%

.CE
.SS "WRITING MACRO COMMANDS"
More typically, \fImacro commands\fR 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:
.PP
.CS


% proc bold {} {return "<b>"}
% proc /bold {} {return "</b>"}
% ::myexp expand {Some of this text is in [bold]boldface[/bold]}
Some of this text is in <b>boldface</b>
%

.CE
.PP
The above definitions of \fBbold\fR and \fB/bold\fR 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.
.SS "CHANGING THE EXPANSION BRACKETS"
By default, embedded macros are enclosed in square brackets,
\fB[\fR and \fB]\fR.  If square brackets need to be
included in the output, the input can contain the \fBlb\fR and
\fBrb\fR commands.  Alternatively, or if square brackets are
objectionable for some other reason, the macro expansion brackets can
be changed to any pair of non-empty strings.
.PP
The \fBsetbrackets\fR command changes the brackets permanently.
For example, you can write pseudo-html by change them to \fB<\fR
and \fB>\fR:
.PP
.CS


% ::myexp setbrackets < >
% ::myexp expand {<bold>This is boldface</bold>}
<b>This is boldface</b>

.CE
.PP
Alternatively, you can change the expansion brackets temporarily by
passing the desired brackets to the \fBexpand\fR command:
.PP
.CS


% ::myexp setbrackets "\\\\[" "\\\\]"
% ::myexp expand {<bold>This is boldface</bold>} {< >}
<b>This is boldface</b>
%

.CE
.SS "CUSTOMIZED MACRO EXPANSION"
By default, macros are evaluated using the Tcl \fBuplevel #0\fR
command, so that the embedded code executes in the global context.
The application can provide a different evaluation command using
\fBevalcmd\fR; 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.
.PP
For example, the following code "evaluates" each macro by returning
the macro text itself.
.PP
.CS


proc identity {macro} {return $macro}
::myexp evalcmd identity

.CE
.SS "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:
.PP
.CS


Dr. Pangloss, however, thinks that this is the best of all
possible worlds.[footnote "See Candide, by Voltaire"]

.CE
.PP
The \fBfootnote\fR macro would, presumably, assign a number to this
footnote and save the text to be formatted later on.  However, this
solution is ugly if the footnote text is long or should contain
additional markup.  Consider the following instead:
.PP
.CS


Dr. Pangloss, however, thinks that this is the best of all
possible worlds.[footnote]See [bookTitle "Candide"], by
[authorsName "Voltaire"], for more information.[/footnote]

.CE
.PP
Here the footnote text is contained between \fBfootnote\fR and
\fB/footnote\fR macros, continues onto a second line, and contains
several macros of its own.  This is both clearer and more flexible;
however, with the features presented so far there's no easy way to do
it.  That's the purpose of the context stack.
.PP
All macro expansion takes place in a particular context.  Here, the
\fBfootnote\fR macro pushes a new context onto the context stack.
Then, all expanded text gets placed in that new context.
\fB/footnote\fR retrieves it by popping the context.  Here's a
skeleton implementation of these two macros:
.PP
.CS


proc footnote {} {
::myexp cpush footnote
}

proc /footnote {} {
set footnoteText [::myexp cpop footnote]

# Save the footnote text, and return an appropriate footnote
# number and link.
}

.CE
.PP
The \fBcpush\fR command pushes a new context onto the stack; the
argument is the context's name.  It can be any string, but would
typically be the name of the macro itself.  Then, \fBcpop\fR
verifies that the current context has the expected name, pops it off
of the stack, and returns the accumulated text.
.PP
Expand provides several other tools related to the context stack.
Suppose the first macro in a context pair takes arguments or computes
values which the second macro in the pair needs.  After calling
\fBcpush\fR, the first macro can define one or more context
variables; the second macro can retrieve their values any time before
calling \fBcpop\fR.  For example, suppose the document must specify
the footnote number explicitly:
.PP
.CS


proc footnote {footnoteNumber} {
::myexp cpush footnote
::myexp csave num $footnoteNumber
# Return an appropriate link
}

proc /footnote {} {
set footnoteNumber [::myexp cget num]
set footnoteText [::myexp cpop footnote]

# Save the footnote text and its footnoteNumber for future
# output.
}

.CE
.PP
At times, it might be desirable to define macros that are valid only
within a particular context pair; such macros should verify that they
are only called within the correct context using either \fBcis\fR
or \fBcname\fR.
.SH HISTORY
716
717
718
719
720
721
722
723
724
.SH KEYWORDS
string, template processing, text expansion
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) William H. Duquette, http://www.wjduquette.com/expand

.fi







<

671
672
673
674
675
676
677

678
.SH KEYWORDS
string, template processing, text expansion
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) William H. Duquette, http://www.wjduquette.com/expand

.fi

Changes to embedded/man/files/modules/textutil/repeat.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

Changes to embedded/man/files/modules/textutil/tabify.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

Changes to embedded/man/files/modules/textutil/textutil_split.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

Changes to embedded/man/files/modules/textutil/textutil_string.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

Changes to embedded/man/files/modules/textutil/trim.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
This command has to return the value for the key \fIindex\fR in the
\fIdata source\fR the object talks to.
.PP
And here a small table comparing the \fIdata source\fR methods to
the regular Tcl commands for accessing an array.
.PP
.CS


        Regular Tcl             Data source
        -----------             -----------
        array names a           ds names
        array size  a           ds size
        array get   a           ds get
        array set   a dict      ds set   dict
        array unset a pattern   ds unset ?pattern?
        -----------             -----------
        set a($idx) $val        ds setv   idx val
        unset a($idx)           ds unsetv idx
        $a($idx)                ds getv   idx
        -----------             -----------

.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
.nf
Copyright (c) 2004-2008 Andreas Kupries <[email protected]>

.fi







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















<

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
This command has to return the value for the key \fIindex\fR in the
\fIdata source\fR the object talks to.
.PP
And here a small table comparing the \fIdata source\fR methods to
the regular Tcl commands for accessing an array.
.PP
.CS


Regular Tcl             Data source
-----------             -----------
array names a           ds names
array size  a           ds size
array get   a           ds get
array set   a dict      ds set   dict
array unset a pattern   ds unset ?pattern?
-----------             -----------
set a($idx) $val        ds setv   idx val
unset a($idx)           ds unsetv idx
$a($idx)                ds getv   idx
-----------             -----------

.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
.nf
Copyright (c) 2004-2008 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/tie/tie_std.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
277
278
279
280
281
282
283
284
285
.SH KEYWORDS
array, database, file, metakit, persistence, tie, untie
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2008 Andreas Kupries <[email protected]>

.fi







<

276
277
278
279
280
281
282

283
.SH KEYWORDS
array, database, file, metakit, persistence, tie, untie
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2008 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
\fBBitsPerSample\fR, \fBCompression\fR, \fBPhotometricInterpretation\fR,
\fBImageDescription\fR, \fBOrientation\fR, \fBXResolution\fR,
\fBYResolution\fR, \fBResolutionUnit\fR, \fBDateTime\fR, \fBArtist\fR,
and \fBHostComputer\fR. The values are the associated properties of
the TIFF ?image? in \fIfile\fR. Values may be empty if the associated tag is not
present in the file.
.CS


    puts [::tiff::imageInfo photo.tif]

    ImageWidth 686 ImageLength 1024 BitsPerSample {8 8 8} Compression 1
    PhotometricInterpretation 2 ImageDescription {} Orientation 1
    XResolution 170.667 YResolution 170.667 ResolutionUnit 2 DateTime {2005:12:28 19:44:45}
    Artist {} HostComputer {}

.CE
.IP
There is nothing special about these tags, this is simply a convience procedure which calls
\fBgetEntry\fR with common entries.
Throws an error if \fIfile\fR is not a TIFF image.
.TP
\fB::tiff::entries\fR \fIfile\fR ?image?
Returns a list of all entries in the given \fIfile\fR and ?image?
in hexadecimal format.
Throws an error if \fIfile\fR is not a TIFF image.
.TP
\fB::tiff::getEntry\fR \fIfile\fR \fIentry\fR ?image?
Returns the value of \fIentry\fR from image ?image? in the TIFF \fIfile\fR.
\fIentry\fR may be a list of multiple entries. If an entry does not exist, an
empty string is returned
.CS


    set data [::tiff::getEntry photo.tif {0131 0132}]
    puts "file was written at [lindex $data 0] with software [lindex $data 1]"

.CE
.IP
Throws an error if \fIfile\fR is not a TIFF image.
.TP
\fB::tiff::addEntry\fR \fIfile\fR \fIentry\fR ?image?
Adds the specified entries to the image named by ?image? (default 0), or optionally \fBall\fR.
\fIentry\fR must be a list where each element is a list of tag, type, and value. If a tag already
exists, it is overwritten.
.CS


    ::tiff::addEntry photo.tif {{010e 2 "an example photo"} {013b 2 "Aaron F"}}

.CE
.IP
The data types are defined as follows
.RS
.TP
\fB1\fR
BYTE (8 bit unsigned integer)







<
<
|
<
|
|
|
|
<
















<
<
|
|
<









<
<
|
<







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
\fBBitsPerSample\fR, \fBCompression\fR, \fBPhotometricInterpretation\fR,
\fBImageDescription\fR, \fBOrientation\fR, \fBXResolution\fR,
\fBYResolution\fR, \fBResolutionUnit\fR, \fBDateTime\fR, \fBArtist\fR,
and \fBHostComputer\fR. The values are the associated properties of
the TIFF ?image? in \fIfile\fR. Values may be empty if the associated tag is not
present in the file.
.CS


puts [::tiff::imageInfo photo.tif]

ImageWidth 686 ImageLength 1024 BitsPerSample {8 8 8} Compression 1
PhotometricInterpretation 2 ImageDescription {} Orientation 1
XResolution 170.667 YResolution 170.667 ResolutionUnit 2 DateTime {2005:12:28 19:44:45}
Artist {} HostComputer {}

.CE
.IP
There is nothing special about these tags, this is simply a convience procedure which calls
\fBgetEntry\fR with common entries.
Throws an error if \fIfile\fR is not a TIFF image.
.TP
\fB::tiff::entries\fR \fIfile\fR ?image?
Returns a list of all entries in the given \fIfile\fR and ?image?
in hexadecimal format.
Throws an error if \fIfile\fR is not a TIFF image.
.TP
\fB::tiff::getEntry\fR \fIfile\fR \fIentry\fR ?image?
Returns the value of \fIentry\fR from image ?image? in the TIFF \fIfile\fR.
\fIentry\fR may be a list of multiple entries. If an entry does not exist, an
empty string is returned
.CS


set data [::tiff::getEntry photo.tif {0131 0132}]
puts "file was written at [lindex $data 0] with software [lindex $data 1]"

.CE
.IP
Throws an error if \fIfile\fR is not a TIFF image.
.TP
\fB::tiff::addEntry\fR \fIfile\fR \fIentry\fR ?image?
Adds the specified entries to the image named by ?image? (default 0), or optionally \fBall\fR.
\fIentry\fR must be a list where each element is a list of tag, type, and value. If a tag already
exists, it is overwritten.
.CS


::tiff::addEntry photo.tif {{010e 2 "an example photo"} {013b 2 "Aaron F"}}

.CE
.IP
The data types are defined as follows
.RS
.TP
\fB1\fR
BYTE (8 bit unsigned integer)
450
451
452
453
454
455
456
457
458
.SH KEYWORDS
image, tif, tiff
.SH CATEGORY
File formats
.SH COPYRIGHT
.nf
Copyright (c) 2005-2006, Aaron Faupell <[email protected]>

.fi







<

439
440
441
442
443
444
445

446
.SH KEYWORDS
image, tif, tiff
.SH CATEGORY
File formats
.SH COPYRIGHT
.nf
Copyright (c) 2005-2006, Aaron Faupell <[email protected]>

.fi

Changes to embedded/man/files/modules/transfer/connect.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.PP
.SH "SECURE CONNECTIONS"
One way to secure connections made by objects of this package is to
require the package \fBtls\fR and then configure the option
\fB-socketcmd\fR to force the use of command \fBtls::socket\fR to
open the socket.
.CS


    # Load and initialize tls
    package require tls
    tls::init -cafile /path/to/ca/cert -keyfile ...

    # Create a connector with secure socket setup,
    transfer::connect C -socketcmd tls::socket ...
    ...

.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
.nf
Copyright (c) 2006-2009 Andreas Kupries <[email protected]>

.fi







<
<
|
|
|
<
|
|
|
<















<

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
.PP
.SH "SECURE CONNECTIONS"
One way to secure connections made by objects of this package is to
require the package \fBtls\fR and then configure the option
\fB-socketcmd\fR to force the use of command \fBtls::socket\fR to
open the socket.
.CS


# Load and initialize tls
package require tls
tls::init -cafile /path/to/ca/cert -keyfile ...

# Create a connector with secure socket setup,
transfer::connect C -socketcmd tls::socket ...
\...

.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
.nf
Copyright (c) 2006-2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/transfer/copyops.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
384
385
386
387
388
389
390
391
392
.SH KEYWORDS
channel, copy, transfer
.SH CATEGORY
Transfer module
.SH COPYRIGHT
.nf
Copyright (c) 2006-2009 Andreas Kupries <[email protected]>

.fi







<

383
384
385
386
387
388
389

390
.SH KEYWORDS
channel, copy, transfer
.SH CATEGORY
Transfer module
.SH COPYRIGHT
.nf
Copyright (c) 2006-2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/transfer/ddest.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
367
368
369
370
371
372
373
374
375
.SH KEYWORDS
channel, copy, data destination, transfer
.SH CATEGORY
Transfer module
.SH COPYRIGHT
.nf
Copyright (c) 2006-2009 Andreas Kupries <[email protected]>

.fi







<

366
367
368
369
370
371
372

373
.SH KEYWORDS
channel, copy, data destination, transfer
.SH CATEGORY
Transfer module
.SH COPYRIGHT
.nf
Copyright (c) 2006-2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/transfer/dsource.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
405
406
407
408
409
410
411
412
413
.SH KEYWORDS
channel, copy, data source, transfer
.SH CATEGORY
Transfer module
.SH COPYRIGHT
.nf
Copyright (c) 2006-2009 Andreas Kupries <[email protected]>

.fi







<

404
405
406
407
408
409
410

411
.SH KEYWORDS
channel, copy, data source, transfer
.SH CATEGORY
Transfer module
.SH COPYRIGHT
.nf
Copyright (c) 2006-2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/transfer/receiver.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.PP
.SH "SECURE CONNECTIONS"
One way to secure connections made by objects of this package is to
require the package \fBtls\fR and then configure the option
\fB-socketcmd\fR to force the use of command \fBtls::socket\fR to
open the socket.
.CS


    # Load and initialize tls
    package require tls
    tls::init -cafile /path/to/ca/cert -keyfile ...

    # Create a connector with secure socket setup,
    transfer::receiver R -socketcmd tls::socket ...
    ...

.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
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi







<
<
|
|
|
<
|
|
|
<















<

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
.PP
.SH "SECURE CONNECTIONS"
One way to secure connections made by objects of this package is to
require the package \fBtls\fR and then configure the option
\fB-socketcmd\fR to force the use of command \fBtls::socket\fR to
open the socket.
.CS


# Load and initialize tls
package require tls
tls::init -cafile /path/to/ca/cert -keyfile ...

# Create a connector with secure socket setup,
transfer::receiver R -socketcmd tls::socket ...
\...

.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
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/transfer/tqueue.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
hang in the air. I am slowly convincing myself that it is more
sensible to trigger the relevant completion callbacks with an
error message about the queue abort, and 0 bytes transfered.
.PP
All transfer requests are of the form
.PP
.CS


	{type data options...}

.CE
.PP
where \fItype\fR is in {\fBchan\fR, \fBstring\fR}, and \fIdata\fR
specifies the information to transfer.
For \fBchan\fR the data is the handle of the channel containing the
actual information to transfer, whereas for \fBstring\fR \fIdata\fR
contains directly the information to transfer.







<
<
|
<







288
289
290
291
292
293
294


295

296
297
298
299
300
301
302
hang in the air. I am slowly convincing myself that it is more
sensible to trigger the relevant completion callbacks with an
error message about the queue abort, and 0 bytes transfered.
.PP
All transfer requests are of the form
.PP
.CS


{type data options...}

.CE
.PP
where \fItype\fR is in {\fBchan\fR, \fBstring\fR}, and \fIdata\fR
specifies the information to transfer.
For \fBchan\fR the data is the handle of the channel containing the
actual information to transfer, whereas for \fBstring\fR \fIdata\fR
contains directly the information to transfer.
390
391
392
393
394
395
396
397
398
.SH KEYWORDS
channel, copy, queue, transfer
.SH CATEGORY
Transfer module
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi







<

386
387
388
389
390
391
392

393
.SH KEYWORDS
channel, copy, queue, transfer
.SH CATEGORY
Transfer module
.SH COPYRIGHT
.nf
Copyright (c) 2006 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/transfer/transmitter.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.PP
.SH "SECURE CONNECTIONS"
One way to secure connections made by objects of this package is to
require the package \fBtls\fR and then configure the option
\fB-socketcmd\fR to force the use of command \fBtls::socket\fR to
open the socket.
.CS


    # Load and initialize tls
    package require tls
    tls::init -cafile /path/to/ca/cert -keyfile ...

    # Create a connector with secure socket setup,
    transfer::transmitter T -socketcmd tls::socket ...
    ...

.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
.nf
Copyright (c) 2006-2009 Andreas Kupries <[email protected]>

.fi







<
<
|
|
|
<
|
|
|
<















<

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
.PP
.SH "SECURE CONNECTIONS"
One way to secure connections made by objects of this package is to
require the package \fBtls\fR and then configure the option
\fB-socketcmd\fR to force the use of command \fBtls::socket\fR to
open the socket.
.CS


# Load and initialize tls
package require tls
tls::init -cafile /path/to/ca/cert -keyfile ...

# Create a connector with secure socket setup,
transfer::transmitter T -socketcmd tls::socket ...
\...

.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
.nf
Copyright (c) 2006-2009 Andreas Kupries <[email protected]>

.fi

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

219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







219
220
221
222
223
224
225

226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
The arguments used (i.e. operator name and arguments) are removed from
the list of method arguments, and then the whole process is repeated
from step [1], until the list of arguments is empty or an error
occurred.
.RE
.sp
.CS


    # q is the query object.

    q query root children get data

    # The above query
    # - Resets the node set to the root node - root
    # - Adds the children of root to the set - children
    # - Replaces the node set with the       - get data
    #   values for the attribute 'data',
    #   for all nodes in the set which
    #   have such an attribute.
    # - And returns this information.

    # Below we can see the same query, but rewritten
    # to show the structure as it is seen by the query
    # interpreter.

    q query \\\\
	    root \\\\
	    children \\\\
	    get data

.CE
.sp
The operators of the TreeQL language available for this are explained
in the section about \fBThe Tree Query Language\fR. This section
also explains the term \fInode set\fR used above.
.TP
\fIqo\fR \fBresult\fR







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







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
The arguments used (i.e. operator name and arguments) are removed from
the list of method arguments, and then the whole process is repeated
from step [1], until the list of arguments is empty or an error
occurred.
.RE
.sp
.CS


# q is the query object.

q query root children get data

# The above query
# - Resets the node set to the root node - root
# - Adds the children of root to the set - children
# - Replaces the node set with the       - get data
#   values for the attribute 'data',
#   for all nodes in the set which
#   have such an attribute.
# - And returns this information.

# Below we can see the same query, but rewritten
# to show the structure as it is seen by the query
# interpreter.

q query \\\\
root \\\\
children \\\\
get data

.CE
.sp
The operators of the TreeQL language available for this are explained
in the section about \fBThe Tree Query Language\fR. This section
also explains the term \fInode set\fR used above.
.TP
\fIqo\fR \fBresult\fR
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
the right siblings of node \fBN\fR, for all nodes \fBN\fR in the node
set, should \fBN\fR have right siblings, and they children. In other
words, nodes without right siblings, and them without children are
ignored.
.sp
This is equivalent to the operator sequence
.CS

next descendants
.CE
.TP
\fBlater\fR
This is an alias for the operator \fBforward\fR.
.TP
\fBbackward\fR
Replaces the current node set with the nodes in the flattened previous
subtrees, in reverse tree order.
.sp
This is nearly equivalent to the operator sequence
.CS

prev descendants
.CE
.IP
The only difference is that this uses the nodes in reverse order.
.TP
\fBearlier\fR
Replaces the current node set with the nodes in the flattened previous
subtrees, in tree order.
.sp
This is equivalent to the operator sequence
.CS

prev subtree
.CE
.PP
.SS "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







<












<











<







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
the right siblings of node \fBN\fR, for all nodes \fBN\fR in the node
set, should \fBN\fR have right siblings, and they children. In other
words, nodes without right siblings, and them without children are
ignored.
.sp
This is equivalent to the operator sequence
.CS

next descendants
.CE
.TP
\fBlater\fR
This is an alias for the operator \fBforward\fR.
.TP
\fBbackward\fR
Replaces the current node set with the nodes in the flattened previous
subtrees, in reverse tree order.
.sp
This is nearly equivalent to the operator sequence
.CS

prev descendants
.CE
.IP
The only difference is that this uses the nodes in reverse order.
.TP
\fBearlier\fR
Replaces the current node set with the nodes in the flattened previous
subtrees, in tree order.
.sp
This is equivalent to the operator sequence
.CS

prev subtree
.CE
.PP
.SS "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
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
called \fB@type\fR, and are short-hand forms useful for cost-like
tree query, html tree editing, and so on.
.TP
\fBnodetype\fR
Returns the node type of nodes.
Attribute string accessor. This is equivalent to
.CS

get @type
.CE
.TP
\fBoftype\fR \fIt\fR
Reduces the node set to nodes whose type is equal to \fIt\fR, with
letter case ignored.
.TP
\fBnottype\fR \fIt\fR
Reduces the node set to nodes whose type is not equal to \fIt\fR, with
letter case ignored.
.TP
\fBoftypes\fR \fIattrs\fR
Reduces set to nodes whose @type is an element in the list \fIattrs\fR
of types. The value of @type is used as a glob pattern, and letter
case is relevant.
.PP
.SH EXAMPLES
... TODO ...
.SH REFERENCES
.IP [1]
\fICOST\fR [http://wiki.tcl.tk/COST] on the Tcler's Wiki.
.IP [2]
\fITreeQL\fR [http://wiki.tcl.tk/treeql] on the Tcler's Wiki. Discuss
this package there.
.PP







<

















|







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
called \fB@type\fR, and are short-hand forms useful for cost-like
tree query, html tree editing, and so on.
.TP
\fBnodetype\fR
Returns the node type of nodes.
Attribute string accessor. This is equivalent to
.CS

get @type
.CE
.TP
\fBoftype\fR \fIt\fR
Reduces the node set to nodes whose type is equal to \fIt\fR, with
letter case ignored.
.TP
\fBnottype\fR \fIt\fR
Reduces the node set to nodes whose type is not equal to \fIt\fR, with
letter case ignored.
.TP
\fBoftypes\fR \fIattrs\fR
Reduces set to nodes whose @type is an element in the list \fIattrs\fR
of types. The value of @type is used as a glob pattern, and letter
case is relevant.
.PP
.SH EXAMPLES
\... TODO ...
.SH REFERENCES
.IP [1]
\fICOST\fR [http://wiki.tcl.tk/COST] on the Tcler's Wiki.
.IP [2]
\fITreeQL\fR [http://wiki.tcl.tk/treeql] on the Tcler's Wiki. Discuss
this package there.
.PP
843
844
845
846
847
848
849
850
851
Cost, DOM, TreeQL, XPath, XSLT, structured queries, tree, tree query language
.SH CATEGORY
Data structures
.SH COPYRIGHT
.nf
Copyright (c) 2004 Colin McCormack <[email protected]>
Copyright (c) 2004 Andreas Kupries <[email protected]>

.fi







<

831
832
833
834
835
836
837

838
Cost, DOM, TreeQL, XPath, XSLT, structured queries, tree, tree query language
.SH CATEGORY
Data structures
.SH COPYRIGHT
.nf
Copyright (c) 2004 Colin McCormack <[email protected]>
Copyright (c) 2004 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/try/tcllib_try.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
the new exception's status dictionary under the \fB-during\fR key.
.RE
.PP
.SH EXAMPLES
Ensure that a file is closed no matter what:
.PP
.CS


set f [open /some/file/name a]
\fBtry\fR {
    puts \\$f "some message"
    # ...
} \fBfinally\fR {
    close \\$f
}

.CE
.PP
Handle different reasons for a file to not be openable for reading:
.PP
.CS


\fBtry\fR {
    set f [open /some/file/name]
} \fBtrap\fR {POSIX EISDIR} {} {
    puts "failed to open /some/file/name: it's a directory"
} \fBtrap\fR {POSIX ENOENT} {} {
    puts "failed to open /some/file/name: it doesn't exist"
}

.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
Utility
.SH COPYRIGHT
.nf
Copyright (c) 2008 Donal K. Fellows, BSD licensed

.fi







<
<


|
|

|

<





<
<

|

|

|

<

















<

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 new exception's status dictionary under the \fB-during\fR key.
.RE
.PP
.SH EXAMPLES
Ensure that a file is closed no matter what:
.PP
.CS


set f [open /some/file/name a]
\fBtry\fR {
puts \\$f "some message"
# ...
} \fBfinally\fR {
close \\$f
}

.CE
.PP
Handle different reasons for a file to not be openable for reading:
.PP
.CS


\fBtry\fR {
set f [open /some/file/name]
} \fBtrap\fR {POSIX EISDIR} {} {
puts "failed to open /some/file/name: it's a directory"
} \fBtrap\fR {POSIX ENOENT} {} {
puts "failed to open /some/file/name: it doesn't exist"
}

.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
Utility
.SH COPYRIGHT
.nf
Copyright (c) 2008 Donal K. Fellows, BSD licensed

.fi

Changes to embedded/man/files/modules/uev/uevent.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
428
429
430
431
432
433
434
435
436
.SH KEYWORDS
bind, event, generate event, hook, unbind
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2007-2012 Andreas Kupries <[email protected]>

.fi







<

427
428
429
430
431
432
433

434
.SH KEYWORDS
bind, event, generate event, hook, unbind
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2007-2012 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/uev/uevent_onidle.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
293
294
295
296
297
298
299
300
301
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 <[email protected]>

.fi







<

292
293
294
295
296
297
298

299
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 <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
Converts the \fIvalue\fR string into a floating point number, scaled to the
specified \fItargetUnits\fR.  The \fIvalue\fR string may contain a
number and units.  If units are specified, then they must be
compatible with the \fItargetUnits\fR.  If units are not specified
for the \fIvalue\fR, then it will be scaled to the target units.  For
example,
.CS


% ::units::convert "2.3 miles" km
3.7014912
% ::units::convert 300m/s miles/hour
671.080887616
% ::units::convert "1.0 m kg/s^2" newton
1.0
% ::units::convert 1.0 millimeter
1000.0

.CE
.TP
\fB::units::reduce\fR \fIunitString\fR
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
\fIunitString\fR is invalid.
.CS


% ::units::reduce pascal
1000.0 gram / meter second second

.CE
.TP
\fB::units::new\fR \fIname\fR \fIbaseUnits\fR
Creates a new unit conversion with the specified name.  The new unit
\fIname\fR must be only alphabetic (upper or lower case) letters.
The \fIbaseUnits\fR string can consist of any valid units conversion
string, including constant factors, numerator and denominator parts,
units with prefixes, and exponents.  The baseUnits may contain any
number of subunits, but it must reduce to primitive units.  BaseUnits
could also be the string \fI-primitive\fR to represent a new
kind of quantity which cannot be derived from other units.  But you
probably would not do that unless you have discovered some kind of new
universal property.
.CS


% ::units::new furlong "220 yards"
% ::units::new fortnight "14 days"
% ::units::convert 100m/s furlongs/fortnight
601288.475303

.CE
.PP
.SH "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.
.IP \(bu







<
<








<










<
<


<














<
<




<







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
Converts the \fIvalue\fR string into a floating point number, scaled to the
specified \fItargetUnits\fR.  The \fIvalue\fR string may contain a
number and units.  If units are specified, then they must be
compatible with the \fItargetUnits\fR.  If units are not specified
for the \fIvalue\fR, then it will be scaled to the target units.  For
example,
.CS


% ::units::convert "2.3 miles" km
3.7014912
% ::units::convert 300m/s miles/hour
671.080887616
% ::units::convert "1.0 m kg/s^2" newton
1.0
% ::units::convert 1.0 millimeter
1000.0

.CE
.TP
\fB::units::reduce\fR \fIunitString\fR
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
\fIunitString\fR is invalid.
.CS


% ::units::reduce pascal
1000.0 gram / meter second second

.CE
.TP
\fB::units::new\fR \fIname\fR \fIbaseUnits\fR
Creates a new unit conversion with the specified name.  The new unit
\fIname\fR must be only alphabetic (upper or lower case) letters.
The \fIbaseUnits\fR string can consist of any valid units conversion
string, including constant factors, numerator and denominator parts,
units with prefixes, and exponents.  The baseUnits may contain any
number of subunits, but it must reduce to primitive units.  BaseUnits
could also be the string \fI-primitive\fR to represent a new
kind of quantity which cannot be derived from other units.  But you
probably would not do that unless you have discovered some kind of new
universal property.
.CS


% ::units::new furlong "220 yards"
% ::units::new fortnight "14 days"
% ::units::convert 100m/s furlongs/fortnight
601288.475303

.CE
.PP
.SH "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.
.IP \(bu
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
include a power string denoted by a circumflex ("^"), followed by a
integer, after the unit name (or plural suffix, if there is one).
Negative exponents are not allowed.  (Remember that the hyphen is a
unit separator.)
.PP
.SS "EXAMPLE VALID UNIT STRINGS"
.CS


Unit String              Reduced Unit String
------------------------------------------------------------
meter                    1.0 meter
kilometer                1000.0 meter
km                       1000.0 meter
km/s                     1000.0 meter / second
/microsecond             1000000.0 / second
/us                      1000000.0 / second
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

.CE
.SH "SI UNITS"
.PP
The standard SI units are predefined according to \fINIST Special
Publication 330\fR.  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.
.SS "SI BASE UNITS"
.CS


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

.CE
.SS "SI DERIVED UNITS WITH SPECIAL NAMES"
.CS


Quantity                Unit Name    Abbr.   Units     Base Units
--------------------------------------------------------------------
plane angle             radian      rad     m/m       m/m
solid angle             steradian   sr      m^2/m^2   m^2/m^2
frequency               hertz       Hz                /s
force                   newton      N                 m-kg/s^2
pressure                pascal      Pa      N/m^2     kg/m-s^2







<
<













<










<
<









<



<
<







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
include a power string denoted by a circumflex ("^"), followed by a
integer, after the unit name (or plural suffix, if there is one).
Negative exponents are not allowed.  (Remember that the hyphen is a
unit separator.)
.PP
.SS "EXAMPLE VALID UNIT STRINGS"
.CS


Unit String              Reduced Unit String
------------------------------------------------------------
meter                    1.0 meter
kilometer                1000.0 meter
km                       1000.0 meter
km/s                     1000.0 meter / second
/microsecond             1000000.0 / second
/us                      1000000.0 / second
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

.CE
.SH "SI UNITS"
.PP
The standard SI units are predefined according to \fINIST Special
Publication 330\fR.  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.
.SS "SI BASE UNITS"
.CS


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

.CE
.SS "SI DERIVED UNITS WITH SPECIAL NAMES"
.CS


Quantity                Unit Name    Abbr.   Units     Base Units
--------------------------------------------------------------------
plane angle             radian      rad     m/m       m/m
solid angle             steradian   sr      m^2/m^2   m^2/m^2
frequency               hertz       Hz                /s
force                   newton      N                 m-kg/s^2
pressure                pascal      Pa      N/m^2     kg/m-s^2
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
inductance              henry       H       Wb/A      m^2-kg/s^2-A^2
luminous flux           lumen       lm                cd-sr
illuminance             lux         lx      lm/m^2    cd-sr/m^2
activity (of a
radionuclide)           becquerel   Bq                /s
absorbed dose           gray        Gy      J/kg      m^2/s^2
dose equivalent         sievert     Sv      J/kg      m^2/s^2

.CE
.PP
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.
.PP







<







418
419
420
421
422
423
424

425
426
427
428
429
430
431
inductance              henry       H       Wb/A      m^2-kg/s^2-A^2
luminous flux           lumen       lm                cd-sr
illuminance             lux         lx      lm/m^2    cd-sr/m^2
activity (of a
radionuclide)           becquerel   Bq                /s
absorbed dose           gray        Gy      J/kg      m^2/s^2
dose equivalent         sievert     Sv      J/kg      m^2/s^2

.CE
.PP
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.
.PP
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
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 \fISpecial Publication
330\fR.
.SS "SI PREFIXES"
.CS


Prefix Name     Abbr.   Factor
---------------------------------------
yotta           Y       1e24
zetta           Z       1e21
exa             E       1e18
peta            P       1e15
tera            T       1e12
giga            G       1e9
mega            M       1e6
kilo            k       1e3
hecto           h       1e2
deka            da      1e1
deca                    1e1

deci            d       1e-1
centi           c       1e-2
milli           m       1e-3
micro           u       1e-6
nano            n       1e-9
pico            p       1e-12
femto           f       1e-15
atto            a       1e-18
zepto           z       1e-21
yocto           y       1e-24

.CE
.PP
Note that we define the same prefix with both the USA ("deka") and
non-USA ("deca") spellings.  Also note that we take the liberty of
allowing "micro" to be typed as a "u" instead of the Greek character
mu.
.PP
Many non-SI units are commonly used in applications.  Appendix B.8 of
\fINIST Special Publication 811\fR lists many non-SI conversion
factors.  It is not possible to include all possible unit definitions
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 \fBnew\fR
command, but some well known and often used conversions are included
in this package.
.SS "NON-SI UNITS"
.CS


Unit Name            Abbr.    Base Units
--------------------------------------------------
angstrom                      1.0E-10 m
astronomicalUnit     AU       1.495979E11 m
atmosphere                    1.01325E5 Pa
bar                           1.0E5 Pa
calorie                       4.1868 J







<
<













<










<


















<
<







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
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 \fISpecial Publication
330\fR.
.SS "SI PREFIXES"
.CS


Prefix Name     Abbr.   Factor
---------------------------------------
yotta           Y       1e24
zetta           Z       1e21
exa             E       1e18
peta            P       1e15
tera            T       1e12
giga            G       1e9
mega            M       1e6
kilo            k       1e3
hecto           h       1e2
deka            da      1e1
deca                    1e1

deci            d       1e-1
centi           c       1e-2
milli           m       1e-3
micro           u       1e-6
nano            n       1e-9
pico            p       1e-12
femto           f       1e-15
atto            a       1e-18
zepto           z       1e-21
yocto           y       1e-24

.CE
.PP
Note that we define the same prefix with both the USA ("deka") and
non-USA ("deca") spellings.  Also note that we take the liberty of
allowing "micro" to be typed as a "u" instead of the Greek character
mu.
.PP
Many non-SI units are commonly used in applications.  Appendix B.8 of
\fINIST Special Publication 811\fR lists many non-SI conversion
factors.  It is not possible to include all possible unit definitions
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 \fBnew\fR
command, but some well known and often used conversions are included
in this package.
.SS "NON-SI UNITS"
.CS


Unit Name            Abbr.    Base Units
--------------------------------------------------
angstrom                      1.0E-10 m
astronomicalUnit     AU       1.495979E11 m
atmosphere                    1.01325E5 Pa
bar                           1.0E5 Pa
calorie                       4.1868 J
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
parsec               pc       3.085E16 m
pica                          4.233333E-3 m
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

.CE
.SS "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







<







516
517
518
519
520
521
522

523
524
525
526
527
528
529
parsec               pc       3.085E16 m
pica                          4.233333E-3 m
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

.CE
.SS "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
600
601
602
603
604
605
606
607
608
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

.fi







<

574
575
576
577
578
579
580

581
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

.fi

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

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

Changes to embedded/man/files/modules/uri/urn-scheme.n.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







217
218
219
220
221
222
223

224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
Returns the string representation of the new uuid.
.TP
\fB::uuid::uuid equal\fR \fIid1\fR \fIid2\fR
Compares two uuids and returns true if both arguments are the same uuid.
.PP
.SH EXAMPLES
.CS


% uuid::uuid generate
b12dc22c-5c36-41d2-57da-e29d0ef5839c

.CE
.SH REFERENCES
.IP [1]
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
.nf
Copyright (c) 2004, Pat Thoyts <[email protected]>

.fi







<
<


<




















<

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
Returns the string representation of the new uuid.
.TP
\fB::uuid::uuid equal\fR \fIid1\fR \fIid2\fR
Compares two uuids and returns true if both arguments are the same uuid.
.PP
.SH EXAMPLES
.CS


% uuid::uuid generate
b12dc22c-5c36-41d2-57da-e29d0ef5839c

.CE
.SH REFERENCES
.IP [1]
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
.nf
Copyright (c) 2004, Pat Thoyts <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_base/cat.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
287
288
289
290
291
292
293
294
295
.SH KEYWORDS
concatenation channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2011 Andreas Kupries <[email protected]>

.fi







<

286
287
288
289
290
291
292

293
.SH KEYWORDS
concatenation channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2011 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_base/facade.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
311
312
313
314
315
316
317
318
319
.SH KEYWORDS
concatenation channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2011 Andreas Kupries <[email protected]>

.fi







<

310
311
312
313
314
315
316

317
.SH KEYWORDS
concatenation channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2011 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_base/fifo.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
281
282
283
284
285
286
287
288
289
.SH KEYWORDS
fifo, in-memory channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

280
281
282
283
284
285
286

287
.SH KEYWORDS
fifo, in-memory channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_base/fifo2.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
287
288
289
290
291
292
293
294
295
.SH KEYWORDS
connected fifos, fifo, in-memory channel, inter-thread communication, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

286
287
288
289
290
291
292

293
.SH KEYWORDS
connected fifos, fifo, in-memory channel, inter-thread communication, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_base/halfpipe.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
313
314
315
316
317
318
319
320
321
.SH KEYWORDS
callbacks, fifo, in-memory channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

312
313
314
315
316
317
318

319
.SH KEYWORDS
callbacks, fifo, in-memory channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_base/memchan.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
284
285
286
287
288
289
290
291
292
.SH KEYWORDS
in-memory channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

283
284
285
286
287
288
289

290
.SH KEYWORDS
in-memory channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_base/null.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
284
285
286
287
288
289
290
291
292
.SH KEYWORDS
/dev/null, null, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

283
284
285
286
287
288
289

290
.SH KEYWORDS
/dev/null, null, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_base/nullzero.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
281
282
283
284
285
286
287
288
289
.SH KEYWORDS
/dev/null, /dev/zero, null, reflected channel, tip 219, virtual channel, zero
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

280
281
282
283
284
285
286

287
.SH KEYWORDS
/dev/null, /dev/zero, null, reflected channel, tip 219, virtual channel, zero
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_base/random.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
284
285
286
287
288
289
290
291
292
.SH KEYWORDS
/dev/random, random, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

283
284
285
286
287
288
289

290
.SH KEYWORDS
/dev/random, random, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_base/randseed.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
279
280
281
282
283
284
285
286
287
.SH KEYWORDS
/dev/random, merge, random, reflected channel, seed, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

278
279
280
281
282
283
284

285
.SH KEYWORDS
/dev/random, merge, random, reflected channel, seed, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_base/std.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
281
282
283
284
285
286
287
288
289
.SH KEYWORDS
reflected channel, standard io, stdin, stdout, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2011 Andreas Kupries <[email protected]>

.fi







<

280
281
282
283
284
285
286

287
.SH KEYWORDS
reflected channel, standard io, stdin, stdout, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2011 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_base/string.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
284
285
286
287
288
289
290
291
292
.SH KEYWORDS
in-memory channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

283
284
285
286
287
288
289

290
.SH KEYWORDS
in-memory channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_base/textwindow.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
278
279
280
281
282
283
284
285
286
.SH KEYWORDS
Tk, reflected channel, text widget, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

277
278
279
280
281
282
283

284
.SH KEYWORDS
Tk, reflected channel, text widget, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_base/variable.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
285
286
287
288
289
290
291
292
293
.SH KEYWORDS
in-memory channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

284
285
286
287
288
289
290

291
.SH KEYWORDS
in-memory channel, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_base/zero.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
284
285
286
287
288
289
290
291
292
.SH KEYWORDS
/dev/zero, reflected channel, tip 219, virtual channel, zero
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

283
284
285
286
287
288
289

290
.SH KEYWORDS
/dev/zero, reflected channel, tip 219, virtual channel, zero
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_core/core.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
310
311
312
313
314
315
316
317
318
.SH KEYWORDS
reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

309
310
311
312
313
314
315

316
.SH KEYWORDS
reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_core/events.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
319
320
321
322
323
324
325
326
327
.SH KEYWORDS
event management, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

318
319
320
321
322
323
324

325
.SH KEYWORDS
event management, reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_core/transformcore.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
310
311
312
313
314
315
316
317
318
.SH KEYWORDS
reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

309
310
311
312
313
314
315

316
.SH KEYWORDS
reflected channel, tip 219, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_transform/adler32.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
304
305
306
307
308
309
310
311
312
.SH KEYWORDS
adler32, channel transformation, checksum, reflected channel, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

303
304
305
306
307
308
309

310
.SH KEYWORDS
adler32, channel transformation, checksum, reflected channel, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
280
281
282
283
284
285
286
287
288
.SH KEYWORDS
base64, channel transformation, reflected channel, tip 230, tip 317, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

279
280
281
282
283
284
285

286
.SH KEYWORDS
base64, channel transformation, reflected channel, tip 230, tip 317, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
303
304
305
306
307
308
309
310
311
.SH KEYWORDS
channel transformation, counter, reflected channel, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

302
303
304
305
306
307
308

309
.SH KEYWORDS
channel transformation, counter, reflected channel, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
304
305
306
307
308
309
310
311
312
.SH KEYWORDS
channel transformation, checksum, crc32, reflected channel, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

303
304
305
306
307
308
309

310
.SH KEYWORDS
channel transformation, checksum, crc32, reflected channel, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_transform/hex.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
280
281
282
283
284
285
286
287
288
.SH KEYWORDS
channel transformation, hexadecimal, reflected channel, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

279
280
281
282
283
284
285

286
.SH KEYWORDS
channel transformation, hexadecimal, reflected channel, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_transform/identity.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
287
288
289
290
291
292
293
294
295
.SH KEYWORDS
channel transformation, identity, reflected channel, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

286
287
288
289
290
291
292

293
.SH KEYWORDS
channel transformation, identity, reflected channel, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_transform/limitsize.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
282
283
284
285
286
287
288
289
290
.SH KEYWORDS
channel transformation, limitsize, reflected channel, size limit, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

281
282
283
284
285
286
287

288
.SH KEYWORDS
channel transformation, limitsize, reflected channel, size limit, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_transform/observe.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
286
287
288
289
290
291
292
293
294
.SH KEYWORDS
channel transformation, observer, reflected channel, stream copy, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

285
286
287
288
289
290
291

292
.SH KEYWORDS
channel transformation, observer, reflected channel, stream copy, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_transform/otp.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
285
286
287
288
289
290
291
292
293
.SH KEYWORDS
channel transformation, cipher, decryption, encryption, one time pad, otp, reflected channel, tip 230, transformation, virtual channel, xor
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

284
285
286
287
288
289
290

291
.SH KEYWORDS
channel transformation, cipher, decryption, encryption, one time pad, otp, reflected channel, tip 230, transformation, virtual channel, xor
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_transform/rot.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
289
290
291
292
293
294
295
296
297
.SH KEYWORDS
caesar cipher, channel transformation, cipher, decryption, encryption, reflected channel, rot, rot13, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

288
289
290
291
292
293
294

295
.SH KEYWORDS
caesar cipher, channel transformation, cipher, decryption, encryption, reflected channel, rot, rot13, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_transform/spacer.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
282
283
284
285
286
287
288
289
290
.SH KEYWORDS
channel transformation, reflected channel, spacing, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

281
282
283
284
285
286
287

288
.SH KEYWORDS
channel transformation, reflected channel, spacing, tip 230, transformation, virtual channel
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/virtchannel_transform/zlib.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
280
281
282
283
284
285
286
287
288
.SH KEYWORDS
channel transformation, compression, decompression, reflected channel, tip 230, tip 234, transformation, virtual channel, zlib
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi







<

279
280
281
282
283
284
285

286
.SH KEYWORDS
channel transformation, compression, decompression, reflected channel, tip 230, tip 234, transformation, virtual channel, zlib
.SH CATEGORY
Channels
.SH COPYRIGHT
.nf
Copyright (c) 2009 Andreas Kupries <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
the specified \fIwordlist\fR.
.TP
\fIwipName\fR \fBpushl\fR \fIwordlist\fR
Program accessor method. The specified \fIwordlist\fR is added to the
front of the remaining program. Equivalent to
.sp
.CS

$wip insertl 0 $wordlist
.CE
.TP
\fIwipName\fR \fBaddl\fR \fIwordlist\fR
Program accessor method. The specified \fIwordlist\fR is appended at
the end of the remaining program. Equivalent to
.sp
.CS

$wip insertl end $wordlist
.CE
.TP
\fIwipName\fR \fBinsert\fR \fIat\fR \fIword\fR...
Like method \fBinsertl\fR, except the words are specified through
multiple arguments.
.TP







<








<







554
555
556
557
558
559
560

561
562
563
564
565
566
567
568

569
570
571
572
573
574
575
the specified \fIwordlist\fR.
.TP
\fIwipName\fR \fBpushl\fR \fIwordlist\fR
Program accessor method. The specified \fIwordlist\fR is added to the
front of the remaining program. Equivalent to
.sp
.CS

$wip insertl 0 $wordlist
.CE
.TP
\fIwipName\fR \fBaddl\fR \fIwordlist\fR
Program accessor method. The specified \fIwordlist\fR is appended at
the end of the remaining program. Equivalent to
.sp
.CS

$wip insertl end $wordlist
.CE
.TP
\fIwipName\fR \fBinsert\fR \fIat\fR \fIword\fR...
Like method \fBinsertl\fR, except the words are specified through
multiple arguments.
.TP
600
601
602
603
604
605
606
607
608
.SH KEYWORDS
interpreter, list, word
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2007-2010 Andreas Kupries <[email protected]>

.fi







<

597
598
599
600
601
602
603

604
.SH KEYWORDS
interpreter, list, word
.SH CATEGORY
Programming tools
.SH COPYRIGHT
.nf
Copyright (c) 2007-2010 Andreas Kupries <[email protected]>

.fi

Changes to embedded/man/files/modules/yaml/huddle.n.

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
When converting huddle-notation to other serialization formats like
JSON or YAML this type information is used to select the proper notation.
And when going from JSON/YAML/... to huddle their notation can be used
to select the proper huddle type.
.PP
In that manner huddle can serve as a common intermediary format.
.CS


huddle-format: >
  {HUDDLE {huddle-node}}
huddle-node: >
  {tag content}
each content of tag means:
  s: (content is a) string
  L: list, each sub node is a huddle-node
  D: dict, each sub node is a huddle-node
confirmed:
  - JSON
  - YAML(generally, but cannot discribe YAML-tags)
limitation:
  - cannot discribe aliases from a node to other node.

.CE
.PP
The \fBhuddle\fR package returns
data as a Tcl \fBdict\fR.  Either the \fBdict\fR package or Tcl 8.5 is
required for use.
.SH COMMANDS
.TP







<
<

|

|

|
|
|

|
|

|
<







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
When converting huddle-notation to other serialization formats like
JSON or YAML this type information is used to select the proper notation.
And when going from JSON/YAML/... to huddle their notation can be used
to select the proper huddle type.
.PP
In that manner huddle can serve as a common intermediary format.
.CS


huddle-format: >
{HUDDLE {huddle-node}}
huddle-node: >
{tag content}
each content of tag means:
s: (content is a) string
L: list, each sub node is a huddle-node
D: dict, each sub node is a huddle-node
confirmed:
- JSON
- YAML(generally, but cannot discribe YAML-tags)
limitation:
- cannot discribe aliases from a node to other node.

.CE
.PP
The \fBhuddle\fR package returns
data as a Tcl \fBdict\fR.  Either the \fBdict\fR package or Tcl 8.5 is
required for use.
.SH COMMANDS
.TP
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
Almost the same as \fBdict remove\fR.
Remove a sub-object from the huddle object.
\fIkey\fR can be used to huddle-list's index.
.TP
\fBhuddle combine\fR \fIobject1\fR \fIobject2\fR ?\fIobject3 ...\fR?
Merging huddle objects given.
.CS


% set aa [huddle create a b c d]
HUDDLE {D {a {s b} c {s d}}}
% set bb [huddle create a k l m]
HUDDLE {D {a {s k} l {s m}}}
% huddle combine $aa $bb
HUDDLE {D {a {s k} c {s d} l {s m}}}

.CE
.TP
\fBhuddle equal\fR \fIobject1\fR \fIobject2\fR
Comparing two huddle objects recursively.
When to equal, returns 1, otherwise 0.
.CS


% set aa [huddle create a b c d]
HUDDLE {D {a {s b} c {s d}}}
% set bb [huddle create c d a b]
HUDDLE {D {c {s d} a {s b}}}
% huddle equal $aa $bb
1

.CE
.TP
\fBhuddle append\fR \fIobjectVar\fR \fIkey\fR \fIvalue\fR ?\fIkey value ...\fR?
.TP
\fBhuddle append\fR \fIobjectVar\fR \fIvalue\fR ?\fIvalue ...\fR?
Appending child elements. When for dicts, giving key/value. When for lists, giving values.
.CS


% set aa [huddle create a b c d]
HUDDLE {D {a {s b} c {s d}}}
% huddle append aa a k l m
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}}}

.CE
.TP
\fBhuddle keys\fR \fIobject\fR
The same as \fBdict keys\fR.
.TP
\fBhuddle llength\fR \fIobject\fR
The same as \fBllength\fR.







<
<






<






<
<






<







<
<








<







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
Almost the same as \fBdict remove\fR.
Remove a sub-object from the huddle object.
\fIkey\fR can be used to huddle-list's index.
.TP
\fBhuddle combine\fR \fIobject1\fR \fIobject2\fR ?\fIobject3 ...\fR?
Merging huddle objects given.
.CS


% set aa [huddle create a b c d]
HUDDLE {D {a {s b} c {s d}}}
% set bb [huddle create a k l m]
HUDDLE {D {a {s k} l {s m}}}
% huddle combine $aa $bb
HUDDLE {D {a {s k} c {s d} l {s m}}}

.CE
.TP
\fBhuddle equal\fR \fIobject1\fR \fIobject2\fR
Comparing two huddle objects recursively.
When to equal, returns 1, otherwise 0.
.CS


% set aa [huddle create a b c d]
HUDDLE {D {a {s b} c {s d}}}
% set bb [huddle create c d a b]
HUDDLE {D {c {s d} a {s b}}}
% huddle equal $aa $bb
1

.CE
.TP
\fBhuddle append\fR \fIobjectVar\fR \fIkey\fR \fIvalue\fR ?\fIkey value ...\fR?
.TP
\fBhuddle append\fR \fIobjectVar\fR \fIvalue\fR ?\fIvalue ...\fR?
Appending child elements. When for dicts, giving key/value. When for lists, giving values.
.CS


% set aa [huddle create a b c d]
HUDDLE {D {a {s b} c {s d}}}
% huddle append aa a k l m
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}}}

.CE
.TP
\fBhuddle keys\fR \fIobject\fR
The same as \fBdict keys\fR.
.TP
\fBhuddle llength\fR \fIobject\fR
The same as \fBllength\fR.
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
\fB\fBdict\fR\fR
the node is a dict.
.TP
\fB\fBlist\fR\fR
the node is a list.
.RE
.CS


% 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

.CE
.TP
\fBhuddle strip\fR \fIobject\fR
Stripped all tags. Converted to normal Tcl's list/dict.
.TP
\fBhuddle jsondump\fR \fIobject\fR ?\fIoffset\fR? ?\fInewline\fR? ?\fIbegin_offset\fR?
dump a json-stream from the huddle-object.
.sp
.RS
.TP
\fB\fBoffset\fR ""\fR
begin offset as spaces "  ".
.RE
.CS

# normal output has some indents. some strings are escaped.
% huddle jsondump {HUDDLE {L {{L {{s i} {s baa} {s \\\\k} {L {{s 1.0} {s true} {s /g} {s h}}} {L {{s g}}}}} {s t}}}}
[
  [
    "i",
    "baa",
    "\\\\k",
    [
      1.0,
      true,
      "\\/g",
      "h"
    ],
    ["g"]
  ],
  "t"
]
# stripped output
% huddle jsondump {HUDDLE {D {dd {D {bb {D {a {s baa} c {s {d
a}}}} cc {D {g {s h}}}}} ee {D {i {s j} k {s 1} j {s { m\\a}}}}}}} "" ""
{"dd": {"bb": {"a": "baa","c": "d\\na"},"cc": {"g": "h"}},"ee": {"i": "j","k": 1,"j": " m\\\\a"}}

.CE
.TP
\fBhuddle compile\fR \fIspec\fR \fIdata\fR
construct a huddle object from plain old tcl values.
\fIspec\fR is defined as follows:
.RS
.TP







<
<






<














<



|
|
|
|
|
|
|
|
|
|
|
|
|





<







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
\fB\fBdict\fR\fR
the node is a dict.
.TP
\fB\fBlist\fR\fR
the node is a list.
.RE
.CS


% 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

.CE
.TP
\fBhuddle strip\fR \fIobject\fR
Stripped all tags. Converted to normal Tcl's list/dict.
.TP
\fBhuddle jsondump\fR \fIobject\fR ?\fIoffset\fR? ?\fInewline\fR? ?\fIbegin_offset\fR?
dump a json-stream from the huddle-object.
.sp
.RS
.TP
\fB\fBoffset\fR ""\fR
begin offset as spaces "  ".
.RE
.CS

# normal output has some indents. some strings are escaped.
% huddle jsondump {HUDDLE {L {{L {{s i} {s baa} {s \\\\k} {L {{s 1.0} {s true} {s /g} {s h}}} {L {{s g}}}}} {s t}}}}
[
[
"i",
"baa",
"\\\\k",
[
1.0,
true,
"\\/g",
"h"
],
["g"]
],
"t"
]
# stripped output
% huddle jsondump {HUDDLE {D {dd {D {bb {D {a {s baa} c {s {d
a}}}} cc {D {g {s h}}}}} ee {D {i {s j} k {s 1} j {s { m\\a}}}}}}} "" ""
{"dd": {"bb": {"a": "baa","c": "d\\na"},"cc": {"g": "h"}},"ee": {"i": "j","k": 1,"j": " m\\\\a"}}

.CE
.TP
\fBhuddle compile\fR \fIspec\fR \fIdata\fR
construct a huddle object from plain old tcl values.
\fIspec\fR is defined as follows:
.RS
.TP
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
data is a tcl dict where the value of key xx is a tcl list
.TP
dict * list
data is a tcl dict of lists
\fIdata\fR is plain old tcl values
.RE
.CS

% 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}}}}}}}

.CE
.TP
\fBhuddle isHuddle\fR \fIobject\fR
if \fIobject\fR is a huddle, returns 1. the other, returns 0.
.TP
\fBhuddle checkHuddle\fR \fIobject\fR
if \fIobject\fR is not a huddle, rises an error.
.TP
\fBhuddle to_node\fR \fIobject\fR ?\fItag\fR?
for type-callbacks.
.sp
if \fIobject\fR is a huddle, returns root-node. the other, returns \fB[list s $object]\fR.
.CS


% huddle to_node str
s str
% huddle to_node str !!str
!!str str
% huddle to_node {HUDDLE {s str}}
s str
% huddle to_node {HUDDLE {l {a b c}}}
l {a b c}

.CE
.TP
\fBhuddle wrap\fR \fItag\fR \fIsrc\fR
for type-callbacks.
.sp
Create a huddle object from \fIsrc\fR with specified \fItag\fR.
.CS


% huddle wrap "" str
HUDDLE str
% huddle wrap s str
HUDDLE {s str}

.CE
.TP
\fBhuddle call\fR \fItag\fR \fIcommand\fR \fIargs\fR
for type-callbacks.
.sp
devolving \fIcommand\fR to default \fItag\fR-callback
.TP







<




<













<
<








<







<
<




<







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
data is a tcl dict where the value of key xx is a tcl list
.TP
dict * list
data is a tcl dict of lists
\fIdata\fR is plain old tcl values
.RE
.CS

% 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}}}}}}}

.CE
.TP
\fBhuddle isHuddle\fR \fIobject\fR
if \fIobject\fR is a huddle, returns 1. the other, returns 0.
.TP
\fBhuddle checkHuddle\fR \fIobject\fR
if \fIobject\fR is not a huddle, rises an error.
.TP
\fBhuddle to_node\fR \fIobject\fR ?\fItag\fR?
for type-callbacks.
.sp
if \fIobject\fR is a huddle, returns root-node. the other, returns \fB[list s $object]\fR.
.CS


% huddle to_node str
s str
% huddle to_node str !!str
!!str str
% huddle to_node {HUDDLE {s str}}
s str
% huddle to_node {HUDDLE {l {a b c}}}
l {a b c}

.CE
.TP
\fBhuddle wrap\fR \fItag\fR \fIsrc\fR
for type-callbacks.
.sp
Create a huddle object from \fIsrc\fR with specified \fItag\fR.
.CS


% huddle wrap "" str
HUDDLE str
% huddle wrap s str
HUDDLE {s str}

.CE
.TP
\fBhuddle call\fR \fItag\fR \fIcommand\fR \fIargs\fR
for type-callbacks.
.sp
devolving \fIcommand\fR to default \fItag\fR-callback
.TP
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
removes a sub-node from the tagged-content, and returns self.
.PP
.PP
\fBstrip\fR must be defined at all types.
\fBget_sub\fR must be defined at container types.
\fBset/remove\fR shuould be defined, if you call them.
.CS


# callback sample for my-dict
proc my_dict_setting {command args} {
    switch -- $command {
        setting { ; # type definition
            return {
                type dict
                method {create keys}
                tag {d child D parent}
                constructor create
                str s
            }
            # type:   the type-name
            # method: add methods to huddle's subcommand.
            #          "get_sub/strip/set/remove/equal/append" called by huddle module.
            #          "strip" must be defined at all types.
            #          "get_sub" must be defined at container types.
            #          "set/remove/equal/append" shuould be defined, if you call them.
            # tag:    tag definition("child/parent" word is maybe obsoleted)
        }
        get_sub { ; # get a sub-node specified by "key" from the tagged-content
            foreach {src key} $args break
            return [dict get $src $key]
        }
        strip { ; # strip from the tagged-content
            foreach {src nop} $args break
            foreach {key val} $src {
                lappend result $key [huddle strip $val]
            }
            return $result
        }
        set { ; # set a sub-node from the tagged-content
            foreach {src key value} $args break
            dict set src $key $value
            return $src
        }
        remove { ; # remove a sub-node from the tagged-content
            foreach {src key value} $args break
            return [dict remove $src $key]
        }
        equal { ; # check equal for each node
            foreach {src1 src2} $args break
            if {[llength $src1] != [llength $src2]} {return 0}
            foreach {key1 val1} $src1 {
                if {![dict exists $src2 $key1]} {return 0}
                if {![huddle _equal_subs $val1 [dict get $src2 $key1]]} {return 0}
            }
            return 1
        }
        append { ; # append nodes
            foreach {str src list} $args break
            if {[llength $list] % 2} {error {wrong # args: should be "huddle append objvar ?key value ...?"}}
            set resultL $src
            foreach {key value} $list {
                if {$str ne ""} {
                    lappend resultL $key [huddle to_node $value $str]
                } else {
                    lappend resultL $key $value
                }
            }
            return [eval dict create $resultL]
        }
        create { ; # $args: all arguments after "huddle create"
            if {[llength $args] % 2} {error {wrong # args: should be "huddle create ?key value ...?"}}
            set resultL {}
            foreach {key value} $args {
                lappend resultL $key [huddle to_node $value]
            }
            return [huddle wrap D $resultL]
        }
        keys {
            foreach {src nop} $args break
            return [dict keys [lindex [lindex $src 1] 1]]
        }
        default {
            error "$command is not callback for dict"
        }
    }
}

.CE
.CS


# inheritance sample from default dict-callback
proc ::yaml::_huddle_mapping {command args} {
    switch -- $command {
        setting { ; # type definition
            return {
                type dict
                method {mapping}
                tag {!!map parent}
                constructor mapping
                str !!str
            }
        }
        mapping { ; # $args: all arguments after "huddle mapping"
            if {[llength $args] % 2} {error {wrong # args: should be "huddle mapping ?key value ...?"}}
            set resultL {}
            foreach {key value} $args {
                lappend resultL $key [huddle to_node $value !!str]
            }
            return [huddle wrap !!map $resultL]
        }
        default { ; # devolving to default dict-callback
            return [huddle call D $command $args]
        }
    }
}

.CE
.SH "HOW TO ADD TYPE"
.PP
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 \fIcommand\fR and ?\fIargs\fR?. It has some switch-sections.
.PP
And, addType subcommand will called.
.CS


huddle addType my_dict_setting

.CE
.SH "WORKING SAMPLE"
.CS


# create as a dict
% set bb [huddle create a b c d]
HUDDLE {D {a {s b} c {s d}}}

# create as a list
% set cc [huddle list e f g h]
HUDDLE {L {{s e} {s f} {s g} {s h}}}
% set bbcc [huddle create bb $bb cc $cc]
HUDDLE {D {bb {D {a {s b} c {s d}}} cc {L {{s e} {s f} {s g} {s h}}}}}
% set folding [huddle list $bbcc p [huddle list q r] s]
HUDDLE {L {{D {bb {D {a {s b} c {s d}}} cc {L {{s e} {s f} {s g} {s h}}}}} {s p} {L {{s q} {s r}}} {s s}}}

# normal Tcl's notation
% huddle strip $folding
{bb {a b c d} cc {e f g h}} p {q r} s

# get a sub node
% huddle get $folding 0 bb
HUDDLE {D {a {s b} c {s d}}}
% huddle gets $folding 0 bb
a b c d

# overwrite a node
% huddle set folding 0 bb c kkk
HUDDLE {L {{D {bb {D {a {s b} c {s kkk}}} cc {L {{s e} {s f} {s g} {s h}}}}} {s p} {L {{s q} {s r}}} {s s}}}

# remove a node
% huddle remove $folding 2 1
HUDDLE {L {{D {bb {D {a {s b} c {s kkk}}} cc {L {{s e} {s f} {s g} {s h}}}}} {s p} {L {{s q}}} {s s}}}
% huddle strip $folding
{bb {a b c kkk} cc {e f g h}} p {q r} s

# dump as a JSON stream
% huddle jsondump $folding
[
  {
    "bb": {
      "a": "b",
      "c": "kkk"
    },
    "cc": [
      "e",
      "f",
      "g",
      "h"
    ]
  },
  "p",
  [
    "q",
    "r"
  ],
  "s"
]

.CE
.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
.nf
Copyright (c) 2008 KATO Kanryu <[email protected]>

.fi







<
<


|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

<


<
<


|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

<









<
<

<



<
<



<







<



<





<



<





<



|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

<


















<

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
removes a sub-node from the tagged-content, and returns self.
.PP
.PP
\fBstrip\fR must be defined at all types.
\fBget_sub\fR must be defined at container types.
\fBset/remove\fR shuould be defined, if you call them.
.CS


# callback sample for my-dict
proc my_dict_setting {command args} {
switch -- $command {
setting { ; # type definition
return {
type dict
method {create keys}
tag {d child D parent}
constructor create
str s
}
# type:   the type-name
# method: add methods to huddle's subcommand.
#          "get_sub/strip/set/remove/equal/append" called by huddle module.
#          "strip" must be defined at all types.
#          "get_sub" must be defined at container types.
#          "set/remove/equal/append" shuould be defined, if you call them.
# tag:    tag definition("child/parent" word is maybe obsoleted)
}
get_sub { ; # get a sub-node specified by "key" from the tagged-content
foreach {src key} $args break
return [dict get $src $key]
}
strip { ; # strip from the tagged-content
foreach {src nop} $args break
foreach {key val} $src {
lappend result $key [huddle strip $val]
}
return $result
}
set { ; # set a sub-node from the tagged-content
foreach {src key value} $args break
dict set src $key $value
return $src
}
remove { ; # remove a sub-node from the tagged-content
foreach {src key value} $args break
return [dict remove $src $key]
}
equal { ; # check equal for each node
foreach {src1 src2} $args break
if {[llength $src1] != [llength $src2]} {return 0}
foreach {key1 val1} $src1 {
if {![dict exists $src2 $key1]} {return 0}
if {![huddle _equal_subs $val1 [dict get $src2 $key1]]} {return 0}
}
return 1
}
append { ; # append nodes
foreach {str src list} $args break
if {[llength $list] % 2} {error {wrong # args: should be "huddle append objvar ?key value ...?"}}
set resultL $src
foreach {key value} $list {
if {$str ne ""} {
lappend resultL $key [huddle to_node $value $str]
} else {
lappend resultL $key $value
}
}
return [eval dict create $resultL]
}
create { ; # $args: all arguments after "huddle create"
if {[llength $args] % 2} {error {wrong # args: should be "huddle create ?key value ...?"}}
set resultL {}
foreach {key value} $args {
lappend resultL $key [huddle to_node $value]
}
return [huddle wrap D $resultL]
}
keys {
foreach {src nop} $args break
return [dict keys [lindex [lindex $src 1] 1]]
}
default {
error "$command is not callback for dict"
}
}
}

.CE
.CS


# inheritance sample from default dict-callback
proc ::yaml::_huddle_mapping {command args} {
switch -- $command {
setting { ; # type definition
return {
type dict
method {mapping}
tag {!!map parent}
constructor mapping
str !!str
}
}
mapping { ; # $args: all arguments after "huddle mapping"
if {[llength $args] % 2} {error {wrong # args: should be "huddle mapping ?key value ...?"}}
set resultL {}
foreach {key value} $args {
lappend resultL $key [huddle to_node $value !!str]
}
return [huddle wrap !!map $resultL]
}
default { ; # devolving to default dict-callback
return [huddle call D $command $args]
}
}
}

.CE
.SH "HOW TO ADD TYPE"
.PP
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 \fIcommand\fR and ?\fIargs\fR?. It has some switch-sections.
.PP
And, addType subcommand will called.
.CS


huddle addType my_dict_setting

.CE
.SH "WORKING SAMPLE"
.CS


# create as a dict
% set bb [huddle create a b c d]
HUDDLE {D {a {s b} c {s d}}}

# create as a list
% set cc [huddle list e f g h]
HUDDLE {L {{s e} {s f} {s g} {s h}}}
% set bbcc [huddle create bb $bb cc $cc]
HUDDLE {D {bb {D {a {s b} c {s d}}} cc {L {{s e} {s f} {s g} {s h}}}}}
% set folding [huddle list $bbcc p [huddle list q r] s]
HUDDLE {L {{D {bb {D {a {s b} c {s d}}} cc {L {{s e} {s f} {s g} {s h}}}}} {s p} {L {{s q} {s r}}} {s s}}}

# normal Tcl's notation
% huddle strip $folding
{bb {a b c d} cc {e f g h}} p {q r} s

# get a sub node
% huddle get $folding 0 bb
HUDDLE {D {a {s b} c {s d}}}
% huddle gets $folding 0 bb
a b c d

# overwrite a node
% huddle set folding 0 bb c kkk
HUDDLE {L {{D {bb {D {a {s b} c {s kkk}}} cc {L {{s e} {s f} {s g} {s h}}}}} {s p} {L {{s q} {s r}}} {s s}}}

# remove a node
% huddle remove $folding 2 1
HUDDLE {L {{D {bb {D {a {s b} c {s kkk}}} cc {L {{s e} {s f} {s g} {s h}}}}} {s p} {L {{s q}}} {s s}}}
% huddle strip $folding
{bb {a b c kkk} cc {e f g h}} p {q r} s

# dump as a JSON stream
% huddle jsondump $folding
[
{
"bb": {
"a": "b",
"c": "kkk"
},
"cc": [
"e",
"f",
"g",
"h"
]
},
"p",
[
"q",
"r"
],
"s"
]

.CE
.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
.nf
Copyright (c) 2008 KATO Kanryu <[email protected]>

.fi

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

218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







218
219
220
221
222
223
224

225
226
227
228
229
230
231
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
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
.TP
\fB\fB-stream\fR\fR
\fItxt\fR is just a YAML-stream.
.TP
\fB\fB-types\fR \fIlist\fR\fR
The \fIlist\fR is a type list for the yaml-scalar types.(e.g. !!str !!timestamp !!integer !!true ...)
.CS

 -types {timestamp integer null true false}
.CE
.IP
In this case, if a string matched "timestamp", converted to the TCL internal timestamp.(e.g. "2001-12-15T02:59:43.1Z" => 1008385183)
.TP
\fB\fB-m:true\fR \fIparam\fR\fR
The \fIparam\fR is two elements of list for the value of true, and considered strings.
.CS

 -m:true {1 {true on + yes y}}
.CE
.IP
In this case, the string "yes" found in YAML Stream, automatically converted 1.
.TP
\fB\fB-m:false\fR \fIparam\fR\fR
The \fIparam\fR is two elements of list for the value of false, and considered strings.
.CS

 -m:false {0 {false off - no n}}
.CE
.TP
\fB\fB-m:null\fR \fIparam\fR\fR
The \fIparam\fR is two elements of list for the value of null, and considered strings.
.CS

 -m:null {"" {null nil "" ~}}
.CE
.TP
\fB\fB-validate\fR\fR
Experiment,old: Output stream contains YAML's-tag, each node.
.CS

% puts [::yaml::load -validate {[aaa, bbb]}]
=>
!!seq {{!!str aaa} {!!str bbb}}

.CE
.RE
.TP
\fB::yaml::setOption\fR ?\fIoptions\fR?
Change implicit options for the library.
Now, the params are the same as \fB::yaml::yaml2dict\fR.
Arguments of\fB::yaml::yaml2dict\fR is more priority than this setting.







<
|







<
|







<
|





<
|





<



<







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
.TP
\fB\fB-stream\fR\fR
\fItxt\fR is just a YAML-stream.
.TP
\fB\fB-types\fR \fIlist\fR\fR
The \fIlist\fR is a type list for the yaml-scalar types.(e.g. !!str !!timestamp !!integer !!true ...)
.CS

-types {timestamp integer null true false}
.CE
.IP
In this case, if a string matched "timestamp", converted to the TCL internal timestamp.(e.g. "2001-12-15T02:59:43.1Z" => 1008385183)
.TP
\fB\fB-m:true\fR \fIparam\fR\fR
The \fIparam\fR is two elements of list for the value of true, and considered strings.
.CS

-m:true {1 {true on + yes y}}
.CE
.IP
In this case, the string "yes" found in YAML Stream, automatically converted 1.
.TP
\fB\fB-m:false\fR \fIparam\fR\fR
The \fIparam\fR is two elements of list for the value of false, and considered strings.
.CS

-m:false {0 {false off - no n}}
.CE
.TP
\fB\fB-m:null\fR \fIparam\fR\fR
The \fIparam\fR is two elements of list for the value of null, and considered strings.
.CS

-m:null {"" {null nil "" ~}}
.CE
.TP
\fB\fB-validate\fR\fR
Experiment,old: Output stream contains YAML's-tag, each node.
.CS

% puts [::yaml::load -validate {[aaa, bbb]}]
=>
!!seq {{!!str aaa} {!!str bbb}}

.CE
.RE
.TP
\fB::yaml::setOption\fR ?\fIoptions\fR?
Change implicit options for the library.
Now, the params are the same as \fB::yaml::yaml2dict\fR.
Arguments of\fB::yaml::yaml2dict\fR is more priority than this setting.
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
.PP
.SH EXAMPLES
.PP
An example of a yaml stream converted to Tcl.  A yaml stream is returned as a
single item with multiple elements.
.PP
.CS

{
--- !<tag:clarkevans.com,2002:invoice>
invoice: 34843
date   : 2001-01-23
bill-to: &id001
    given  : Chris
    family : Dumars
    address:
        lines: |
            458 Walkman Dr.
            Suite #292
        city    : Royal Oak
        state   : MI
        postal  : 48046
ship-to: *id001
product:
    - sku         : BL394D
      quantity    : 4
      description : Basketball
      price       : 450.00
    - sku         : BL4438H
      quantity    : 1
      description : Super Hoop
      price       : 2392.00
tax  : 251.42
total: 4443.52
comments:
    Late afternoon is best.
    Backup contact is Nancy
    Billsmer @ 338-4338.
}
=>
invoice 34843 date 2001-01-23 bill-to {given Chris family Dumars address {lines {458 Walkman Dr.
Suite #292
} city {Royal Oak} state MI postal 48046}} ship-to {given Chris family Dumars address {lines {458 Walkman Dr.
Suite #292
} city {Royal Oak} state MI postal 48046}} product {{sku BL394D quantity 4 description Basketball price 450.00} {sku BL4438H quantity 1 description {Super Hoop} price 2392.00}} tax 251.42 total 4443.52 comments {Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.}
.CE
.PP
An example of a yaml object converted to Tcl.  A yaml object is returned as a
multi-element list (a dict).
.PP
.CS

{
---
- [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}}

.CE
.SH LIMITATIONS
.PP
tag parser not implemented. currentry, tags are merely ignored.
.PP
Only Anchor => Aliases ordering. back alias-referring is not supported.
.PP







<





|
|
|
|
|
|
|
|
|


|
|
|
|
|
|
|
|



|
|
|













<






|
|



<







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
.PP
.SH EXAMPLES
.PP
An example of a yaml stream converted to Tcl.  A yaml stream is returned as a
single item with multiple elements.
.PP
.CS

{
--- !<tag:clarkevans.com,2002:invoice>
invoice: 34843
date   : 2001-01-23
bill-to: &id001
given  : Chris
family : Dumars
address:
lines: |
458 Walkman Dr.
Suite #292
city    : Royal Oak
state   : MI
postal  : 48046
ship-to: *id001
product:
- sku         : BL394D
quantity    : 4
description : Basketball
price       : 450.00
- sku         : BL4438H
quantity    : 1
description : Super Hoop
price       : 2392.00
tax  : 251.42
total: 4443.52
comments:
Late afternoon is best.
Backup contact is Nancy
Billsmer @ 338-4338.
}
=>
invoice 34843 date 2001-01-23 bill-to {given Chris family Dumars address {lines {458 Walkman Dr.
Suite #292
} city {Royal Oak} state MI postal 48046}} ship-to {given Chris family Dumars address {lines {458 Walkman Dr.
Suite #292
} city {Royal Oak} state MI postal 48046}} product {{sku BL394D quantity 4 description Basketball price 450.00} {sku BL4438H quantity 1 description {Super Hoop} price 2392.00}} tax 251.42 total 4443.52 comments {Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.}
.CE
.PP
An example of a yaml object converted to Tcl.  A yaml object is returned as a
multi-element list (a dict).
.PP
.CS

{
---
- [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}}

.CE
.SH LIMITATIONS
.PP
tag parser not implemented. currentry, tags are merely ignored.
.PP
Only Anchor => Aliases ordering. back alias-referring is not supported.
.PP
432
433
434
435
436
437
438
439
440
.SH "SEE ALSO"
base64, huddle, json
.SH KEYWORDS
data exchange, huddle, parsing, text processing, yaml
.SH COPYRIGHT
.nf
Copyright (c) 2008 KATO Kanryu <[email protected]>

.fi







<

422
423
424
425
426
427
428

429
.SH "SEE ALSO"
base64, huddle, json
.SH KEYWORDS
data exchange, huddle, parsing, text processing, yaml
.SH COPYRIGHT
.nf
Copyright (c) 2008 KATO Kanryu <[email protected]>

.fi

Changes to embedded/man/index.n.

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
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
'\"	# CE - end code excerpt
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "Keyword Index" n
.BS
.SH INDEX
tcllib
.RS
.ddt
.RS
.TP
\fBfiles/modules/docstrip/docstrip_util.n\fR
docstrip_util
.RE
.dtx
.RS
.TP
\fBfiles/modules/docstrip/docstrip.n\fR
docstrip
.TP
\fBfiles/apps/tcldocstrip.n\fR
tcldocstrip







<




















|





|







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
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
'\"	# CE - end code excerpt
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "Keyword Index" n
.BS
.SH INDEX
tcllib
.RS
\.ddt
.RS
.TP
\fBfiles/modules/docstrip/docstrip_util.n\fR
docstrip_util
.RE
\.dtx
.RS
.TP
\fBfiles/modules/docstrip/docstrip.n\fR
docstrip
.TP
\fBfiles/apps/tcldocstrip.n\fR
tcldocstrip
1580
1581
1582
1583
1584
1585
1586



1587
1588
1589
1590
1591
1592
1593
doctools::toc
.TP
\fBfiles/modules/doctools2toc/export.n\fR
doctools::toc::export
.TP
\fBfiles/modules/doctools2toc/import.n\fR
doctools::toc::import



.TP
\fBfiles/apps/dtplite.n\fR
dtplite
.TP
\fBfiles/modules/math/roman.n\fR
math::roman
.TP







>
>
>







1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
doctools::toc
.TP
\fBfiles/modules/doctools2toc/export.n\fR
doctools::toc::export
.TP
\fBfiles/modules/doctools2toc/import.n\fR
doctools::toc::import
.TP
\fBfiles/modules/dtplite/dtplite.n\fR
dtplite
.TP
\fBfiles/apps/dtplite.n\fR
dtplite
.TP
\fBfiles/modules/math/roman.n\fR
math::roman
.TP
2162
2163
2164
2165
2166
2167
2168



2169
2170
2171
2172
2173
2174
2175
doctools::msgcat::idx::de
.TP
\fBfiles/modules/doctools2idx/msgcat_en.n\fR
doctools::msgcat::idx::en
.TP
\fBfiles/modules/doctools2idx/msgcat_fr.n\fR
doctools::msgcat::idx::fr



.TP
\fBfiles/apps/dtplite.n\fR
dtplite
.RE
docidx commands
.RS
.TP







>
>
>







2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
doctools::msgcat::idx::de
.TP
\fBfiles/modules/doctools2idx/msgcat_en.n\fR
doctools::msgcat::idx::en
.TP
\fBfiles/modules/doctools2idx/msgcat_fr.n\fR
doctools::msgcat::idx::fr
.TP
\fBfiles/modules/dtplite/dtplite.n\fR
dtplite
.TP
\fBfiles/apps/dtplite.n\fR
dtplite
.RE
docidx commands
.RS
.TP
2276
2277
2278
2279
2280
2281
2282



2283
2284
2285
2286
2287
2288
2289
doctools::toc::import::doctoc
.TP
\fBfiles/modules/doctools2toc/parse.n\fR
doctools::toc::parse
.TP
\fBfiles/modules/doctools2toc/structure.n\fR
doctools::toc::structure



.TP
\fBfiles/apps/dtplite.n\fR
dtplite
.RE
doctoc commands
.RS
.TP







>
>
>







2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
doctools::toc::import::doctoc
.TP
\fBfiles/modules/doctools2toc/parse.n\fR
doctools::toc::parse
.TP
\fBfiles/modules/doctools2toc/structure.n\fR
doctools::toc::structure
.TP
\fBfiles/modules/dtplite/dtplite.n\fR
dtplite
.TP
\fBfiles/apps/dtplite.n\fR
dtplite
.RE
doctoc commands
.RS
.TP
2444
2445
2446
2447
2448
2449
2450



2451
2452
2453
2454
2455
2456
2457
doctools::toc::import::json
.TP
\fBfiles/modules/doctools2toc/parse.n\fR
doctools::toc::parse
.TP
\fBfiles/modules/doctools2toc/structure.n\fR
doctools::toc::structure



.TP
\fBfiles/apps/dtplite.n\fR
dtplite
.RE
doctools commands
.RS
.TP







>
>
>







2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
doctools::toc::import::json
.TP
\fBfiles/modules/doctools2toc/parse.n\fR
doctools::toc::parse
.TP
\fBfiles/modules/doctools2toc/structure.n\fR
doctools::toc::structure
.TP
\fBfiles/modules/dtplite/dtplite.n\fR
dtplite
.TP
\fBfiles/apps/dtplite.n\fR
dtplite
.RE
doctools commands
.RS
.TP
3902
3903
3904
3905
3906
3907
3908



3909
3910
3911
3912
3913
3914
3915
doctools::toc
.TP
\fBfiles/modules/doctools2toc/export.n\fR
doctools::toc::export
.TP
\fBfiles/modules/doctools2toc/export_html.n\fR
doctools::toc::export::html



.TP
\fBfiles/apps/dtplite.n\fR
dtplite
.TP
\fBfiles/modules/doctools/mpexpand.n\fR
mpexpand
.RE







>
>
>







3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
doctools::toc
.TP
\fBfiles/modules/doctools2toc/export.n\fR
doctools::toc::export
.TP
\fBfiles/modules/doctools2toc/export_html.n\fR
doctools::toc::export::html
.TP
\fBfiles/modules/dtplite/dtplite.n\fR
dtplite
.TP
\fBfiles/apps/dtplite.n\fR
dtplite
.TP
\fBfiles/modules/doctools/mpexpand.n\fR
mpexpand
.RE
4997
4998
4999
5000
5001
5002
5003



5004
5005
5006
5007
5008
5009
5010
doctools::toc::export
.TP
\fBfiles/modules/doctools2toc/import.n\fR
doctools::toc::import
.TP
\fBfiles/modules/doctools/doctools_plugin_apiref.n\fR
doctools_plugin_apiref



.TP
\fBfiles/apps/dtplite.n\fR
dtplite
.TP
\fBfiles/modules/doctools/mpexpand.n\fR
mpexpand
.RE







>
>
>







5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
doctools::toc::export
.TP
\fBfiles/modules/doctools2toc/import.n\fR
doctools::toc::import
.TP
\fBfiles/modules/doctools/doctools_plugin_apiref.n\fR
doctools_plugin_apiref
.TP
\fBfiles/modules/dtplite/dtplite.n\fR
dtplite
.TP
\fBfiles/apps/dtplite.n\fR
dtplite
.TP
\fBfiles/modules/doctools/mpexpand.n\fR
mpexpand
.RE
5117
5118
5119
5120
5121
5122
5123



5124
5125
5126
5127
5128
5129
5130
doctools_lang_intro
.TP
\fBfiles/modules/doctools/doctools_lang_syntax.n\fR
doctools_lang_syntax
.TP
\fBfiles/modules/doctools/doctools_plugin_apiref.n\fR
doctools_plugin_apiref



.TP
\fBfiles/apps/dtplite.n\fR
dtplite
.TP
\fBfiles/modules/doctools/mpexpand.n\fR
mpexpand
.TP







>
>
>







5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
doctools_lang_intro
.TP
\fBfiles/modules/doctools/doctools_lang_syntax.n\fR
doctools_lang_syntax
.TP
\fBfiles/modules/doctools/doctools_plugin_apiref.n\fR
doctools_plugin_apiref
.TP
\fBfiles/modules/dtplite/dtplite.n\fR
dtplite
.TP
\fBfiles/apps/dtplite.n\fR
dtplite
.TP
\fBfiles/modules/doctools/mpexpand.n\fR
mpexpand
.TP
5855
5856
5857
5858
5859
5860
5861



5862
5863
5864
5865
5866
5867
5868
doctools::toc
.TP
\fBfiles/modules/doctools2toc/export.n\fR
doctools::toc::export
.TP
\fBfiles/modules/doctools2toc/export_nroff.n\fR
doctools::toc::export::nroff



.TP
\fBfiles/apps/dtplite.n\fR
dtplite
.TP
\fBfiles/modules/doctools/mpexpand.n\fR
mpexpand
.RE







>
>
>







5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
doctools::toc
.TP
\fBfiles/modules/doctools2toc/export.n\fR
doctools::toc::export
.TP
\fBfiles/modules/doctools2toc/export_nroff.n\fR
doctools::toc::export::nroff
.TP
\fBfiles/modules/dtplite/dtplite.n\fR
dtplite
.TP
\fBfiles/apps/dtplite.n\fR
dtplite
.TP
\fBfiles/modules/doctools/mpexpand.n\fR
mpexpand
.RE
9515
9516
9517
9518
9519
9520
9521



9522
9523
9524
9525
9526
9527
9528
doctools::idx
.TP
\fBfiles/modules/doctools2toc/container.n\fR
doctools::toc
.TP
\fBfiles/modules/doctools/doctoc.n\fR
doctools::toc



.TP
\fBfiles/apps/dtplite.n\fR
dtplite
.TP
\fBfiles/modules/doctools/mpexpand.n\fR
mpexpand
.RE







>
>
>







9538
9539
9540
9541
9542
9543
9544
9545
9546
9547
9548
9549
9550
9551
9552
9553
9554
doctools::idx
.TP
\fBfiles/modules/doctools2toc/container.n\fR
doctools::toc
.TP
\fBfiles/modules/doctools/doctoc.n\fR
doctools::toc
.TP
\fBfiles/modules/dtplite/dtplite.n\fR
dtplite
.TP
\fBfiles/apps/dtplite.n\fR
dtplite
.TP
\fBfiles/modules/doctools/mpexpand.n\fR
mpexpand
.RE

Changes to embedded/man/toc.n.

216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..







<







216
217
218
219
220
221
222

223
224
225
226
227
228
229
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi

..
'\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
541
542
543
544
545
546
547



548
549
550
551
552
553
554
.TP
\fBdoctools_lang_syntax\fR
\fIfiles/modules/doctools/doctools_lang_syntax.n\fR: doctools language syntax
.TP
\fBdoctools_plugin_apiref\fR
\fIfiles/modules/doctools/doctools_plugin_apiref.n\fR: doctools plugin API reference
.TP



\fBdtplite\fR
\fIfiles/apps/dtplite.n\fR: Lightweight DocTools Markup Processor
.TP
\fBexif\fR
\fIfiles/modules/exif/exif.n\fR: Tcl EXIF extracts and parses EXIF fields from digital images
.TP
\fBfileutil\fR







>
>
>







540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
.TP
\fBdoctools_lang_syntax\fR
\fIfiles/modules/doctools/doctools_lang_syntax.n\fR: doctools language syntax
.TP
\fBdoctools_plugin_apiref\fR
\fIfiles/modules/doctools/doctools_plugin_apiref.n\fR: doctools plugin API reference
.TP
\fBdtplite\fR
\fIfiles/modules/dtplite/dtplite.n\fR: Lightweight DocTools Markup Processor
.TP
\fBdtplite\fR
\fIfiles/apps/dtplite.n\fR: Lightweight DocTools Markup Processor
.TP
\fBexif\fR
\fIfiles/modules/exif/exif.n\fR: Tcl EXIF extracts and parses EXIF fields from digital images
.TP
\fBfileutil\fR

Changes to embedded/www/index.html.

1
2
3
4
5
6
7
8
9
10

11

12

13
14
15
16
17
18
19
20
<html>
<! -- Generated by tcllib/doctools/idx with format 'html'
   -->
<! -- CVS: $Id$ Keyword Index
   -->
<head>
<title> Keyword Index </title>
</head>
<body>
<hr> [

  <a href="toc.html">Table Of Contents</a>

| <a href="/tcllib">Home</a>

] <hr>
<h3> Keyword Index </h3>
<hr><div class="#idxnav">
<a href="#c1"> . </a> &#183; <a href="#c2"> / </a> &#183; <a href="#c3"> 3 </a> &#183; <a href="#c4"> A </a> &#183; <a href="#c5"> B </a> &#183; <a href="#c6"> C </a> &#183; <a href="#c7"> D </a> &#183; <a href="#c8"> E </a> &#183; <a href="#c9"> F </a> &#183; <a href="#c10"> G </a> &#183; <a href="#c11"> H </a> &#183; <a href="#c12"> I </a> &#183; <a href="#c13"> J </a> &#183; <a href="#c14"> K </a> &#183; <a href="#c15"> L </a> &#183; <a href="#c16"> M </a> &#183; <a href="#c17"> N </a> &#183; <a href="#c18"> O </a> &#183; <a href="#c19"> P </a> &#183; <a href="#c20"> Q </a> &#183; <a href="#c21"> R </a> &#183; <a href="#c22"> S </a> &#183; <a href="#c23"> T </a> &#183; <a href="#c24"> U </a> &#183; <a href="#c25"> V </a> &#183; <a href="#c26"> W </a> &#183; <a href="#c27"> X </a> &#183; <a href="#c28"> Y </a> &#183; <a href="#c29"> Z </a>
</div>
<hr><table class="#idx" width="100%">
<tr class="#idxheader"><th colspan="2">
<a name="c1">Keywords: .</a>










>
|
>
|
>
|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<html>
<! -- Generated by tcllib/doctools/idx with format 'html'
   -->
<! -- CVS: $Id$ Keyword Index
   -->
<head>
<title> Keyword Index </title>
</head>
<body>
<hr> [
   <a href="../../../../home">Tcllib Home</a>
| <a href="toc.html">Table Of Contents</a>
| <a href="toc0.html">Categories</a>
| <a href="toc1.html">Modules</a>
| <a href="toc2.html">Applications</a>
 ] <hr>
<h3> Keyword Index </h3>
<hr><div class="#idxnav">
<a href="#c1"> . </a> &#183; <a href="#c2"> / </a> &#183; <a href="#c3"> 3 </a> &#183; <a href="#c4"> A </a> &#183; <a href="#c5"> B </a> &#183; <a href="#c6"> C </a> &#183; <a href="#c7"> D </a> &#183; <a href="#c8"> E </a> &#183; <a href="#c9"> F </a> &#183; <a href="#c10"> G </a> &#183; <a href="#c11"> H </a> &#183; <a href="#c12"> I </a> &#183; <a href="#c13"> J </a> &#183; <a href="#c14"> K </a> &#183; <a href="#c15"> L </a> &#183; <a href="#c16"> M </a> &#183; <a href="#c17"> N </a> &#183; <a href="#c18"> O </a> &#183; <a href="#c19"> P </a> &#183; <a href="#c20"> Q </a> &#183; <a href="#c21"> R </a> &#183; <a href="#c22"> S </a> &#183; <a href="#c23"> T </a> &#183; <a href="#c24"> U </a> &#183; <a href="#c25"> V </a> &#183; <a href="#c26"> W </a> &#183; <a href="#c27"> X </a> &#183; <a href="#c28"> Y </a> &#183; <a href="#c29"> Z </a>
</div>
<hr><table class="#idx" width="100%">
<tr class="#idxheader"><th colspan="2">
<a name="c1">Keywords: .</a>
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key474"> amazon </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/amazon-s3/S3.html"> S3 </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key759"> ambiguous </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_aycock/aycock.html"> grammar::aycock </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key532"> angle </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/math_geometry.html"> math::geometry </a> &#183; <a href="tcllib/files/modules/units/units.html"> units </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key547"> anonymous procedure </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/lambda/lambda.html"> lambda </a>







|




|







128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key474"> amazon </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/amazon-s3/S3.html"> S3 </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key766"> ambiguous </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_aycock/aycock.html"> grammar::aycock </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key530"> angle </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/math_geometry.html"> math::geometry </a> &#183; <a href="tcllib/files/modules/units/units.html"> units </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key547"> anonymous procedure </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/lambda/lambda.html"> lambda </a>
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key270"> assembler </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_me/gasm.html"> grammar::me::cpu::gasm </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key132"> assert </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="key521"> assign </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>







|







233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key270"> assembler </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_me/gasm.html"> grammar::me::cpu::gasm </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key127"> assert </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="key521"> assign </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key277"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key762"> aycock </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_aycock/aycock.html"> grammar::aycock </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c5">Keywords: B</a>
</th></tr>
<tr class="#idxeven" valign=top>







|







283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key277"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key769"> aycock </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_aycock/aycock.html"> grammar::aycock </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c5">Keywords: B</a>
</th></tr>
<tr class="#idxeven" valign=top>
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key379"> bibtex </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bibtex/bibtex.html"> bibtex </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key244"> bignums </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/bignum.html"> math::bignum </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key662"> bind </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uev/uevent.html"> uevent </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="key379"> bibtex </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bibtex/bibtex.html"> bibtex </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key240"> bignums </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/bignum.html"> math::bignum </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key662"> bind </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uev/uevent.html"> uevent </a>
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key27"> CFL </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="key628"> CGI </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="key565"> cgraph </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/graph1.html"> struct::graph_v1 </a>







|







484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key27"> CFL </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="key634"> CGI </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="key565"> cgraph </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/graph1.html"> struct::graph_v1 </a>
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key371"> 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>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key645"> chat </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/irc/irc.html"> irc </a> &#183; <a href="tcllib/files/modules/multiplexer/multiplexer.html"> multiplexer </a> &#183; <a href="tcllib/files/modules/irc/picoirc.html"> picoirc </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key570"> checkbox </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/html/html.html"> html </a> &#183; <a href="tcllib/files/modules/javascript/javascript.html"> javascript </a>







|







519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key371"> 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>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key643"> chat </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/irc/irc.html"> irc </a> &#183; <a href="tcllib/files/modules/multiplexer/multiplexer.html"> multiplexer </a> &#183; <a href="tcllib/files/modules/irc/picoirc.html"> picoirc </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key570"> checkbox </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/html/html.html"> html </a> &#183; <a href="tcllib/files/modules/javascript/javascript.html"> javascript </a>
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key560"> 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>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key308"> CONTAINER </a></td>
<td class="#idxright" width="65%">
<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_to_container.html"> pt::peg::to::container </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key589"> contents </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2toc/introduction.html"> doctools2toc_introduction </a>







|







689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key560"> 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>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key310"> CONTAINER </a></td>
<td class="#idxright" width="65%">
<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_to_container.html"> pt::peg::to::container </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key589"> contents </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2toc/introduction.html"> doctools2toc_introduction </a>
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
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key92"> 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key205"> control structure </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="key3"> 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/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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key459"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key627"> cookie </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ncgi/ncgi.html"> ncgi </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key61"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key200"> coroutine </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key765"> Cost </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="key272"> 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key665"> counting </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/counter/counter.html"> counter </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key753"> CPARAM </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/pt/pt_peg_to_cparam.html"> pt::peg::to::cparam </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key137"> crc </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="key752"> crc16 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/crc/crc16.html"> crc16 </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key138"> crc32 </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/crc32.html"> tcl::transform::crc32 </a>







|






|







|









|




|














|









|







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
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key92"> 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key203"> control structure </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="key3"> 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key459"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key633"> cookie </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ncgi/ncgi.html"> ncgi </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key61"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key198"> coroutine </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key761"> Cost </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="key272"> 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key665"> counting </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/counter/counter.html"> counter </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key756"> CPARAM </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/pt/pt_peg_to_cparam.html"> pt::peg::to::cparam </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key137"> crc </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="key749"> crc16 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/crc/crc16.html"> crc16 </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key138"> crc32 </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/crc32.html"> tcl::transform::crc32 </a>
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
<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="#idxheader"><th colspan="2">
<a name="c7">Keywords: D</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key580"> data analysis </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/statistics.html"> math::statistics </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key58"> data destination </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/transfer/ddest.html"> transfer::data::destination </a> &#183; <a href="tcllib/files/modules/transfer/receiver.html"> transfer::receiver </a>







|







832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
<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="#idxheader"><th colspan="2">
<a name="c7">Keywords: D</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key573"> data analysis </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/statistics.html"> math::statistics </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key58"> data destination </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/transfer/ddest.html"> transfer::data::destination </a> &#183; <a href="tcllib/files/modules/transfer/receiver.html"> transfer::receiver </a>
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key331"> 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="key286"> 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="key32"> 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>







|







862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key331"> 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="key295"> 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="key32"> 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>
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key424"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key751"> degrees </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="key39"> delegation </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>







|







922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key424"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key752"> degrees </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="key39"> delegation </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>
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
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key444"> dijkstra </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="key127"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key671"> directory traversal </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fileutil/traverse.html"> fileutil_traverse </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key730"> discrete items </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="key573"> disjoint set </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="key470"> dispatcher </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/term_bind.html"> term::receive::bind </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key428"> distance </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/math_geometry.html"> math::geometry </a> &#183; <a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a> &#183; <a href="tcllib/files/modules/units/units.html"> units </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key550"> DNS </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/dns/tcllib_dns.html"> dns </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key133"> do </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="key50"> docidx </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/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/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/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/apps/dtplite.html"> dtplite </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key326"> 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>







|














|



















|






|







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
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key444"> dijkstra </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="key135"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key671"> directory traversal </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/fileutil/traverse.html"> fileutil_traverse </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key730"> discrete items </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="key575"> disjoint set </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="key470"> dispatcher </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/term_bind.html"> term::receive::bind </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key428"> distance </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/math_geometry.html"> math::geometry </a> &#183; <a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a> &#183; <a href="tcllib/files/modules/units/units.html"> units </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key550"> DNS </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/dns/tcllib_dns.html"> dns </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key128"> do </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="key50"> docidx </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/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/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/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/apps/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/dtplite/dtplite.html"> dtplite </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key326"> 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>
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
<td class="#idxleft" width="35%"><a name="key386"> docstrip </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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key230"> doctoc </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/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/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/export_doctoc.html"> doctools::toc::export::doctoc </a> &#183; <a href="tcllib/files/modules/doctools2toc/import.html"> doctools::toc::import </a> &#183; <a href="tcllib/files/modules/doctools2toc/import_doctoc.html"> doctools::toc::import::doctoc </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>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key465"> 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>







|







1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
<td class="#idxleft" width="35%"><a name="key386"> docstrip </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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key230"> doctoc </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/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/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/export_doctoc.html"> doctools::toc::export::doctoc </a> &#183; <a href="tcllib/files/modules/doctools2toc/import.html"> doctools::toc::import </a> &#183; <a href="tcllib/files/modules/doctools2toc/import_doctoc.html"> doctools::toc::import::doctoc </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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key465"> 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>
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
<td class="#idxleft" width="35%"><a name="key499"> 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>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key117"> 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>







|







1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
<td class="#idxleft" width="35%"><a name="key499"> 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="key117"> 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>
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
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key166"> documentation </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/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/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/tcldocstrip.html"> tcldocstrip </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key763"> DOM </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="key699"> 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="key552"> 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="key749"> 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="key761"> earley </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_aycock/aycock.html"> grammar::aycock </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key9"> EBNF </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/pt/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>







|




|












|




|







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
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key166"> documentation </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/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/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/tcldocstrip.html"> tcldocstrip </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key759"> DOM </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="key697"> 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="key552"> 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="key750"> 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="key768"> earley </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_aycock/aycock.html"> grammar::aycock </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key9"> EBNF </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/pt/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>
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key403"> emacs </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="key293"> email </a></td>
<td class="#idxright" width="65%">
<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/pop3/pop3.html"> pop3 </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="key677"> emptiness </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_set.html"> struct::set </a>







|







1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key403"> emacs </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="key291"> email </a></td>
<td class="#idxright" width="65%">
<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/pop3/pop3.html"> pop3 </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="key677"> emptiness </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_set.html"> struct::set </a>
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key523"> equality </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="key572"> equivalence class </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="key154"> error </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/try/tcllib_try.html"> try </a>







|







1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key523"> equality </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="key574"> equivalence class </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="key154"> error </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/try/tcllib_try.html"> try </a>
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
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key6"> expression </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/modules/pt/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="key77"> extended namespace </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/namespacex/namespacex.html"> namespacex </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c9">Keywords: F</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key325"> faq </a></td>
<td class="#idxright" width="65%">
<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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key487"> fetching information </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="key744"> FFT </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/fourier.html"> math::fourier </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key95"> fifo </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/fifo.html"> tcl::chan::fifo </a> &#183; <a href="tcllib/files/modules/virtchannel_base/fifo2.html"> tcl::chan::fifo2 </a> &#183; <a href="tcllib/files/modules/virtchannel_base/halfpipe.html"> tcl::chan::halfpipe </a>







|

















|







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
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key6"> expression </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/modules/pt/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="key82"> extended namespace </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/namespacex/namespacex.html"> namespacex </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c9">Keywords: F</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key325"> faq </a></td>
<td class="#idxright" width="65%">
<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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key487"> fetching information </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="key748"> FFT </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/fourier.html"> math::fourier </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key95"> fifo </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/fifo.html"> tcl::chan::fifo </a> &#183; <a href="tcllib/files/modules/virtchannel_base/fifo2.html"> tcl::chan::fifo2 </a> &#183; <a href="tcllib/files/modules/virtchannel_base/halfpipe.html"> tcl::chan::halfpipe </a>
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
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key339"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key203"> 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key153"> final </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/try/tcllib_try.html"> try </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key574"> 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="key731"> finite </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/pool.html"> struct::pool </a>







|









|







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
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key339"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key201"> 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key153"> final </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/try/tcllib_try.html"> try </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key576"> 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="key731"> finite </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/pool.html"> struct::pool </a>
1385
1386
1387
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
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key347"> floating-point </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/fuzzy.html"> math::fuzzy </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key129"> flow </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="key448"> 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="key515"> 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="key202"> 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="key206"> 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="key199"> foreach </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"> form </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/html/html.html"> html </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="key103"> format conversion </a></td>
<td class="#idxright" width="65%">
<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>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key609"> formatter </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctools_plugin_apiref.html"> doctools_plugin_apiref </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key307"> formatting </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_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/doctools2idx/introduction.html"> doctools2idx_introduction </a> &#183; <a href="tcllib/files/modules/doctools2toc/introduction.html"> doctools2toc_introduction </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> &#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/textutil_string.html"> textutil::string </a> &#183; <a href="tcllib/files/modules/textutil/tabify.html"> textutil::tabify </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key610"> formatting engine </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/doctools/doctools_plugin_apiref.html"> doctools_plugin_apiref </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key743"> Fourier transform </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/fourier.html"> math::fourier </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key571"> FR </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2idx/msgcat_fr.html"> doctools::msgcat::idx::fr </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="key626"> frame </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/ansi_cmacros.html"> term::ansi::code::macros </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key249"> ftp </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/ftpd/ftpd.html"> ftpd </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="key557"> ftpd </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ftpd/ftpd.html"> ftpd </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key556"> ftpserver </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ftpd/ftpd.html"> ftpd </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key514"> full outer join </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
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key347"> floating-point </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/fuzzy.html"> math::fuzzy </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key124"> flow </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="key448"> 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="key515"> 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="key200"> 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="key204"> 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="key197"> foreach </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"> form </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/html/html.html"> html </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="key105"> format conversion </a></td>
<td class="#idxright" width="65%">
<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>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key609"> formatter </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools/doctools_plugin_apiref.html"> doctools_plugin_apiref </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key307"> formatting </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_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/doctools2idx/introduction.html"> doctools2idx_introduction </a> &#183; <a href="tcllib/files/modules/doctools2toc/introduction.html"> doctools2toc_introduction </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> &#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/textutil_string.html"> textutil::string </a> &#183; <a href="tcllib/files/modules/textutil/tabify.html"> textutil::tabify </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key610"> formatting engine </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/doctools/doctools_plugin_apiref.html"> doctools_plugin_apiref </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key747"> Fourier transform </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/fourier.html"> math::fourier </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key571"> FR </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2idx/msgcat_fr.html"> doctools::msgcat::idx::fr </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="key626"> frame </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/ansi_cmacros.html"> term::ansi::code::macros </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key249"> ftp </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/ftpd/ftpd.html"> ftpd </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="key558"> ftpd </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ftpd/ftpd.html"> ftpd </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key557"> ftpserver </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ftpd/ftpd.html"> ftpd </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key514"> full outer join </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
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
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key536"> 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="key207"> 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="key539"> 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="key182"> 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="key186"> 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="key89"> get character </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/receive.html"> term::receive </a>







|









|




|







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
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key536"> 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="key205"> 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="key539"> 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="key175"> 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="key179"> 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="key89"> get character </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/receive.html"> term::receive </a>
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
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key256"> 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="key179"> 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="key370"> green threads </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/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="key268"> grep </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="key196"> GUID </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uuid/uuid.html"> uuid </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c11">Keywords: H</a>
</th></tr>
<tr class="#idxeven" valign=top>







|














|







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
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key256"> 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="key186"> 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="key370"> green threads </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/coroutine/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="key268"> grep </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="key206"> GUID </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uuid/uuid.html"> uuid </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c11">Keywords: H</a>
</th></tr>
<tr class="#idxeven" valign=top>
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
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key664"> histogram </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/counter/counter.html"> counter </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key632"> hook </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/hook/hook.html"> hook </a> &#183; <a href="tcllib/files/modules/uev/uevent.html"> uevent </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key760"> horspool </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_aycock/aycock.html"> grammar::aycock </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key1"> 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/doctools/mpexpand.html"> mpexpand </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key567"> 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="#idxodd" valign=top>







|




|






|







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
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key664"> histogram </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/counter/counter.html"> counter </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key630"> hook </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/hook/hook.html"> hook </a> &#183; <a href="tcllib/files/modules/uev/uevent.html"> uevent </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key767"> horspool </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_aycock/aycock.html"> grammar::aycock </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key1"> 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key567"> 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="#idxodd" valign=top>
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key495"> 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="key135"> 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="key748"> imap </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/imap4/imap4.html"> imap4 </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key247"> import </a></td>
<td class="#idxright" width="65%">
<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> &#183; <a href="tcllib/files/modules/doctools2toc/import.html"> doctools::toc::import </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/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>







|




|







1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key495"> 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="key122"> 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="key744"> imap </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/imap4/imap4.html"> imap4 </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key247"> import </a></td>
<td class="#idxright" width="65%">
<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> &#183; <a href="tcllib/files/modules/doctools2toc/import.html"> doctools::toc::import </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/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>
1724
1725
1726
1727
1728
1729
1730
1731
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
1767
1768
1769
1770
1771
1772
1773
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key722"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key72"> info </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="key517"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key458"> 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key310"> integer </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="key726"> integration </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="key774"> inter-thread communication </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/fifo2.html"> tcl::chan::fifo2 </a>
</td></tr>
<tr class="#idxodd" 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key122"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key401"> internet address </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/dns/tcllib_ip.html"> tcllib_ip </a>







|














|



















|







1727
1728
1729
1730
1731
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
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key722"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key77"> info </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="key517"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key458"> 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key309"> integer </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="key726"> integration </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="key774"> inter-thread communication </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/fifo2.html"> tcl::chan::fifo2 </a>
</td></tr>
<tr class="#idxodd" 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key130"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key401"> internet address </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/dns/tcllib_ip.html"> tcllib_ip </a>
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key440"> isthmus </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="key204"> 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="#idxodd" valign=top>







|







1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key440"> isthmus </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="key202"> 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="#idxodd" valign=top>
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key723"> 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key241"> 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="#idxodd" valign=top>







|







1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key723"> 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key244"> 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="#idxodd" valign=top>
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
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
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key167"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key181"> latitute </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="key124"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key121"> 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key452"> ldif </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ldap/ldapx.html"> ldapx </a>
</td></tr>
<tr class="#idxodd" 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key503"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key180"> 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key436"> level graph </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>







|




|




|



















|







1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
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
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key167"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key174"> latitute </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="key132"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key129"> 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key452"> ldif </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ldap/ldapx.html"> ldapx </a>
</td></tr>
<tr class="#idxodd" 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key503"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key187"> 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key436"> level graph </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/graphops.html"> struct::graph::op </a>
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key672"> 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key529"> line </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/math_geometry.html"> math::geometry </a>
</td></tr>
<tr class="#idxodd" 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>







|







1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key672"> 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key527"> line </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/math_geometry.html"> math::geometry </a>
</td></tr>
<tr class="#idxodd" 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>
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
</td></tr>
<tr class="#idxeven" 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key184"> 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key71"> log </a></td>
<td class="#idxright" width="65%">
<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>







|







2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
</td></tr>
<tr class="#idxeven" 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key177"> 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key71"> log </a></td>
<td class="#idxright" width="65%">
<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>
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
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key501"> longest common subsequence </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="key188"> longitude </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="key406"> loop </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="#idxheader"><th colspan="2">
<a name="c16">Keywords: M</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key479"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key288"> mail </a></td>
<td class="#idxright" width="65%">
<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/pop3/pop3.html"> pop3 </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="key488"> mailto </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uri/uri.html"> uri </a>







|

















|







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
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key501"> longest common subsequence </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="key181"> longitude </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="key406"> loop </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="#idxheader"><th colspan="2">
<a name="c16">Keywords: M</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key479"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key286"> mail </a></td>
<td class="#idxright" width="65%">
<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/pop3/pop3.html"> pop3 </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="key488"> mailto </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uri/uri.html"> uri </a>
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
<td class="#idxleft" width="35%"><a name="key478"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key2"> 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/doctools/mpexpand.html"> mpexpand </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key187"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key0"> 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/doctools/mpexpand.html"> mpexpand </a> &#183; <a href="tcllib/files/apps/tcldocstrip.html"> tcldocstrip </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key11"> matching </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_interp.html"> grammar::peg::interp </a> &#183; <a href="tcllib/files/modules/pt/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> &#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="key67"> math </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/math.html"> math </a> &#183; <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/calculus.html"> math::calculus </a> &#183; <a href="tcllib/files/modules/math/qcomplex.html"> math::complexnumbers </a> &#183; <a href="tcllib/files/modules/math/constants.html"> math::constants </a> &#183; <a href="tcllib/files/modules/math/decimal.html"> math::decimal </a> &#183; <a href="tcllib/files/modules/math/fuzzy.html"> math::fuzzy </a> &#183; <a href="tcllib/files/modules/math/math_geometry.html"> math::geometry </a> &#183; <a href="tcllib/files/modules/math/interpolate.html"> math::interpolate </a> &#183; <a href="tcllib/files/modules/math/linalg.html"> math::linearalgebra </a> &#183; <a href="tcllib/files/modules/math/optimize.html"> math::optimize </a> &#183; <a href="tcllib/files/modules/math/polynomials.html"> math::polynomials </a> &#183; <a href="tcllib/files/modules/math/rational_funcs.html"> math::rationalfunctions </a> &#183; <a href="tcllib/files/modules/math/special.html"> math::special </a> &#183; <a href="tcllib/files/modules/simulation/annealing.html"> simulation::annealing </a> &#183; <a href="tcllib/files/modules/simulation/montecarlo.html"> simulation::montecarlo </a> &#183; <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="key579"> 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>







|


|






|












|







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
<td class="#idxleft" width="35%"><a name="key478"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key2"> 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key180"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key0"> 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>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key11"> matching </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_interp.html"> grammar::peg::interp </a> &#183; <a href="tcllib/files/modules/pt/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> &#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="key67"> math </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/math.html"> math </a> &#183; <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/calculus.html"> math::calculus </a> &#183; <a href="tcllib/files/modules/math/qcomplex.html"> math::complexnumbers </a> &#183; <a href="tcllib/files/modules/math/constants.html"> math::constants </a> &#183; <a href="tcllib/files/modules/math/decimal.html"> math::decimal </a> &#183; <a href="tcllib/files/modules/math/fuzzy.html"> math::fuzzy </a> &#183; <a href="tcllib/files/modules/math/math_geometry.html"> math::geometry </a> &#183; <a href="tcllib/files/modules/math/interpolate.html"> math::interpolate </a> &#183; <a href="tcllib/files/modules/math/linalg.html"> math::linearalgebra </a> &#183; <a href="tcllib/files/modules/math/optimize.html"> math::optimize </a> &#183; <a href="tcllib/files/modules/math/polynomials.html"> math::polynomials </a> &#183; <a href="tcllib/files/modules/math/rational_funcs.html"> math::rationalfunctions </a> &#183; <a href="tcllib/files/modules/math/special.html"> math::special </a> &#183; <a href="tcllib/files/modules/simulation/annealing.html"> simulation::annealing </a> &#183; <a href="tcllib/files/modules/simulation/montecarlo.html"> simulation::montecarlo </a> &#183; <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="key572"> 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>
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key493"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key576"> merge 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="key99"> merging </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bench/bench.html"> bench </a>







|







2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key493"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key578"> merge 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="key99"> merging </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bench/bench.html"> bench </a>
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
2319
2320
2321
2322
2323
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key208"> multi-file </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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key646"> 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="key245"> 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="key715"> 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="key75"> 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="key76"> 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="key437"> 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="key250"> 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="key624"> 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="key485"> 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>







|




|

















|




|














|







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
2319
2320
2321
2322
2323
2324
2325
2326
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key208"> multi-file </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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key644"> 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="key241"> 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="key715"> 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="key80"> 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="key81"> 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="key437"> 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="key250"> 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="key623"> 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="key485"> 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>
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key605"> 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="key130"> 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="key412"> 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>







|







2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key605"> 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="key125"> 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="key412"> 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>
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
<td class="#idxleft" width="35%"><a name="key100"> normalization </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bench/bench.html"> bench </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> &#183; <a href="tcllib/files/modules/stringprep/unicode.html"> unicode </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key5"> nroff </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/export_nroff.html"> doctools::idx::export::nroff </a> &#183; <a href="tcllib/files/modules/doctools2base/nroff_manmacros.html"> doctools::nroff::man_macros </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_nroff.html"> doctools::toc::export::nroff </a> &#183; <a href="tcllib/files/apps/dtplite.html"> dtplite </a> &#183; <a href="tcllib/files/modules/doctools/mpexpand.html"> mpexpand </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key82"> NTP </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ntp/ntp_time.html"> ntp_time </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key456"> null </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/null.html"> tcl::chan::null </a> &#183; <a href="tcllib/files/modules/virtchannel_base/nullzero.html"> tcl::chan::nullzero </a>







|


|







2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
<td class="#idxleft" width="35%"><a name="key100"> normalization </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bench/bench.html"> bench </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> &#183; <a href="tcllib/files/modules/stringprep/unicode.html"> unicode </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key5"> nroff </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/export_nroff.html"> doctools::idx::export::nroff </a> &#183; <a href="tcllib/files/modules/doctools2base/nroff_manmacros.html"> doctools::nroff::man_macros </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_nroff.html"> doctools::toc::export::nroff </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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key75"> NTP </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ntp/ntp_time.html"> ntp_time </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key456"> null </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/null.html"> tcl::chan::null </a> &#183; <a href="tcllib/files/modules/virtchannel_base/nullzero.html"> tcl::chan::nullzero </a>
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key264"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key697"> ordered list </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/prioqueue.html"> struct::prioqueue </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key738"> otp </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/otp.html"> tcl::transform::otp </a>







|







2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key264"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key699"> ordered list </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/prioqueue.html"> struct::prioqueue </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key738"> otp </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/otp.html"> tcl::transform::otp </a>
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key617"> package indexing </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/docstrip/docstrip_util.html"> docstrip_util </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key177"> page </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/page/page_intro.html"> page_intro </a> &#183; <a href="tcllib/files/modules/page/page_pluginmgr.html"> page_pluginmgr </a> &#183; <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> &#183; <a href="tcllib/files/modules/page/page_util_peg.html"> page_util_peg </a> &#183; <a href="tcllib/files/modules/page/page_util_quote.html"> page_util_quote </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key733"> pager </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/ipager.html"> term::interact::pager </a>







|







2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key617"> package indexing </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/docstrip/docstrip_util.html"> docstrip_util </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key184"> page </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/page/page_intro.html"> page_intro </a> &#183; <a href="tcllib/files/modules/page/page_pluginmgr.html"> page_pluginmgr </a> &#183; <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> &#183; <a href="tcllib/files/modules/page/page_util_peg.html"> page_util_peg </a> &#183; <a href="tcllib/files/modules/page/page_util_quote.html"> page_util_quote </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key733"> pager </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/ipager.html"> term::interact::pager </a>
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key15"> parser </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/doctools2base/tcl_parse.html"> doctools::tcl::parse </a> &#183; <a href="tcllib/files/modules/doctools2toc/parse.html"> doctools::toc::parse </a> &#183; <a href="tcllib/files/modules/grammar_aycock/aycock.html"> grammar::aycock </a> &#183; <a href="tcllib/files/modules/pt/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> &#183; <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="key175"> parser generator </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/apps/page.html"> page </a> &#183; <a href="tcllib/files/modules/page/page_intro.html"> page_intro </a> &#183; <a href="tcllib/files/modules/page/page_pluginmgr.html"> page_pluginmgr </a> &#183; <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> &#183; <a href="tcllib/files/modules/page/page_util_peg.html"> page_util_peg </a> &#183; <a href="tcllib/files/modules/page/page_util_quote.html"> page_util_quote </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key26"> parsing </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/bibtex/bibtex.html"> bibtex </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/doctools2idx/container.html"> doctools::idx </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/import.html"> doctools::toc::import </a> &#183; <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/modules/htmlparse/htmlparse.html"> htmlparse </a> &#183; <a href="tcllib/files/modules/yaml/huddle.html"> huddle </a> &#183; <a href="tcllib/files/modules/string/token_shell.html"> string::token::shell </a> &#183; <a href="tcllib/files/modules/yaml/yaml.html"> yaml </a>







|







2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key15"> parser </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/doctools2base/tcl_parse.html"> doctools::tcl::parse </a> &#183; <a href="tcllib/files/modules/doctools2toc/parse.html"> doctools::toc::parse </a> &#183; <a href="tcllib/files/modules/grammar_aycock/aycock.html"> grammar::aycock </a> &#183; <a href="tcllib/files/modules/pt/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> &#183; <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="key182"> parser generator </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/apps/page.html"> page </a> &#183; <a href="tcllib/files/modules/page/page_intro.html"> page_intro </a> &#183; <a href="tcllib/files/modules/page/page_pluginmgr.html"> page_pluginmgr </a> &#183; <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> &#183; <a href="tcllib/files/modules/page/page_util_peg.html"> page_util_peg </a> &#183; <a href="tcllib/files/modules/page/page_util_quote.html"> page_util_quote </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key26"> parsing </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/bibtex/bibtex.html"> bibtex </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/doctools2idx/container.html"> doctools::idx </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/import.html"> doctools::toc::import </a> &#183; <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/modules/htmlparse/htmlparse.html"> htmlparse </a> &#183; <a href="tcllib/files/modules/yaml/huddle.html"> huddle </a> &#183; <a href="tcllib/files/modules/string/token_shell.html"> string::token::shell </a> &#183; <a href="tcllib/files/modules/yaml/yaml.html"> yaml </a>
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
2520
2521
2522
2523
2524
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key544"> partial application </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/lambda/lambda.html"> lambda </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key577"> partition </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="key578"> partitioned set </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="key564"> passive </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="key644"> password </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/otp/otp.html"> otp </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key615"> patch </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/docstrip/docstrip_util.html"> docstrip_util </a>







|




|









|







2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key544"> partial application </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/lambda/lambda.html"> lambda </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key579"> partition </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="key580"> partitioned set </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="key564"> passive </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="key646"> password </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/otp/otp.html"> otp </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key615"> patch </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/docstrip/docstrip_util.html"> docstrip_util </a>
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
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key33"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key750"> 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="key147"> 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="key530"> 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="key357"> 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>







|









|







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
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key33"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key751"> 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="key147"> 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="key528"> 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="key357"> 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>
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key656"> png </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/png/png.html"> png </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key531"> point </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/math_geometry.html"> math::geometry </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key758"> polynomial functions </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/polynomials.html"> math::polynomials </a>







|







2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key656"> png </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/png/png.html"> png </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key529"> point </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/math_geometry.html"> math::geometry </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key758"> polynomial functions </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/polynomials.html"> math::polynomials </a>
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
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
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
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key260"> prioqueue </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/prioqueue.html"> struct::prioqueue </a> &#183; <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="key698"> priority queue </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/prioqueue.html"> struct::prioqueue </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key543"> proc </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="key41"> 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="key630"> 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="key599"> 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="key595"> 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="key482"> 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="key125"> 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="key773"> proxy </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/http/autoproxy.html"> autoproxy </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key161"> public key cipher </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/pki/pki.html"> pki </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key633"> publisher </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/hook/hook.html"> hook </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key7"> push down automaton </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/modules/pt/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="#idxheader"><th colspan="2">
<a name="c20">Keywords: Q</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key54"> queue </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/csv/csv.html"> csv </a> &#183; <a href="tcllib/files/modules/htmlparse/htmlparse.html"> htmlparse </a> &#183; <a href="tcllib/files/modules/struct/stack.html"> struct::stack </a> &#183; <a href="tcllib/files/modules/transfer/tqueue.html"> transfer::copy::queue </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key558"> quoting </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/page/page_util_quote.html"> page_util_quote </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c21">Keywords: R</a>
</th></tr>
<tr class="#idxeven" valign=top>







|














|









|









|














|

















|







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
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
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
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key260"> prioqueue </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/prioqueue.html"> struct::prioqueue </a> &#183; <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="key700"> priority queue </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/prioqueue.html"> struct::prioqueue </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key543"> proc </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="key41"> 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="key628"> 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="key599"> 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="key592"> 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="key482"> 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="key133"> 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="key773"> proxy </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/http/autoproxy.html"> autoproxy </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key161"> public key cipher </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/pki/pki.html"> pki </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key631"> publisher </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/hook/hook.html"> hook </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key7"> push down automaton </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/modules/pt/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="#idxheader"><th colspan="2">
<a name="c20">Keywords: Q</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key54"> queue </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/csv/csv.html"> csv </a> &#183; <a href="tcllib/files/modules/htmlparse/htmlparse.html"> htmlparse </a> &#183; <a href="tcllib/files/modules/struct/stack.html"> struct::stack </a> &#183; <a href="tcllib/files/modules/transfer/tqueue.html"> transfer::copy::queue </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key555"> quoting </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/page/page_util_quote.html"> page_util_quote </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c21">Keywords: R</a>
</th></tr>
<tr class="#idxeven" valign=top>
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key275"> random </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/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="key592"> 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="key612"> rational functions </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/rational_funcs.html"> math::rationalfunctions </a>







|







2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key275"> random </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/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="key593"> 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="key612"> rational functions </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/rational_funcs.html"> math::rationalfunctions </a>
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key16"> recursive descent </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/modules/pt/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="key198"> reduce </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="key537"> reference </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>







|







2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key16"> recursive descent </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/modules/pt/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="key196"> reduce </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="key537"> reference </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>
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key238"> 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="key105"> 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="key518"> reshuffle </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>







|







2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key238"> 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="key102"> 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="key518"> reshuffle </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key505"> reverse </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="key290"> rfc 821 </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>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key291"> rfc 822 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/mime/mime.html"> mime </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d_dbox.html"> pop3d::dbox </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="key81"> rfc 868 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ntp/ntp_time.html"> ntp_time </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key248"> rfc 959 </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/ftpd/ftpd.html"> ftpd </a>







|




|




|







2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key505"> reverse </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="key288"> rfc 821 </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>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key289"> rfc 822 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/mime/mime.html"> mime </a> &#183; <a href="tcllib/files/modules/pop3d/pop3d_dbox.html"> pop3d::dbox </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="key74"> rfc 868 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ntp/ntp_time.html"> ntp_time </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key248"> rfc 959 </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/ftpd/ftpd.html"> ftpd </a>
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
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
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
3053
3054
3055
3056
3057
3058
3059
3060
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key394"> rfc 1939 </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>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key79"> rfc 2030 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ntp/ntp_time.html"> ntp_time </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key755"> rfc 2045 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/mime/mime.html"> mime </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key756"> rfc 2046 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/mime/mime.html"> mime </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key754"> rfc 2049 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/mime/mime.html"> mime </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key193"> rfc 2104 </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> &#183; <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="key528"> 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="key123"> 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="key489"> rfc 2255 </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="key643"> rfc 2289 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/otp/otp.html"> otp </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key491"> rfc 2396 </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="key294"> rfc 2554 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/mime/smtp.html"> smtp </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key287"> rfc 2821 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/mime/smtp.html"> smtp </a> &#183; <a href="tcllib/files/modules/smtpd/smtpd.html"> smtpd </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key451"> rfc 2849 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ldap/ldapx.html"> ldapx </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key292"> rfc 3207 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/mime/smtp.html"> smtp </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key399"> 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="key126"> 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="key747"> 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="key299"> 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="key506"> 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="key336"> 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="key309"> 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="key729"> roots </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/calculus.html"> math::calculus </a>







|




|




|




|









|




|









|









|




|









|









|




|



















|







2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
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
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
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key394"> rfc 1939 </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>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key72"> rfc 2030 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ntp/ntp_time.html"> ntp_time </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key754"> rfc 2045 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/mime/mime.html"> mime </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key755"> rfc 2046 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/mime/mime.html"> mime </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key753"> rfc 2049 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/mime/mime.html"> mime </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key193"> rfc 2104 </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> &#183; <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="key532"> 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="key131"> 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="key489"> rfc 2255 </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="key645"> rfc 2289 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/otp/otp.html"> otp </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key491"> rfc 2396 </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="key292"> rfc 2554 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/mime/smtp.html"> smtp </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key285"> rfc 2821 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/mime/smtp.html"> smtp </a> &#183; <a href="tcllib/files/modules/smtpd/smtpd.html"> smtpd </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key451"> rfc 2849 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ldap/ldapx.html"> ldapx </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key290"> rfc 3207 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/mime/smtp.html"> smtp </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key399"> 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="key134"> 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="key743"> 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="key299"> 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="key506"> 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="key336"> 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="key308"> 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="key729"> roots </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/math/calculus.html"> math::calculus </a>
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key746"> SASL </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/sasl/sasl.html"> SASL </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key201"> 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="key582"> SCCS </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/rcs/rcs.html"> rcs </a>







|







3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key746"> SASL </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/sasl/sasl.html"> SASL </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key199"> 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="key582"> SCCS </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/rcs/rcs.html"> rcs </a>
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key312"> send </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/comm/comm.html"> comm </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key102"> serialization </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bee/bee.html"> bee </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/structure.html"> doctools::idx::structure </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/structure.html"> doctools::toc::structure </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_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_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_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/struct/graph.html"> struct::graph </a> &#183; <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="key57"> server </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_fetcher.html"> map::slippy::fetcher </a> &#183; <a href="tcllib/files/modules/nns/nns_common.html"> nameserv::common </a> &#183; <a href="tcllib/files/modules/nns/nns_server.html"> nameserv::server </a> &#183; <a href="tcllib/files/modules/nns/nns_intro.html"> nns_intro </a> &#183; <a href="tcllib/files/apps/nnsd.html"> nnsd </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key69"> service </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/log/logger.html"> logger </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key555"> services </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ftpd/ftpd.html"> ftpd </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="key253"> set </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/struct_set.html"> struct::set </a>







|














|







3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key312"> send </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/comm/comm.html"> comm </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key104"> serialization </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bee/bee.html"> bee </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/structure.html"> doctools::idx::structure </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/structure.html"> doctools::toc::structure </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_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_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_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/struct/graph.html"> struct::graph </a> &#183; <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="key57"> server </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_fetcher.html"> map::slippy::fetcher </a> &#183; <a href="tcllib/files/modules/nns/nns_common.html"> nameserv::common </a> &#183; <a href="tcllib/files/modules/nns/nns_server.html"> nameserv::server </a> &#183; <a href="tcllib/files/modules/nns/nns_intro.html"> nns_intro </a> &#183; <a href="tcllib/files/apps/nnsd.html"> nnsd </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key69"> service </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/log/logger.html"> logger </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key556"> services </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ftpd/ftpd.html"> ftpd </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="key253"> set </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/struct_set.html"> struct::set </a>
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
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key284"> simulated annealing </a></td>
<td class="#idxright" width="65%">
<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="key593"> simulation </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="key713"> 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="key673"> 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="key258"> 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="key185"> 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="key295"> 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>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key623"> smtpd </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/smtpd/smtpd.html"> smtpd </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key739"> Snit </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/snit/snit.html"> snit </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key333"> snit </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/tcllib_interp.html"> interp </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key80"> SNTP </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ntp/ntp_time.html"> ntp_time </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key311"> 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="key242"> 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="key388"> 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>







|



















|




|




|














|









|







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
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key284"> simulated annealing </a></td>
<td class="#idxright" width="65%">
<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="key594"> simulation </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="key713"> 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="key673"> 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="key258"> 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="key178"> 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="key293"> 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>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key624"> smtpd </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/smtpd/smtpd.html"> smtpd </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key739"> Snit </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/snit/snit.html"> snit </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key333"> snit </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/tcllib_interp.html"> interp </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key73"> SNTP </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ntp/ntp_time.html"> ntp_time </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key311"> 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="key245"> 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="key388"> 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>
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key8"> 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/modules/pt/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="key74"> 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="key594"> 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="key174"> 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>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key771"> stdin </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/std.html"> tcl::chan::std </a>







|




|




|







3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key8"> 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/modules/pt/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="key79"> 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="key595"> 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="key188"> 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>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key771"> stdin </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/std.html"> tcl::chan::std </a>
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key404"> 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="key285"> 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="key131"> 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="key769"> structured queries </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="key355"> style </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2base/html_cssdefaults.html"> doctools::html::cssdefaults </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key701"> subcommand </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="key429"> 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="key631"> 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="key686"> 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="key629"> 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="key516"> subsequence </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>







|




|




|



















|









|







3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key404"> 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="key294"> 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="key126"> 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="key765"> structured queries </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="key355"> style </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/doctools2base/html_cssdefaults.html"> doctools::html::cssdefaults </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key701"> subcommand </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="key429"> 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="key629"> 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="key686"> 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="key627"> 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="key516"> subsequence </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/struct/struct_list.html"> struct::list </a>
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_me/me_util.html"> grammar::me::util </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c23">Keywords: T</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key104"> table </a></td>
<td class="#idxright" width="65%">
<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/html/html.html"> html </a> &#183; <a href="tcllib/files/modules/report/report.html"> report </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key150"> table of contents </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/doctools2toc/introduction.html"> doctools2toc_introduction </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_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.html"> doctools::toc::import </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>







|







3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/grammar_me/me_util.html"> grammar::me::util </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c23">Keywords: T</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key101"> table </a></td>
<td class="#idxright" width="65%">
<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/html/html.html"> html </a> &#183; <a href="tcllib/files/modules/report/report.html"> report </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key150"> table of contents </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/doctools2toc/introduction.html"> doctools2toc_introduction </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_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.html"> doctools::toc::import </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>
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="key684"> 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="key246"> 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="key616"> Tcl module </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/docstrip/docstrip_util.html"> docstrip_util </a>







|







3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key684"> 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="key242"> 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="key616"> Tcl module </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/docstrip/docstrip_util.html"> docstrip_util </a>
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key711"> TclOO </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="key101"> TCLPARAM </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/pt/pt_peg_to_tclparam.html"> pt::peg::to::tclparam </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key13"> TDPL </a></td>
<td class="#idxright" width="65%">
<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/modules/pt/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>







|







3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key711"> TclOO </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="key103"> TCLPARAM </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/pt/pt_peg_to_tclparam.html"> pt::peg::to::tclparam </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key13"> TDPL </a></td>
<td class="#idxright" width="65%">
<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/modules/pt/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>
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key454"> 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key240"> text comparison </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/soundex/soundex.html"> soundex </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key588"> text conversion </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/rcs/rcs.html"> rcs </a>







|







3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key454"> 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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key243"> text comparison </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/soundex/soundex.html"> soundex </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key588"> text conversion </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/rcs/rcs.html"> rcs </a>
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key725"> text expansion </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/textutil/expander.html"> textutil::expander </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key243"> text likeness </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="key178"> text processing </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bibtex/bibtex.html"> bibtex </a> &#183; <a href="tcllib/files/modules/yaml/huddle.html"> huddle </a> &#183; <a href="tcllib/files/apps/page.html"> page </a> &#183; <a href="tcllib/files/modules/page/page_intro.html"> page_intro </a> &#183; <a href="tcllib/files/modules/page/page_pluginmgr.html"> page_pluginmgr </a> &#183; <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> &#183; <a href="tcllib/files/modules/page/page_util_peg.html"> page_util_peg </a> &#183; <a href="tcllib/files/modules/page/page_util_quote.html"> page_util_quote </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="key189"> text widget </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/textwindow.html"> tcl::chan::textwindow </a>







|




|







3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key725"> text expansion </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/textutil/expander.html"> textutil::expander </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key246"> text likeness </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="key185"> text processing </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/bibtex/bibtex.html"> bibtex </a> &#183; <a href="tcllib/files/modules/yaml/huddle.html"> huddle </a> &#183; <a href="tcllib/files/apps/page.html"> page </a> &#183; <a href="tcllib/files/modules/page/page_intro.html"> page_intro </a> &#183; <a href="tcllib/files/modules/page/page_pluginmgr.html"> page_pluginmgr </a> &#183; <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> &#183; <a href="tcllib/files/modules/page/page_util_peg.html"> page_util_peg </a> &#183; <a href="tcllib/files/modules/page/page_util_quote.html"> page_util_quote </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="key189"> text widget </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/textwindow.html"> tcl::chan::textwindow </a>
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key35"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key136"> tif </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tiff/tiff.html"> tiff </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key134"> 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>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key340"> tile </a></td>
<td class="#idxright" width="65%">
<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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key83"> time </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ntp/ntp_time.html"> ntp_time </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key655"> timestamp </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/png/png.html"> png </a>







|




|









|







3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key35"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key123"> tif </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/tiff/tiff.html"> tiff </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key121"> 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>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key340"> tile </a></td>
<td class="#idxright" width="65%">
<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="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key76"> time </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ntp/ntp_time.html"> ntp_time </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key655"> timestamp </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/png/png.html"> png </a>
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key190"> Tk </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/textwindow.html"> tcl::chan::textwindow </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key289"> 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="key4"> 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/doctools/mpexpand.html"> mpexpand </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key149"> 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>







|






|







3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key190"> Tk </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/textwindow.html"> tcl::chan::textwindow </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key287"> 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="key4"> 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="key149"> 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>
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key254"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key767"> tree query language </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="key176"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key766"> TreeQL </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="key380"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key109"> 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="#idxheader"><th colspan="2">
<a name="c24">Keywords: U</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key634"> uevent </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/hook/hook.html"> hook </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key660"> unbind </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uev/uevent.html"> uevent </a>







|




|




|

















|







3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key254"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key763"> tree query language </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="key183"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key762"> TreeQL </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="key380"> 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="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key109"> 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="#idxheader"><th colspan="2">
<a name="c24">Keywords: U</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key632"> uevent </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/hook/hook.html"> hook </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key660"> unbind </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uev/uevent.html"> uevent </a>
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
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="key597"> 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="key575"> 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="key559"> 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="key78"> 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="key34"> 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>







|









|







3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key597"> 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="key577"> 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="key559"> 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="key83"> 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="key34"> 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>
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
3861
3862
3863
3864
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key483"> 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="key527"> 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="key73"> utilities </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="key223"> uuencode </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/base64/uuencode.html"> uuencode </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key197"> UUID </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uuid/uuid.html"> uuid </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c25">Keywords: V</a>
</th></tr>
<tr class="#idxeven" valign=top>







|




|









|







3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key483"> 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="key531"> 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="key78"> utilities </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="key223"> uuencode </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/base64/uuencode.html"> uuencode </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key207"> UUID </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/uuid/uuid.html"> uuid </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c25">Keywords: V</a>
</th></tr>
<tr class="#idxeven" valign=top>
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
3960
3961
3962
3963
3964
3965
3966
3967
3968
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key373"> x.209 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/asn/asn.html"> asn </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key128"> x.500 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ldap/ldap.html"> ldap </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key700"> xml </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="key736"> xor </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="key764"> XPath </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="key768"> XSLT </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/treeql/treeql.html"> treeql </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c28">Keywords: Y</a>
</th></tr>
<tr class="#idxodd" valign=top>







|




|









|




|







3937
3938
3939
3940
3941
3942
3943
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
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key373"> x.209 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/asn/asn.html"> asn </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key136"> x.500 </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/ldap/ldap.html"> ldap </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key698"> xml </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="key736"> xor </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="key760"> XPath </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="key764"> XSLT </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/treeql/treeql.html"> treeql </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c28">Keywords: Y</a>
</th></tr>
<tr class="#idxodd" valign=top>
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key321"> zlib </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/zlib.html"> tcl::transform::zlib </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key183"> zoom </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>
</table>
</body></html>







|





3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key321"> zlib </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/zlib.html"> tcl::transform::zlib </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key176"> zoom </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>
</table>
</body></html>

Changes to embedded/www/tcllib/files/apps/dtplite.html.

96
97
98
99
100
101
102

103
104
105
106


107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ dtplite.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>


] <hr>
<h1 class="title">dtplite(n) 1.0 tcllib &quot;Documentation toolbox&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>dtplite - Lightweight DocTools Markup Processor</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>







>
|


|
>
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ dtplite.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">dtplite(n) 1.0 tcllib &quot;Documentation toolbox&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>dtplite - Lightweight DocTools Markup Processor</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>
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<li><a href="#2"><b class="cmd">dtplite</b> <b class="const">validate</b> <i class="arg">inputfile</i></a></li>
<li><a href="#3"><b class="cmd">dtplite</b> <b class="option">-o</b> <i class="arg">output</i> <span class="opt">?options?</span> <i class="arg">format</i> <i class="arg">inputdirectory</i></a></li>
<li><a href="#4"><b class="cmd">dtplite</b> <b class="option">-merge</b> <b class="option">-o</b> <i class="arg">output</i> <span class="opt">?options?</span> <i class="arg">format</i> <i class="arg">inputdirectory</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>The application described by this document, <b class="syscmd">dtplite</b>, is the
successor to the extremely simple <b class="syscmd"><a href="../modules/doctools/mpexpand.html">mpexpand</a></b>. Influenced in its
functionality by the <b class="syscmd">dtp</b> doctools processor it is much more
powerful than <b class="syscmd"><a href="../modules/doctools/mpexpand.html">mpexpand</a></b>, yet still as easy to use; definitely
easier than <b class="syscmd">dtp</b> with its myriad of subcommands and options.</p>
<p><b class="syscmd">dtplite</b> is based upon the package <b class="package"><a href="../modules/doctools/doctools.html">doctools</a></b>, like
the other two processors.</p>
<div id="subsection1" class="subsection"><h3><a name="subsection1">USE CASES</a></h3>
<p><b class="syscmd">dtplite</b> was written with the following three use cases in
mind.</p>
<ol class="enumerated">
<li><p>Validation of a single document, i.e. checking that it was written in
valid doctools format. This mode can also be used to get a preliminary
version of the formatted output for a single document, for display in
a browser, nroff, etc., allowing proofreading of the formatting.</p></li>
<li><p>Generation of the formatted documentation for a single package,







|




|


|







139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
<li><a href="#2"><b class="cmd">dtplite</b> <b class="const">validate</b> <i class="arg">inputfile</i></a></li>
<li><a href="#3"><b class="cmd">dtplite</b> <b class="option">-o</b> <i class="arg">output</i> <span class="opt">?options?</span> <i class="arg">format</i> <i class="arg">inputdirectory</i></a></li>
<li><a href="#4"><b class="cmd">dtplite</b> <b class="option">-merge</b> <b class="option">-o</b> <i class="arg">output</i> <span class="opt">?options?</span> <i class="arg">format</i> <i class="arg">inputdirectory</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>The application described by this document, <b class="syscmd"><a href="../modules/dtplite/dtplite.html">dtplite</a></b>, is the
successor to the extremely simple <b class="syscmd"><a href="../modules/doctools/mpexpand.html">mpexpand</a></b>. Influenced in its
functionality by the <b class="syscmd">dtp</b> doctools processor it is much more
powerful than <b class="syscmd"><a href="../modules/doctools/mpexpand.html">mpexpand</a></b>, yet still as easy to use; definitely
easier than <b class="syscmd">dtp</b> with its myriad of subcommands and options.</p>
<p><b class="syscmd"><a href="../modules/dtplite/dtplite.html">dtplite</a></b> is based upon the package <b class="package"><a href="../modules/doctools/doctools.html">doctools</a></b>, like
the other two processors.</p>
<div id="subsection1" class="subsection"><h3><a name="subsection1">USE CASES</a></h3>
<p><b class="syscmd"><a href="../modules/dtplite/dtplite.html">dtplite</a></b> was written with the following three use cases in
mind.</p>
<ol class="enumerated">
<li><p>Validation of a single document, i.e. checking that it was written in
valid doctools format. This mode can also be used to get a preliminary
version of the formatted output for a single document, for display in
a browser, nroff, etc., allowing proofreading of the formatting.</p></li>
<li><p>Generation of the formatted documentation for a single package,
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
generated document.
While all can be set as long as the formatting engine provides an
appropriate engine parameter (See section <span class="sectref"><a href="#subsection3">OPTIONS</a></span>) the last
two have internal processing which make them specific to HTML.</p>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">COMMAND LINE</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">dtplite</b> <b class="option">-o</b> <i class="arg">output</i> <span class="opt">?options?</span> <i class="arg">format</i> <i class="arg">inputfile</i></a></dt>
<dd><p>This is the form for use case [1]. The <i class="arg">options</i> will be
explained later, in section <span class="sectref"><a href="#subsection3">OPTIONS</a></span>.</p>
<dl class="arguments">
<dt>path <i class="arg">output</i> (in)</dt>
<dd><p>This argument specifies where to write the generated document. It can
be the path to a file or directory, or <b class="const">-</b>.
The last value causes the application to write the generated







|







175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
generated document.
While all can be set as long as the formatting engine provides an
appropriate engine parameter (See section <span class="sectref"><a href="#subsection3">OPTIONS</a></span>) the last
two have internal processing which make them specific to HTML.</p>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">COMMAND LINE</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd"><a href="../modules/dtplite/dtplite.html">dtplite</a></b> <b class="option">-o</b> <i class="arg">output</i> <span class="opt">?options?</span> <i class="arg">format</i> <i class="arg">inputfile</i></a></dt>
<dd><p>This is the form for use case [1]. The <i class="arg">options</i> will be
explained later, in section <span class="sectref"><a href="#subsection3">OPTIONS</a></span>.</p>
<dl class="arguments">
<dt>path <i class="arg">output</i> (in)</dt>
<dd><p>This argument specifies where to write the generated document. It can
be the path to a file or directory, or <b class="const">-</b>.
The last value causes the application to write the generated
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
<dd><p>This argument specifies the formatting engine to use when processing
the input, and thus the format of the generated document. See section
<span class="sectref"><a href="#subsection4">FORMATS</a></span> for the possibilities recognized by the application.</p></dd>
<dt>path <i class="arg">inputfile</i> (in)</dt>
<dd><p>This argument specifies the path to the file to process. It has to
exist, must be readable, and written in <i class="term"><a href="../../../index.html#key51">doctools</a></i> format.</p></dd>
</dl></dd>
<dt><a name="2"><b class="cmd">dtplite</b> <b class="const">validate</b> <i class="arg">inputfile</i></a></dt>
<dd><p>This is a simpler form for use case [1]. The &quot;validate&quot; 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.</p></dd>
<dt><a name="3"><b class="cmd">dtplite</b> <b class="option">-o</b> <i class="arg">output</i> <span class="opt">?options?</span> <i class="arg">format</i> <i class="arg">inputdirectory</i></a></dt>
<dd><p>This is the form for use case [2]. It differs from the form for
use case [1] by having the input documents specified through a
directory instead of a file. The other arguments are identical, except
for <i class="arg">output</i>, which now has to be the path to an existing and
writable directory.</p>
<p>The input documents are all files in <i class="arg">inputdirectory</i> or any of
its subdirectories which were recognized by <b class="cmd">fileutil::fileType</b>
as containing text in <i class="term"><a href="../../../index.html#key51">doctools</a></i> format.</p></dd>
<dt><a name="4"><b class="cmd">dtplite</b> <b class="option">-merge</b> <b class="option">-o</b> <i class="arg">output</i> <span class="opt">?options?</span> <i class="arg">format</i> <i class="arg">inputdirectory</i></a></dt>
<dd><p>This is the form for use case [3]. The only difference to the
form for use case [2] is the additional option <b class="option">-merge</b>.</p>
<p>Each such call will merge the generated documents coming from
processing the input documents under <i class="arg">inputdirectory</i> or any of
its subdirectories to the files under <i class="arg">output</i>. In this manner it
is possible to incrementally build the unified documentation for any
number of packages. Note that it is necessary to run through all the







|




|








|







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
<dd><p>This argument specifies the formatting engine to use when processing
the input, and thus the format of the generated document. See section
<span class="sectref"><a href="#subsection4">FORMATS</a></span> for the possibilities recognized by the application.</p></dd>
<dt>path <i class="arg">inputfile</i> (in)</dt>
<dd><p>This argument specifies the path to the file to process. It has to
exist, must be readable, and written in <i class="term"><a href="../../../index.html#key51">doctools</a></i> format.</p></dd>
</dl></dd>
<dt><a name="2"><b class="cmd"><a href="../modules/dtplite/dtplite.html">dtplite</a></b> <b class="const">validate</b> <i class="arg">inputfile</i></a></dt>
<dd><p>This is a simpler form for use case [1]. The &quot;validate&quot; 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.</p></dd>
<dt><a name="3"><b class="cmd"><a href="../modules/dtplite/dtplite.html">dtplite</a></b> <b class="option">-o</b> <i class="arg">output</i> <span class="opt">?options?</span> <i class="arg">format</i> <i class="arg">inputdirectory</i></a></dt>
<dd><p>This is the form for use case [2]. It differs from the form for
use case [1] by having the input documents specified through a
directory instead of a file. The other arguments are identical, except
for <i class="arg">output</i>, which now has to be the path to an existing and
writable directory.</p>
<p>The input documents are all files in <i class="arg">inputdirectory</i> or any of
its subdirectories which were recognized by <b class="cmd">fileutil::fileType</b>
as containing text in <i class="term"><a href="../../../index.html#key51">doctools</a></i> format.</p></dd>
<dt><a name="4"><b class="cmd"><a href="../modules/dtplite/dtplite.html">dtplite</a></b> <b class="option">-merge</b> <b class="option">-o</b> <i class="arg">output</i> <span class="opt">?options?</span> <i class="arg">format</i> <i class="arg">inputdirectory</i></a></dt>
<dd><p>This is the form for use case [3]. The only difference to the
form for use case [2] is the additional option <b class="option">-merge</b>.</p>
<p>Each such call will merge the generated documents coming from
processing the input documents under <i class="arg">inputdirectory</i> or any of
its subdirectories to the files under <i class="arg">output</i>. In this manner it
is possible to incrementally build the unified documentation for any
number of packages. Note that it is necessary to run through all the

Changes to embedded/www/tcllib/files/apps/nns.html.

96
97
98
99
100
101
102

103
104
105
106


107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ nns.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>


] <hr>
<h1 class="title">nns(n) 1.1 tcllib &quot;Name service facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>nns - Name service facility, Commandline Client Application</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>







>
|


|
>
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ nns.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">nns(n) 1.1 tcllib &quot;Name service facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>nns - Name service facility, Commandline Client Application</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>

Changes to embedded/www/tcllib/files/apps/nnsd.html.

96
97
98
99
100
101
102

103
104
105
106


107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ nnsd.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>


] <hr>
<h1 class="title">nnsd(n) 1.0.1 tcllib &quot;Name service facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>nnsd - Name service facility, Commandline Server Application</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>







>
|


|
>
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ nnsd.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">nnsd(n) 1.0.1 tcllib &quot;Name service facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>nnsd - Name service facility, Commandline Server Application</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>

Changes to embedded/www/tcllib/files/apps/nnslog.html.

96
97
98
99
100
101
102

103
104
105
106


107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ nnslog.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>


] <hr>
<h1 class="title">nnslog(n) 1.0 tcllib &quot;Name service facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>nnslog - Name service facility, Commandline Logging Client Application</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>







>
|


|
>
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ nnslog.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">nnslog(n) 1.0 tcllib &quot;Name service facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>nnslog - Name service facility, Commandline Logging Client Application</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>

Changes to embedded/www/tcllib/files/apps/page.html.

96
97
98
99
100
101
102

103
104
105
106


107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ page.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>


] <hr>
<h1 class="title">page(n) 1.0 tcllib &quot;Development Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>page - Parser Generator</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>







>
|


|
>
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ page.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">page(n) 1.0 tcllib &quot;Development Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>page - Parser Generator</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>
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
<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#key180">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#key187">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>
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
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#key175">parser generator</a>, <a href="../../../index.html#key178">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; 2005 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|








461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
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#key182">parser generator</a>, <a href="../../../index.html#key185">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; 2005 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/apps/tcldocstrip.html.

96
97
98
99
100
101
102

103
104
105
106


107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcldocstrip.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>


] <hr>
<h1 class="title">tcldocstrip(n) 1.0 tcllib &quot;Textprocessing toolbox&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcldocstrip - Tcl-based Docstrip Processor</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>







>
|


|
>
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcldocstrip.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">tcldocstrip(n) 1.0 tcllib &quot;Textprocessing toolbox&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcldocstrip - Tcl-based Docstrip Processor</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>

Changes to embedded/www/tcllib/files/modules/aes/aes.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- 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="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>

| <a href="/tcllib">Home</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- 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>

Changes to embedded/www/tcllib/files/modules/amazon-s3/S3.html.

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
	margin-bottom: 	1em;
	border-bottom:	1px solid black;
    }
--></style>
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/amazon-s3/S3.html' by tcllib/doctools with format 'html'
   -->
<! -- Copyright &copy; Copyright 2006,2008 Darren New. All Rights Reserved. See LICENSE.TXT for terms.
   -->
<! -- CVS: $Id$ S3.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">S3(n) 1.0.0 tcllib &quot;Amazon S3 Web Service Utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>S3 - Amazon S3 Web Service Interface</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>







|





>
|


>
|
>
|







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
	margin-bottom: 	1em;
	border-bottom:	1px solid black;
    }
--></style>
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/amazon-s3/S3.html' by tcllib/doctools with format 'html'
   -->
<! -- 2006,2008 Darren New. All Rights Reserved. See LICENSE.TXT for terms.
   -->
<! -- CVS: $Id$ S3.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">S3(n) 1.0.0 tcllib &quot;Amazon S3 Web Service Utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>S3 - Amazon S3 Web Service Interface</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>
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
<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://tcllib.sourceforge.net/">http://tcllib.sourceforge.net/</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







|







231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
<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
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key474">amazon</a>, <a href="../../../../index.html#key475">cloud</a>, <a href="../../../../index.html#key473">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>Copyright &copy; Copyright 2006,2008 Darren New. All Rights Reserved. See LICENSE.TXT for terms.</p>
</div>
</div></body></html>







|


1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key474">amazon</a>, <a href="../../../../index.html#key475">cloud</a>, <a href="../../../../index.html#key473">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.

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
	margin-bottom: 	1em;
	border-bottom:	1px solid black;
    }
--></style>
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/amazon-s3/xsxp.html' by tcllib/doctools with format 'html'
   -->
<! -- Copyright &copy; Copyright 2006 Darren New. All Rights Reserved.
   -->
<! -- CVS: $Id$ xsxp.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">xsxp(n) 1.0 tcllib &quot;Amazon S3 Web Service Utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>xsxp - eXtremely Simple Xml Parser</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>







|





>
|


>
|
>
|







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
	margin-bottom: 	1em;
	border-bottom:	1px solid black;
    }
--></style>
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/amazon-s3/xsxp.html' by tcllib/doctools with format 'html'
   -->
<! -- 2006 Darren New. All Rights Reserved.
   -->
<! -- CVS: $Id$ xsxp.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">xsxp(n) 1.0 tcllib &quot;Amazon S3 Web Service Utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>xsxp - eXtremely Simple Xml Parser</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>
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
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#key699">dom</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key700">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>Copyright &copy; Copyright 2006 Darren New. All Rights Reserved.</p>
</div>
</div></body></html>







|





|


231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
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#key697">dom</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key698">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;   -- Copyright &copy; 2004 Jochen Loewer &lt;[email protected]&gt;   -- Copyright &copy; 2004-2011 Michael Schlenker &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ asn.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">asn(n) 0.8 tcllib &quot;ASN.1 processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>asn - ASN.1 BER encoder/decoder</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;   -- Copyright &copy; 2004 Jochen Loewer &lt;[email protected]&gt;   -- Copyright &copy; 2004-2011 Michael Schlenker &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ asn.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">asn(n) 0.8 tcllib &quot;ASN.1 processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>asn - ASN.1 BER encoder/decoder</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>
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
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#key376">asn</a>, <a href="../../../../index.html#key374">ber</a>, <a href="../../../../index.html#key375">cer</a>, <a href="../../../../index.html#key377">der</a>, <a href="../../../../index.html#key122">internet</a>, <a href="../../../../index.html#key125">protocol</a>, <a href="../../../../index.html#key372">x.208</a>, <a href="../../../../index.html#key373">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>







|










490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
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#key376">asn</a>, <a href="../../../../index.html#key374">ber</a>, <a href="../../../../index.html#key375">cer</a>, <a href="../../../../index.html#key377">der</a>, <a href="../../../../index.html#key130">internet</a>, <a href="../../../../index.html#key133">protocol</a>, <a href="../../../../index.html#key372">x.208</a>, <a href="../../../../index.html#key373">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.

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
	margin-bottom: 	1em;
	border-bottom:	1px solid black;
    }
--></style>
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/base32/base32.html' by tcllib/doctools with format 'html'
   -->
<! -- Copyright &copy; Public domain
   -->
<! -- CVS: $Id$ base32.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">base32(n) 0.1 tcllib &quot;Base32 encoding&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>base32 - base32 standard encoding</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>







|





>
|


>
|
>
|







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
	margin-bottom: 	1em;
	border-bottom:	1px solid black;
    }
--></style>
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/base32/base32.html' by tcllib/doctools with format 'html'
   -->
<! -- Public domain
   -->
<! -- CVS: $Id$ base32.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">base32(n) 0.1 tcllib &quot;Base32 encoding&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>base32 - base32 standard encoding</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>
191
192
193
194
195
196
197
198
199
200
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key251">base32</a>, <a href="../../../../index.html#key299">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>Copyright &copy; Public domain</p>
</div>
</div></body></html>







|


194
195
196
197
198
199
200
201
202
203
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key251">base32</a>, <a href="../../../../index.html#key299">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.

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
	margin-bottom: 	1em;
	border-bottom:	1px solid black;
    }
--></style>
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/base32/base32core.html' by tcllib/doctools with format 'html'
   -->
<! -- Copyright &copy; Public domain
   -->
<! -- CVS: $Id$ base32::core.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">base32::core(n) 0.1 tcllib &quot;Base32 encoding&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>base32::core - Expanding basic base32 maps</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>







|





>
|


>
|
>
|







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
	margin-bottom: 	1em;
	border-bottom:	1px solid black;
    }
--></style>
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/base32/base32core.html' by tcllib/doctools with format 'html'
   -->
<! -- Public domain
   -->
<! -- CVS: $Id$ base32::core.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">base32::core(n) 0.1 tcllib &quot;Base32 encoding&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>base32::core - Expanding basic base32 maps</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>
181
182
183
184
185
186
187
188
189
190
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key251">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>Copyright &copy; Public domain</p>
</div>
</div></body></html>







|


184
185
186
187
188
189
190
191
192
193
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key251">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.

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
	margin-bottom: 	1em;
	border-bottom:	1px solid black;
    }
--></style>
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/base32/base32hex.html' by tcllib/doctools with format 'html'
   -->
<! -- Copyright &copy; Public domain
   -->
<! -- CVS: $Id$ base32::hex.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">base32::hex(n) 0.1 tcllib &quot;Base32 encoding&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>base32::hex - base32 extended hex encoding</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>







|





>
|


>
|
>
|







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
	margin-bottom: 	1em;
	border-bottom:	1px solid black;
    }
--></style>
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/base32/base32hex.html' by tcllib/doctools with format 'html'
   -->
<! -- Public domain
   -->
<! -- CVS: $Id$ base32::hex.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">base32::hex(n) 0.1 tcllib &quot;Base32 encoding&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>base32::hex - base32 extended hex encoding</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>
193
194
195
196
197
198
199
200
201
202
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key251">base32</a>, <a href="../../../../index.html#key298">hex</a>, <a href="../../../../index.html#key299">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>Copyright &copy; Public domain</p>
</div>
</div></body></html>







|


196
197
198
199
200
201
202
203
204
205
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key251">base32</a>, <a href="../../../../index.html#key298">hex</a>, <a href="../../../../index.html#key299">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.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2010, Emiliano Gavil&aacute;n
   -->
<! -- CVS: $Id$ ascii85.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">ascii85(n) 1.0 tcllib &quot;Text encoding &amp; decoding binary data&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>ascii85 - ascii85-encode/decode binary data</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2010, Emiliano Gavil&aacute;n
   -->
<! -- CVS: $Id$ ascii85.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">ascii85(n) 1.0 tcllib &quot;Text encoding &amp; decoding binary data&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>ascii85 - ascii85-encode/decode binary data</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>

Changes to embedded/www/tcllib/files/modules/base64/base64.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2000, Eric Melski   -- Copyright &copy; 2001, Miguel Sofer
   -->
<! -- CVS: $Id$ base64.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">base64(n) 2.4.2 tcllib &quot;Text encoding &amp; decoding binary data&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>base64 - base64-encode/decode binary data</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2000, Eric Melski   -- Copyright &copy; 2001, Miguel Sofer
   -->
<! -- CVS: $Id$ base64.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">base64(n) 2.4.2 tcllib &quot;Text encoding &amp; decoding binary data&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>base64 - base64-encode/decode binary data</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>

Changes to embedded/www/tcllib/files/modules/base64/uuencode.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2002, Pat Thoyts
   -->
<! -- CVS: $Id$ uuencode.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">uuencode(n) 1.1.4 tcllib &quot;Text encoding &amp; decoding binary data&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>uuencode - UU-encode/decode binary data</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2002, Pat Thoyts
   -->
<! -- CVS: $Id$ uuencode.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">uuencode(n) 1.1.4 tcllib &quot;Text encoding &amp; decoding binary data&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>uuencode - UU-encode/decode binary data</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>

Changes to embedded/www/tcllib/files/modules/base64/yencode.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2002, Pat Thoyts
   -->
<! -- CVS: $Id$ yencode.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">yencode(n) 1.1.2 tcllib &quot;Text encoding &amp; decoding binary data&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>yencode - Y-encode/decode binary data</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2002, Pat Thoyts
   -->
<! -- CVS: $Id$ yencode.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">yencode(n) 1.1.2 tcllib &quot;Text encoding &amp; decoding binary data&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>yencode - Y-encode/decode binary data</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>

Changes to embedded/www/tcllib/files/modules/bee/bee.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ bee.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">bee(n) 0.1 tcllib &quot;BitTorrent&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>bee - BitTorrent Serialization Format Encoder/Decoder</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ bee.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">bee(n) 0.1 tcllib &quot;BitTorrent&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>bee - BitTorrent Serialization Format Encoder/Decoder</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>
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
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#key342">BitTorrent</a>, <a href="../../../../index.html#key341">bee</a>, <a href="../../../../index.html#key343">bittorrent</a>, <a href="../../../../index.html#key102">serialization</a>, <a href="../../../../index.html#key344">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>







|








366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
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#key342">BitTorrent</a>, <a href="../../../../index.html#key341">bee</a>, <a href="../../../../index.html#key343">bittorrent</a>, <a href="../../../../index.html#key104">serialization</a>, <a href="../../../../index.html#key344">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ bench.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">bench(n) 0.4 tcllib &quot;Benchmarking/Performance tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>bench - bench - Processing benchmark suites</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ bench.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">bench(n) 0.4 tcllib &quot;Benchmarking/Performance tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>bench - bench - Processing benchmark suites</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>

Changes to embedded/www/tcllib/files/modules/bench/bench_intro.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ bench_intro.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">bench_intro(n) 1.0 tcllib &quot;Benchmarking/Performance tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ bench_intro.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">bench_intro(n) 1.0 tcllib &quot;Benchmarking/Performance tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/bench/bench_lang_intro.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ bench_lang_intro.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">bench_lang_intro(n) 1.0 tcllib &quot;Benchmarking/Performance tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>bench_lang_intro - bench language 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ bench_lang_intro.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">bench_lang_intro(n) 1.0 tcllib &quot;Benchmarking/Performance tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>bench_lang_intro - bench language 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>

Changes to embedded/www/tcllib/files/modules/bench/bench_lang_spec.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ bench_lang_spec.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">bench_lang_spec(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>bench_lang_spec - bench language specification</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ bench_lang_spec.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">bench_lang_spec(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>bench_lang_spec - bench language specification</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>

Changes to embedded/www/tcllib/files/modules/bench/bench_read.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ bench::in.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">bench::in(n) 0.1 tcllib &quot;Benchmarking/Performance tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>bench::in - bench::in - Reading benchmark results</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ bench::in.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">bench::in(n) 0.1 tcllib &quot;Benchmarking/Performance tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>bench::in - bench::in - Reading benchmark results</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>

Changes to embedded/www/tcllib/files/modules/bench/bench_wcsv.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ bench::out::csv.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">bench::out::csv(n) 0.1.2 tcllib &quot;Benchmarking/Performance tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>bench::out::csv - bench::out::csv - Formatting benchmark results as CSV</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ bench::out::csv.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">bench::out::csv(n) 0.1.2 tcllib &quot;Benchmarking/Performance tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>bench::out::csv - bench::out::csv - Formatting benchmark results as CSV</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>

Changes to embedded/www/tcllib/files/modules/bench/bench_wtext.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ bench::out::text.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">bench::out::text(n) 0.1.2 tcllib &quot;Benchmarking/Performance tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>bench::out::text - bench::out::text - Formatting benchmark results as human readable text</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ bench::out::text.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">bench::out::text(n) 0.1.2 tcllib &quot;Benchmarking/Performance tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>bench::out::text - bench::out::text - Formatting benchmark results as human readable text</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>

Changes to embedded/www/tcllib/files/modules/bibtex/bibtex.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2005 for documentation, Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ bibtex.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">bibtex(n) 0.5 tcllib &quot;bibtex&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2005 for documentation, Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ bibtex.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">bibtex(n) 0.5 tcllib &quot;bibtex&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
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#key378">bibliography</a>, <a href="../../../../index.html#key379">bibtex</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key178">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>







|








243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
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#key378">bibliography</a>, <a href="../../../../index.html#key379">bibtex</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key185">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2003, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ blowfish.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">blowfish(n) 1.0.3 tcllib &quot;Blowfish Block Cipher&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>blowfish - Implementation of the Blowfish 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2003, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ blowfish.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">blowfish(n) 1.0.3 tcllib &quot;Blowfish Block Cipher&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>blowfish - Implementation of the Blowfish 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>

Changes to embedded/www/tcllib/files/modules/cache/async.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ cache::async.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">cache::async(n) 0.3 tcllib &quot;In-memory caches&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cache::async - Asynchronous in-memory cache</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ cache::async.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">cache::async(n) 0.3 tcllib &quot;In-memory caches&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cache::async - Asynchronous in-memory cache</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>

Changes to embedded/www/tcllib/files/modules/clock/iso8601.html.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/clock/iso8601.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ clock_iso8601.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">clock_iso8601(n) 0.1 tcllib &quot;Date/Time Utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/clock/iso8601.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ clock_iso8601.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">clock_iso8601(n) 0.1 tcllib &quot;Date/Time Utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/clock/rfc2822.html.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/clock/rfc2822.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ clock_rfc2822.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">clock_rfc2822(n) 0.1 tcllib &quot;Date/Time Utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/clock/rfc2822.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ clock_rfc2822.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">clock_rfc2822(n) 0.1 tcllib &quot;Date/Time Utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/cmdline/cmdline.html.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/cmdline/cmdline.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ cmdline.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">cmdline(n) 1.3.3 tcllib &quot;Command line and option processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdline - Procedures to process command lines and options.</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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/cmdline/cmdline.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ cmdline.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">cmdline(n) 1.3.3 tcllib &quot;Command line and option processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdline - Procedures to process command lines and options.</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>

Changes to embedded/www/tcllib/files/modules/comm/comm.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 1995-1998 The Open Group. All Rights Reserved.   -- Copyright &copy; 2003-2004 ActiveState Corporation.   -- Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ comm.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">comm(n) 4.6.2 tcllib &quot;Remote communication&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>comm - A remote communication facility for Tcl (8.3 and later)</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 1995-1998 The Open Group. All Rights Reserved.   -- Copyright &copy; 2003-2004 ActiveState Corporation.   -- Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ comm.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">comm(n) 4.6.2 tcllib &quot;Remote communication&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>comm - A remote communication facility for Tcl (8.3 and later)</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>
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
</pre>
<p>The <b class="cmd">eval</b> hook (described below) can be used to change from
<b class="cmd"><a href="../../../../index.html#key312">send</a></b>'s double eval semantics to single eval semantics.</p>
</div>
<div id="subsection3" class="subsection"><h3><a name="subsection3">Multiple Channels</a></h3>
<p>More than one <b class="cmd">comm</b> channel (or <em>listener</em>) can be created
in each Tcl interpreter.  This allows flexibility to create full and
restricted channels.  For instance, <i class="term"><a href="../../../../index.html#key632">hook</a></i> scripts are specific
to the channel they are defined against.</p>
<dl class="definitions">
<dt><a name="5"><b class="cmd">::comm::comm new</b> <i class="arg">chan</i> <span class="opt">?<i class="arg">name value ...</i>?</span></a></dt>
<dd><p>This creates a new channel and Tcl command with the given channel
name.  This new command controls the new channel and takes all the
same arguments as <b class="cmd">::comm::comm</b>.  Any remaining arguments are
passed to the <b class="cmd">config</b> method.  The fully qualified channel







|







248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
</pre>
<p>The <b class="cmd">eval</b> hook (described below) can be used to change from
<b class="cmd"><a href="../../../../index.html#key312">send</a></b>'s double eval semantics to single eval semantics.</p>
</div>
<div id="subsection3" class="subsection"><h3><a name="subsection3">Multiple Channels</a></h3>
<p>More than one <b class="cmd">comm</b> channel (or <em>listener</em>) can be created
in each Tcl interpreter.  This allows flexibility to create full and
restricted channels.  For instance, <i class="term"><a href="../../../../index.html#key630">hook</a></i> scripts are specific
to the channel they are defined against.</p>
<dl class="definitions">
<dt><a name="5"><b class="cmd">::comm::comm new</b> <i class="arg">chan</i> <span class="opt">?<i class="arg">name value ...</i>?</span></a></dt>
<dd><p>This creates a new channel and Tcl command with the given channel
name.  This new command controls the new channel and takes all the
same arguments as <b class="cmd">::comm::comm</b>.  Any remaining arguments are
passed to the <b class="cmd">config</b> method.  The fully qualified channel
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
</div>
<div id="subsection11" class="subsection"><h3><a name="subsection11">Security</a></h3>
<p>Starting with version 4.6 of the package an option <b class="option">-socketcmd</b>
is supported, allowing the user of a comm channel to specify which
command to use when opening a socket. Anything which is API-compatible
with the builtin <b class="cmd">::socket</b> (the default) can be used.</p>
<p>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#key289">tls</a></b>, to secure the communication.</p>
<pre class="example">
	# Load and initialize tls
	package require tls
	tls::init  -cafile /path/to/ca/cert -keyfile ...
	# Create secured comm channel
	::comm::comm new SECURE -socketcmd tls::socket -listen 1
	...







|







632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
</div>
<div id="subsection11" class="subsection"><h3><a name="subsection11">Security</a></h3>
<p>Starting with version 4.6 of the package an option <b class="option">-socketcmd</b>
is supported, allowing the user of a comm channel to specify which
command to use when opening a socket. Anything which is API-compatible
with the builtin <b class="cmd">::socket</b> (the default) can be used.</p>
<p>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#key287">tls</a></b>, to secure the communication.</p>
<pre class="example">
	# Load and initialize tls
	package require tls
	tls::init  -cafile /path/to/ca/cert -keyfile ...
	# Create secured comm channel
	::comm::comm new SECURE -socketcmd tls::socket -listen 1
	...
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
crashing the receiver when it runs out of memory. With the change the
receiver is always able to process the first word when it becomes
well-formed, regardless of the structure of the remainder of the
buffer.</p></dd>
<dt>4.6</dt>
<dd><p>Added the option <b class="option">-socketcmd</b> enabling users to override how a
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#key289">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#key367">vwait</a></b>, made robust against of
variable names containing spaces.</p></dd>







|







786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
crashing the receiver when it runs out of memory. With the change the
receiver is always able to process the first word when it becomes
well-formed, regardless of the structure of the remainder of the
buffer.</p></dd>
<dt>4.6</dt>
<dd><p>Added the option <b class="option">-socketcmd</b> enabling users to override how a
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#key287">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#key367">vwait</a></b>, made robust against of
variable names containing spaces.</p></dd>
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
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#key38">comm</a>, <a href="../../../../index.html#key314">communication</a>, <a href="../../../../index.html#key319">ipc</a>, <a href="../../../../index.html#key320">message</a>, <a href="../../../../index.html#key317">remote communication</a>, <a href="../../../../index.html#key316">remote execution</a>, <a href="../../../../index.html#key313">rpc</a>, <a href="../../../../index.html#key315">secure</a>, <a href="../../../../index.html#key312">send</a>, <a href="../../../../index.html#key311">socket</a>, <a href="../../../../index.html#key318">ssl</a>, <a href="../../../../index.html#key289">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>







|










997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
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#key38">comm</a>, <a href="../../../../index.html#key314">communication</a>, <a href="../../../../index.html#key319">ipc</a>, <a href="../../../../index.html#key320">message</a>, <a href="../../../../index.html#key317">remote communication</a>, <a href="../../../../index.html#key316">remote execution</a>, <a href="../../../../index.html#key313">rpc</a>, <a href="../../../../index.html#key315">secure</a>, <a href="../../../../index.html#key312">send</a>, <a href="../../../../index.html#key311">socket</a>, <a href="../../../../index.html#key318">ssl</a>, <a href="../../../../index.html#key287">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.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2005 Docs. Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ comm_wire.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">comm_wire(n) 3 tcllib &quot;Remote communication&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>comm_wire - The comm wire protocol</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2005 Docs. Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ comm_wire.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">comm_wire(n) 3 tcllib &quot;Remote communication&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>comm_wire - The comm wire protocol</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>

Changes to embedded/www/tcllib/files/modules/control/control.html.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/control/control.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ control.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">control(n) 0.1.3 tcllib &quot;Tcl Control Flow Commands&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>control - Procedures for control flow 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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/control/control.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ control.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">control(n) 0.1.3 tcllib &quot;Tcl Control Flow Commands&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>control - Procedures for control flow 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>
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
<dt><a name="1"><b class="cmd">control::control</b> <i class="arg">command</i> <i class="arg">option</i> <span class="opt">?<i class="arg">arg arg ...</i>?</span></a></dt>
<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#key132">assert</a></b> command behaves exactly like the
<b class="cmd"><a href="../../../../index.html#key130">no-op</a></b> command.</p>
<p>When enabled, the <b class="cmd"><a href="../../../../index.html#key132">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#key132">assert</a></b> returns an empty
string.  Otherwise, the remaining arguments to <b class="cmd"><a href="../../../../index.html#key132">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#key510">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#key132">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
indicating whether the <b class="cmd">control::assert</b> command is enabled.  When
called with a valid boolean value as the <i class="arg">boolean</i> argument, the
<b class="cmd">control::assert</b> command is enabled or disabled to match the
argument, and an empty string is returned.</p>
<p>[<b class="cmd">control::control assert callback</b> <span class="opt">?<i class="arg">command</i>?</span>]
queries or sets the callback command that will be called by an enabled
<b class="cmd"><a href="../../../../index.html#key132">assert</a></b> on assertion failure.  When called without a
<i class="arg">command</i> argument, the current callback command is returned.
When called with a <i class="arg">command</i> argument, that argument becomes the
new assertion failure callback command.  Note that an assertion
failure callback command is always defined, even when <b class="cmd"><a href="../../../../index.html#key132">assert</a></b>
is disabled.  The default callback command is
[<b class="cmd">return -code error</b>].</p>
<p>Note that <b class="cmd">control::assert</b> has been written so that in
combination with [<b class="cmd">namespace import</b>], it is possible to
use enabled <b class="cmd"><a href="../../../../index.html#key132">assert</a></b> commands in some namespaces and disabled
<b class="cmd"><a href="../../../../index.html#key132">assert</a></b> commands in other namespaces at the same time.  This
capability is useful so that debugging efforts can be independently
controlled module by module.</p>
<pre class="example">
% package require control
% control::control assert enabled 1
% namespace eval one namespace import ::control::assert
% control::control assert enabled 0
% namespace eval two namespace import ::control::assert
% one::assert {1 == 0}
assertion failed: 1 == 0
% two::assert {1 == 0}
</pre>
</dd>
<dt><a name="3"><b class="cmd">control::do</b> <i class="arg">body</i> <span class="opt">?<i class="arg">option test</i>?</span></a></dt>
<dd><p>The <b class="cmd"><a href="../../../../index.html#key133">do</a></b> command evaluates the script <i class="arg">body</i> repeatedly
<em>until</em> the expression <i class="arg">test</i> becomes true or as long as
(<em>while</em>) <i class="arg">test</i> is true, depending on the value of
<i class="arg">option</i> being <b class="const">until</b> or <b class="const">while</b>. If
<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#key133">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#key154">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#key130">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







|
|
|




|
|





|










|



|




|
|














|




|





|







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
<dt><a name="1"><b class="cmd">control::control</b> <i class="arg">command</i> <i class="arg">option</i> <span class="opt">?<i class="arg">arg arg ...</i>?</span></a></dt>
<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#key127">assert</a></b> command behaves exactly like the
<b class="cmd"><a href="../../../../index.html#key125">no-op</a></b> command.</p>
<p>When enabled, the <b class="cmd"><a href="../../../../index.html#key127">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#key127">assert</a></b> returns an empty
string.  Otherwise, the remaining arguments to <b class="cmd"><a href="../../../../index.html#key127">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#key510">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#key127">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
indicating whether the <b class="cmd">control::assert</b> command is enabled.  When
called with a valid boolean value as the <i class="arg">boolean</i> argument, the
<b class="cmd">control::assert</b> command is enabled or disabled to match the
argument, and an empty string is returned.</p>
<p>[<b class="cmd">control::control assert callback</b> <span class="opt">?<i class="arg">command</i>?</span>]
queries or sets the callback command that will be called by an enabled
<b class="cmd"><a href="../../../../index.html#key127">assert</a></b> on assertion failure.  When called without a
<i class="arg">command</i> argument, the current callback command is returned.
When called with a <i class="arg">command</i> argument, that argument becomes the
new assertion failure callback command.  Note that an assertion
failure callback command is always defined, even when <b class="cmd"><a href="../../../../index.html#key127">assert</a></b>
is disabled.  The default callback command is
[<b class="cmd">return -code error</b>].</p>
<p>Note that <b class="cmd">control::assert</b> has been written so that in
combination with [<b class="cmd">namespace import</b>], it is possible to
use enabled <b class="cmd"><a href="../../../../index.html#key127">assert</a></b> commands in some namespaces and disabled
<b class="cmd"><a href="../../../../index.html#key127">assert</a></b> commands in other namespaces at the same time.  This
capability is useful so that debugging efforts can be independently
controlled module by module.</p>
<pre class="example">
% package require control
% control::control assert enabled 1
% namespace eval one namespace import ::control::assert
% control::control assert enabled 0
% namespace eval two namespace import ::control::assert
% one::assert {1 == 0}
assertion failed: 1 == 0
% two::assert {1 == 0}
</pre>
</dd>
<dt><a name="3"><b class="cmd">control::do</b> <i class="arg">body</i> <span class="opt">?<i class="arg">option test</i>?</span></a></dt>
<dd><p>The <b class="cmd"><a href="../../../../index.html#key128">do</a></b> command evaluates the script <i class="arg">body</i> repeatedly
<em>until</em> the expression <i class="arg">test</i> becomes true or as long as
(<em>while</em>) <i class="arg">test</i> is true, depending on the value of
<i class="arg">option</i> being <b class="const">until</b> or <b class="const">while</b>. If
<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#key128">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#key154">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#key125">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
244
245
246
247
248
249
250
251
252
253
254
255
256
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#key510">join</a>, namespace, return, <a href="../../../../index.html#key239">string</a>, while</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key132">assert</a>, <a href="../../../../index.html#key92">control</a>, <a href="../../../../index.html#key133">do</a>, <a href="../../../../index.html#key129">flow</a>, <a href="../../../../index.html#key130">no-op</a>, <a href="../../../../index.html#key131">structure</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>







|





247
248
249
250
251
252
253
254
255
256
257
258
259
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#key510">join</a>, namespace, return, <a href="../../../../index.html#key239">string</a>, while</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key127">assert</a>, <a href="../../../../index.html#key92">control</a>, <a href="../../../../index.html#key128">do</a>, <a href="../../../../index.html#key124">flow</a>, <a href="../../../../index.html#key125">no-op</a>, <a href="../../../../index.html#key126">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2010-2011 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ coroutine::auto.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">coroutine::auto(n) 1 tcllib &quot;Coroutine utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2010-2011 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ coroutine::auto.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">coroutine::auto(n) 1 tcllib &quot;Coroutine utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
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#key366">after</a>, <a href="../../../../index.html#key59">channel</a>, <a href="../../../../index.html#key200">coroutine</a>, <a href="../../../../index.html#key363">events</a>, <a href="../../../../index.html#key365">exit</a>, <a href="../../../../index.html#key369">gets</a>, <a href="../../../../index.html#key364">global</a>, <a href="../../../../index.html#key370">green threads</a>, <a href="../../../../index.html#key362">read</a>, <a href="../../../../index.html#key361">threads</a>, <a href="../../../../index.html#key368">update</a>, <a href="../../../../index.html#key367">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>







|








162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
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#key366">after</a>, <a href="../../../../index.html#key59">channel</a>, <a href="../../../../index.html#key198">coroutine</a>, <a href="../../../../index.html#key363">events</a>, <a href="../../../../index.html#key365">exit</a>, <a href="../../../../index.html#key369">gets</a>, <a href="../../../../index.html#key364">global</a>, <a href="../../../../index.html#key370">green threads</a>, <a href="../../../../index.html#key362">read</a>, <a href="../../../../index.html#key361">threads</a>, <a href="../../../../index.html#key368">update</a>, <a href="../../../../index.html#key367">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/coroutine.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2010-2011 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ coroutine.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">coroutine(n) 1 tcllib &quot;Coroutine utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>coroutine - Coroutine based event and IO handling</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2010-2011 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ coroutine.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">coroutine(n) 1 tcllib &quot;Coroutine utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>coroutine - Coroutine based event and IO handling</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>
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
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#key366">after</a>, <a href="../../../../index.html#key59">channel</a>, <a href="../../../../index.html#key200">coroutine</a>, <a href="../../../../index.html#key363">events</a>, <a href="../../../../index.html#key365">exit</a>, <a href="../../../../index.html#key369">gets</a>, <a href="../../../../index.html#key364">global</a>, <a href="../../../../index.html#key370">green threads</a>, <a href="../../../../index.html#key362">read</a>, <a href="../../../../index.html#key361">threads</a>, <a href="../../../../index.html#key368">update</a>, <a href="../../../../index.html#key367">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>







|








207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
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#key366">after</a>, <a href="../../../../index.html#key59">channel</a>, <a href="../../../../index.html#key198">coroutine</a>, <a href="../../../../index.html#key363">events</a>, <a href="../../../../index.html#key365">exit</a>, <a href="../../../../index.html#key369">gets</a>, <a href="../../../../index.html#key364">global</a>, <a href="../../../../index.html#key370">green threads</a>, <a href="../../../../index.html#key362">read</a>, <a href="../../../../index.html#key361">threads</a>, <a href="../../../../index.html#key368">update</a>, <a href="../../../../index.html#key367">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.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/counter/counter.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ counter.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">counter(n) 2.0.4 tcllib &quot;Counters and Histograms&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/counter/counter.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ counter.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">counter(n) 2.0.4 tcllib &quot;Counters and Histograms&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>
285
286
287
288
289
290
291
292
293
294
295
296
297
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#key665">counting</a>, <a href="../../../../index.html#key664">histogram</a>, <a href="../../../../index.html#key174">statistics</a>, <a href="../../../../index.html#key663">tallying</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
</div></body></html>







|





288
289
290
291
292
293
294
295
296
297
298
299
300
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#key665">counting</a>, <a href="../../../../index.html#key664">histogram</a>, <a href="../../../../index.html#key188">statistics</a>, <a href="../../../../index.html#key663">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.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2002, Pat Thoyts
   -->
<! -- CVS: $Id$ cksum.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">cksum(n) 1.1.3 tcllib &quot;Cyclic Redundancy Checks&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cksum - Calculate a cksum(1) compatible checksum</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2002, Pat Thoyts
   -->
<! -- CVS: $Id$ cksum.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">cksum(n) 1.1.3 tcllib &quot;Cyclic Redundancy Checks&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cksum - Calculate a cksum(1) compatible checksum</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>

Changes to embedded/www/tcllib/files/modules/crc/crc16.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2002, Pat Thoyts
   -->
<! -- CVS: $Id$ crc16.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">crc16(n) 1.1.2 tcllib &quot;Cyclic Redundancy Checks&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>crc16 - Perform a 16bit Cyclic Redundancy Check</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2002, Pat Thoyts
   -->
<! -- CVS: $Id$ crc16.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">crc16(n) 1.1.2 tcllib &quot;Cyclic Redundancy Checks&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>crc16 - Perform a 16bit Cyclic Redundancy Check</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>
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
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#key140">checksum</a>, <a href="../../../../index.html#key141">cksum</a>, <a href="../../../../index.html#key137">crc</a>, <a href="../../../../index.html#key752">crc16</a>, <a href="../../../../index.html#key138">crc32</a>, <a href="../../../../index.html#key139">cyclic redundancy check</a>, <a href="../../../../index.html#key111">data integrity</a>, <a href="../../../../index.html#key110">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>







|








237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
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#key140">checksum</a>, <a href="../../../../index.html#key141">cksum</a>, <a href="../../../../index.html#key137">crc</a>, <a href="../../../../index.html#key749">crc16</a>, <a href="../../../../index.html#key138">crc32</a>, <a href="../../../../index.html#key139">cyclic redundancy check</a>, <a href="../../../../index.html#key111">data integrity</a>, <a href="../../../../index.html#key110">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.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2002, Pat Thoyts
   -->
<! -- CVS: $Id$ crc32.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">crc32(n) 1.3 tcllib &quot;Cyclic Redundancy Checks&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>crc32 - Perform a 32bit Cyclic Redundancy Check</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2002, Pat Thoyts
   -->
<! -- CVS: $Id$ crc32.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">crc32(n) 1.3 tcllib &quot;Cyclic Redundancy Checks&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>crc32 - Perform a 32bit Cyclic Redundancy Check</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>

Changes to embedded/www/tcllib/files/modules/crc/sum.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2002, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ sum.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">sum(n) 1.1.0 tcllib &quot;Cyclic Redundancy Checks&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>sum - Calculate a sum(1) compatible checksum</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2002, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ sum.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">sum(n) 1.1.0 tcllib &quot;Cyclic Redundancy Checks&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>sum - Calculate a sum(1) compatible checksum</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>

Changes to embedded/www/tcllib/files/modules/csv/csv.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2002-2013 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ csv.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">csv(n) 0.8 tcllib &quot;CSV processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>csv - Procedures to handle CSV data.</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2002-2013 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ csv.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">csv(n) 0.8 tcllib &quot;CSV processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>csv - Procedures to handle CSV data.</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>

Changes to embedded/www/tcllib/files/modules/des/des.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2005, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ des.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">des(n) 1.1 tcllib &quot;Data Encryption Standard (DES)&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>des - Implementation of the DES and triple-DES ciphers</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2005, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ des.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">des(n) 1.1 tcllib &quot;Data Encryption Standard (DES)&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>des - Implementation of the DES and triple-DES ciphers</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>

Changes to embedded/www/tcllib/files/modules/dns/tcllib_dns.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2002, Pat Thoyts
   -->
<! -- CVS: $Id$ dns.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">dns(n) 1.3.3 tcllib &quot;Domain Name Service&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>dns - Tcl Domain Name Service 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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2002, Pat Thoyts
   -->
<! -- CVS: $Id$ dns.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">dns(n) 1.3.3 tcllib &quot;Domain Name Service&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>dns - Tcl Domain Name Service 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>

Changes to embedded/www/tcllib/files/modules/dns/tcllib_ip.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2004, Pat Thoyts   -- Copyright &copy; 2005 Aamer Akhter &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcllib_ip.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcllib_ip(n) 1.3 tcllib &quot;Domain Name Service&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcllib_ip - IPv4 and IPv6 address 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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2004, Pat Thoyts   -- Copyright &copy; 2005 Aamer Akhter &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcllib_ip.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">tcllib_ip(n) 1.3 tcllib &quot;Domain Name Service&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcllib_ip - IPv4 and IPv6 address 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>

Changes to embedded/www/tcllib/files/modules/docstrip/docstrip.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2003–2010 Lars Hellstr&ouml;m &lt;Lars dot Hellstrom at residenset dot net&gt;
   -->
<! -- CVS: $Id$ docstrip.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">docstrip(n) 1.2 tcllib &quot;Literate programming tool&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>docstrip - Docstrip style source code extraction</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2003–2010 Lars Hellstr&ouml;m &lt;Lars dot Hellstrom at residenset dot net&gt;
   -->
<! -- CVS: $Id$ docstrip.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">docstrip(n) 1.2 tcllib &quot;Literate programming tool&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>docstrip - Docstrip style source code extraction</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>
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
  &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#key388">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#key72">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>







|







451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
  &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#key388">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#key77">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>

Changes to embedded/www/tcllib/files/modules/docstrip/docstrip_util.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2003–2010 Lars Hellstr&ouml;m &lt;Lars dot Hellstrom at residenset dot net&gt;
   -->
<! -- CVS: $Id$ docstrip_util.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">docstrip_util(n) 1.3 tcllib &quot;Literate programming tool&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>docstrip_util - Docstrip-related 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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2003–2010 Lars Hellstr&ouml;m &lt;Lars dot Hellstrom at residenset dot net&gt;
   -->
<! -- CVS: $Id$ docstrip_util.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">docstrip_util(n) 1.3 tcllib &quot;Literate programming tool&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>docstrip_util - Docstrip-related 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>

Changes to embedded/www/tcllib/files/modules/doctools/changelog.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2003-2013 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::changelog.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::changelog(n) 1.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::changelog - Processing text in Emacs ChangeLog format</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2003-2013 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::changelog.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">doctools::changelog(n) 1.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::changelog - Processing text in Emacs ChangeLog format</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>

Changes to embedded/www/tcllib/files/modules/doctools/cvs.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2003-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::cvs.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::cvs(n) 1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::cvs - Processing text in 'cvs log' format</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2003-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::cvs.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">doctools::cvs(n) 1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::cvs - Processing text in 'cvs log' format</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>

Changes to embedded/www/tcllib/files/modules/doctools/docidx.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2003-2010 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::idx(n) 1.0.4 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx - docidx - Processing indices</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2003-2010 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx.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">doctools::idx(n) 1.0.4 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx - docidx - Processing indices</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>

Changes to embedded/www/tcllib/files/modules/doctools/docidx_intro.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ docidx_intro.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">docidx_intro(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ docidx_intro.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">docidx_intro(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
the formal <i class="term"><a href="docidx_lang_syntax.html">docidx language syntax</a></i> specification should
become understandable. A writer experienced with docidx may only
need the <i class="term"><a href="docidx_lang_cmdref.html">docidx language command reference</a></i> from time to
time to refresh her memory.</p>
<p>While a document is written the <b class="syscmd">dtp</b> application can be used
to validate it, and after completion it also performs the conversion
into the chosen system of visual markup, be it *roff, HTML, plain
text, wiki, etc. The simpler <b class="syscmd"><a href="../../apps/dtplite.html">dtplite</a></b> application makes
internal use of docidx when handling directories of documentation,
automatically generating a proper keyword index for them.</p></li>
<li><p>A <i class="term">processor</i> of documentation written in the <i class="term"><a href="../../../../index.html#key50">docidx</a></i>
markup language has to know which tools are available for use.</p>
<p>The main tool is the aforementioned <b class="syscmd">dtp</b> application provided
by Tcllib. The simpler <b class="syscmd"><a href="../../apps/dtplite.html">dtplite</a></b> does not expose docidx to the
user.
At the bottom level, common to both applications, however sits the
package <b class="package">doctoools::idx</b>, providing the basic facilities to
read and process files containing text in the docidx format.</p></li>
<li><p>At last, but not least, <i class="term">plugin writers</i> have to understand the
interaction between the <b class="package"><a href="../doctools2idx/container.html">doctools::idx</a></b> package and its
plugins, as described in the <i class="term"><a href="docidx_plugin_apiref.html">docidx plugin API reference</a></i>.</p></li>







|





|







147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
the formal <i class="term"><a href="docidx_lang_syntax.html">docidx language syntax</a></i> specification should
become understandable. A writer experienced with docidx may only
need the <i class="term"><a href="docidx_lang_cmdref.html">docidx language command reference</a></i> from time to
time to refresh her memory.</p>
<p>While a document is written the <b class="syscmd">dtp</b> application can be used
to validate it, and after completion it also performs the conversion
into the chosen system of visual markup, be it *roff, HTML, plain
text, wiki, etc. The simpler <b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> application makes
internal use of docidx when handling directories of documentation,
automatically generating a proper keyword index for them.</p></li>
<li><p>A <i class="term">processor</i> of documentation written in the <i class="term"><a href="../../../../index.html#key50">docidx</a></i>
markup language has to know which tools are available for use.</p>
<p>The main tool is the aforementioned <b class="syscmd">dtp</b> application provided
by Tcllib. The simpler <b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> does not expose docidx to the
user.
At the bottom level, common to both applications, however sits the
package <b class="package">doctoools::idx</b>, providing the basic facilities to
read and process files containing text in the docidx format.</p></li>
<li><p>At last, but not least, <i class="term">plugin writers</i> have to understand the
interaction between the <b class="package"><a href="../doctools2idx/container.html">doctools::idx</a></b> package and its
plugins, as described in the <i class="term"><a href="docidx_plugin_apiref.html">docidx plugin API reference</a></i>.</p></li>

Changes to embedded/www/tcllib/files/modules/doctools/docidx_lang_cmdref.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ docidx_lang_cmdref.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">docidx_lang_cmdref(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>docidx_lang_cmdref - docidx language command reference</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ docidx_lang_cmdref.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">docidx_lang_cmdref(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>docidx_lang_cmdref - docidx language command reference</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>

Changes to embedded/www/tcllib/files/modules/doctools/docidx_lang_faq.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ docidx_lang_faq.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">docidx_lang_faq(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>docidx_lang_faq - docidx language faq</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ docidx_lang_faq.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">docidx_lang_faq(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>docidx_lang_faq - docidx language faq</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>
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
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="../../apps/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="../../apps/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>







|




|







144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
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>

Changes to embedded/www/tcllib/files/modules/doctools/docidx_lang_intro.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ docidx_lang_intro.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">docidx_lang_intro(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>docidx_lang_intro - docidx language 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ docidx_lang_intro.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">docidx_lang_intro(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>docidx_lang_intro - docidx language 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>
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
detailed specification and cheat sheet for all available commands and
their syntax.</p>
<p>To be able to validate a document while writing it, it is also
recommended to familiarize oneself with Tclapps' ultra-configurable
<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="../../apps/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>.







|







266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
detailed specification and cheat sheet for all available commands and
their syntax.</p>
<p>To be able to validate a document while writing it, it is also
recommended to familiarize oneself with Tclapps' ultra-configurable
<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>.

Changes to embedded/www/tcllib/files/modules/doctools/docidx_lang_syntax.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ docidx_lang_syntax.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">docidx_lang_syntax(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>docidx_lang_syntax - docidx language syntax</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ docidx_lang_syntax.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">docidx_lang_syntax(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>docidx_lang_syntax - docidx language syntax</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>

Changes to embedded/www/tcllib/files/modules/doctools/docidx_plugin_apiref.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ docidx_plugin_apiref.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">docidx_plugin_apiref(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>docidx_plugin_apiref - docidx plugin API reference</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ docidx_plugin_apiref.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">docidx_plugin_apiref(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>docidx_plugin_apiref - docidx plugin API reference</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>

Changes to embedded/www/tcllib/files/modules/doctools/doctoc.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2003-2010 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::toc(n) 1.1.3 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc - doctoc - Processing tables of contents</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2003-2010 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc.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">doctools::toc(n) 1.1.3 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc - doctoc - Processing tables of contents</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>

Changes to embedded/www/tcllib/files/modules/doctools/doctoc_intro.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctoc_intro.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctoc_intro(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctoc_intro.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">doctoc_intro(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
the formal <i class="term"><a href="doctoc_lang_syntax.html">doctoc language syntax</a></i> specification should
become understandable. A writer experienced with doctoc may only
need the <i class="term"><a href="doctoc_lang_cmdref.html">doctoc language command reference</a></i> from time to
time to refresh her memory.</p>
<p>While a document is written the <b class="syscmd">dtp</b> application can be used
to validate it, and after completion it also performs the conversion
into the chosen system of visual markup, be it *roff, HTML, plain
text, wiki, etc. The simpler <b class="syscmd"><a href="../../apps/dtplite.html">dtplite</a></b> application makes
internal use of doctoc when handling directories of documentation,
automatically generating a proper table of contents for them.</p></li>
<li><p>A <i class="term">processor</i> of documentation written in the <i class="term"><a href="../../../../index.html#key230">doctoc</a></i>
markup language has to know which tools are available for use.</p>
<p>The main tool is the aforementioned <b class="syscmd">dtp</b> application provided
by Tcllib. The simpler <b class="syscmd"><a href="../../apps/dtplite.html">dtplite</a></b> does not expose doctoc to the
user.
At the bottom level, common to both applications, however sits the
package <b class="package">doctoools::toc</b>, providing the basic facilities to
read and process files containing text in the doctoc format.</p></li>
<li><p>At last, but not least, <i class="term">plugin writers</i> have to understand the
interaction between the <b class="package"><a href="../doctools2toc/container.html">doctools::toc</a></b> package and its
plugins, as described in the <i class="term"><a href="doctoc_plugin_apiref.html">doctoc plugin API reference</a></i>.</p></li>







|





|







147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
the formal <i class="term"><a href="doctoc_lang_syntax.html">doctoc language syntax</a></i> specification should
become understandable. A writer experienced with doctoc may only
need the <i class="term"><a href="doctoc_lang_cmdref.html">doctoc language command reference</a></i> from time to
time to refresh her memory.</p>
<p>While a document is written the <b class="syscmd">dtp</b> application can be used
to validate it, and after completion it also performs the conversion
into the chosen system of visual markup, be it *roff, HTML, plain
text, wiki, etc. The simpler <b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> application makes
internal use of doctoc when handling directories of documentation,
automatically generating a proper table of contents for them.</p></li>
<li><p>A <i class="term">processor</i> of documentation written in the <i class="term"><a href="../../../../index.html#key230">doctoc</a></i>
markup language has to know which tools are available for use.</p>
<p>The main tool is the aforementioned <b class="syscmd">dtp</b> application provided
by Tcllib. The simpler <b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> does not expose doctoc to the
user.
At the bottom level, common to both applications, however sits the
package <b class="package">doctoools::toc</b>, providing the basic facilities to
read and process files containing text in the doctoc format.</p></li>
<li><p>At last, but not least, <i class="term">plugin writers</i> have to understand the
interaction between the <b class="package"><a href="../doctools2toc/container.html">doctools::toc</a></b> package and its
plugins, as described in the <i class="term"><a href="doctoc_plugin_apiref.html">doctoc plugin API reference</a></i>.</p></li>

Changes to embedded/www/tcllib/files/modules/doctools/doctoc_lang_cmdref.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctoc_lang_cmdref.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctoc_lang_cmdref(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctoc_lang_cmdref - doctoc language command reference</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctoc_lang_cmdref.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">doctoc_lang_cmdref(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctoc_lang_cmdref - doctoc language command reference</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>

Changes to embedded/www/tcllib/files/modules/doctools/doctoc_lang_faq.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctoc_lang_faq.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctoc_lang_faq(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctoc_lang_faq - doctoc language faq</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctoc_lang_faq.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">doctoc_lang_faq(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctoc_lang_faq - doctoc language faq</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>
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
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="../../apps/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="../../apps/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>







|




|







144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
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>

Changes to embedded/www/tcllib/files/modules/doctools/doctoc_lang_intro.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctoc_lang_intro.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctoc_lang_intro(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctoc_lang_intro - doctoc language 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctoc_lang_intro.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">doctoc_lang_intro(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctoc_lang_intro - doctoc language 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>
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
detailed specification and cheat sheet for all available commands and
their syntax.</p>
<p>To be able to validate a document while writing it, it is also
recommended to familiarize oneself with Tclapps' ultra-configurable
<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="../../apps/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>.







|







331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
detailed specification and cheat sheet for all available commands and
their syntax.</p>
<p>To be able to validate a document while writing it, it is also
recommended to familiarize oneself with Tclapps' ultra-configurable
<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>.

Changes to embedded/www/tcllib/files/modules/doctools/doctoc_lang_syntax.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctoc_lang_syntax.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctoc_lang_syntax(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctoc_lang_syntax - doctoc language syntax</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctoc_lang_syntax.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">doctoc_lang_syntax(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctoc_lang_syntax - doctoc language syntax</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>

Changes to embedded/www/tcllib/files/modules/doctools/doctoc_plugin_apiref.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctoc_plugin_apiref.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctoc_plugin_apiref(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctoc_plugin_apiref - doctoc plugin API reference</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctoc_plugin_apiref.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">doctoc_plugin_apiref(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctoc_plugin_apiref - doctoc plugin API reference</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>

Changes to embedded/www/tcllib/files/modules/doctools/doctools.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2003-2013 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools(n) 1.4.14 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools - doctools - Processing documents</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2003-2013 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools.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">doctools(n) 1.4.14 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools - doctools - Processing documents</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>

Changes to embedded/www/tcllib/files/modules/doctools/doctools_intro.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools_intro.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools_intro(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools_intro.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">doctools_intro(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<li><p>A <i class="term">writer</i> of documentation has to understand the markup language
itself. A beginner to doctools should read the more informally written
<i class="term"><a href="doctools_lang_intro.html">doctools language introduction</a></i> first. Having digested this
the formal <i class="term"><a href="doctools_lang_syntax.html">doctools language syntax</a></i> specification should
become understandable. A writer experienced with doctools may only
need the <i class="term"><a href="doctools_lang_cmdref.html">doctools language command reference</a></i> from time to
time to refresh her memory.</p>
<p>While a document is written the <b class="syscmd"><a href="../../apps/dtplite.html">dtplite</a></b> application can be
used to validate it, and after completion it also performs the
conversion into the chosen system of visual markup, be it *roff, HTML,
plain text, wiki, etc.</p></li>
<li><p>A <i class="term">processor</i> of documentation written in the <i class="term"><a href="../../../../index.html#key51">doctools</a></i>
markup language has to know which tools are available for use.</p>
<p>The main tool is the aforementioned <b class="syscmd"><a href="../../apps/dtplite.html">dtplite</a></b> application
provided by Tcllib. A more powerful one (in terms of options and
ability to configure it) is the <b class="syscmd">dtp</b> application, provided by
Tclapps.
At the bottom level, common to both applications, however sits the
package <b class="package"><a href="doctools.html">doctools</a></b>, providing the basic facilities to read and
process files containing text in the doctools format.</p></li>
<li><p>At last, but not least, <i class="term">plugin writers</i> have to understand the







|





|







143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
<li><p>A <i class="term">writer</i> of documentation has to understand the markup language
itself. A beginner to doctools should read the more informally written
<i class="term"><a href="doctools_lang_intro.html">doctools language introduction</a></i> first. Having digested this
the formal <i class="term"><a href="doctools_lang_syntax.html">doctools language syntax</a></i> specification should
become understandable. A writer experienced with doctools may only
need the <i class="term"><a href="doctools_lang_cmdref.html">doctools language command reference</a></i> from time to
time to refresh her memory.</p>
<p>While a document is written the <b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> application can be
used to validate it, and after completion it also performs the
conversion into the chosen system of visual markup, be it *roff, HTML,
plain text, wiki, etc.</p></li>
<li><p>A <i class="term">processor</i> of documentation written in the <i class="term"><a href="../../../../index.html#key51">doctools</a></i>
markup language has to know which tools are available for use.</p>
<p>The main tool is the aforementioned <b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> application
provided by Tcllib. A more powerful one (in terms of options and
ability to configure it) is the <b class="syscmd">dtp</b> application, provided by
Tclapps.
At the bottom level, common to both applications, however sits the
package <b class="package"><a href="doctools.html">doctools</a></b>, providing the basic facilities to read and
process files containing text in the doctools format.</p></li>
<li><p>At last, but not least, <i class="term">plugin writers</i> have to understand the

Changes to embedded/www/tcllib/files/modules/doctools/doctools_lang_cmdref.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007-2010 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools_lang_cmdref.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools_lang_cmdref(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools_lang_cmdref - doctools language command reference</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007-2010 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools_lang_cmdref.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">doctools_lang_cmdref(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools_lang_cmdref - doctools language command reference</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>
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
<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#key31">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#key135">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#key723">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>







|







144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<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#key31">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#key122">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#key723">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>
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
<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#key135">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#key135">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>







|
|







290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
<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#key122">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#key122">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>

Changes to embedded/www/tcllib/files/modules/doctools/doctools_lang_faq.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools_lang_faq.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools_lang_faq(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools_lang_faq - doctools language faq</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools_lang_faq.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">doctools_lang_faq(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools_lang_faq - doctools language faq</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>

Changes to embedded/www/tcllib/files/modules/doctools/doctools_lang_intro.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools_lang_intro.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools_lang_intro(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools_lang_intro - doctools language 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools_lang_intro.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">doctools_lang_intro(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools_lang_intro - doctools language 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>
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
specification as well. From here on out the
<i class="term"><a href="doctools_lang_cmdref.html">doctools language command reference</a></i> will also serve as the
detailed specification and cheat sheet for all available commands and
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="../../apps/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>







|







592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
specification as well. From here on out the
<i class="term"><a href="doctools_lang_cmdref.html">doctools language command reference</a></i> will also serve as the
detailed specification and cheat sheet for all available commands and
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>

Changes to embedded/www/tcllib/files/modules/doctools/doctools_lang_syntax.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools_lang_syntax.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools_lang_syntax(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools_lang_syntax - doctools language syntax</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools_lang_syntax.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">doctools_lang_syntax(n) 1.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools_lang_syntax - doctools language syntax</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>

Changes to embedded/www/tcllib/files/modules/doctools/doctools_plugin_apiref.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007-2010 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools_plugin_apiref.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools_plugin_apiref(n) 1.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools_plugin_apiref - doctools plugin API reference</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007-2010 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools_plugin_apiref.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">doctools_plugin_apiref(n) 1.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools_plugin_apiref - doctools plugin API reference</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>

Changes to embedded/www/tcllib/files/modules/doctools/mpexpand.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;   -- Copyright &copy; 2003 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ mpexpand.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">mpexpand(n) 1.0 tcllib &quot;Documentation toolbox&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>mpexpand - Markup processor</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;   -- Copyright &copy; 2003 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ mpexpand.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">mpexpand(n) 1.0 tcllib &quot;Documentation toolbox&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>mpexpand - Markup processor</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>

Changes to embedded/www/tcllib/files/modules/doctools2base/html_cssdefaults.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::html::cssdefaults.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::html::cssdefaults(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::html::cssdefaults - Default CSS style for HTML export plugins</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::html::cssdefaults.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">doctools::html::cssdefaults(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::html::cssdefaults - Default CSS style for HTML export plugins</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>

Changes to embedded/www/tcllib/files/modules/doctools2base/nroff_manmacros.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::nroff::man_macros.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::nroff::man_macros(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::nroff::man_macros - Default CSS style for NROFF export plugins</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::nroff::man_macros.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">doctools::nroff::man_macros(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::nroff::man_macros - Default CSS style for NROFF export plugins</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>

Changes to embedded/www/tcllib/files/modules/doctools2base/tcl_parse.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::tcl::parse.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::tcl::parse(n) 1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::tcl::parse - Processing text in 'subst -novariables' format</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::tcl::parse.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">doctools::tcl::parse(n) 1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::tcl::parse - Processing text in 'subst -novariables' format</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>

Changes to embedded/www/tcllib/files/modules/doctools2base/tcllib_msgcat.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::msgcat.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::msgcat(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::msgcat - Message catalog management for the various document parsers</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::msgcat.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">doctools::msgcat(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::msgcat - Message catalog management for the various document parsers</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>

Changes to embedded/www/tcllib/files/modules/doctools2idx/container.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::idx(n) 2 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx - Holding keyword indices</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx.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">doctools::idx(n) 2 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx - Holding keyword indices</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>

Changes to embedded/www/tcllib/files/modules/doctools2idx/export.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::export.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::idx::export(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::export - Exporting keyword indices</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::export.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">doctools::idx::export(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::export - Exporting keyword indices</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>

Changes to embedded/www/tcllib/files/modules/doctools2idx/export_docidx.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::export::docidx.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::idx::export::docidx(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::export::docidx - docidx export plugin</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::export::docidx.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">doctools::idx::export::docidx(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::export::docidx - docidx export plugin</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>
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
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#key148">export</a>, <a href="../../../../index.html#key163">index</a>, <a href="../../../../index.html#key102">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>







|








289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
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#key148">export</a>, <a href="../../../../index.html#key163">index</a>, <a href="../../../../index.html#key104">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::export::html.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::idx::export::html(n) 0.2 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::export::html - HTML export plugin</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::export::html.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">doctools::idx::export::html(n) 0.2 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::export::html - HTML export plugin</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>
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
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#key1">HTML</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key148">export</a>, <a href="../../../../index.html#key163">index</a>, <a href="../../../../index.html#key102">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>







|








351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
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#key1">HTML</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key148">export</a>, <a href="../../../../index.html#key163">index</a>, <a href="../../../../index.html#key104">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::export::json.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::idx::export::json(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::export::json - JSON export plugin</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::export::json.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">doctools::idx::export::json(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::export::json - JSON export plugin</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>
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
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#key232">JSON</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key148">export</a>, <a href="../../../../index.html#key163">index</a>, <a href="../../../../index.html#key102">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>







|








304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
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#key232">JSON</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key148">export</a>, <a href="../../../../index.html#key163">index</a>, <a href="../../../../index.html#key104">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::export::nroff.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::idx::export::nroff(n) 0.3 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::export::nroff - nroff export plugin</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::export::nroff.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">doctools::idx::export::nroff(n) 0.3 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::export::nroff - nroff export plugin</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>
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
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#key148">export</a>, <a href="../../../../index.html#key163">index</a>, <a href="../../../../index.html#key5">nroff</a>, <a href="../../../../index.html#key102">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>







|








258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
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#key148">export</a>, <a href="../../../../index.html#key163">index</a>, <a href="../../../../index.html#key5">nroff</a>, <a href="../../../../index.html#key104">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::export::text.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::idx::export::text(n) 0.2 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::export::text - plain text export plugin</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::export::text.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">doctools::idx::export::text(n) 0.2 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::export::text - plain text export plugin</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>
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
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#key148">export</a>, <a href="../../../../index.html#key163">index</a>, <a href="../../../../index.html#key147">plain text</a>, <a href="../../../../index.html#key102">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>







|








245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
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#key148">export</a>, <a href="../../../../index.html#key163">index</a>, <a href="../../../../index.html#key147">plain text</a>, <a href="../../../../index.html#key104">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::export::wiki.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::idx::export::wiki(n) 0.2 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::export::wiki - wiki export plugin</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::export::wiki.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">doctools::idx::export::wiki(n) 0.2 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::export::wiki - wiki export plugin</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>
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
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#key148">export</a>, <a href="../../../../index.html#key163">index</a>, <a href="../../../../index.html#key102">serialization</a>, <a href="../../../../index.html#key164">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>







|








258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
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#key148">export</a>, <a href="../../../../index.html#key163">index</a>, <a href="../../../../index.html#key104">serialization</a>, <a href="../../../../index.html#key164">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::import.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::idx::import(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::import - Importing keyword indices</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::import.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">doctools::idx::import(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::import - Importing keyword indices</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>

Changes to embedded/www/tcllib/files/modules/doctools2idx/import_docidx.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::import::docidx.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::idx::import::docidx(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::import::docidx - docidx import plugin</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::import::docidx.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">doctools::idx::import::docidx(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::import::docidx - docidx import plugin</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>

Changes to embedded/www/tcllib/files/modules/doctools2idx/import_json.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::import::json.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::idx::import::json(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::import::json - JSON import plugin</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::import::json.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">doctools::idx::import::json(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::import::json - JSON import plugin</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>

Changes to embedded/www/tcllib/files/modules/doctools2idx/introduction.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools2idx_introduction.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools2idx_introduction(n) 2.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools2idx_introduction - DocTools - Keyword indices</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools2idx_introduction.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">doctools2idx_introduction(n) 2.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools2idx_introduction - DocTools - Keyword indices</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>
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
the formal <i class="term"><a href="../doctools/docidx_lang_syntax.html">docidx language syntax</a></i> specification should
become understandable. A writer experienced with docidx may only
need the <i class="term"><a href="../doctools/docidx_lang_cmdref.html">docidx language command reference</a></i> from time to
time to refresh her memory.</p>
<p>While a document is written the <b class="syscmd">dtp</b> application can be used
to validate it, and after completion it also performs the conversion
into the chosen system of visual markup, be it *roff, HTML, plain
text, wiki, etc. The simpler <b class="syscmd"><a href="../../apps/dtplite.html">dtplite</a></b> application makes
internal use of docidx when handling directories of documentation,
automatically generating a proper keyword index for them.</p></li>
<li><p>A <i class="term">processor</i> of documentation written in the <i class="term"><a href="../../../../index.html#key50">docidx</a></i>
markup language has to know which tools are available for use.</p>
<p>The main tool is the aforementioned <b class="syscmd">dtp</b> application provided
by Tcllib. The simpler <b class="syscmd"><a href="../../apps/dtplite.html">dtplite</a></b> does not expose docidx to the
user. At the bottom level, common to both applications, however we
find the three packages providing the basic facilities to handle
keyword indices, i.e. import from textual formats, programmatic
manipulation in memory, and export to textual formats. These are</p>
<dl class="definitions">
<dt><b class="package"><a href="container.html">doctools::idx</a></b></dt>
<dd><p>Programmatic manipulation of keyword indices in memory.</p></dd>







|





|







156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
the formal <i class="term"><a href="../doctools/docidx_lang_syntax.html">docidx language syntax</a></i> specification should
become understandable. A writer experienced with docidx may only
need the <i class="term"><a href="../doctools/docidx_lang_cmdref.html">docidx language command reference</a></i> from time to
time to refresh her memory.</p>
<p>While a document is written the <b class="syscmd">dtp</b> application can be used
to validate it, and after completion it also performs the conversion
into the chosen system of visual markup, be it *roff, HTML, plain
text, wiki, etc. The simpler <b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> application makes
internal use of docidx when handling directories of documentation,
automatically generating a proper keyword index for them.</p></li>
<li><p>A <i class="term">processor</i> of documentation written in the <i class="term"><a href="../../../../index.html#key50">docidx</a></i>
markup language has to know which tools are available for use.</p>
<p>The main tool is the aforementioned <b class="syscmd">dtp</b> application provided
by Tcllib. The simpler <b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> does not expose docidx to the
user. At the bottom level, common to both applications, however we
find the three packages providing the basic facilities to handle
keyword indices, i.e. import from textual formats, programmatic
manipulation in memory, and export to textual formats. These are</p>
<dl class="definitions">
<dt><b class="package"><a href="container.html">doctools::idx</a></b></dt>
<dd><p>Programmatic manipulation of keyword indices in memory.</p></dd>

Changes to embedded/www/tcllib/files/modules/doctools2idx/msgcat_c.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::msgcat::idx::c.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::msgcat::idx::c(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::msgcat::idx::c - Message catalog for the docidx parser (C)</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::msgcat::idx::c.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">doctools::msgcat::idx::c(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::msgcat::idx::c - Message catalog for the docidx parser (C)</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>

Changes to embedded/www/tcllib/files/modules/doctools2idx/msgcat_de.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::msgcat::idx::de.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::msgcat::idx::de(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::msgcat::idx::de - Message catalog for the docidx parser (DE)</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::msgcat::idx::de.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">doctools::msgcat::idx::de(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::msgcat::idx::de - Message catalog for the docidx parser (DE)</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>

Changes to embedded/www/tcllib/files/modules/doctools2idx/msgcat_en.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::msgcat::idx::en.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::msgcat::idx::en(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::msgcat::idx::en - Message catalog for the docidx parser (EN)</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::msgcat::idx::en.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">doctools::msgcat::idx::en(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::msgcat::idx::en - Message catalog for the docidx parser (EN)</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>

Changes to embedded/www/tcllib/files/modules/doctools2idx/msgcat_fr.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::msgcat::idx::fr.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::msgcat::idx::fr(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::msgcat::idx::fr - Message catalog for the docidx parser (FR)</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::msgcat::idx::fr.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">doctools::msgcat::idx::fr(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::msgcat::idx::fr - Message catalog for the docidx parser (FR)</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>

Changes to embedded/www/tcllib/files/modules/doctools2idx/parse.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::parse.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::idx::parse(n) 1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::parse - Parsing text in docidx format</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::parse.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">doctools::idx::parse(n) 1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::parse - Parsing text in docidx format</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>

Changes to embedded/www/tcllib/files/modules/doctools2idx/structure.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::structure.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::idx::structure(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::structure - Docidx serialization 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::idx::structure.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">doctools::idx::structure(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::idx::structure - Docidx serialization 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>
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
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#key231">deserialization</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key102">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>







|








276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
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#key231">deserialization</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key104">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::toc(n) 2 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc - Holding tables of contents</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc.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">doctools::toc(n) 2 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc - Holding tables of contents</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>
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
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#key1">HTML</a>, <a href="../../../../index.html#key4">TMML</a>, <a href="../../../../index.html#key3">conversion</a>, <a href="../../../../index.html#key464">doctoc markup</a>, <a href="../../../../index.html#key166">documentation</a>, <a href="../../../../index.html#key307">formatting</a>, <a href="../../../../index.html#key536">generation</a>, <a href="../../../../index.html#key172">json</a>, <a href="../../../../index.html#key167">latex</a>, <a href="../../../../index.html#key0">markup</a>, <a href="../../../../index.html#key5">nroff</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key357">plugin</a>, <a href="../../../../index.html#key537">reference</a>, <a href="../../../../index.html#key104">table</a>, <a href="../../../../index.html#key150">table of contents</a>, <a href="../../../../index.html#key535">tcler's wiki</a>, <a href="../../../../index.html#key454">text</a>, <a href="../../../../index.html#key164">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>







|








498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
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#key1">HTML</a>, <a href="../../../../index.html#key4">TMML</a>, <a href="../../../../index.html#key3">conversion</a>, <a href="../../../../index.html#key464">doctoc markup</a>, <a href="../../../../index.html#key166">documentation</a>, <a href="../../../../index.html#key307">formatting</a>, <a href="../../../../index.html#key536">generation</a>, <a href="../../../../index.html#key172">json</a>, <a href="../../../../index.html#key167">latex</a>, <a href="../../../../index.html#key0">markup</a>, <a href="../../../../index.html#key5">nroff</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key357">plugin</a>, <a href="../../../../index.html#key537">reference</a>, <a href="../../../../index.html#key101">table</a>, <a href="../../../../index.html#key150">table of contents</a>, <a href="../../../../index.html#key535">tcler's wiki</a>, <a href="../../../../index.html#key454">text</a>, <a href="../../../../index.html#key164">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::export.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::toc::export(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::export - Exporting tables of contents</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::export.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">doctools::toc::export(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::export - Exporting tables of contents</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>
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
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#key1">HTML</a>, <a href="../../../../index.html#key3">conversion</a>, <a href="../../../../index.html#key230">doctoc</a>, <a href="../../../../index.html#key166">documentation</a>, <a href="../../../../index.html#key148">export</a>, <a href="../../../../index.html#key307">formatting</a>, <a href="../../../../index.html#key536">generation</a>, <a href="../../../../index.html#key172">json</a>, <a href="../../../../index.html#key2">manpage</a>, <a href="../../../../index.html#key0">markup</a>, <a href="../../../../index.html#key5">nroff</a>, <a href="../../../../index.html#key357">plugin</a>, <a href="../../../../index.html#key537">reference</a>, <a href="../../../../index.html#key104">table</a>, <a href="../../../../index.html#key150">table of contents</a>, <a href="../../../../index.html#key535">tcler's wiki</a>, <a href="../../../../index.html#key454">text</a>, <a href="../../../../index.html#key483">url</a>, <a href="../../../../index.html#key164">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>







|








463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
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#key1">HTML</a>, <a href="../../../../index.html#key3">conversion</a>, <a href="../../../../index.html#key230">doctoc</a>, <a href="../../../../index.html#key166">documentation</a>, <a href="../../../../index.html#key148">export</a>, <a href="../../../../index.html#key307">formatting</a>, <a href="../../../../index.html#key536">generation</a>, <a href="../../../../index.html#key172">json</a>, <a href="../../../../index.html#key2">manpage</a>, <a href="../../../../index.html#key0">markup</a>, <a href="../../../../index.html#key5">nroff</a>, <a href="../../../../index.html#key357">plugin</a>, <a href="../../../../index.html#key537">reference</a>, <a href="../../../../index.html#key101">table</a>, <a href="../../../../index.html#key150">table of contents</a>, <a href="../../../../index.html#key535">tcler's wiki</a>, <a href="../../../../index.html#key454">text</a>, <a href="../../../../index.html#key483">url</a>, <a href="../../../../index.html#key164">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::export::doctoc.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::toc::export::doctoc(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::export::doctoc - doctoc export plugin</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::export::doctoc.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">doctools::toc::export::doctoc(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::export::doctoc - doctoc export plugin</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>
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
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#key230">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key148">export</a>, <a href="../../../../index.html#key102">serialization</a>, <a href="../../../../index.html#key150">table of contents</a>, <a href="../../../../index.html#key149">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>
</div></body></html>







|








312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
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#key230">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key148">export</a>, <a href="../../../../index.html#key104">serialization</a>, <a href="../../../../index.html#key150">table of contents</a>, <a href="../../../../index.html#key149">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>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools2toc/export_html.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::export::html.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::toc::export::html(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::export::html - HTML export plugin</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::export::html.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">doctools::toc::export::html(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::export::html - HTML export plugin</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>
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
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#key1">HTML</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key148">export</a>, <a href="../../../../index.html#key102">serialization</a>, <a href="../../../../index.html#key150">table of contents</a>, <a href="../../../../index.html#key149">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>
</div></body></html>







|








345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
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#key1">HTML</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key148">export</a>, <a href="../../../../index.html#key104">serialization</a>, <a href="../../../../index.html#key150">table of contents</a>, <a href="../../../../index.html#key149">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>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools2toc/export_json.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::export::json.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::toc::export::json(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::export::json - JSON export plugin</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::export::json.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">doctools::toc::export::json(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::export::json - JSON export plugin</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>
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
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#key232">JSON</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key148">export</a>, <a href="../../../../index.html#key102">serialization</a>, <a href="../../../../index.html#key150">table of contents</a>, <a href="../../../../index.html#key149">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>
</div></body></html>







|








348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
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#key232">JSON</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key148">export</a>, <a href="../../../../index.html#key104">serialization</a>, <a href="../../../../index.html#key150">table of contents</a>, <a href="../../../../index.html#key149">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>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools2toc/export_nroff.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::export::nroff.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::toc::export::nroff(n) 0.2 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::export::nroff - nroff export plugin</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::export::nroff.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">doctools::toc::export::nroff(n) 0.2 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::export::nroff - nroff export plugin</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>
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
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#key148">export</a>, <a href="../../../../index.html#key5">nroff</a>, <a href="../../../../index.html#key102">serialization</a>, <a href="../../../../index.html#key150">table of contents</a>, <a href="../../../../index.html#key149">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>
</div></body></html>







|








282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
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#key148">export</a>, <a href="../../../../index.html#key5">nroff</a>, <a href="../../../../index.html#key104">serialization</a>, <a href="../../../../index.html#key150">table of contents</a>, <a href="../../../../index.html#key149">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>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools2toc/export_text.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::export::text.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::toc::export::text(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::export::text - plain text export plugin</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::export::text.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">doctools::toc::export::text(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::export::text - plain text export plugin</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>
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
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#key148">export</a>, <a href="../../../../index.html#key147">plain text</a>, <a href="../../../../index.html#key102">serialization</a>, <a href="../../../../index.html#key150">table of contents</a>, <a href="../../../../index.html#key149">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>
</div></body></html>







|








268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
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#key148">export</a>, <a href="../../../../index.html#key147">plain text</a>, <a href="../../../../index.html#key104">serialization</a>, <a href="../../../../index.html#key150">table of contents</a>, <a href="../../../../index.html#key149">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>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/doctools2toc/export_wiki.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::export::wiki.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::toc::export::wiki(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::export::wiki - wiki export plugin</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::export::wiki.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">doctools::toc::export::wiki(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::export::wiki - wiki export plugin</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>
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
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#key148">export</a>, <a href="../../../../index.html#key102">serialization</a>, <a href="../../../../index.html#key150">table of contents</a>, <a href="../../../../index.html#key149">toc</a>, <a href="../../../../index.html#key164">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>







|








275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
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#key148">export</a>, <a href="../../../../index.html#key104">serialization</a>, <a href="../../../../index.html#key150">table of contents</a>, <a href="../../../../index.html#key149">toc</a>, <a href="../../../../index.html#key164">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/doctools2toc/import.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::import.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::toc::import(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::import - Importing keyword indices</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::import.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">doctools::toc::import(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::import - Importing keyword indices</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>
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
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#key3">conversion</a>, <a href="../../../../index.html#key230">doctoc</a>, <a href="../../../../index.html#key166">documentation</a>, <a href="../../../../index.html#key247">import</a>, <a href="../../../../index.html#key172">json</a>, <a href="../../../../index.html#key2">manpage</a>, <a href="../../../../index.html#key0">markup</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key357">plugin</a>, <a href="../../../../index.html#key537">reference</a>, <a href="../../../../index.html#key104">table</a>, <a href="../../../../index.html#key150">table of contents</a>, <a href="../../../../index.html#key483">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>







|








524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
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#key3">conversion</a>, <a href="../../../../index.html#key230">doctoc</a>, <a href="../../../../index.html#key166">documentation</a>, <a href="../../../../index.html#key247">import</a>, <a href="../../../../index.html#key172">json</a>, <a href="../../../../index.html#key2">manpage</a>, <a href="../../../../index.html#key0">markup</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key357">plugin</a>, <a href="../../../../index.html#key537">reference</a>, <a href="../../../../index.html#key101">table</a>, <a href="../../../../index.html#key150">table of contents</a>, <a href="../../../../index.html#key483">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::import::doctoc.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::toc::import::doctoc(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::import::doctoc - doctoc import plugin</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::import::doctoc.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">doctools::toc::import::doctoc(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::import::doctoc - doctoc import plugin</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>

Changes to embedded/www/tcllib/files/modules/doctools2toc/import_json.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::import::json.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::toc::import::json(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::import::json - JSON import plugin</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::import::json.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">doctools::toc::import::json(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::import::json - JSON import plugin</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>

Changes to embedded/www/tcllib/files/modules/doctools2toc/introduction.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools2toc_introduction.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools2toc_introduction(n) 2.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools2toc_introduction - DocTools - Tables of Contents</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools2toc_introduction.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">doctools2toc_introduction(n) 2.0 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools2toc_introduction - DocTools - Tables of Contents</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>
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
the formal <i class="term"><a href="../doctools/doctoc_lang_syntax.html">doctoc language syntax</a></i> specification should
become understandable. A writer experienced with doctoc may only
need the <i class="term"><a href="../doctools/doctoc_lang_cmdref.html">doctoc language command reference</a></i> from time to
time to refresh her memory.</p>
<p>While a document is written the <b class="syscmd">dtp</b> application can be used
to validate it, and after completion it also performs the conversion
into the chosen system of visual markup, be it *roff, HTML, plain
text, wiki, etc. The simpler <b class="syscmd"><a href="../../apps/dtplite.html">dtplite</a></b> application makes
internal use of doctoc when handling directories of documentation,
automatically generating a proper table of contents for them.</p></li>
<li><p>A <i class="term">processor</i> of documentation written in the <i class="term"><a href="../../../../index.html#key230">doctoc</a></i>
markup language has to know which tools are available for use.</p>
<p>The main tool is the aforementioned <b class="syscmd">dtp</b> application provided
by Tcllib. The simpler <b class="syscmd"><a href="../../apps/dtplite.html">dtplite</a></b> does not expose doctoc to the
user. At the bottom level, common to both applications, however we
find the three packages providing the basic facilities to handle
tables of contents, i.e. import from textual formats, programmatic
manipulation in memory, and export to textual formats. These are</p>
<dl class="definitions">
<dt><b class="package">doctoools::toc</b></dt>
<dd><p>Programmatic manipulation of tables of contents in memory.</p></dd>







|





|







156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
the formal <i class="term"><a href="../doctools/doctoc_lang_syntax.html">doctoc language syntax</a></i> specification should
become understandable. A writer experienced with doctoc may only
need the <i class="term"><a href="../doctools/doctoc_lang_cmdref.html">doctoc language command reference</a></i> from time to
time to refresh her memory.</p>
<p>While a document is written the <b class="syscmd">dtp</b> application can be used
to validate it, and after completion it also performs the conversion
into the chosen system of visual markup, be it *roff, HTML, plain
text, wiki, etc. The simpler <b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> application makes
internal use of doctoc when handling directories of documentation,
automatically generating a proper table of contents for them.</p></li>
<li><p>A <i class="term">processor</i> of documentation written in the <i class="term"><a href="../../../../index.html#key230">doctoc</a></i>
markup language has to know which tools are available for use.</p>
<p>The main tool is the aforementioned <b class="syscmd">dtp</b> application provided
by Tcllib. The simpler <b class="syscmd"><a href="../dtplite/dtplite.html">dtplite</a></b> does not expose doctoc to the
user. At the bottom level, common to both applications, however we
find the three packages providing the basic facilities to handle
tables of contents, i.e. import from textual formats, programmatic
manipulation in memory, and export to textual formats. These are</p>
<dl class="definitions">
<dt><b class="package">doctoools::toc</b></dt>
<dd><p>Programmatic manipulation of tables of contents in memory.</p></dd>

Changes to embedded/www/tcllib/files/modules/doctools2toc/msgcat_c.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::msgcat::toc::c.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::msgcat::toc::c(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::msgcat::toc::c - Message catalog for the doctoc parser (C)</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::msgcat::toc::c.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">doctools::msgcat::toc::c(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::msgcat::toc::c - Message catalog for the doctoc parser (C)</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>

Changes to embedded/www/tcllib/files/modules/doctools2toc/msgcat_de.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::msgcat::toc::de.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::msgcat::toc::de(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::msgcat::toc::de - Message catalog for the doctoc parser (DE)</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::msgcat::toc::de.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">doctools::msgcat::toc::de(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::msgcat::toc::de - Message catalog for the doctoc parser (DE)</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>

Changes to embedded/www/tcllib/files/modules/doctools2toc/msgcat_en.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::msgcat::toc::en.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::msgcat::toc::en(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::msgcat::toc::en - Message catalog for the doctoc parser (EN)</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::msgcat::toc::en.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">doctools::msgcat::toc::en(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::msgcat::toc::en - Message catalog for the doctoc parser (EN)</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>

Changes to embedded/www/tcllib/files/modules/doctools2toc/msgcat_fr.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::msgcat::toc::fr.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::msgcat::toc::fr(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::msgcat::toc::fr - Message catalog for the doctoc parser (FR)</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::msgcat::toc::fr.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">doctools::msgcat::toc::fr(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::msgcat::toc::fr - Message catalog for the doctoc parser (FR)</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>

Changes to embedded/www/tcllib/files/modules/doctools2toc/parse.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::parse.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::toc::parse(n) 1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::parse - Parsing text in doctoc format</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::parse.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">doctools::toc::parse(n) 1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::parse - Parsing text in doctoc format</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>

Changes to embedded/www/tcllib/files/modules/doctools2toc/structure.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::structure.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">doctools::toc::structure(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::structure - Doctoc serialization 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ doctools::toc::structure.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">doctools::toc::structure(n) 0.1 tcllib &quot;Documentation tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools::toc::structure - Doctoc serialization 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>
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
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#key231">deserialization</a>, <a href="../../../../index.html#key230">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key102">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>







|








312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
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#key231">deserialization</a>, <a href="../../../../index.html#key230">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key104">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>

Added embedded/www/tcllib/files/modules/dtplite/dtplite.html.























































































































































































































































































































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
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
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

<html><head>
<title>dtplite - Documentation toolbox</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
	color:	 	black;
    }
    DIV.doctools {
	margin-left:	10%;
	margin-right:	10%;
    }
    DIV.doctools H1,DIV.doctools H2 {
	margin-left:	-5%;
    }
    H1, H2, H3, H4 {
	margin-top: 	1em;
	font-family:	sans-serif;
	font-size:	large;
	color:		#005A9C;
	background: 	transparent;
	text-align:		left;
    }
    H1.title {
	text-align: center;
    }
    UL,OL {
	margin-right: 0em;
	margin-top: 3pt;
	margin-bottom: 3pt;
    }
    UL LI {
	list-style: disc;
    }
    OL LI {
	list-style: decimal;
    }
    DT {
	padding-top: 	1ex;
    }
    UL.toc,UL.toc UL, UL.toc UL UL {
	font:		normal 12pt/14pt sans-serif;
	list-style:	none;
    }
    LI.section, LI.subsection {
	list-style: 	none;
	margin-left: 	0em;
	text-indent:	0em;
	padding: 	0em;
    }
    PRE {
	display: 	block;
	font-family:	monospace;
	white-space:	pre;
	margin:		0%;
	padding-top:	0.5ex;
	padding-bottom:	0.5ex;
	padding-left:	1ex;
	padding-right:	1ex;
	width:		100%;
    }
    PRE.example {
	color: 		black;
	background: 	#f5dcb3;
	border:		1px solid black;
    }
    UL.requirements LI, UL.syntax LI {
	list-style: 	none;
	margin-left: 	0em;
	text-indent:	0em;
	padding:	0em;
    }
    DIV.synopsis {
	color: 		black;
	background: 	#80ffff;
	border:		1px solid black;
	font-family:	serif;
	margin-top: 	1em;
	margin-bottom: 	1em;
    }
    UL.syntax {
	margin-top: 	1em;
	border-top:	1px solid black;
    }
    UL.requirements {
	margin-bottom: 	1em;
	border-bottom:	1px solid black;
    }
--></style>
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/dtplite/dtplite.html' by tcllib/doctools with format 'html'
   -->
<! -- Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ dtplite.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">dtplite(n) 1.0 tcllib &quot;Documentation toolbox&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>dtplite - Lightweight DocTools Markup Processor</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>
<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>
<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>
<div class="synopsis">
<ul class="syntax">
<li><a href="#1"><b class="cmd">dtplite</b> <b class="option">-o</b> <i class="arg">output</i> <span class="opt">?options?</span> <i class="arg">format</i> <i class="arg">inputfile</i></a></li>
<li><a href="#2"><b class="cmd">dtplite</b> <b class="const">validate</b> <i class="arg">inputfile</i></a></li>
<li><a href="#3"><b class="cmd">dtplite</b> <b class="option">-o</b> <i class="arg">output</i> <span class="opt">?options?</span> <i class="arg">format</i> <i class="arg">inputdirectory</i></a></li>
<li><a href="#4"><b class="cmd">dtplite</b> <b class="option">-merge</b> <b class="option">-o</b> <i class="arg">output</i> <span class="opt">?options?</span> <i class="arg">format</i> <i class="arg">inputdirectory</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>The application described by this document, <b class="syscmd">dtplite</b>, is the
successor to the extremely simple <b class="syscmd"><a href="../doctools/mpexpand.html">mpexpand</a></b>. Influenced in its
functionality by the <b class="syscmd">dtp</b> doctools processor it is much more
powerful than <b class="syscmd"><a href="../doctools/mpexpand.html">mpexpand</a></b>, yet still as easy to use; definitely
easier than <b class="syscmd">dtp</b> with its myriad of subcommands and options.</p>
<p><b class="syscmd">dtplite</b> is based upon the package <b class="package"><a href="../doctools/doctools.html">doctools</a></b>, like
the other two processors.</p>
<div id="subsection1" class="subsection"><h3><a name="subsection1">USE CASES</a></h3>
<p><b class="syscmd">dtplite</b> was written with the following three use cases in
mind.</p>
<ol class="enumerated">
<li><p>Validation of a single document, i.e. checking that it was written in
valid doctools format. This mode can also be used to get a preliminary
version of the formatted output for a single document, for display in
a browser, nroff, etc., allowing proofreading of the formatting.</p></li>
<li><p>Generation of the formatted documentation for a single package,
i.e. all the manpages, plus a table of contents and an index of
keywords.</p></li>
<li><p>An extension of the previous mode of operation, a method for the easy
generation of one documentation tree for several packages, and
especially of a unified table of contents and keyword index.</p></li>
</ol>
<p>Beyond the above we also want to make use of the customization
features provided by the HTML formatter. It is not the only format the
application should be able to generate, but we anticipiate it to be
the most commonly used, and it is one of the few which do provide
customization hooks.</p>
<p>We allow the caller to specify a header string, footer string, a
stylesheet, and data for a bar of navigation links at the top of the
generated document.
While all can be set as long as the formatting engine provides an
appropriate engine parameter (See section <span class="sectref"><a href="#subsection3">OPTIONS</a></span>) the last
two have internal processing which make them specific to HTML.</p>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">COMMAND LINE</a></h3>
<dl class="definitions">
<dt><a name="1"><b class="cmd">dtplite</b> <b class="option">-o</b> <i class="arg">output</i> <span class="opt">?options?</span> <i class="arg">format</i> <i class="arg">inputfile</i></a></dt>
<dd><p>This is the form for use case [1]. The <i class="arg">options</i> will be
explained later, in section <span class="sectref"><a href="#subsection3">OPTIONS</a></span>.</p>
<dl class="arguments">
<dt>path <i class="arg">output</i> (in)</dt>
<dd><p>This argument specifies where to write the generated document. It can
be the path to a file or directory, or <b class="const">-</b>.
The last value causes the application to write the generated
documented to <b class="const">stdout</b>.</p>
<p>If the <i class="arg">output</i> does not exist then [file dirname $output]
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 <i class="arg">inputfile</i>,
the <i class="arg">format</i>, and the value given to option <b class="option">-ext</b> (if
present).</p></dd>
<dt>(path|handle) <i class="arg">format</i> (in)</dt>
<dd><p>This argument specifies the formatting engine to use when processing
the input, and thus the format of the generated document. See section
<span class="sectref"><a href="#subsection4">FORMATS</a></span> for the possibilities recognized by the application.</p></dd>
<dt>path <i class="arg">inputfile</i> (in)</dt>
<dd><p>This argument specifies the path to the file to process. It has to
exist, must be readable, and written in <i class="term"><a href="../../../../index.html#key51">doctools</a></i> format.</p></dd>
</dl></dd>
<dt><a name="2"><b class="cmd">dtplite</b> <b class="const">validate</b> <i class="arg">inputfile</i></a></dt>
<dd><p>This is a simpler form for use case [1]. The &quot;validate&quot; 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.</p></dd>
<dt><a name="3"><b class="cmd">dtplite</b> <b class="option">-o</b> <i class="arg">output</i> <span class="opt">?options?</span> <i class="arg">format</i> <i class="arg">inputdirectory</i></a></dt>
<dd><p>This is the form for use case [2]. It differs from the form for
use case [1] by having the input documents specified through a
directory instead of a file. The other arguments are identical, except
for <i class="arg">output</i>, which now has to be the path to an existing and
writable directory.</p>
<p>The input documents are all files in <i class="arg">inputdirectory</i> or any of
its subdirectories which were recognized by <b class="cmd">fileutil::fileType</b>
as containing text in <i class="term"><a href="../../../../index.html#key51">doctools</a></i> format.</p></dd>
<dt><a name="4"><b class="cmd">dtplite</b> <b class="option">-merge</b> <b class="option">-o</b> <i class="arg">output</i> <span class="opt">?options?</span> <i class="arg">format</i> <i class="arg">inputdirectory</i></a></dt>
<dd><p>This is the form for use case [3]. The only difference to the
form for use case [2] is the additional option <b class="option">-merge</b>.</p>
<p>Each such call will merge the generated documents coming from
processing the input documents under <i class="arg">inputdirectory</i> or any of
its subdirectories to the files under <i class="arg">output</i>. In this manner it
is possible to incrementally build the unified documentation for any
number of packages. Note that it is necessary to run through all the
packages twice to get fully correct cross-references (for formats
supporting them).</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
application, with
the exception of the options <b class="option">-o</b> and <b class="option">-merge</b>. These
two were described already, in section <span class="sectref"><a href="#subsection2">COMMAND LINE</a></span>.</p>
<dl class="options">
<dt><b class="option">-exclude</b> string</dt>
<dd><p>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.</p></dd>
<dt><b class="option">-ext</b> string</dt>
<dd><p>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 <i class="arg">format</i> as the extension
by default. This option here will override this however, forcing it to
use <i class="arg">string</i> as the file extension. This option is ignored if the
name of the output file is fully specified through option <b class="option">-o</b>.</p>
<p>When used multiple times only the last definition is relevant.</p></dd>
<dt><b class="option">-header</b> file</dt>
<dd><p>This option can be used if and only if the selected <i class="arg">format</i>
provides an engine parameter named &quot;header&quot;. 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
<b class="const">&lt;body&gt;</b>.
If navigation buttons are present (see option <b class="option">-nav</b> below),
then the HTML generated for them is appended to the header data
originating here before the final assignment to the parameter.</p>
<p>When used multiple times only the last definition is relevant.</p></dd>
<dt><b class="option">-footer</b> file</dt>
<dd><p>Like <b class="option">-header</b>, except that: Any navigation buttons are ignored,
the corresponding required engine parameter is named &quot;footer&quot;, and the
data is inserted just before the tag <b class="const">&lt;/body&gt;</b>.</p>
<p>When used multiple times only the last definition is relevant.</p></dd>
<dt><b class="option">-style</b> file</dt>
<dd><p>This option can be used if and only if the selected <i class="arg">format</i>
provides an engine parameter named &quot;meta&quot;. When specified it will
generate a piece of HTML code declaring the <i class="arg">file</i> as the
stylesheet for the generated document and assign that to the
parameter. The HTML engine will insert this inot the document, just
after the tag <b class="const">&lt;head&gt;</b>.</p>
<p>When processing an input directory the stylesheet file is copied into
the output directory and the generated HTML will refer to the copy, to
make the result more self-contained. When processing an input file we
have no location to copy the stylesheet to and so just reference it as
specified.</p>
<p>When used multiple times only the last definition is relevant.</p></dd>
<dt><b class="option">-toc</b> path</dt>
<dd><p>This option specifies a doctoc file to use for the table of contents
instead of generating our own.</p>
<p>When used multiple times only the last definition is relevant.</p></dd>
<dt><b class="option">-nav</b> label url</dt>
<dd><p>Use this option to specify a navigation button with <i class="arg">label</i> to
display and the <i class="arg">url</i> to link to. This option can be used if and
only if the selected <i class="arg">format</i> provides an engine parameter named
&quot;header&quot;. The HTML generated for this is appended to whatever data we
got from option <b class="option">-header</b> before it is inserted into the
generated documents.</p>
<p>When used multiple times all definitions are collected and a
navigation bar is created, with the first definition shown at the left
edge and the last definition to the right.</p></dd>
</dl>
</div>
<div id="subsection4" class="subsection"><h3><a name="subsection4">FORMATS</a></h3>
<p>At first the <i class="arg">format</i> 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.</p>
<p><em>Note a limitation</em>: If treating the format as path to the tcl
script implementing the engine was sucessful, then this script has to
implement not only the engine API for doctools, i.e.
<i class="term">doctools_api</i>, but for <i class="term">doctoc_api</i> and <i class="term">docidx_api</i>
as well. Otherwise the generation of a table of contents and of a
keyword index will fail.</p>
<p>List of predefined formats, i.e. as provided by the
package <b class="package"><a href="../doctools/doctools.html">doctools</a></b>:</p>
<dl class="definitions">
<dt><b class="const">nroff</b></dt>
<dd><p>The processor generates *roff output, the standard format for unix
manpages.</p></dd>
<dt><b class="const">html</b></dt>
<dd><p>The processor generates HTML output, for usage in and display by web
browsers. This engine is currently the only one providing the various
engine parameters required for the additional customaization of the
output.</p></dd>
<dt><b class="const">tmml</b></dt>
<dd><p>The processor generates TMML output, the Tcl Manpage Markup Language,
a derivative of XML.</p></dd>
<dt><b class="const">latex</b></dt>
<dd><p>The processor generates LaTeX output.</p></dd>
<dt><b class="const">wiki</b></dt>
<dd><p>The processor generates Wiki markup as understood by <b class="syscmd">wikit</b>.</p></dd>
<dt><b class="const">list</b></dt>
<dd><p>The processor extracts the information provided by <b class="cmd">manpage_begin</b>.
This format is used internally to extract the meta data from which
both table of contents and keyword index are derived from.</p></dd>
<dt><b class="const">null</b></dt>
<dd><p>The processor does not generate any output. This is equivalent to
<b class="const">validate</b>.</p></dd>
</dl>
</div>
<div id="subsection5" class="subsection"><h3><a name="subsection5">DIRECTORY STRUCTURES</a></h3>
<p>In this section we describe the directory structures generated by the
application under <i class="arg">output</i> when processing all documents in an
<i class="arg">inputdirectory</i>. In other words, this is only relevant to the use
cases [2] and [3].</p>
<dl class="definitions">
<dt>[2]</dt>
<dd><p>The following directory structure is created when processing a single
set of input documents.  The file extension used is for output in
HTML, but that is not relevant to the structure and was just used to
have proper file names.</p>
<pre class="example">
    output/
        toc.html
        index.html
        files/
            path/to/FOO.html
</pre>
<p>The last line in the example shows the document
generated for a file FOO located at</p>
<pre class="example">
    inputdirectory/path/to/FOO
</pre>
</dd>
<dt>[3]</dt>
<dd><p>When merging many packages into a unified set of documents the
generated directory structure is a bit deeper:</p>
<pre class="example">
    output
        .toc
        .idx
        .tocdoc
        .idxdoc
        .xrf
        toc.html
        index.html
        FOO1/
            ...
        FOO2/
            toc.html
            files/
                path/to/BAR.html
</pre>
<p>Each of the directories FOO1, ... contains the documents generated for
the package FOO1, ... and follows the structure shown for use case
[2]. The only exception is that there is no per-package index.</p>
<p>The files &quot;<b class="file">.toc</b>&quot;, &quot;<b class="file">.idx</b>&quot;, and &quot;<b class="file">.xrf</b>&quot; contain the
internal status of the whole output and will be read and updated by
the next invokation. Their contents will not be documented. Remove
these files when all packages wanted for the output have been
processed, i.e. when the output is complete.</p>
<p>The files &quot;<b class="file">.tocdoc</b>&quot;, and &quot;<b class="file">.idxdoc</b>&quot;, are intermediate files
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.</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#key1">HTML</a>, <a href="../../../../index.html#key4">TMML</a>, <a href="../../../../index.html#key3">conversion</a>, <a href="../../../../index.html#key50">docidx</a>, <a href="../../../../index.html#key230">doctoc</a>, <a href="../../../../index.html#key51">doctools</a>, <a href="../../../../index.html#key2">manpage</a>, <a href="../../../../index.html#key0">markup</a>, <a href="../../../../index.html#key5">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 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/exif/exif.html.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/exif/exif.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ exif.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">exif(n) 1.1.2 tcllib &quot;EXIF parsing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>exif - Tcl EXIF extracts and parses EXIF fields from digital images</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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/exif/exif.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ exif.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">exif(n) 1.1.2 tcllib &quot;EXIF parsing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>exif - Tcl EXIF extracts and parses EXIF fields from digital images</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>
182
183
184
185
186
187
188
189
190
191
192
193
194
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#key143">exif</a>, <a href="../../../../index.html#key144">jpeg</a>, <a href="../../../../index.html#key777">maker note</a>, <a href="../../../../index.html#key134">tiff</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>File formats</p>
</div>
</div></body></html>







|





185
186
187
188
189
190
191
192
193
194
195
196
197
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#key143">exif</a>, <a href="../../../../index.html#key144">jpeg</a>, <a href="../../../../index.html#key777">maker note</a>, <a href="../../../../index.html#key121">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.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/fileutil/fileutil.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ fileutil.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">fileutil(n) 1.14.5 tcllib &quot;file utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/fileutil/fileutil.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ fileutil.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">fileutil(n) 1.14.5 tcllib &quot;file utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
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#key574">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#key576">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

Changes to embedded/www/tcllib/files/modules/fileutil/multi.html.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/fileutil/multi.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ fileutil::multi.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">fileutil::multi(n) 0.1 tcllib &quot;file utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>fileutil::multi - Multi-file operation, scatter/gather, standard object</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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/fileutil/multi.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ fileutil::multi.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">fileutil::multi(n) 0.1 tcllib &quot;file utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>fileutil::multi - Multi-file operation, scatter/gather, standard object</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>

Changes to embedded/www/tcllib/files/modules/fileutil/multiop.html.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/fileutil/multiop.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ fileutil::multi::op.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">fileutil::multi::op(n) 0.5.3 tcllib &quot;file utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>fileutil::multi::op - Multi-file operation, scatter/gather</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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/fileutil/multiop.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ fileutil::multi::op.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">fileutil::multi::op(n) 0.5.3 tcllib &quot;file utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>fileutil::multi::op - Multi-file operation, scatter/gather</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>

Changes to embedded/www/tcllib/files/modules/fileutil/traverse.html.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/fileutil/traverse.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ fileutil_traverse.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">fileutil_traverse(n) 0.4.3 tcllib &quot;file utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>fileutil_traverse - Iterative directory traversal</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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/fileutil/traverse.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ fileutil_traverse.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">fileutil_traverse(n) 0.4.3 tcllib &quot;file utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>fileutil_traverse - Iterative directory traversal</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>

Changes to embedded/www/tcllib/files/modules/ftp/ftp.html.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/ftp/ftp.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ ftp.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">ftp(n) 2.4.11 tcllib &quot;ftp client&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>ftp - Client-side tcl implementation of the ftp protocol</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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/ftp/ftp.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ ftp.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">ftp(n) 2.4.11 tcllib &quot;ftp client&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>ftp - Client-side tcl implementation of the ftp protocol</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>
432
433
434
435
436
437
438
439
440
441
442
443
444
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#key249">ftp</a>, <a href="../../../../index.html#key122">internet</a>, <a href="../../../../index.html#key250">net</a>, <a href="../../../../index.html#key248">rfc 959</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>







|





435
436
437
438
439
440
441
442
443
444
445
446
447
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#key249">ftp</a>, <a href="../../../../index.html#key130">internet</a>, <a href="../../../../index.html#key250">net</a>, <a href="../../../../index.html#key248">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.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/ftp/ftp_geturl.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ ftp::geturl.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">ftp::geturl(n) 0.2.1 tcllib &quot;ftp client&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>ftp::geturl - Uri handler for ftp urls</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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/ftp/ftp_geturl.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ ftp::geturl.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">ftp::geturl(n) 0.2.1 tcllib &quot;ftp client&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>ftp::geturl - Uri handler for ftp urls</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>
162
163
164
165
166
167
168
169
170
171
172
173
174
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#key249">ftp</a>, <a href="../../../../index.html#key122">internet</a>, <a href="../../../../index.html#key250">net</a>, <a href="../../../../index.html#key248">rfc 959</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>







|





165
166
167
168
169
170
171
172
173
174
175
176
177
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#key249">ftp</a>, <a href="../../../../index.html#key130">internet</a>, <a href="../../../../index.html#key250">net</a>, <a href="../../../../index.html#key248">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.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/ftpd/ftpd.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ ftpd.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">ftpd(n) 1.2.6 tcllib &quot;Tcl FTP Server Package&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>ftpd - Tcl FTP server implementation</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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/ftpd/ftpd.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ ftpd.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">ftpd(n) 1.2.6 tcllib &quot;Tcl FTP Server Package&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>ftpd - Tcl FTP server implementation</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>
330
331
332
333
334
335
336
337
338
339
340
341
342
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#key249">ftp</a>, <a href="../../../../index.html#key557">ftpd</a>, <a href="../../../../index.html#key556">ftpserver</a>, <a href="../../../../index.html#key248">rfc 959</a>, <a href="../../../../index.html#key555">services</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>







|





333
334
335
336
337
338
339
340
341
342
343
344
345
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#key249">ftp</a>, <a href="../../../../index.html#key558">ftpd</a>, <a href="../../../../index.html#key557">ftpserver</a>, <a href="../../../../index.html#key248">rfc 959</a>, <a href="../../../../index.html#key556">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.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/fumagic/cfront.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ fileutil::magic::cfront.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">fileutil::magic::cfront(n) 1.0 tcllib &quot;file utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>fileutil::magic::cfront - Generator core for compiler of magic(5) 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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/fumagic/cfront.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ fileutil::magic::cfront.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">fileutil::magic::cfront(n) 1.0 tcllib &quot;file utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>fileutil::magic::cfront - Generator core for compiler of magic(5) 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>

Changes to embedded/www/tcllib/files/modules/fumagic/cgen.html.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/fumagic/cgen.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ fileutil::magic::cgen.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">fileutil::magic::cgen(n) 1.0 tcllib &quot;file utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>fileutil::magic::cgen - Generator core for compiler of magic(5) 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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/fumagic/cgen.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ fileutil::magic::cgen.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">fileutil::magic::cgen(n) 1.0 tcllib &quot;file utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>fileutil::magic::cgen - Generator core for compiler of magic(5) 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>

Changes to embedded/www/tcllib/files/modules/fumagic/filetypes.html.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/fumagic/filetypes.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ fileutil::magic::filetype.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">fileutil::magic::filetype(n) 1.0.2 tcllib &quot;file utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>fileutil::magic::filetype - Procedures implementing file-type recognition</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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/fumagic/filetypes.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ fileutil::magic::filetype.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">fileutil::magic::filetype(n) 1.0.2 tcllib &quot;file utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>fileutil::magic::filetype - Procedures implementing file-type recognition</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>

Changes to embedded/www/tcllib/files/modules/fumagic/mimetypes.html.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/fumagic/mimetypes.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ fileutil::magic::mimetype.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">fileutil::magic::mimetype(n) 1.0.2 tcllib &quot;file utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>fileutil::magic::mimetype - Procedures implementing mime-type recognition</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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/fumagic/mimetypes.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ fileutil::magic::mimetype.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">fileutil::magic::mimetype(n) 1.0.2 tcllib &quot;file utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>fileutil::magic::mimetype - Procedures implementing mime-type recognition</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>

Changes to embedded/www/tcllib/files/modules/fumagic/rtcore.html.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/fumagic/rtcore.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ fileutil::magic::rt.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">fileutil::magic::rt(n) 1.0 tcllib &quot;file utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>fileutil::magic::rt - Runtime core for file type recognition engines written in pure Tcl</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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/fumagic/rtcore.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ fileutil::magic::rt.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">fileutil::magic::rt(n) 1.0 tcllib &quot;file utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>fileutil::magic::rt - Runtime core for file type recognition engines written in pure Tcl</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>

Changes to embedded/www/tcllib/files/modules/generator/generator.html.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/generator/generator.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ generator.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">generator(n) 0.1 tcllib &quot;Tcl Generator Commands&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>generator - Procedures for creating and using generators.</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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/generator/generator.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ generator.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">generator(n) 0.1 tcllib &quot;Tcl Generator Commands&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>generator - Procedures for creating and using generators.</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>
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
generator procedure; that is, a procedure that returns a generator when called.
The generator itself is a command that can be called multiple times: each time
it returns the next value in the generated series. When the
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#key199">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} {







|







193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
generator procedure; that is, a procedure that returns a generator when called.
The generator itself is a command that can be called multiple times: each time
it returns the next value in the generated series. When the
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#key197">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} {
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
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#key199">foreach</a></b>
command, but working with generators rather than lists. Multiple generators can
be iterated over in parallel, and multiple results can be retrieved from a
single generator at once.  Like the built-in <b class="cmd"><a href="../../../../index.html#key199">foreach</a></b>, the loop will
continue until all of the generators have been exhausted: variables for
generators that are exhausted early will be set to the empty string.</p>
<p>The <b class="method">foreach</b> command will automatically clean-up all of the generators
at the end of the loop, regardless of whether the loop terminated early or not.
This behaviour is provided as a convenience to avoid having to explicitly
clean up a generator in the usual cases. Generators can however be destroyed
before the end of the loop, in which case the loop will continue as normal until







|


|







247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
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#key197">foreach</a></b>
command, but working with generators rather than lists. Multiple generators can
be iterated over in parallel, and multiple results can be retrieved from a
single generator at once.  Like the built-in <b class="cmd"><a href="../../../../index.html#key197">foreach</a></b>, the loop will
continue until all of the generators have been exhausted: variables for
generators that are exhausted early will be set to the empty string.</p>
<p>The <b class="method">foreach</b> command will automatically clean-up all of the generators
at the end of the loop, regardless of whether the loop terminated early or not.
This behaviour is provided as a convenience to avoid having to explicitly
clean up a generator in the usual cases. Generators can however be destroyed
before the end of the loop, in which case the loop will continue as normal until
501
502
503
504
505
506
507
508
509
510
</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#key205">control structure</a>, <a href="../../../../index.html#key200">coroutine</a>, <a href="../../../../index.html#key203">filter</a>, <a href="../../../../index.html#key202">foldl</a>, <a href="../../../../index.html#key206">foldr</a>, <a href="../../../../index.html#key199">foreach</a>, <a href="../../../../index.html#key207">generator</a>, <a href="../../../../index.html#key204">iterator</a>, <a href="../../../../index.html#key187">map</a>, <a href="../../../../index.html#key198">reduce</a>, <a href="../../../../index.html#key201">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#key203">control structure</a>, <a href="../../../../index.html#key198">coroutine</a>, <a href="../../../../index.html#key201">filter</a>, <a href="../../../../index.html#key200">foldl</a>, <a href="../../../../index.html#key204">foldr</a>, <a href="../../../../index.html#key197">foreach</a>, <a href="../../../../index.html#key205">generator</a>, <a href="../../../../index.html#key202">iterator</a>, <a href="../../../../index.html#key180">map</a>, <a href="../../../../index.html#key196">reduce</a>, <a href="../../../../index.html#key199">scanl</a></p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/gpx/gpx.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2010, Keith Vetter &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ gpx.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">gpx(n) 0.9 tcllib &quot;GPS eXchange Format (GPX)&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>gpx - Extracts waypoints, tracks and routes from GPX 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2010, Keith Vetter &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ gpx.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">gpx(n) 0.9 tcllib &quot;GPS eXchange Format (GPX)&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>gpx - Extracts waypoints, tracks and routes from GPX 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>

Changes to embedded/www/tcllib/files/modules/grammar_aycock/aycock.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006 by Kevin B. Kenny &lt;[email protected]&gt;   -- Redistribution permitted under the terms of the Open Publication License &lt;http://www.opencontent.org/openpub/&gt;
   -->
<! -- CVS: $Id$ grammar::aycock.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">grammar::aycock(n) 1.0 tcllib &quot;Aycock-Horspool-Earley parser generator for Tcl&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::aycock - Aycock-Horspool-Earley parser generator for Tcl</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006 by Kevin B. Kenny &lt;[email protected]&gt;   -- Redistribution permitted under the terms of the Open Publication License &lt;http://www.opencontent.org/openpub/&gt;
   -->
<! -- CVS: $Id$ grammar::aycock.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">grammar::aycock(n) 1.0 tcllib &quot;Aycock-Horspool-Earley parser generator for Tcl&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::aycock - Aycock-Horspool-Earley parser generator for Tcl</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>
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
</pre>
<p>The example, when run, prints <b class="const">40</b>.</p>
</div>
<div id="section6" class="section"><h2><a name="section6">KEYWORDS</a></h2>
<p>Aycock, Earley, Horspool, parser, compiler</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key759">ambiguous</a>, <a href="../../../../index.html#key762">aycock</a>, <a href="../../../../index.html#key761">earley</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key760">horspool</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key18">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; 2006 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>







|









233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
</pre>
<p>The example, when run, prints <b class="const">40</b>.</p>
</div>
<div id="section6" class="section"><h2><a name="section6">KEYWORDS</a></h2>
<p>Aycock, Earley, Horspool, parser, compiler</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key766">ambiguous</a>, <a href="../../../../index.html#key769">aycock</a>, <a href="../../../../index.html#key768">earley</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key767">horspool</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key18">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; 2006 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/grammar_fa/dacceptor.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::fa::dacceptor.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">grammar::fa::dacceptor(n) 0.1.1 tcllib &quot;Finite automaton operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::fa::dacceptor - Create and use deterministic acceptors</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::fa::dacceptor.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">grammar::fa::dacceptor(n) 0.1.1 tcllib &quot;Finite automaton operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::fa::dacceptor - Create and use deterministic acceptors</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>

Changes to embedded/www/tcllib/files/modules/grammar_fa/dexec.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;   -- Copyright &copy; 2007 Bogdan &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::fa::dexec.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">grammar::fa::dexec(n) 0.2 tcllib &quot;Finite automaton operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::fa::dexec - Execute deterministic finite automatons</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;   -- Copyright &copy; 2007 Bogdan &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::fa::dexec.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">grammar::fa::dexec(n) 0.2 tcllib &quot;Finite automaton operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::fa::dexec - Execute deterministic finite automatons</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>

Changes to embedded/www/tcllib/files/modules/grammar_fa/fa.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2004-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::fa.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">grammar::fa(n) 0.4 tcllib &quot;Finite automaton operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::fa - Create and manipulate finite automatons</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2004-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::fa.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">grammar::fa(n) 0.4 tcllib &quot;Finite automaton operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::fa - Create and manipulate finite automatons</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>

Changes to embedded/www/tcllib/files/modules/grammar_fa/faop.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2004-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::fa::op.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">grammar::fa::op(n) 0.4 tcllib &quot;Finite automaton operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::fa::op - Operations on finite automatons</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2004-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::fa::op.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">grammar::fa::op(n) 0.4 tcllib &quot;Finite automaton operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::fa::op - Operations on finite automatons</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>

Changes to embedded/www/tcllib/files/modules/grammar_me/gasm.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::me::cpu::gasm.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">grammar::me::cpu::gasm(n) 0.1 tcllib &quot;Grammar operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::me::cpu::gasm - ME assembler</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::me::cpu::gasm.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">grammar::me::cpu::gasm(n) 0.1 tcllib &quot;Grammar operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::me::cpu::gasm - ME assembler</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>

Changes to embedded/www/tcllib/files/modules/grammar_me/me_ast.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::me_ast.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">grammar::me_ast(n) 0.1 tcllib &quot;Grammar operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::me_ast - Various representations of ASTs</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::me_ast.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">grammar::me_ast(n) 0.1 tcllib &quot;Grammar operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::me_ast - Various representations of ASTs</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>

Changes to embedded/www/tcllib/files/modules/grammar_me/me_cpu.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2005-2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::me::cpu.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">grammar::me::cpu(n) 0.2 tcllib &quot;Grammar operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::me::cpu - Virtual machine implementation II 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2005-2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::me::cpu.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">grammar::me::cpu(n) 0.2 tcllib &quot;Grammar operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::me::cpu - Virtual machine implementation II 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>

Changes to embedded/www/tcllib/files/modules/grammar_me/me_cpucore.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2005-2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::me::cpu::core.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">grammar::me::cpu::core(n) 0.2 tcllib &quot;Grammar operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::me::cpu::core - ME virtual machine state 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2005-2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::me::cpu::core.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">grammar::me::cpu::core(n) 0.2 tcllib &quot;Grammar operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::me::cpu::core - ME virtual machine state 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>

Changes to embedded/www/tcllib/files/modules/grammar_me/me_intro.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::me_intro.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">grammar::me_intro(n) 0.1 tcllib &quot;Grammar operations and usage&quot;</h1>
<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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::me_intro.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">grammar::me_intro(n) 0.1 tcllib &quot;Grammar operations and usage&quot;</h1>
<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>

Changes to embedded/www/tcllib/files/modules/grammar_me/me_tcl.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::me::tcl.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">grammar::me::tcl(n) 0.1 tcllib &quot;Grammar operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::me::tcl - Virtual machine implementation I 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::me::tcl.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">grammar::me::tcl(n) 0.1 tcllib &quot;Grammar operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::me::tcl - Virtual machine implementation I 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>

Changes to embedded/www/tcllib/files/modules/grammar_me/me_util.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::me::util.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">grammar::me::util(n) 0.1 tcllib &quot;Grammar operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::me::util.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">grammar::me::util(n) 0.1 tcllib &quot;Grammar operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/grammar_me/me_vm.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::me_vm.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">grammar::me_vm(n) 0.1 tcllib &quot;Grammar operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::me_vm - Virtual machine 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::me_vm.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">grammar::me_vm(n) 0.1 tcllib &quot;Grammar operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::me_vm - Virtual machine 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>

Changes to embedded/www/tcllib/files/modules/grammar_peg/peg.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::peg.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">grammar::peg(n) 0.1 tcllib &quot;Grammar operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::peg - Create and manipulate parsing expression grammars</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::peg.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">grammar::peg(n) 0.1 tcllib &quot;Grammar operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::peg - Create and manipulate parsing expression grammars</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>
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
</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#key749">e</a></i> a <i class="term"><a href="../../../../index.html#key14">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#key749">e</a></i>* is a parsing expression for parsing expression
<i class="term"><a href="../../../../index.html#key749">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#key749">e</a></i>+ is a parsing expression for parsing expression
<i class="term"><a href="../../../../index.html#key749">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#key749">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#key749">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#key750">e</a></i> a <i class="term"><a href="../../../../index.html#key14">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#key750">e</a></i>* is a parsing expression for parsing expression
<i class="term"><a href="../../../../index.html#key750">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#key750">e</a></i>+ is a parsing expression for parsing expression
<i class="term"><a href="../../../../index.html#key750">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#key750">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#key750">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>

Changes to embedded/www/tcllib/files/modules/grammar_peg/peg_interp.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2005-2011 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::peg::interp.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">grammar::peg::interp(n) 0.1.1 tcllib &quot;Grammar operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::peg::interp - Interpreter for parsing expression grammars</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2005-2011 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ grammar::peg::interp.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">grammar::peg::interp(n) 0.1.1 tcllib &quot;Grammar operations and usage&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>grammar::peg::interp - Interpreter for parsing expression grammars</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>

Changes to embedded/www/tcllib/files/modules/hook/hook.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2010, by William H. Duquette
   -->
<! -- CVS: $Id$ hook.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">hook(n) 0.1 tcllib &quot;Hooks&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>hook - Hooks</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2010, by William H. Duquette
   -->
<! -- CVS: $Id$ hook.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">hook(n) 0.1 tcllib &quot;Hooks&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>hook - Hooks</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>
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
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#key631">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#key632">hook</a></i> itself. A hook usually reflects some occurrence in the
life of the <i class="term"><a href="../../../../index.html#key631">subject</a></i> that other entities might care to know
about. A <i class="term"><a href="../../../../index.html#key632">hook</a></i> has a name, and may also have arguments. Hook
names are arbitrary strings. Each <i class="term"><a href="../../../../index.html#key631">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#key600">observer</a></i> that wishes to receive the <i class="term"><a href="../../../../index.html#key632">hook</a></i>
from the <i class="term"><a href="../../../../index.html#key631">subject</a></i>.</p></li>
<li><p>A command prefix to which the <i class="term"><a href="../../../../index.html#key632">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#key629">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#key630">hook</a></i> itself. A hook usually reflects some occurrence in the
life of the <i class="term"><a href="../../../../index.html#key629">subject</a></i> that other entities might care to know
about. A <i class="term"><a href="../../../../index.html#key630">hook</a></i> has a name, and may also have arguments. Hook
names are arbitrary strings. Each <i class="term"><a href="../../../../index.html#key629">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#key600">observer</a></i> that wishes to receive the <i class="term"><a href="../../../../index.html#key630">hook</a></i>
from the <i class="term"><a href="../../../../index.html#key629">subject</a></i>.</p></li>
<li><p>A command prefix to which the <i class="term"><a href="../../../../index.html#key630">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
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
</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#key631">subject</a></i> or the
<i class="term"><a href="../../../../index.html#key600">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>







|







320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
</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#key629">subject</a></i> or the
<i class="term"><a href="../../../../index.html#key600">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>
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
<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#key631">subject</a></i>,</p></li>
<li><p>a <i class="term"><a href="../../../../index.html#key632">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>
</dl>







|
|







357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
<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#key629">subject</a></i>,</p></li>
<li><p>a <i class="term"><a href="../../../../index.html#key630">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>
</dl>
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
&lt;Update&gt; hook.</p>
<pre class="example">
     hook bind ::model &lt;Update&gt; .view [list .view ModelUpdate]
</pre>
<p>When the <b class="cmd">::model</b> calls the hook, the <b class="widget">.view</b>s
ModelUpdate subcommand will be called.</p>
<p>Later the <b class="widget">.view</b> megawidget is destroyed. In its destructor,
it tells the <i class="term"><a href="../../../../index.html#key632">hook</a></i> that it no longer exists:</p>
<pre class="example">
     hook forget .view
</pre>
<p>All bindings involving <b class="widget">.view</b> are deleted.</p>
</div>
<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#key494">callback</a>, <a href="../../../../index.html#key496">event</a>, <a href="../../../../index.html#key632">hook</a>, <a href="../../../../index.html#key600">observer</a>, <a href="../../../../index.html#key630">producer</a>, <a href="../../../../index.html#key633">publisher</a>, <a href="../../../../index.html#key631">subject</a>, <a href="../../../../index.html#key629">subscriber</a>, <a href="../../../../index.html#key634">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>







|




















|








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
&lt;Update&gt; hook.</p>
<pre class="example">
     hook bind ::model &lt;Update&gt; .view [list .view ModelUpdate]
</pre>
<p>When the <b class="cmd">::model</b> calls the hook, the <b class="widget">.view</b>s
ModelUpdate subcommand will be called.</p>
<p>Later the <b class="widget">.view</b> megawidget is destroyed. In its destructor,
it tells the <i class="term"><a href="../../../../index.html#key630">hook</a></i> that it no longer exists:</p>
<pre class="example">
     hook forget .view
</pre>
<p>All bindings involving <b class="widget">.view</b> are deleted.</p>
</div>
<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#key494">callback</a>, <a href="../../../../index.html#key496">event</a>, <a href="../../../../index.html#key630">hook</a>, <a href="../../../../index.html#key600">observer</a>, <a href="../../../../index.html#key628">producer</a>, <a href="../../../../index.html#key631">publisher</a>, <a href="../../../../index.html#key629">subject</a>, <a href="../../../../index.html#key627">subscriber</a>, <a href="../../../../index.html#key632">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.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/html/html.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ html.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">html(n) 1.4 tcllib &quot;HTML Generation&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/html/html.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ html.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">html(n) 1.4 tcllib &quot;HTML Generation&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
from <i class="arg">args</i> and the HTML defaults defined with <b class="cmd">::html::init</b>.</p></dd>
<dt><a name="14"><b class="cmd">::html::for</b> <i class="arg">start test next body</i></a></dt>
<dd><p>This procedure is similar to the built-in Tcl <b class="cmd">for</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>
<dt><a name="15"><b class="cmd">::html::foreach</b> <i class="arg">varlist1 list1</i> <span class="opt">?<i class="arg">varlist2 list2 ...</i>?</span> <i class="arg">body</i></a></dt>
<dd><p>This procedure is similar to the built-in Tcl <b class="cmd"><a href="../../../../index.html#key199">foreach</a></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>
<dt><a name="16"><b class="cmd">::html::formValue</b> <i class="arg">name</i> <span class="opt">?<i class="arg">defvalue</i>?</span></a></dt>
<dd><p>Return a name and value pair, where the value is initialized from
existing CGI data, if any.  The result has this form:</p>
<pre class="example">







|







260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
from <i class="arg">args</i> and the HTML defaults defined with <b class="cmd">::html::init</b>.</p></dd>
<dt><a name="14"><b class="cmd">::html::for</b> <i class="arg">start test next body</i></a></dt>
<dd><p>This procedure is similar to the built-in Tcl <b class="cmd">for</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>
<dt><a name="15"><b class="cmd">::html::foreach</b> <i class="arg">varlist1 list1</i> <span class="opt">?<i class="arg">varlist2 list2 ...</i>?</span> <i class="arg">body</i></a></dt>
<dd><p>This procedure is similar to the built-in Tcl <b class="cmd"><a href="../../../../index.html#key197">foreach</a></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>
<dt><a name="16"><b class="cmd">::html::formValue</b> <i class="arg">name</i> <span class="opt">?<i class="arg">defvalue</i>?</span></a></dt>
<dd><p>Return a name and value pair, where the value is initialized from
existing CGI data, if any.  The result has this form:</p>
<pre class="example">
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
<dt><a name="39"><b class="cmd">::html::paramRow</b> <i class="arg">list</i> <span class="opt">?<i class="arg">rparam</i>?</span> <span class="opt">?<i class="arg">cparam</i>?</span></a></dt>
<dd><p>Generate a table row, including <i class="term">tr</i> and <i class="term">td</i> tags. Each value in
<i class="arg">list</i> is placed into its own table cell. This uses
<b class="cmd">::html::cell</b>. The value of <i class="arg">rparam</i> is used as parameter for
the <i class="term">tr</i> tag. The value of <i class="arg">cparam</i> is passed to <b class="cmd">::html::cell</b>
as parameter for the <i class="term">td</i> tags.</p></dd>
<dt><a name="40"><b class="cmd">::html::passwordInput</b> <span class="opt">?<i class="arg">name</i>?</span></a></dt>
<dd><p>Generate an <i class="term">input</i> tag of type <i class="term"><a href="../../../../index.html#key644">password</a></i>. The <i class="arg">name</i> defaults to
&quot;password&quot;.</p></dd>
<dt><a name="41"><b class="cmd">::html::passwordInputRow</b> <i class="arg">label</i> <span class="opt">?<i class="arg">name</i>?</span></a></dt>
<dd><p>Format a table row containing a label and an <i class="term">input</i> tag of type
<i class="term"><a href="../../../../index.html#key644">password</a></i>. The <i class="arg">name</i> defaults to &quot;password&quot;.</p></dd>
<dt><a name="42"><b class="cmd">::html::quoteFormValue</b> <i class="arg">value</i></a></dt>
<dd><p>Quote special characters in <i class="arg">value</i> by replacing them with HTML
entities for quotes, ampersand, and angle brackets.</p></dd>
<dt><a name="43"><b class="cmd">::html::radioSet</b> <i class="arg">key sep list</i></a></dt>
<dd><p>Generate a set of <i class="term">input</i> tags of type <i class="term">radio</i> and an associated text
label.  All the radio buttons share the same <i class="arg">key</i> for their name.
The <i class="arg">sep</i> is text used to separate the elements.  The <i class="arg">list</i>







|



|







363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
<dt><a name="39"><b class="cmd">::html::paramRow</b> <i class="arg">list</i> <span class="opt">?<i class="arg">rparam</i>?</span> <span class="opt">?<i class="arg">cparam</i>?</span></a></dt>
<dd><p>Generate a table row, including <i class="term">tr</i> and <i class="term">td</i> tags. Each value in
<i class="arg">list</i> is placed into its own table cell. This uses
<b class="cmd">::html::cell</b>. The value of <i class="arg">rparam</i> is used as parameter for
the <i class="term">tr</i> tag. The value of <i class="arg">cparam</i> is passed to <b class="cmd">::html::cell</b>
as parameter for the <i class="term">td</i> tags.</p></dd>
<dt><a name="40"><b class="cmd">::html::passwordInput</b> <span class="opt">?<i class="arg">name</i>?</span></a></dt>
<dd><p>Generate an <i class="term">input</i> tag of type <i class="term"><a href="../../../../index.html#key646">password</a></i>. The <i class="arg">name</i> defaults to
&quot;password&quot;.</p></dd>
<dt><a name="41"><b class="cmd">::html::passwordInputRow</b> <i class="arg">label</i> <span class="opt">?<i class="arg">name</i>?</span></a></dt>
<dd><p>Format a table row containing a label and an <i class="term">input</i> tag of type
<i class="term"><a href="../../../../index.html#key646">password</a></i>. The <i class="arg">name</i> defaults to &quot;password&quot;.</p></dd>
<dt><a name="42"><b class="cmd">::html::quoteFormValue</b> <i class="arg">value</i></a></dt>
<dd><p>Quote special characters in <i class="arg">value</i> by replacing them with HTML
entities for quotes, ampersand, and angle brackets.</p></dd>
<dt><a name="43"><b class="cmd">::html::radioSet</b> <i class="arg">key sep list</i></a></dt>
<dd><p>Generate a set of <i class="term">input</i> tags of type <i class="term">radio</i> and an associated text
label.  All the radio buttons share the same <i class="arg">key</i> for their name.
The <i class="arg">sep</i> is text used to separate the elements.  The <i class="arg">list</i>
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
<dd><p>This procedure is similar to the built-in Tcl <b class="cmd"><a href="../../../../index.html#key253">set</a></b> command.  The
main difference is that it returns &quot;&quot; so it can be called from an HTML
template file without appending unwanted results.  The other
difference is that it must take two arguments.</p></dd>
<dt><a name="50"><b class="cmd">::html::submit</b> <i class="arg">label</i> <span class="opt">?<i class="arg">name</i>?</span></a></dt>
<dd><p>Generate an <i class="term">input</i> tag of type <i class="term">submit</i>. <i class="arg">name</i> defaults to &quot;submit&quot;.</p></dd>
<dt><a name="51"><b class="cmd">::html::tableFromArray</b> <i class="arg">arrname</i> <span class="opt">?<i class="arg">param</i>?</span> <span class="opt">?<i class="arg">pat</i>?</span></a></dt>
<dd><p>Generate a two-column <i class="term"><a href="../../../../index.html#key104">table</a></i> 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 (<b class="cmd">lsort</b> without
special options). The argument <i class="arg">param</i> is for the <i class="term"><a href="../../../../index.html#key104">table</a></i> tag and has
to contain a pre-formatted string. The <i class="arg">pat</i> is a <b class="cmd">string match</b>
pattern used to select the array elements to show in the table. It defaults to
<b class="const">*</b>, i.e. the whole array is shown.</p></dd>
<dt><a name="52"><b class="cmd">::html::tableFromList</b> <i class="arg">querylist</i> <span class="opt">?<i class="arg">param</i>?</span></a></dt>
<dd><p>Generate a two-column <i class="term"><a href="../../../../index.html#key104">table</a></i> and nested rows to display <i class="arg">querylist</i>,
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#key104">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#key454">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>







|


|




|


|







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
<dd><p>This procedure is similar to the built-in Tcl <b class="cmd"><a href="../../../../index.html#key253">set</a></b> command.  The
main difference is that it returns &quot;&quot; so it can be called from an HTML
template file without appending unwanted results.  The other
difference is that it must take two arguments.</p></dd>
<dt><a name="50"><b class="cmd">::html::submit</b> <i class="arg">label</i> <span class="opt">?<i class="arg">name</i>?</span></a></dt>
<dd><p>Generate an <i class="term">input</i> tag of type <i class="term">submit</i>. <i class="arg">name</i> defaults to &quot;submit&quot;.</p></dd>
<dt><a name="51"><b class="cmd">::html::tableFromArray</b> <i class="arg">arrname</i> <span class="opt">?<i class="arg">param</i>?</span> <span class="opt">?<i class="arg">pat</i>?</span></a></dt>
<dd><p>Generate a two-column <i class="term"><a href="../../../../index.html#key101">table</a></i> 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 (<b class="cmd">lsort</b> without
special options). The argument <i class="arg">param</i> is for the <i class="term"><a href="../../../../index.html#key101">table</a></i> tag and has
to contain a pre-formatted string. The <i class="arg">pat</i> is a <b class="cmd">string match</b>
pattern used to select the array elements to show in the table. It defaults to
<b class="const">*</b>, i.e. the whole array is shown.</p></dd>
<dt><a name="52"><b class="cmd">::html::tableFromList</b> <i class="arg">querylist</i> <span class="opt">?<i class="arg">param</i>?</span></a></dt>
<dd><p>Generate a two-column <i class="term"><a href="../../../../index.html#key101">table</a></i> and nested rows to display <i class="arg">querylist</i>,
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#key101">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#key454">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>
448
449
450
451
452
453
454
455
456
457
458
459
460
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#key570">checkbox</a>, <a href="../../../../index.html#key568">checkbutton</a>, <a href="../../../../index.html#key566">form</a>, <a href="../../../../index.html#key567">html</a>, <a href="../../../../index.html#key569">radiobutton</a>, <a href="../../../../index.html#key104">table</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>CGI programming</p>
</div>
</div></body></html>







|





451
452
453
454
455
456
457
458
459
460
461
462
463
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#key570">checkbox</a>, <a href="../../../../index.html#key568">checkbutton</a>, <a href="../../../../index.html#key566">form</a>, <a href="../../../../index.html#key567">html</a>, <a href="../../../../index.html#key569">radiobutton</a>, <a href="../../../../index.html#key101">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.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/htmlparse/htmlparse.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ htmlparse.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">htmlparse(n) 1.2.1 tcllib &quot;HTML Parser&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/htmlparse/htmlparse.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ htmlparse.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">htmlparse(n) 1.2.1 tcllib &quot;HTML Parser&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/http/autoproxy.html.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/http/autoproxy.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ autoproxy.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">autoproxy(n) 1.5.3 tcllib &quot;HTTP protocol helper modules&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>autoproxy - Automatic HTTP proxy usage and authentication</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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/http/autoproxy.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ autoproxy.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">autoproxy(n) 1.5.3 tcllib &quot;HTTP protocol helper modules&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>autoproxy - Automatic HTTP proxy usage and authentication</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>
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
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#key289">tls</a></b> package options but
must end with the host and port as the last two items.</p></dd>
<dt><a name="5"><b class="cmd">::autoproxy::tunnel_connect</b> <i class="arg">args</i></a></dt>
<dd><p>Connect to a target host throught a proxy. This uses the same CONNECT
HTTP command as the <b class="cmd">tls_connect</b> but does not promote the link
security once the connection is established.</p>
<p>The <i class="arg">args</i> list may contain any of the <b class="package"><a href="../../../../index.html#key289">tls</a></b> package options but
must end with the host and port as the last two items.</p>
<p>Note that many proxy servers will permit CONNECT calls to a limited
set of ports - typically only port 443 (the secure HTTP port).</p></dd>
<dt><a name="6"><b class="cmd">::autoproxy::tls_socket</b> <i class="arg">args</i></a></dt>
<dd><p>This function is to be used to register a proxy-aware secure socket
handler for the https protocol. It may only be used with the Tcl http
package and should be registered using the http::register command (see







|





|







178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
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#key287">tls</a></b> package options but
must end with the host and port as the last two items.</p></dd>
<dt><a name="5"><b class="cmd">::autoproxy::tunnel_connect</b> <i class="arg">args</i></a></dt>
<dd><p>Connect to a target host throught a proxy. This uses the same CONNECT
HTTP command as the <b class="cmd">tls_connect</b> but does not promote the link
security once the connection is established.</p>
<p>The <i class="arg">args</i> list may contain any of the <b class="package"><a href="../../../../index.html#key287">tls</a></b> package options but
must end with the host and port as the last two items.</p>
<p>Note that many proxy servers will permit CONNECT calls to a limited
set of ports - typically only port 443 (the secure HTTP port).</p></dd>
<dt><a name="6"><b class="cmd">::autoproxy::tls_socket</b> <i class="arg">args</i></a></dt>
<dd><p>This function is to be used to register a proxy-aware secure socket
handler for the https protocol. It may only be used with the Tcl http
package and should be registered using the http::register command (see

Changes to embedded/www/tcllib/files/modules/ident/ident.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2004 Reinhard Max &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ ident.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">ident(n) 0.42 tcllib &quot;Identification protocol client&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2004 Reinhard Max &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ ident.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">ident(n) 0.42 tcllib &quot;Identification protocol client&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/imap4/imap4.html.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/imap4/imap4.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ imap4.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">imap4(n) 0.5.1 tcllib &quot;imap client&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>imap4 - imap client-side tcl implementation of imap protocol</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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/imap4/imap4.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ imap4.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">imap4(n) 0.5.1 tcllib &quot;imap client&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>imap4 - imap client-side tcl implementation of imap protocol</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>
448
449
450
451
452
453
454
455
456
457
458
459
460
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#key481">http</a>, <a href="../../../../index.html#key748">imap</a>, <a href="../mime/mime.html">mime</a>, <a href="../pop3/pop3.html">pop3</a>, <a href="../../../../index.html#key289">tls</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key293">email</a>, <a href="../../../../index.html#key748">imap</a>, <a href="../../../../index.html#key122">internet</a>, <a href="../../../../index.html#key288">mail</a>, <a href="../../../../index.html#key250">net</a>, <a href="../../../../index.html#key747">rfc3501</a>, <a href="../../../../index.html#key318">ssl</a>, <a href="../../../../index.html#key289">tls</a></p>
</div>
</div></body></html>







|


|


451
452
453
454
455
456
457
458
459
460
461
462
463
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#key481">http</a>, <a href="../../../../index.html#key744">imap</a>, <a href="../mime/mime.html">mime</a>, <a href="../pop3/pop3.html">pop3</a>, <a href="../../../../index.html#key287">tls</a></p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key291">email</a>, <a href="../../../../index.html#key744">imap</a>, <a href="../../../../index.html#key130">internet</a>, <a href="../../../../index.html#key286">mail</a>, <a href="../../../../index.html#key250">net</a>, <a href="../../../../index.html#key743">rfc3501</a>, <a href="../../../../index.html#key318">ssl</a>, <a href="../../../../index.html#key287">tls</a></p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/inifile/ini.html.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/inifile/ini.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ inifile.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">inifile(n) 0.2.5 tcllib &quot;Parsing of Windows INI files&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/inifile/ini.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ inifile.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">inifile(n) 0.2.5 tcllib &quot;Parsing of Windows INI files&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/interp/deleg_method.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ deleg_method.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">deleg_method(n) 0.2 tcllib &quot;Interpreter utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>deleg_method - Creation of comm delegates (snit methods)</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ deleg_method.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">deleg_method(n) 0.2 tcllib &quot;Interpreter utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>deleg_method - Creation of comm delegates (snit methods)</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>

Changes to embedded/www/tcllib/files/modules/interp/deleg_proc.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ deleg_proc.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">deleg_proc(n) 0.2 tcllib &quot;Interpreter utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>deleg_proc - Creation of comm delegates (procedures)</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ deleg_proc.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">deleg_proc(n) 0.2 tcllib &quot;Interpreter utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>deleg_proc - Creation of comm delegates (procedures)</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>

Changes to embedded/www/tcllib/files/modules/interp/tcllib_interp.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ interp.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">interp(n) 0.1.2 tcllib &quot;Interpreter utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>interp - Interp creation and aliasing</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ interp.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">interp(n) 0.1.2 tcllib &quot;Interpreter utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>interp - Interp creation and aliasing</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>

Changes to embedded/www/tcllib/files/modules/irc/irc.html.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/irc/irc.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ irc.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">irc(n) 0.6.1 tcllib &quot;Low Level Tcl IRC Interface&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>irc - Create IRC connection and interface.</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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/irc/irc.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ irc.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">irc(n) 0.6.1 tcllib &quot;Low Level Tcl IRC Interface&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>irc - Create IRC connection and interface.</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>
310
311
312
313
314
315
316
317
318
319
320
321
322
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#key645">chat</a>, <a href="../../../../index.html#key692">irc</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>







|





313
314
315
316
317
318
319
320
321
322
323
324
325
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#key643">chat</a>, <a href="../../../../index.html#key692">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.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/irc/picoirc.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ picoirc.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">picoirc(n) 0.5 tcllib &quot;Simple embeddable IRC interface&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>picoirc - Small and simple embeddable IRC 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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/irc/picoirc.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ picoirc.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">picoirc(n) 0.5 tcllib &quot;Simple embeddable IRC interface&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>picoirc - Small and simple embeddable IRC 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>
235
236
237
238
239
240
241
242
243
244
245
246
247
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>
<p>rfc 1459</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key645">chat</a>, <a href="../../../../index.html#key692">irc</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>







|





238
239
240
241
242
243
244
245
246
247
248
249
250
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>
<p>rfc 1459</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key643">chat</a>, <a href="../../../../index.html#key692">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/javascript/javascript.html.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/javascript/javascript.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ javascript.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">javascript(n) 1.0.2 tcllib &quot;HTML and Java Script Generation&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/javascript/javascript.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ javascript.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">javascript(n) 1.0.2 tcllib &quot;HTML and Java Script Generation&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/jpeg/jpeg.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2004-2005, Code: Aaron Faupell &lt;[email protected]&gt;   -- Copyright &copy; 2007, Code:  Andreas Kupries &lt;[email protected]&gt;   -- Copyright &copy; 2004-2009, Doc:  Andreas Kupries &lt;[email protected]&gt;   -- Copyright &copy; 2011, Code: Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ jpeg.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">jpeg(n) 0.4.0 tcllib &quot;JPEG image manipulation&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>jpeg - JPEG querying and manipulation of meta data</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2004-2005, Code: Aaron Faupell &lt;[email protected]&gt;   -- Copyright &copy; 2007, Code:  Andreas Kupries &lt;[email protected]&gt;   -- Copyright &copy; 2004-2009, Doc:  Andreas Kupries &lt;[email protected]&gt;   -- Copyright &copy; 2011, Code: Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ jpeg.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">jpeg(n) 0.4.0 tcllib &quot;JPEG image manipulation&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>jpeg - JPEG querying and manipulation of meta data</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>
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
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#key146">comment</a>, <a href="../../../../index.html#key143">exif</a>, <a href="../../../../index.html#key135">image</a>, <a href="../../../../index.html#key145">jfif</a>, <a href="../../../../index.html#key144">jpeg</a>, <a href="../../../../index.html#key142">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>







|











276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
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#key146">comment</a>, <a href="../../../../index.html#key143">exif</a>, <a href="../../../../index.html#key122">image</a>, <a href="../../../../index.html#key145">jfif</a>, <a href="../../../../index.html#key144">jpeg</a>, <a href="../../../../index.html#key142">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006 ActiveState Software Inc.   -- Copyright &copy; 2009 Thomas Maeder, Glue Software Engineering AG
   -->
<! -- CVS: $Id$ json.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">json(n) 1.1.2 tcllib &quot;JSON&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>json - JSON parser</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006 ActiveState Software Inc.   -- Copyright &copy; 2009 Thomas Maeder, Glue Software Engineering AG
   -->
<! -- CVS: $Id$ json.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">json(n) 1.1.2 tcllib &quot;JSON&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>json - JSON parser</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>

Changes to embedded/www/tcllib/files/modules/json/json_write.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009-2013 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ json::write.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">json::write(n) 1.0.2 tcllib &quot;JSON&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>json::write - JSON generation</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009-2013 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ json::write.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">json::write(n) 1.0.2 tcllib &quot;JSON&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>json::write - JSON generation</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>

Changes to embedded/www/tcllib/files/modules/lambda/lambda.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2011 Andreas Kupries, BSD licensed
   -->
<! -- CVS: $Id$ lambda.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">lambda(n) 1 tcllib &quot;Utility commands for anonymous procedures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>lambda - Utility commands for anonymous procedures</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2011 Andreas Kupries, BSD licensed
   -->
<! -- CVS: $Id$ lambda.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">lambda(n) 1 tcllib &quot;Utility commands for anonymous procedures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>lambda - Utility commands for anonymous procedures</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>

Changes to embedded/www/tcllib/files/modules/ldap/ldap.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;   -- Copyright &copy; 2004 Jochen Loewer &lt;[email protected]&gt;   -- Copyright &copy; 2006 Michael Schlenker &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ ldap.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">ldap(n) 1.6.9 tcllib &quot;LDAP client&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>ldap - LDAP 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;   -- Copyright &copy; 2004 Jochen Loewer &lt;[email protected]&gt;   -- Copyright &copy; 2006 Michael Schlenker &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ ldap.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">ldap(n) 1.6.9 tcllib &quot;LDAP client&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>ldap - LDAP 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>
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<li><a href="#15"><b class="cmd">::ldap::addMulti</b> <i class="arg">handle</i> <i class="arg">dn</i> <i class="arg">attrValueTuples</i></a></li>
<li><a href="#16"><b class="cmd">::ldap::delete</b> <i class="arg">handle</i> <i class="arg">dn</i></a></li>
<li><a href="#17"><b class="cmd">::ldap::modifyDN</b> <i class="arg">handle</i> <i class="arg">dn</i> <i class="arg">newrdn</i> <span class="opt">?<i class="arg">deleteOld</i>?</span> <span class="opt">?<i class="arg">newSuperior</i>?</span></a></li>
<li><a href="#18"><b class="cmd">::ldap::info</b> <b class="cmd"><a href="../../../../index.html#key398">ip</a></b> <i class="arg">handle</i></a></li>
<li><a href="#19"><b class="cmd">::ldap::info</b> <b class="cmd">bound</b> <i class="arg">handle</i></a></li>
<li><a href="#20"><b class="cmd">::ldap::info</b> <b class="cmd">bounduser</b> <i class="arg">handle</i></a></li>
<li><a href="#21"><b class="cmd">::ldap::info</b> <b class="cmd">connections</b></a></li>
<li><a href="#22"><b class="cmd">::ldap::info</b> <b class="cmd"><a href="../../../../index.html#key289">tls</a></b> <i class="arg">handle</i></a></li>
<li><a href="#23"><b class="cmd">::ldap::info</b> <b class="cmd">saslmechanisms</b> <i class="arg">handle</i></a></li>
<li><a href="#24"><b class="cmd">::ldap::info</b> <b class="cmd"><a href="../control/control.html">control</a></b> <i class="arg">handle</i></a></li>
<li><a href="#25"><b class="cmd">::ldap::info</b> <b class="cmd">extensions</b> <i class="arg">extensions</i></a></li>
<li><a href="#26"><b class="cmd">::ldap::info</b> <b class="cmd">whoami</b> <i class="arg">handle</i></a></li>
</ul>
</div>
</div>







|







149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
<li><a href="#15"><b class="cmd">::ldap::addMulti</b> <i class="arg">handle</i> <i class="arg">dn</i> <i class="arg">attrValueTuples</i></a></li>
<li><a href="#16"><b class="cmd">::ldap::delete</b> <i class="arg">handle</i> <i class="arg">dn</i></a></li>
<li><a href="#17"><b class="cmd">::ldap::modifyDN</b> <i class="arg">handle</i> <i class="arg">dn</i> <i class="arg">newrdn</i> <span class="opt">?<i class="arg">deleteOld</i>?</span> <span class="opt">?<i class="arg">newSuperior</i>?</span></a></li>
<li><a href="#18"><b class="cmd">::ldap::info</b> <b class="cmd"><a href="../../../../index.html#key398">ip</a></b> <i class="arg">handle</i></a></li>
<li><a href="#19"><b class="cmd">::ldap::info</b> <b class="cmd">bound</b> <i class="arg">handle</i></a></li>
<li><a href="#20"><b class="cmd">::ldap::info</b> <b class="cmd">bounduser</b> <i class="arg">handle</i></a></li>
<li><a href="#21"><b class="cmd">::ldap::info</b> <b class="cmd">connections</b></a></li>
<li><a href="#22"><b class="cmd">::ldap::info</b> <b class="cmd"><a href="../../../../index.html#key287">tls</a></b> <i class="arg">handle</i></a></li>
<li><a href="#23"><b class="cmd">::ldap::info</b> <b class="cmd">saslmechanisms</b> <i class="arg">handle</i></a></li>
<li><a href="#24"><b class="cmd">::ldap::info</b> <b class="cmd"><a href="../control/control.html">control</a></b> <i class="arg">handle</i></a></li>
<li><a href="#25"><b class="cmd">::ldap::info</b> <b class="cmd">extensions</b> <i class="arg">extensions</i></a></li>
<li><a href="#26"><b class="cmd">::ldap::info</b> <b class="cmd">whoami</b> <i class="arg">handle</i></a></li>
</ul>
</div>
</div>
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
<i class="arg">handle</i> argument for all other commands. If no <i class="arg">port</i> is
specified it will default to <b class="const">389</b>.</p>
<p>The command blocks until the connection has been established, or
establishment definitely failed.</p></dd>
<dt><a name="2"><b class="cmd">::ldap::secure_connect</b> <i class="arg">host</i> <span class="opt">?<i class="arg">port</i>?</span></a></dt>
<dd><p>Like <b class="cmd">::ldap::connect</b>, except that the created connection is
secured by SSL. The port defaults to <b class="const">636</b>.  This command
depends on the availability of the package <b class="package"><a href="../../../../index.html#key289">TLS</a></b>, which is a
SSL binding for Tcl. If <b class="package"><a href="../../../../index.html#key289">TLS</a></b> is not available, then this
command will fail.</p>
<p>The command blocks until the connection has been established, or
establishment definitely failed.</p></dd>
<dt><a name="3"><b class="cmd">::ldap::disconnect</b> <i class="arg">handle</i></a></dt>
<dd><p>Closes the ldap connection refered to by the token
<i class="arg">handle</i>. Returns the empty string as its result.</p></dd>
<dt><a name="4"><b class="cmd">::ldap::starttls</b> <i class="arg">handle</i> <span class="opt">?<i class="arg">cafile</i>?</span> <span class="opt">?<i class="arg">certfile</i>?</span> <span class="opt">?<i class="arg">keyfile</i>?</span></a></dt>







|
|







178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
<i class="arg">handle</i> argument for all other commands. If no <i class="arg">port</i> is
specified it will default to <b class="const">389</b>.</p>
<p>The command blocks until the connection has been established, or
establishment definitely failed.</p></dd>
<dt><a name="2"><b class="cmd">::ldap::secure_connect</b> <i class="arg">host</i> <span class="opt">?<i class="arg">port</i>?</span></a></dt>
<dd><p>Like <b class="cmd">::ldap::connect</b>, except that the created connection is
secured by SSL. The port defaults to <b class="const">636</b>.  This command
depends on the availability of the package <b class="package"><a href="../../../../index.html#key287">TLS</a></b>, which is a
SSL binding for Tcl. If <b class="package"><a href="../../../../index.html#key287">TLS</a></b> is not available, then this
command will fail.</p>
<p>The command blocks until the connection has been established, or
establishment definitely failed.</p></dd>
<dt><a name="3"><b class="cmd">::ldap::disconnect</b> <i class="arg">handle</i></a></dt>
<dd><p>Closes the ldap connection refered to by the token
<i class="arg">handle</i>. Returns the empty string as its result.</p></dd>
<dt><a name="4"><b class="cmd">::ldap::starttls</b> <i class="arg">handle</i> <span class="opt">?<i class="arg">cafile</i>?</span> <span class="opt">?<i class="arg">certfile</i>?</span> <span class="opt">?<i class="arg">keyfile</i>?</span></a></dt>
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
<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#key289">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>
<dd><p>Return the supported SASL mechanisms advertised by the server. Only valid in a
bound state (anonymous or other).</p></dd>
<dt><a name="24"><b class="cmd">::ldap::info</b> <b class="cmd"><a href="../control/control.html">control</a></b> <i class="arg">handle</i></a></dt>
<dd><p>Return the supported controls advertised by the server as a list of OIDs. Only valid in a bound state.







|







389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
<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#key287">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>
<dd><p>Return the supported SASL mechanisms advertised by the server. Only valid in a
bound state (anonymous or other).</p></dd>
<dt><a name="24"><b class="cmd">::ldap::info</b> <b class="cmd"><a href="../control/control.html">control</a></b> <i class="arg">handle</i></a></dt>
<dd><p>Return the supported controls advertised by the server as a list of OIDs. Only valid in a bound state.
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
<a href="http://sourceforge.net/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#key367">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#key127">directory access</a>, <a href="../../../../index.html#key122">internet</a>, <a href="../../../../index.html#key124">ldap</a>, <a href="../../../../index.html#key121">ldap client</a>, <a href="../../../../index.html#key125">protocol</a>, <a href="../../../../index.html#key123">rfc 2251</a>, <a href="../../../../index.html#key126">rfc 4511</a>, <a href="../../../../index.html#key128">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>







|










496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
<a href="http://sourceforge.net/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#key367">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#key135">directory access</a>, <a href="../../../../index.html#key130">internet</a>, <a href="../../../../index.html#key132">ldap</a>, <a href="../../../../index.html#key129">ldap client</a>, <a href="../../../../index.html#key133">protocol</a>, <a href="../../../../index.html#key131">rfc 2251</a>, <a href="../../../../index.html#key134">rfc 4511</a>, <a href="../../../../index.html#key136">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006 Pierre David &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ ldapx.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">ldapx(n) 0.2.5 tcllib &quot;LDAP extended object interface&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>ldapx - LDAP extended object interface</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006 Pierre David &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ ldapx.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">ldapx(n) 0.2.5 tcllib &quot;LDAP extended object interface&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>ldapx - LDAP extended object interface</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>
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
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#key127">directory access</a>, <a href="../../../../index.html#key122">internet</a>, <a href="../../../../index.html#key124">ldap</a>, <a href="../../../../index.html#key121">ldap client</a>, <a href="../../../../index.html#key452">ldif</a>, <a href="../../../../index.html#key125">protocol</a>, <a href="../../../../index.html#key123">rfc 2251</a>, <a href="../../../../index.html#key451">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>







|








739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
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#key135">directory access</a>, <a href="../../../../index.html#key130">internet</a>, <a href="../../../../index.html#key132">ldap</a>, <a href="../../../../index.html#key129">ldap client</a>, <a href="../../../../index.html#key452">ldif</a>, <a href="../../../../index.html#key133">protocol</a>, <a href="../../../../index.html#key131">rfc 2251</a>, <a href="../../../../index.html#key451">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2001-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ log.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">log(n) 1.3 tcllib &quot;Logging facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>log - Procedures to log messages of libraries and applications.</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2001-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ log.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">log(n) 1.3 tcllib &quot;Logging facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>log - Procedures to log messages of libraries and applications.</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>

Changes to embedded/www/tcllib/files/modules/log/logger.html.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/log/logger.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ logger.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">logger(n) 0.9.3 tcllib &quot;Object Oriented logging facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>logger - System to control logging of events.</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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/log/logger.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ logger.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">logger(n) 0.9.3 tcllib &quot;Object Oriented logging facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>logger - System to control logging of events.</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>
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
<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#key72">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#key77">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>

Changes to embedded/www/tcllib/files/modules/log/loggerAppender.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2005 Aamer Akhter &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ logger::appender.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">logger::appender(n) 1.2 tcllib &quot;Object Oriented logging facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2005 Aamer Akhter &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ logger::appender.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">logger::appender(n) 1.2 tcllib &quot;Object Oriented logging facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/log/loggerUtils.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2005 Aamer Akhter &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ logger::utils.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">logger::utils(n) 1.3 tcllib &quot;Object Oriented logging facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2005 Aamer Akhter &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ logger::utils.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">logger::utils(n) 1.3 tcllib &quot;Object Oriented logging facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/map/map_geocode_nominatim.html.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/map/map_geocode_nominatim.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ map::geocode::nominatim.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">map::geocode::nominatim(n) 0.1 tcllib &quot;Mapping utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>map::geocode::nominatim - Resolving geographical names with a Nominatim service</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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/map/map_geocode_nominatim.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ map::geocode::nominatim.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">map::geocode::nominatim(n) 0.1 tcllib &quot;Mapping utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>map::geocode::nominatim - Resolving geographical names with a Nominatim service</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>
215
216
217
218
219
220
221
222
223
224
<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#key539">geocoding</a>, <a href="../../../../index.html#key481">http</a>, <a href="../../../../index.html#key184">location</a>, <a href="../../../../index.html#key187">map</a>, <a href="../../../../index.html#key538">nominatim</a>, <a href="../../../../index.html#key57">server</a>, <a href="../../../../index.html#key483">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#key539">geocoding</a>, <a href="../../../../index.html#key481">http</a>, <a href="../../../../index.html#key177">location</a>, <a href="../../../../index.html#key180">map</a>, <a href="../../../../index.html#key538">nominatim</a>, <a href="../../../../index.html#key57">server</a>, <a href="../../../../index.html#key483">url</a></p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/map/map_slippy.html.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/map/map_slippy.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ map::slippy.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">map::slippy(n) 0.5 tcllib &quot;Mapping utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>map::slippy - Common code for slippy based map packages</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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/map/map_slippy.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ map::slippy.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">map::slippy(n) 0.5 tcllib &quot;Mapping utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>map::slippy - Common code for slippy based map packages</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>
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Coordinate systems</a></h2>
<p>The commands of this package operate on three distinct coordinate
systems, which are explained below.</p>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Geographic</a></h3>
<p><i class="term">Geographic</i>al coordinates are represented by <i class="term">Latitude</i> and
<i class="term"><a href="../../../../index.html#key188">Longitude</a></i>, each of which is measured in degrees, as they are
essentially angles.</p>
<p><b class="const">Zero</b> longitude is the <i class="term">Greenwich meridian</i>, with
positive values going <i class="term">east</i>, and negative values going
<i class="term">west</i>, for a total range of +/- 180 degrees. Note that +180 and
-180 longitude are the same <i class="term">meridian</i>, opposite to greenwich.</p>
<p><b class="const">zero</b> latitude the <i class="term">Equator</i>, with positive values
going <i class="term">north</i> and negative values going <i class="term">south</i>. While the







|







227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Coordinate systems</a></h2>
<p>The commands of this package operate on three distinct coordinate
systems, which are explained below.</p>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Geographic</a></h3>
<p><i class="term">Geographic</i>al coordinates are represented by <i class="term">Latitude</i> and
<i class="term"><a href="../../../../index.html#key181">Longitude</a></i>, each of which is measured in degrees, as they are
essentially angles.</p>
<p><b class="const">Zero</b> longitude is the <i class="term">Greenwich meridian</i>, with
positive values going <i class="term">east</i>, and negative values going
<i class="term">west</i>, for a total range of +/- 180 degrees. Note that +180 and
-180 longitude are the same <i class="term">meridian</i>, opposite to greenwich.</p>
<p><b class="const">zero</b> latitude the <i class="term">Equator</i>, with positive values
going <i class="term">north</i> and negative values going <i class="term">south</i>. While the
273
274
275
276
277
278
279
280
281
282
</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#key182">geodesy</a>, <a href="../../../../index.html#key186">geography</a>, <a href="../../../../index.html#key181">latitute</a>, <a href="../../../../index.html#key184">location</a>, <a href="../../../../index.html#key188">longitude</a>, <a href="../../../../index.html#key187">map</a>, <a href="../../../../index.html#key185">slippy</a>, <a href="../../../../index.html#key183">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#key175">geodesy</a>, <a href="../../../../index.html#key179">geography</a>, <a href="../../../../index.html#key174">latitute</a>, <a href="../../../../index.html#key177">location</a>, <a href="../../../../index.html#key181">longitude</a>, <a href="../../../../index.html#key180">map</a>, <a href="../../../../index.html#key178">slippy</a>, <a href="../../../../index.html#key176">zoom</a></p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/map/map_slippy_cache.html.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/map/map_slippy_cache.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ map::slippy::cache.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">map::slippy::cache(n) 0.2 tcllib &quot;Mapping utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>map::slippy::cache - Management of a tile cache in the local filesystem</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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/map/map_slippy_cache.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ map::slippy::cache.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">map::slippy::cache(n) 0.2 tcllib &quot;Mapping utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>map::slippy::cache - Management of a tile cache in the local filesystem</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>
190
191
192
193
194
195
196
197
198
199
</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#key338">cache</a>, <a href="../../../../index.html#key339">filesystem</a>, <a href="../../../../index.html#key184">location</a>, <a href="../../../../index.html#key187">map</a>, <a href="../../../../index.html#key185">slippy</a>, <a href="../../../../index.html#key340">tile</a>, <a href="../../../../index.html#key183">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#key338">cache</a>, <a href="../../../../index.html#key339">filesystem</a>, <a href="../../../../index.html#key177">location</a>, <a href="../../../../index.html#key180">map</a>, <a href="../../../../index.html#key178">slippy</a>, <a href="../../../../index.html#key340">tile</a>, <a href="../../../../index.html#key176">zoom</a></p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/map/map_slippy_fetcher.html.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/map/map_slippy_fetcher.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ map::slippy::fetcher.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">map::slippy::fetcher(n) 0.3 tcllib &quot;Mapping utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>map::slippy::fetcher - Accessing a server providing tiles for slippy-based maps</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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/map/map_slippy_fetcher.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ map::slippy::fetcher.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">map::slippy::fetcher(n) 0.3 tcllib &quot;Mapping utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>map::slippy::fetcher - Accessing a server providing tiles for slippy-based maps</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>
179
180
181
182
183
184
185
186
187
188
</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#key481">http</a>, <a href="../../../../index.html#key184">location</a>, <a href="../../../../index.html#key187">map</a>, <a href="../../../../index.html#key57">server</a>, <a href="../../../../index.html#key185">slippy</a>, <a href="../../../../index.html#key340">tile</a>, <a href="../../../../index.html#key483">url</a>, <a href="../../../../index.html#key183">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#key481">http</a>, <a href="../../../../index.html#key177">location</a>, <a href="../../../../index.html#key180">map</a>, <a href="../../../../index.html#key57">server</a>, <a href="../../../../index.html#key178">slippy</a>, <a href="../../../../index.html#key340">tile</a>, <a href="../../../../index.html#key483">url</a>, <a href="../../../../index.html#key176">zoom</a></p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/mapproj/mapproj.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Kevin B. Kenny &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ mapproj.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">mapproj(n) 0.1 tcllib &quot;Tcl Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>mapproj - Map projection routines</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Kevin B. Kenny &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ mapproj.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">mapproj(n) 0.1 tcllib &quot;Tcl Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>mapproj - Map projection routines</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>
441
442
443
444
445
446
447
448
449
450
451
452
453
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#key182">geodesy</a>, <a href="../../../../index.html#key187">map</a>, <a href="../../../../index.html#key595">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#key175">geodesy</a>, <a href="../../../../index.html#key180">map</a>, <a href="../../../../index.html#key592">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.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2004-2008, by Stephane Arnold &lt;stephanearnold at yahoo dot fr&gt;
   -->
<! -- CVS: $Id$ math::bigfloat.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">math::bigfloat(n) 2.0.1 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::bigfloat - Arbitrary precision floating-point numbers</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2004-2008, by Stephane Arnold &lt;stephanearnold at yahoo dot fr&gt;
   -->
<! -- CVS: $Id$ math::bigfloat.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">math::bigfloat(n) 2.0.1 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::bigfloat - Arbitrary precision floating-point numbers</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>
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
<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#key750">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>







|







165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
<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#key751">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>
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
<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#key750">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#key751">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>
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
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#key696">computations</a>, <a href="../../../../index.html#key347">floating-point</a>, <a href="../../../../index.html#key695">interval</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key245">multiprecision</a>, <a href="../../../../index.html#key246">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>







|








563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
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#key696">computations</a>, <a href="../../../../index.html#key347">floating-point</a>, <a href="../../../../index.html#key695">interval</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key241">multiprecision</a>, <a href="../../../../index.html#key242">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2004 Salvatore Sanfilippo &lt;antirez at invece dot org&gt;   -- Copyright &copy; 2004 Arjen Markus &lt;arjenmarkus at users dot sourceforge dot net&gt;
   -->
<! -- CVS: $Id$ math::bignum.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">math::bignum(n) 3.1 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::bignum - Arbitrary precision integer numbers</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2004 Salvatore Sanfilippo &lt;antirez at invece dot org&gt;   -- Copyright &copy; 2004 Arjen Markus &lt;arjenmarkus at users dot sourceforge dot net&gt;
   -->
<! -- CVS: $Id$ math::bignum.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">math::bignum(n) 3.1 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::bignum - Arbitrary precision integer numbers</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>
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
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#key244">bignums</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key245">multiprecision</a>, <a href="../../../../index.html#key246">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>







|









336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
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#key240">bignums</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key241">multiprecision</a>, <a href="../../../../index.html#key242">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.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2002,2003,2004 Arjen Markus
   -->
<! -- CVS: $Id$ math::calculus.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">math::calculus(n) 0.7.1 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::calculus - Integration and ordinary differential equations</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2002,2003,2004 Arjen Markus
   -->
<! -- CVS: $Id$ math::calculus.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">math::calculus(n) 0.7.1 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::calculus - Integration and ordinary differential equations</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>

Changes to embedded/www/tcllib/files/modules/math/combinatorics.html.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/math/combinatorics.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ math::combinatorics.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">math::combinatorics(n) 1.2.3 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::combinatorics - Combinatorial functions in the Tcl Math Library</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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/math/combinatorics.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ math::combinatorics.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">math::combinatorics(n) 1.2.3 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::combinatorics - Combinatorial functions in the Tcl Math Library</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>

Changes to embedded/www/tcllib/files/modules/math/constants.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ math::constants.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">math::constants(n) 1.0.1 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::constants - Mathematical and numerical constants</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ math::constants.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">math::constants(n) 1.0.1 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::constants - Mathematical and numerical constants</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>
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
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#key560">constants</a>, <a href="../../../../index.html#key751">degrees</a>, <a href="../../../../index.html#key749">e</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key750">pi</a>, <a href="../../../../index.html#key561">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>







|








200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
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#key560">constants</a>, <a href="../../../../index.html#key752">degrees</a>, <a href="../../../../index.html#key750">e</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key751">pi</a>, <a href="../../../../index.html#key561">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2011 Mark Alston &lt;mark at beernut dot com&gt;
   -->
<! -- CVS: $Id$ math::decimal.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">math::decimal(n) 1.0.2 tcllib &quot;Tcl Decimal Arithmetic Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::decimal - General decimal arithmetic</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2011 Mark Alston &lt;mark at beernut dot com&gt;
   -->
<! -- CVS: $Id$ math::decimal.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">math::decimal(n) 1.0.2 tcllib &quot;Tcl Decimal Arithmetic Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::decimal - General decimal arithmetic</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>
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
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#key707">decimal</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key246">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>







|








313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
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#key707">decimal</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key242">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.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/math/fourier.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ math::fourier.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">math::fourier(n) 1.0.2 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::fourier - Discrete and fast fourier transforms</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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/math/fourier.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ math::fourier.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">math::fourier(n) 1.0.2 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::fourier - Discrete and fast fourier transforms</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>
234
235
236
237
238
239
240
241
242
243
244
245
246
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#key744">FFT</a>, <a href="../../../../index.html#key743">Fourier transform</a>, <a href="../../../../index.html#key735">complex numbers</a>, <a href="../../../../index.html#key579">mathematics</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
</div></body></html>







|





237
238
239
240
241
242
243
244
245
246
247
248
249
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#key748">FFT</a>, <a href="../../../../index.html#key747">Fourier transform</a>, <a href="../../../../index.html#key735">complex numbers</a>, <a href="../../../../index.html#key572">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.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/math/fuzzy.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ math::fuzzy.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">math::fuzzy(n) 0.2 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::fuzzy - Fuzzy comparison of floating-point numbers</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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/math/fuzzy.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ math::fuzzy.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">math::fuzzy(n) 0.2 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::fuzzy - Fuzzy comparison of floating-point numbers</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>

Changes to embedded/www/tcllib/files/modules/math/interpolate.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;   -- Copyright &copy; 2004 Kevn B. Kenny &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ math::interpolate.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">math::interpolate(n) 1.0.2 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::interpolate - Interpolation routines</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;   -- Copyright &copy; 2004 Kevn B. Kenny &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ math::interpolate.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">math::interpolate(n) 1.0.2 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::interpolate - Interpolation routines</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>

Changes to embedded/www/tcllib/files/modules/math/linalg.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2004-2008 Arjen Markus &lt;[email protected]&gt;   -- Copyright &copy; 2004 Ed Hume &lt;http://www.hume.com/contact.us.htm&gt;   -- Copyright &copy; 2008 Michael Buadin &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ math::linearalgebra.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">math::linearalgebra(n) 1.1 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::linearalgebra - Linear Algebra</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2004-2008 Arjen Markus &lt;[email protected]&gt;   -- Copyright &copy; 2004 Ed Hume &lt;http://www.hume.com/contact.us.htm&gt;   -- Copyright &copy; 2008 Michael Buadin &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ math::linearalgebra.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">math::linearalgebra(n) 1.1 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::linearalgebra - Linear Algebra</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>

Changes to embedded/www/tcllib/files/modules/math/machineparameters.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2008 Michael Baudin &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tclrep/machineparameters.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tclrep/machineparameters(n) 1.0 tcllib &quot;tclrep&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tclrep/machineparameters - Compute double precision machine parameters.</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2008 Michael Baudin &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tclrep/machineparameters.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">tclrep/machineparameters(n) 1.0 tcllib &quot;tclrep&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tclrep/machineparameters - Compute double precision machine parameters.</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>

Changes to embedded/www/tcllib/files/modules/math/math.html.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/math/math.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ math.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">math(n) 1.2.5 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math - Tcl Math Library</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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/math/math.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ math.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">math(n) 1.2.5 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math - Tcl Math Library</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>
210
211
212
213
214
215
216
217
218
219
220
221
222
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#key174">statistics</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
</div></body></html>







|





213
214
215
216
217
218
219
220
221
222
223
224
225
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#key188">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2001 by Ideogramic ApS and other parties   -- Copyright &copy; 2004 by Arjen Markus   -- Copyright &copy; 2010 by Andreas Kupries   -- Copyright &copy; 2010 by Kevin Kenny
   -->
<! -- CVS: $Id$ math::geometry.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">math::geometry(n) 1.1.2 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::geometry - Geometrical computations</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2001 by Ideogramic ApS and other parties   -- Copyright &copy; 2004 by Arjen Markus   -- Copyright &copy; 2010 by Andreas Kupries   -- Copyright &copy; 2010 by Kevin Kenny
   -->
<! -- CVS: $Id$ math::geometry.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">math::geometry(n) 1.1.2 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::geometry - Geometrical computations</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>
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
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#key532">angle</a>, <a href="../../../../index.html#key428">distance</a>, <a href="../../../../index.html#key529">line</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key530">plane geometry</a>, <a href="../../../../index.html#key531">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>







|











473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
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#key530">angle</a>, <a href="../../../../index.html#key428">distance</a>, <a href="../../../../index.html#key527">line</a>, <a href="../../../../index.html#key67">math</a>, <a href="../../../../index.html#key528">plane geometry</a>, <a href="../../../../index.html#key529">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.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2010 Lars Hellstr&ouml;m &lt;Lars dot Hellstrom at residenset dot net&gt;
   -->
<! -- CVS: $Id$ math::numtheory.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">math::numtheory(n) 1.0 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2010 Lars Hellstr&ouml;m &lt;Lars dot Hellstrom at residenset dot net&gt;
   -->
<! -- CVS: $Id$ math::numtheory.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">math::numtheory(n) 1.0 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/math/optimize.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;   -- Copyright &copy; 2004,2005 Kevn B. Kenny &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ math::optimize.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">math::optimize(n) 1.0 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::optimize - Optimisation routines</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;   -- Copyright &copy; 2004,2005 Kevn B. Kenny &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ math::optimize.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">math::optimize(n) 1.0 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::optimize - Optimisation routines</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>

Changes to embedded/www/tcllib/files/modules/math/polynomials.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ math::polynomials.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">math::polynomials(n) 1.0.1 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::polynomials - Polynomial functions</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ math::polynomials.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">math::polynomials(n) 1.0.1 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::polynomials - Polynomial functions</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>

Changes to embedded/www/tcllib/files/modules/math/qcomplex.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ math::complexnumbers.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">math::complexnumbers(n) 1.0.2 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::complexnumbers - Straightforward complex number package</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ math::complexnumbers.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">math::complexnumbers(n) 1.0.2 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::complexnumbers - Straightforward complex number package</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>

Changes to embedded/www/tcllib/files/modules/math/rational_funcs.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2005 Arjen Markus &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ math::rationalfunctions.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">math::rationalfunctions(n) 1.0.1 tcllib &quot;Math&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::rationalfunctions - Polynomial functions</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2005 Arjen Markus &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ math::rationalfunctions.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">math::rationalfunctions(n) 1.0.1 tcllib &quot;Math&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::rationalfunctions - Polynomial functions</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>

Changes to embedded/www/tcllib/files/modules/math/roman.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2005 Kenneth Green &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ math::roman.
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">math::roman() 1.0 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::roman - Tools for creating and manipulating roman numerals</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2005 Kenneth Green &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ math::roman.
   -->
<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">math::roman() 1.0 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::roman - Tools for creating and manipulating roman numerals</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>
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
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#key3">conversion</a>, <a href="../../../../index.html#key310">integer</a>, <a href="../../../../index.html#key309">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>







|








172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
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#key3">conversion</a>, <a href="../../../../index.html#key309">integer</a>, <a href="../../../../index.html#key308">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.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- 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;
   -->
<! -- CVS: $Id$ math::calculus::romberg.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">math::calculus::romberg(n) 0.6 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::calculus::romberg - Romberg integration</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- 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;
   -->
<! -- CVS: $Id$ math::calculus::romberg.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">math::calculus::romberg(n) 0.6 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::calculus::romberg - Romberg integration</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>

Changes to embedded/www/tcllib/files/modules/math/special.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ math::special.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">math::special(n) 0.2 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::special - Special mathematical functions</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ math::special.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">math::special(n) 0.2 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::special - Special mathematical functions</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>

Changes to embedded/www/tcllib/files/modules/math/statistics.html.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/math/statistics.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ math::statistics.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">math::statistics(n) 0.8 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::statistics - Basic statistical functions and procedures</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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/math/statistics.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ math::statistics.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">math::statistics(n) 0.8 tcllib &quot;Tcl Math Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::statistics - Basic statistical functions and procedures</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>
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
<p>TO DO: more function descriptions to be added</p>
</div>
<div id="section5" class="section"><h2><a name="section5">DATA MANIPULATION</a></h2>
<p>The data manipulation procedures act on lists or lists of lists:</p>
<dl class="definitions">
<dt><a name="59"><b class="cmd">::math::statistics::filter</b> <i class="arg">varname</i> <i class="arg">data</i> <i class="arg">expression</i></a></dt>
<dd><p>Return a list consisting of the data for which the logical
expression is true (this command works analogously to the command <b class="cmd"><a href="../../../../index.html#key199">foreach</a></b>).</p>
<dl class="arguments">
<dt>string <i class="arg">varname</i></dt>
<dd><p>- Name of the variable used in the expression</p></dd>
<dt>list <i class="arg">data</i></dt>
<dd><p>- List of data</p></dd>
<dt>string <i class="arg">expression</i></dt>
<dd><p>- Logical expression using the variable name</p></dd>







|







943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
<p>TO DO: more function descriptions to be added</p>
</div>
<div id="section5" class="section"><h2><a name="section5">DATA MANIPULATION</a></h2>
<p>The data manipulation procedures act on lists or lists of lists:</p>
<dl class="definitions">
<dt><a name="59"><b class="cmd">::math::statistics::filter</b> <i class="arg">varname</i> <i class="arg">data</i> <i class="arg">expression</i></a></dt>
<dd><p>Return a list consisting of the data for which the logical
expression is true (this command works analogously to the command <b class="cmd"><a href="../../../../index.html#key197">foreach</a></b>).</p>
<dl class="arguments">
<dt>string <i class="arg">varname</i></dt>
<dd><p>- Name of the variable used in the expression</p></dd>
<dt>list <i class="arg">data</i></dt>
<dd><p>- List of data</p></dd>
<dt>string <i class="arg">expression</i></dt>
<dd><p>- Logical expression using the variable name</p></dd>
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
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#key580">data analysis</a>, <a href="../../../../index.html#key579">mathematics</a>, <a href="../../../../index.html#key174">statistics</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Mathematics</p>
</div>
</div></body></html>







|





1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
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#key573">data analysis</a>, <a href="../../../../index.html#key572">mathematics</a>, <a href="../../../../index.html#key188">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.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2010 by Kevin B. Kenny &lt;[email protected]&gt;   -- Redistribution permitted under the terms of the Open Publication License &lt;http://www.opencontent.org/openpub/&gt;
   -->
<! -- CVS: $Id$ math::calculus::symdiff.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">math::calculus::symdiff(n) 1.0 tcllib &quot;Symbolic differentiation for Tcl&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::calculus::symdiff - Symbolic differentiation for Tcl</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2010 by Kevin B. Kenny &lt;[email protected]&gt;   -- Redistribution permitted under the terms of the Open Publication License &lt;http://www.opencontent.org/openpub/&gt;
   -->
<! -- CVS: $Id$ math::calculus::symdiff.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">math::calculus::symdiff(n) 1.0 tcllib &quot;Symbolic differentiation for Tcl&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::calculus::symdiff - Symbolic differentiation for Tcl</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>

Changes to embedded/www/tcllib/files/modules/md4/md4.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2003, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ md4.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">md4(n) 1.0.5 tcllib &quot;MD4 Message-Digest Algorithm&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>md4 - MD4 Message-Digest Algorithm</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2003, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ md4.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">md4(n) 1.0.5 tcllib &quot;MD4 Message-Digest Algorithm&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>md4 - MD4 Message-Digest Algorithm</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>

Changes to embedded/www/tcllib/files/modules/md5/md5.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2003, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ md5.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">md5(n) 2.0.7 tcllib &quot;MD5 Message-Digest Algorithm&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>md5 - MD5 Message-Digest Algorithm</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2003, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ md5.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">md5(n) 2.0.7 tcllib &quot;MD5 Message-Digest Algorithm&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>md5 - MD5 Message-Digest Algorithm</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>

Changes to embedded/www/tcllib/files/modules/md5crypt/md5crypt.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2003, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ md5crypt.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">md5crypt(n) 1.1.0 tcllib &quot;MD5-based password encryption&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>md5crypt - MD5-based password encryption</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2003, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ md5crypt.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">md5crypt(n) 1.1.0 tcllib &quot;MD5-based password encryption&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>md5crypt - MD5-based password encryption</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>

Changes to embedded/www/tcllib/files/modules/mime/mime.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 1999-2000 Marshall T. Rose
   -->
<! -- CVS: $Id$ mime.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">mime(n) 1.5.6 tcllib &quot;Mime&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>mime - Manipulation of MIME body parts</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 1999-2000 Marshall T. Rose
   -->
<! -- CVS: $Id$ mime.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">mime(n) 1.5.6 tcllib &quot;Mime&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>mime - Manipulation of MIME body parts</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>
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
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#key481">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#key293">email</a>, <a href="../../../../index.html#key122">internet</a>, <a href="../../../../index.html#key288">mail</a>, <a href="../../../../index.html#key211">mime</a>, <a href="../../../../index.html#key250">net</a>, <a href="../../../../index.html#key755">rfc 2045</a>, <a href="../../../../index.html#key756">rfc 2046</a>, <a href="../../../../index.html#key754">rfc 2049</a>, <a href="../../../../index.html#key290">rfc 821</a>, <a href="../../../../index.html#key291">rfc 822</a>, <a href="../../../../index.html#key295">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>







|








359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
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#key481">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#key291">email</a>, <a href="../../../../index.html#key130">internet</a>, <a href="../../../../index.html#key286">mail</a>, <a href="../../../../index.html#key211">mime</a>, <a href="../../../../index.html#key250">net</a>, <a href="../../../../index.html#key754">rfc 2045</a>, <a href="../../../../index.html#key755">rfc 2046</a>, <a href="../../../../index.html#key753">rfc 2049</a>, <a href="../../../../index.html#key288">rfc 821</a>, <a href="../../../../index.html#key289">rfc 822</a>, <a href="../../../../index.html#key293">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 1999-2000 Marshall T. Rose and others
   -->
<! -- CVS: $Id$ smtp.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">smtp(n) 1.4.5 tcllib &quot;smtp client&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>smtp - Client-side tcl implementation of the smtp protocol</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 1999-2000 Marshall T. Rose and others
   -->
<! -- CVS: $Id$ smtp.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">smtp(n) 1.4.5 tcllib &quot;smtp client&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>smtp - Client-side tcl implementation of the smtp protocol</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>
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
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#key481">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#key293">email</a>, <a href="../../../../index.html#key122">internet</a>, <a href="../../../../index.html#key288">mail</a>, <a href="../../../../index.html#key211">mime</a>, <a href="../../../../index.html#key250">net</a>, <a href="../../../../index.html#key294">rfc 2554</a>, <a href="../../../../index.html#key287">rfc 2821</a>, <a href="../../../../index.html#key292">rfc 3207</a>, <a href="../../../../index.html#key290">rfc 821</a>, <a href="../../../../index.html#key291">rfc 822</a>, <a href="../../../../index.html#key295">smtp</a>, <a href="../../../../index.html#key289">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>







|








263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
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#key481">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#key291">email</a>, <a href="../../../../index.html#key130">internet</a>, <a href="../../../../index.html#key286">mail</a>, <a href="../../../../index.html#key211">mime</a>, <a href="../../../../index.html#key250">net</a>, <a href="../../../../index.html#key292">rfc 2554</a>, <a href="../../../../index.html#key285">rfc 2821</a>, <a href="../../../../index.html#key290">rfc 3207</a>, <a href="../../../../index.html#key288">rfc 821</a>, <a href="../../../../index.html#key289">rfc 822</a>, <a href="../../../../index.html#key293">smtp</a>, <a href="../../../../index.html#key287">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.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/multiplexer/multiplexer.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ multiplexer.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">multiplexer(n) 0.2 tcllib &quot;One-to-many communication with sockets.&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/multiplexer/multiplexer.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ multiplexer.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">multiplexer(n) 0.2 tcllib &quot;One-to-many communication with sockets.&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>
220
221
222
223
224
225
226
227
228
229
230
231
232
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#key645">chat</a>, <a href="../../../../index.html#key646">multiplexer</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Programming tools</p>
</div>
</div></body></html>







|





223
224
225
226
227
228
229
230
231
232
233
234
235
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#key643">chat</a>, <a href="../../../../index.html#key644">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 200? Neil Madden (http://wiki.tcl.tk/12790)   -- Copyright &copy; 200? Various (http://wiki.tcl.tk/1489)   -- Copyright &copy; 2010 Documentation, Andreas Kupries
   -->
<! -- CVS: $Id$ namespacex.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">namespacex(n) 0.1 tcllib &quot;Namespace utility commands&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>namespacex - Namespace utility commands</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 200? Neil Madden (http://wiki.tcl.tk/12790)   -- Copyright &copy; 200? Various (http://wiki.tcl.tk/1489)   -- Copyright &copy; 2010 Documentation, Andreas Kupries
   -->
<! -- CVS: $Id$ namespacex.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">namespacex(n) 0.1 tcllib &quot;Namespace utility commands&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>namespacex - Namespace utility commands</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>
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
<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#key77">extended namespace</a>, <a href="../../../../index.html#key72">info</a>, <a href="../../../../index.html#key75">namespace unknown</a>, <a href="../../../../index.html#key76">namespace utilities</a>, <a href="../../../../index.html#key74">state (de)serialization</a>, <a href="../../../../index.html#key78">unknown hooking</a>, <a href="../../../../index.html#key73">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#key82">extended namespace</a>, <a href="../../../../index.html#key77">info</a>, <a href="../../../../index.html#key80">namespace unknown</a>, <a href="../../../../index.html#key81">namespace utilities</a>, <a href="../../../../index.html#key79">state (de)serialization</a>, <a href="../../../../index.html#key83">unknown hooking</a>, <a href="../../../../index.html#key78">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.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/ncgi/ncgi.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ ncgi.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">ncgi(n) 1.4.2 tcllib &quot;CGI Support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>ncgi - Procedures to manipulate CGI values.</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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/ncgi/ncgi.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ ncgi.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">ncgi(n) 1.4.2 tcllib &quot;CGI Support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>ncgi - Procedures to manipulate CGI values.</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>
362
363
364
365
366
367
368
369
370
371
372
373
374
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#key628">CGI</a>, <a href="../../../../index.html#key627">cookie</a>, <a href="../../../../index.html#key566">form</a>, <a href="../../../../index.html#key567">html</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>CGI programming</p>
</div>
</div></body></html>







|





365
366
367
368
369
370
371
372
373
374
375
376
377
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#key634">CGI</a>, <a href="../../../../index.html#key633">cookie</a>, <a href="../../../../index.html#key566">form</a>, <a href="../../../../index.html#key567">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.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2006-2009, Aaron Faupell &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ nmea.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">nmea(n) 1.0.0 tcllib &quot;NMEA protocol implementation&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>nmea - Process NMEA data</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2006-2009, Aaron Faupell &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ nmea.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">nmea(n) 1.0.0 tcllib &quot;NMEA protocol implementation&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>nmea - Process NMEA data</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>

Changes to embedded/www/tcllib/files/modules/nns/nns_auto.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2007-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ nameserv::auto.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">nameserv::auto(n) 0.3 tcllib &quot;Name service facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>nameserv::auto - Name service facility, Client Extension</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2007-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ nameserv::auto.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">nameserv::auto(n) 0.3 tcllib &quot;Name service facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>nameserv::auto - Name service facility, Client Extension</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>

Changes to embedded/www/tcllib/files/modules/nns/nns_client.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2007-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ nameserv.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">nameserv(n) 0.4.2 tcllib &quot;Name service facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>nameserv - Name service facility, 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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2007-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ nameserv.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">nameserv(n) 0.4.2 tcllib &quot;Name service facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>nameserv - Name service facility, 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>

Changes to embedded/www/tcllib/files/modules/nns/nns_common.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2007-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ nameserv::common.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">nameserv::common(n) 0.1 tcllib &quot;Name service facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>nameserv::common - Name service facility, shared definitions</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2007-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ nameserv::common.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">nameserv::common(n) 0.1 tcllib &quot;Name service facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>nameserv::common - Name service facility, shared definitions</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>

Changes to embedded/www/tcllib/files/modules/nns/nns_intro.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ nns_intro.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">nns_intro(n) 1.0 tcllib &quot;Name service facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>nns_intro - Name service facility, 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ nns_intro.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">nns_intro(n) 1.0 tcllib &quot;Name service facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>nns_intro - Name service facility, 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>

Changes to embedded/www/tcllib/files/modules/nns/nns_protocol.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2007-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ nameserv::protocol.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">nameserv::protocol(n) 0.1 tcllib &quot;Name service facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>nameserv::protocol - Name service facility, client/server protocol</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2007-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ nameserv::protocol.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">nameserv::protocol(n) 0.1 tcllib &quot;Name service facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>nameserv::protocol - Name service facility, client/server protocol</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>
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
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#key38">comm</a>, <a href="../../../../index.html#key29">name service</a>, <a href="../../../../index.html#key125">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>







|








255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
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#key38">comm</a>, <a href="../../../../index.html#key29">name service</a>, <a href="../../../../index.html#key133">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.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2007-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ nameserv::server.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">nameserv::server(n) 0.3.2 tcllib &quot;Name service facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>nameserv::server - Name service facility, Server</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2007-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ nameserv::server.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">nameserv::server(n) 0.3.2 tcllib &quot;Name service facility&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>nameserv::server - Name service facility, Server</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>

Changes to embedded/www/tcllib/files/modules/nntp/nntp.html.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/nntp/nntp.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ nntp.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">nntp(n) 1.5.1 tcllib &quot;Tcl NNTP Client Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>nntp - Tcl client for the NNTP protocol</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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/nntp/nntp.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ nntp.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">nntp(n) 1.5.1 tcllib &quot;Tcl NNTP Client Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>nntp - Tcl client for the NNTP protocol</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>

Changes to embedded/www/tcllib/files/modules/ntp/ntp_time.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2002, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ ntp_time.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">ntp_time(n) 1.2.1 tcllib &quot;Network Time Facilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>ntp_time - Tcl Time Service 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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2002, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ ntp_time.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">ntp_time(n) 1.2.1 tcllib &quot;Network Time Facilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>ntp_time - Tcl Time Service 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>
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
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>
<p><a href="../../../../index.html#key82">NTP</a>, <a href="../../../../index.html#key80">SNTP</a>, <a href="../../../../index.html#key79">rfc 2030</a>, <a href="../../../../index.html#key81">rfc 868</a>, <a href="../../../../index.html#key83">time</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 &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|








244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
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>
<p><a href="../../../../index.html#key75">NTP</a>, <a href="../../../../index.html#key73">SNTP</a>, <a href="../../../../index.html#key72">rfc 2030</a>, <a href="../../../../index.html#key74">rfc 868</a>, <a href="../../../../index.html#key76">time</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 &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/ooutil/ooutil.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2011-2013 Andreas Kupries, BSD licensed
   -->
<! -- CVS: $Id$ oo::util.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">oo::util(n) 1.1 tcllib &quot;Utility commands for TclOO&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>oo::util - Utility commands for TclOO</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2011-2013 Andreas Kupries, BSD licensed
   -->
<! -- CVS: $Id$ oo::util.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">oo::util(n) 1.1 tcllib &quot;Utility commands for TclOO&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>oo::util - Utility commands for TclOO</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>

Changes to embedded/www/tcllib/files/modules/otp/otp.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2006, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ otp.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">otp(n) 1.0.0 tcllib &quot;RFC 2289 A One-Time Password System&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>otp - One-Time Passwords</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2006, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ otp.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">otp(n) 1.0.0 tcllib &quot;RFC 2289 A One-Time Password System&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>otp - One-Time Passwords</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>
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
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>
<p><a href="../../../../index.html#key195">hashing</a>, <a href="../../../../index.html#key194">message-digest</a>, <a href="../../../../index.html#key644">password</a>, <a href="../../../../index.html#key643">rfc 2289</a>, <a href="../../../../index.html#key110">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; 2006, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>







|








199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
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>
<p><a href="../../../../index.html#key195">hashing</a>, <a href="../../../../index.html#key194">message-digest</a>, <a href="../../../../index.html#key646">password</a>, <a href="../../../../index.html#key645">rfc 2289</a>, <a href="../../../../index.html#key110">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; 2006, Pat Thoyts &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/page/page_intro.html.

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
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ page_intro.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">page_intro(n) 1.0 tcllib &quot;Parser generator tools&quot;</h1>
<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#key177">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#key177">page</a>, <a href="../../../../index.html#key175">parser generator</a>, <a href="../../../../index.html#key178">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>







>
|


>
|
>
|















|




















|








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
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ page_intro.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">page_intro(n) 1.0 tcllib &quot;Parser generator tools&quot;</h1>
<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#key184">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#key184">page</a>, <a href="../../../../index.html#key182">parser generator</a>, <a href="../../../../index.html#key185">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ page_pluginmgr.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">page_pluginmgr(n) 1.0 tcllib &quot;Parser generator tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>page_pluginmgr - page plugin manager</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ page_pluginmgr.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">page_pluginmgr(n) 1.0 tcllib &quot;Parser generator tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>page_pluginmgr - page plugin manager</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>
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
<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#key177">page</a>, <a href="../../../../index.html#key175">parser generator</a>, <a href="../../../../index.html#key178">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>







|








698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
<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#key184">page</a>, <a href="../../../../index.html#key182">parser generator</a>, <a href="../../../../index.html#key185">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ page_util_flow.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">page_util_flow(n) 1.0 tcllib &quot;Parser generator tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>page_util_flow - page dataflow/treewalker utility</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ page_util_flow.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">page_util_flow(n) 1.0 tcllib &quot;Parser generator tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>page_util_flow - page dataflow/treewalker utility</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>
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
<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#key352">dataflow</a>, <a href="../../../../index.html#key179">graph walking</a>, <a href="../../../../index.html#key177">page</a>, <a href="../../../../index.html#key175">parser generator</a>, <a href="../../../../index.html#key178">text processing</a>, <a href="../../../../index.html#key176">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>







|








192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
<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#key352">dataflow</a>, <a href="../../../../index.html#key186">graph walking</a>, <a href="../../../../index.html#key184">page</a>, <a href="../../../../index.html#key182">parser generator</a>, <a href="../../../../index.html#key185">text processing</a>, <a href="../../../../index.html#key183">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ page_util_norm_lemon.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">page_util_norm_lemon(n) 1.0 tcllib &quot;Parser generator tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>page_util_norm_lemon - page AST normalization, LEMON</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ page_util_norm_lemon.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">page_util_norm_lemon(n) 1.0 tcllib &quot;Parser generator tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>page_util_norm_lemon - page AST normalization, LEMON</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>
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
<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#key179">graph walking</a>, <a href="../../../../index.html#key180">lemon</a>, <a href="../../../../index.html#key100">normalization</a>, <a href="../../../../index.html#key177">page</a>, <a href="../../../../index.html#key175">parser generator</a>, <a href="../../../../index.html#key178">text processing</a>, <a href="../../../../index.html#key176">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>







|








154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
<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#key186">graph walking</a>, <a href="../../../../index.html#key187">lemon</a>, <a href="../../../../index.html#key100">normalization</a>, <a href="../../../../index.html#key184">page</a>, <a href="../../../../index.html#key182">parser generator</a>, <a href="../../../../index.html#key185">text processing</a>, <a href="../../../../index.html#key183">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ page_util_norm_peg.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">page_util_norm_peg(n) 1.0 tcllib &quot;Parser generator tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>page_util_norm_peg - page AST normalization, PEG</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ page_util_norm_peg.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">page_util_norm_peg(n) 1.0 tcllib &quot;Parser generator tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>page_util_norm_peg - page AST normalization, PEG</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>
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
<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#key12">PEG</a>, <a href="../../../../index.html#key179">graph walking</a>, <a href="../../../../index.html#key100">normalization</a>, <a href="../../../../index.html#key177">page</a>, <a href="../../../../index.html#key175">parser generator</a>, <a href="../../../../index.html#key178">text processing</a>, <a href="../../../../index.html#key176">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>







|








192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
<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#key12">PEG</a>, <a href="../../../../index.html#key186">graph walking</a>, <a href="../../../../index.html#key100">normalization</a>, <a href="../../../../index.html#key184">page</a>, <a href="../../../../index.html#key182">parser generator</a>, <a href="../../../../index.html#key185">text processing</a>, <a href="../../../../index.html#key183">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ page_util_peg.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">page_util_peg(n) 1.0 tcllib &quot;Parser generator tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>page_util_peg - page PEG transformation 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ page_util_peg.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">page_util_peg(n) 1.0 tcllib &quot;Parser generator tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>page_util_peg - page PEG transformation 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>
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
<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#key12">PEG</a>, <a href="../../../../index.html#key177">page</a>, <a href="../../../../index.html#key175">parser generator</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key178">text processing</a>, <a href="../../../../index.html#key274">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>







|








205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
<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#key12">PEG</a>, <a href="../../../../index.html#key184">page</a>, <a href="../../../../index.html#key182">parser generator</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key185">text processing</a>, <a href="../../../../index.html#key274">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ page_util_quote.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">page_util_quote(n) 1.0 tcllib &quot;Parser generator tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>page_util_quote - page character quoting 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ page_util_quote.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">page_util_quote(n) 1.0 tcllib &quot;Parser generator tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>page_util_quote - page character quoting 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>
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
<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#key177">page</a>, <a href="../../../../index.html#key175">parser generator</a>, <a href="../../../../index.html#key558">quoting</a>, <a href="../../../../index.html#key178">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>







|








174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
<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#key184">page</a>, <a href="../../../../index.html#key182">parser generator</a>, <a href="../../../../index.html#key555">quoting</a>, <a href="../../../../index.html#key185">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2010, 2011, 2012, 2013, Roy Keene, Andreas Kupries
   -->
<! -- CVS: $Id$ pki.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pki(n) 0.6 tcllib &quot;public key encryption&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pki - Implementation of the public key 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2010, 2011, 2012, 2013, Roy Keene, Andreas Kupries
   -->
<! -- CVS: $Id$ pki.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">pki(n) 0.6 tcllib &quot;public key encryption&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pki - Implementation of the public key 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>

Changes to embedded/www/tcllib/files/modules/pluginmgr/pluginmgr.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pluginmgr.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pluginmgr(n) 0.3 tcllib &quot;Plugin management&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pluginmgr - Manage a plugin</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2005 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pluginmgr.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">pluginmgr(n) 0.3 tcllib &quot;Plugin management&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pluginmgr - Manage a plugin</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>

Changes to embedded/www/tcllib/files/modules/png/png.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2004, Code: Aaron Faupell &lt;[email protected]&gt;   -- Copyright &copy; 2004, Doc:  Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ png.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">png(n) 0.1.2 tcllib &quot;Image manipulation&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>png - PNG querying and manipulation of meta data</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2004, Code: Aaron Faupell &lt;[email protected]&gt;   -- Copyright &copy; 2004, Doc:  Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ png.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">png(n) 0.1.2 tcllib &quot;Image manipulation&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>png - PNG querying and manipulation of meta data</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>
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
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#key146">comment</a>, <a href="../../../../index.html#key135">image</a>, <a href="../../../../index.html#key656">png</a>, <a href="../../../../index.html#key655">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>







|









241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
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#key146">comment</a>, <a href="../../../../index.html#key122">image</a>, <a href="../../../../index.html#key656">png</a>, <a href="../../../../index.html#key655">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.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/pop3/pop3.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ pop3.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pop3(n) 1.9 tcllib &quot;Tcl POP3 Client Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pop3 - Tcl client for POP3 email protocol</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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/pop3/pop3.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ pop3.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">pop3(n) 1.9 tcllib &quot;Tcl POP3 Client Library&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pop3 - Tcl client for POP3 email protocol</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>
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
<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>
</div>
<div id="section3" class="section"><h2><a name="section3">Secure mail transfer</a></h2>
<p>A pop3 connection can be secured with SSL/TLS by requiring the package
<b class="package"><a href="../../../../index.html#key289">TLS</a></b> and then using either the option <b class="option">-socketcmd</b> or
the option <b class="option">-stls</b> of the command <b class="cmd">pop3::open</b>.
The first method, option <b class="option">-socketcmd</b>, will force the use
of the <b class="cmd">tls::socket</b> command when opening the connection. This is
suitable for POP3 servers which expect SSL connections only. These will
generally be listening on port 995.</p>
<pre class="example">
	package require tls







|







277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
<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>
</div>
<div id="section3" class="section"><h2><a name="section3">Secure mail transfer</a></h2>
<p>A pop3 connection can be secured with SSL/TLS by requiring the package
<b class="package"><a href="../../../../index.html#key287">TLS</a></b> and then using either the option <b class="option">-socketcmd</b> or
the option <b class="option">-stls</b> of the command <b class="cmd">pop3::open</b>.
The first method, option <b class="option">-socketcmd</b>, will force the use
of the <b class="cmd">tls::socket</b> command when opening the connection. This is
suitable for POP3 servers which expect SSL connections only. These will
generally be listening on port 995.</p>
<pre class="example">
	package require tls
311
312
313
314
315
316
317
318
319
320
321
322
323
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#key293">email</a>, <a href="../../../../index.html#key288">mail</a>, <a href="../../../../index.html#key396">pop</a>, <a href="../../../../index.html#key395">pop3</a>, <a href="../../../../index.html#key394">rfc 1939</a>, <a href="../../../../index.html#key315">secure</a>, <a href="../../../../index.html#key318">ssl</a>, <a href="../../../../index.html#key289">tls</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>







|





314
315
316
317
318
319
320
321
322
323
324
325
326
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#key291">email</a>, <a href="../../../../index.html#key286">mail</a>, <a href="../../../../index.html#key396">pop</a>, <a href="../../../../index.html#key395">pop3</a>, <a href="../../../../index.html#key394">rfc 1939</a>, <a href="../../../../index.html#key315">secure</a>, <a href="../../../../index.html#key318">ssl</a>, <a href="../../../../index.html#key287">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2002-2009 Andreas Kupries &lt;[email protected]&gt;   -- Copyright &copy; 2005 Reinhard Max  &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pop3d.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pop3d(n) 1.1.0 tcllib &quot;Tcl POP3 Server Package&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pop3d - Tcl POP3 server implementation</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2002-2009 Andreas Kupries &lt;[email protected]&gt;   -- Copyright &copy; 2005 Reinhard Max  &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pop3d.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">pop3d(n) 1.1.0 tcllib &quot;Tcl POP3 Server Package&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pop3d - Tcl POP3 server implementation</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>
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
mailbox contents is required. If no such command is specified the
server will claim that all mailboxes are empty. The interface which
has to be provided by the command prefix is described in section
<span class="sectref"><a href="#section4">Mailboxes</a></span>.</p></dd>
<dt><b class="option">-socket</b> <i class="arg">command</i></dt>
<dd><p>Defines a <i class="arg">command</i> prefix to call for opening the listening socket.
This can be used to make the pop3 server listen on a SSL socket
as provided by the <b class="package"><a href="../../../../index.html#key289">tls</a></b> package, see the command <b class="cmd">tls::socket</b>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Authentication</a></h2>
<p>Here we describe the interface which has to be provided by the
authentication callback so that pop3 servers following the interface
of this module are able to use it.</p>
<dl class="definitions">







|







244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
mailbox contents is required. If no such command is specified the
server will claim that all mailboxes are empty. The interface which
has to be provided by the command prefix is described in section
<span class="sectref"><a href="#section4">Mailboxes</a></span>.</p></dd>
<dt><b class="option">-socket</b> <i class="arg">command</i></dt>
<dd><p>Defines a <i class="arg">command</i> prefix to call for opening the listening socket.
This can be used to make the pop3 server listen on a SSL socket
as provided by the <b class="package"><a href="../../../../index.html#key287">tls</a></b> package, see the command <b class="cmd">tls::socket</b>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Authentication</a></h2>
<p>Here we describe the interface which has to be provided by the
authentication callback so that pop3 servers following the interface
of this module are able to use it.</p>
<dl class="definitions">
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
pop3 connection.</p></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Secure mail transfer</a></h2>
<p>The option <b class="option">-socket</b> (see <span class="sectref"><a href="#section2">Options</a></span>) enables users of
the package to override how the server opens its listening socket.
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#key289">tls</a></b>, to secure the communication.</p>
<pre class="example">
	package require tls
	tls::init \\
		...
	pop3d::new S -socket tls::socket
	...
</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>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#key122">internet</a>, <a href="../../../../index.html#key624">network</a>, <a href="../../../../index.html#key395">pop3</a>, <a href="../../../../index.html#key125">protocol</a>, <a href="../../../../index.html#key394">rfc 1939</a>, <a href="../../../../index.html#key315">secure</a>, <a href="../../../../index.html#key318">ssl</a>, <a href="../../../../index.html#key289">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>
</div>
</div></body></html>







|

















|









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
pop3 connection.</p></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Secure mail transfer</a></h2>
<p>The option <b class="option">-socket</b> (see <span class="sectref"><a href="#section2">Options</a></span>) enables users of
the package to override how the server opens its listening socket.
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#key287">tls</a></b>, to secure the communication.</p>
<pre class="example">
	package require tls
	tls::init \\
		...
	pop3d::new S -socket tls::socket
	...
</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>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#key130">internet</a>, <a href="../../../../index.html#key623">network</a>, <a href="../../../../index.html#key395">pop3</a>, <a href="../../../../index.html#key133">protocol</a>, <a href="../../../../index.html#key394">rfc 1939</a>, <a href="../../../../index.html#key315">secure</a>, <a href="../../../../index.html#key318">ssl</a>, <a href="../../../../index.html#key287">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>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/pop3d/pop3d_dbox.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pop3d::dbox.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pop3d::dbox(n) 1.0.2 tcllib &quot;Tcl POP3 Server Package&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pop3d::dbox.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">pop3d::dbox(n) 1.0.2 tcllib &quot;Tcl POP3 Server Package&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
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#key122">internet</a>, <a href="../../../../index.html#key624">network</a>, <a href="../../../../index.html#key395">pop3</a>, <a href="../../../../index.html#key125">protocol</a>, <a href="../../../../index.html#key291">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>







|








248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
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#key130">internet</a>, <a href="../../../../index.html#key623">network</a>, <a href="../../../../index.html#key395">pop3</a>, <a href="../../../../index.html#key133">protocol</a>, <a href="../../../../index.html#key289">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pop3d::udb.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pop3d::udb(n) 1.0.1 tcllib &quot;Tcl POP3 Server Package&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pop3d::udb.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">pop3d::udb(n) 1.0.1 tcllib &quot;Tcl POP3 Server Package&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
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#key122">internet</a>, <a href="../../../../index.html#key624">network</a>, <a href="../../../../index.html#key395">pop3</a>, <a href="../../../../index.html#key125">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>







|








207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
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#key130">internet</a>, <a href="../../../../index.html#key623">network</a>, <a href="../../../../index.html#key395">pop3</a>, <a href="../../../../index.html#key133">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.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/profiler/profiler.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ profiler.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">profiler(n) 0.3 tcllib &quot;Tcl Profiler&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>profiler - Tcl source code profiler</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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/profiler/profiler.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ profiler.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">profiler(n) 0.3 tcllib &quot;Tcl Profiler&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>profiler - Tcl source code profiler</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>

Changes to embedded/www/tcllib/files/modules/pt/pt.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt - Parser Tools Application</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt.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">pt(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt - Parser Tools Application</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>
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>Are you lost ?
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 document describes <b class="cmd">pt</b>, the main application of the module,
a <i class="term"><a href="../../../../index.html#key175">parser generator</a></i>. Its intended audience are people who wish
to create a parser for some language of theirs. Should you wish to
modify the application instead, please see the section about the
application's <span class="sectref"><a href="#section11">Internals</a></span> for the basic references.</p>
<p>It resides in the User Application Layer of Parser Tools.</p>
<p><img alt="arch_user_app" src="../../../../image/arch_user_app.png"></p>
</div>
<div id="section2" class="section"><h2><a name="section2">Command Line</a></h2>







|







146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>Are you lost ?
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 document describes <b class="cmd">pt</b>, the main application of the module,
a <i class="term"><a href="../../../../index.html#key182">parser generator</a></i>. Its intended audience are people who wish
to create a parser for some language of theirs. Should you wish to
modify the application instead, please see the section about the
application's <span class="sectref"><a href="#section11">Internals</a></span> for the basic references.</p>
<p>It resides in the User Application Layer of Parser Tools.</p>
<p><img alt="arch_user_app" src="../../../../image/arch_user_app.png"></p>
</div>
<div id="section2" class="section"><h2><a name="section2">Command Line</a></h2>

Changes to embedded/www/tcllib/files/modules/pt/pt_astree.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::ast.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::ast(n) 1.1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::ast - Abstract Syntax Tree Serialization</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::ast.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">pt::ast(n) 1.1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::ast - Abstract Syntax Tree Serialization</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>

Changes to embedded/www/tcllib/files/modules/pt/pt_cparam_config_critcl.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::cparam::configuration::critcl.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::cparam::configuration::critcl(n) 1.0.1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::cparam::configuration::critcl - C/PARAM, Canned configuration, Critcl</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::cparam::configuration::critcl.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">pt::cparam::configuration::critcl(n) 1.0.1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::cparam::configuration::critcl - C/PARAM, Canned configuration, Critcl</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>

Changes to embedded/www/tcllib/files/modules/pt/pt_from_api.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt_import_api.i
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt_import_api(i) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt_import_api - Parser Tools Import API</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt_import_api.i
   -->
<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">pt_import_api(i) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt_import_api - Parser Tools Import API</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>

Changes to embedded/www/tcllib/files/modules/pt/pt_introduction.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt_introduction.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt_introduction(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt_introduction - Introduction to Parser Tools</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt_introduction.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">pt_introduction(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt_introduction - Introduction to Parser Tools</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>

Changes to embedded/www/tcllib/files/modules/pt/pt_json_language.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::json_language.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::json_language(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::json_language - The JSON Grammar Exchange Format</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::json_language.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">pt::json_language(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::json_language - The JSON Grammar Exchange Format</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>

Changes to embedded/www/tcllib/files/modules/pt/pt_param.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::param.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::param(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::param - PackRat Machine Specification</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::param.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">pt::param(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::param - PackRat Machine Specification</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>

Changes to embedded/www/tcllib/files/modules/pt/pt_parser_api.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt_parser_api.i
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt_parser_api(i) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt_parser_api - Parser API</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt_parser_api.i
   -->
<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">pt_parser_api(i) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt_parser_api - Parser API</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>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_container.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::container.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::peg::container(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::container - PEG Storage</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::container.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">pt::peg::container(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::container - PEG Storage</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>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_container_peg.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::container::peg.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::peg::container::peg(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::container::peg - PEG Storage. Canned PEG grammar specification</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::container::peg.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">pt::peg::container::peg(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::container::peg - PEG Storage. Canned PEG grammar specification</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>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_export.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::export.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::peg::export(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::export - PEG Export</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::export.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">pt::peg::export(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::export - PEG Export</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>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_export_container.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::export::container.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::peg::export::container(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::export::container - PEG Export Plugin. Write CONTAINER format</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::export::container.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">pt::peg::export::container(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::export::container - PEG Export Plugin. Write CONTAINER format</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>
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
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#key308">CONTAINER</a>, <a href="../../../../index.html#key9">EBNF</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key148">export</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key357">plugin</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key102">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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>







|








537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
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#key310">CONTAINER</a>, <a href="../../../../index.html#key9">EBNF</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key148">export</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key357">plugin</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key104">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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_json.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::export::json.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::peg::export::json(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::export::json - PEG Export Plugin. Write JSON format</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::export::json.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">pt::peg::export::json(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::export::json - PEG Export Plugin. Write JSON format</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>
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
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#key9">EBNF</a>, <a href="../../../../index.html#key232">JSON</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key148">export</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key357">plugin</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key102">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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>







|








590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
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#key9">EBNF</a>, <a href="../../../../index.html#key232">JSON</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key148">export</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key357">plugin</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key104">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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_peg.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::export::peg.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::peg::export::peg(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::export::peg - PEG Export Plugin. Write PEG format</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::export::peg.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">pt::peg::export::peg(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::export::peg - PEG Export Plugin. Write PEG format</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>
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
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#key9">EBNF</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key148">export</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key357">plugin</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key102">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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>







|








580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
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#key9">EBNF</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key148">export</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key357">plugin</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key104">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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_from_container.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::from::container.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::peg::from::container(n) 0 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::from::container - PEG Conversion. From CONTAINER format</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::from::container.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">pt::peg::from::container(n) 0 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::from::container - PEG Conversion. From CONTAINER format</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>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_from_json.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::from::json.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::peg::from::json(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::from::json - PEG Conversion. Read JSON format</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::from::json.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">pt::peg::from::json(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::from::json - PEG Conversion. Read JSON format</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>
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
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#key9">EBNF</a>, <a href="../../../../index.html#key232">JSON</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key3">conversion</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key103">format conversion</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key102">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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>







|








558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
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#key9">EBNF</a>, <a href="../../../../index.html#key232">JSON</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key3">conversion</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key105">format conversion</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key104">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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_from_peg.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::from::peg.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::peg::from::peg(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::from::peg - PEG Conversion. Read PEG format</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::from::peg.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">pt::peg::from::peg(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::from::peg - PEG Conversion. Read PEG format</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>
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
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#key9">EBNF</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key3">conversion</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key103">format conversion</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key102">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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>







|








538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
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#key9">EBNF</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key3">conversion</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key105">format conversion</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key104">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::import.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::peg::import(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::import - PEG Import</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::import.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">pt::peg::import(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::import - PEG Import</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>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_import_container.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::import::container.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::peg::import::container(n) 0 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::import::container - PEG Import Plugin. From CONTAINER format</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::import::container.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">pt::peg::import::container(n) 0 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::import::container - PEG Import Plugin. From CONTAINER format</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>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_import_json.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::import::json.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::peg::import::json(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::import::json - PEG Import Plugin. Read JSON format</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::import::json.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">pt::peg::import::json(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::import::json - PEG Import Plugin. Read JSON format</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>
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
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#key9">EBNF</a>, <a href="../../../../index.html#key232">JSON</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key247">import</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key357">plugin</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key102">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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>







|








566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
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#key9">EBNF</a>, <a href="../../../../index.html#key232">JSON</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key247">import</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key357">plugin</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key104">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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_peg.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::import::peg.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::peg::import::peg(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::import::peg - PEG Import Plugin. Read PEG format</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::import::peg.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">pt::peg::import::peg(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::import::peg - PEG Import Plugin. Read PEG format</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>
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
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#key9">EBNF</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key247">import</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key357">plugin</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key102">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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>







|








548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
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#key9">EBNF</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key247">import</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key357">plugin</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key104">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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_interp.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::interp.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::peg::interp(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::interp - Interpreter for parsing expression grammars</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::interp.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">pt::peg::interp(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::interp - Interpreter for parsing expression grammars</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>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_introduction.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::pegrammar.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::pegrammar(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::pegrammar - Introduction to Parsing Expression Grammars</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::pegrammar.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">pt::pegrammar(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::pegrammar - Introduction to Parsing Expression Grammars</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>
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
<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#key749">e</a></i> a <i class="term"><a href="../../../../index.html#key14">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#key749">e</a></i>* is a parsing expression for parsing expression
<i class="term"><a href="../../../../index.html#key749">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#key749">e</a></i>+ is a parsing expression for parsing expression
<i class="term"><a href="../../../../index.html#key749">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#key749">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#key749">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#key750">e</a></i> a <i class="term"><a href="../../../../index.html#key14">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#key750">e</a></i>* is a parsing expression for parsing expression
<i class="term"><a href="../../../../index.html#key750">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#key750">e</a></i>+ is a parsing expression for parsing expression
<i class="term"><a href="../../../../index.html#key750">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#key750">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#key750">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>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_language.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg_language.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::peg_language(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg_language - PEG Language Tutorial</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg_language.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">pt::peg_language(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg_language - PEG Language Tutorial</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>

Changes to embedded/www/tcllib/files/modules/pt/pt_peg_to_container.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::to::container.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::peg::to::container(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::to::container - PEG Conversion. Write CONTAINER format</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::to::container.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">pt::peg::to::container(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::to::container - PEG Conversion. Write CONTAINER format</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>
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
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#key308">CONTAINER</a>, <a href="../../../../index.html#key9">EBNF</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key3">conversion</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key103">format conversion</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key102">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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>







|








551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
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#key310">CONTAINER</a>, <a href="../../../../index.html#key9">EBNF</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key3">conversion</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key105">format conversion</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key104">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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_cparam.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::to::cparam.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::peg::to::cparam(n) 1.0.1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::to::cparam - PEG Conversion. Write CPARAM format</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::to::cparam.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">pt::peg::to::cparam(n) 1.0.1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::to::cparam - PEG Conversion. Write CPARAM format</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>
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
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#key753">CPARAM</a>, <a href="../../../../index.html#key9">EBNF</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key3">conversion</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key103">format conversion</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key102">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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>







|








572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
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#key756">CPARAM</a>, <a href="../../../../index.html#key9">EBNF</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key3">conversion</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key105">format conversion</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key104">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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_json.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::to::json.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::peg::to::json(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::to::json - PEG Conversion. Write JSON format</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::to::json.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">pt::peg::to::json(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::to::json - PEG Conversion. Write JSON format</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>
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
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#key9">EBNF</a>, <a href="../../../../index.html#key232">JSON</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key3">conversion</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key103">format conversion</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key102">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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>







|








608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
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#key9">EBNF</a>, <a href="../../../../index.html#key232">JSON</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key3">conversion</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key105">format conversion</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key104">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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_param.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::to::param.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::peg::to::param(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::to::param - PEG Conversion. Write PARAM format</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::to::param.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">pt::peg::to::param(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::to::param - PEG Conversion. Write PARAM format</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>
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
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#key9">EBNF</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key471">PARAM</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key3">conversion</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key103">format conversion</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key102">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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>







|








1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
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#key9">EBNF</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key471">PARAM</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key3">conversion</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key105">format conversion</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key104">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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_peg.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::to::peg.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::peg::to::peg(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::to::peg - PEG Conversion. Write PEG format</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::to::peg.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">pt::peg::to::peg(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::to::peg - PEG Conversion. Write PEG format</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>
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
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#key9">EBNF</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key3">conversion</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key103">format conversion</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key102">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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>







|








593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
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#key9">EBNF</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key3">conversion</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key105">format conversion</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key104">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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_tclparam.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::to::tclparam.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::peg::to::tclparam(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::to::tclparam - PEG Conversion. Write TCLPARAM format</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg::to::tclparam.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">pt::peg::to::tclparam(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::to::tclparam - PEG Conversion. Write TCLPARAM format</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>
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
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#key9">EBNF</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key101">TCLPARAM</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key3">conversion</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key103">format conversion</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key102">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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>







|








555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
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#key9">EBNF</a>, <a href="../../../../index.html#key21">LL(k)</a>, <a href="../../../../index.html#key12">PEG</a>, <a href="../../../../index.html#key103">TCLPARAM</a>, <a href="../../../../index.html#key13">TDPL</a>, <a href="../../../../index.html#key10">context-free languages</a>, <a href="../../../../index.html#key3">conversion</a>, <a href="../../../../index.html#key6">expression</a>, <a href="../../../../index.html#key105">format conversion</a>, <a href="../../../../index.html#key17">grammar</a>, <a href="../../../../index.html#key11">matching</a>, <a href="../../../../index.html#key15">parser</a>, <a href="../../../../index.html#key14">parsing expression</a>, <a href="../../../../index.html#key20">parsing expression grammar</a>, <a href="../../../../index.html#key7">push down automaton</a>, <a href="../../../../index.html#key16">recursive descent</a>, <a href="../../../../index.html#key104">serialization</a>, <a href="../../../../index.html#key8">state</a>, <a href="../../../../index.html#key19">top-down parsing languages</a>, <a href="../../../../index.html#key18">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_pegrammar.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::peg(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg - Parsing Expression Grammar Serialization</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::peg.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">pt::peg(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg - Parsing Expression Grammar Serialization</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>

Changes to embedded/www/tcllib/files/modules/pt/pt_pexpr_op.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::pe::op.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::pe::op(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::pe::op - Parsing Expression 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::pe::op.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">pt::pe::op(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::pe::op - Parsing Expression 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>

Changes to embedded/www/tcllib/files/modules/pt/pt_pexpression.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::pe.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::pe(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::pe - Parsing Expression Serialization</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::pe.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">pt::pe(n) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::pe - Parsing Expression Serialization</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>

Changes to embedded/www/tcllib/files/modules/pt/pt_pgen.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::pgen.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::pgen(n) 1.0.1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::pgen - Parser Generator</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::pgen.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">pt::pgen(n) 1.0.1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::pgen - Parser Generator</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>
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>Are you lost ?
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 command implementing a
<i class="term"><a href="../../../../index.html#key175">parser generator</a></i>
taking parsing expression grammars as input.</p>
<p>It is the implementation of method <b class="method">generate</b> of <b class="cmd"><a href="pt.html">pt</a></b>, the
<i class="term"><a href="pt.html">Parser Tools Application</a></i>.</p>
<p>As such the intended audience of this document are people wishing to
modify and/or extend this part of <b class="cmd"><a href="pt.html">pt</a></b>'s functionality. Users of
<b class="cmd"><a href="pt.html">pt</a></b> on the other hand are hereby refered to the applications'
manpage, i.e. <i class="term"><a href="pt.html">Parser Tools Application</a></i>.</p>







|







139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>Are you lost ?
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 command implementing a
<i class="term"><a href="../../../../index.html#key182">parser generator</a></i>
taking parsing expression grammars as input.</p>
<p>It is the implementation of method <b class="method">generate</b> of <b class="cmd"><a href="pt.html">pt</a></b>, the
<i class="term"><a href="pt.html">Parser Tools Application</a></i>.</p>
<p>As such the intended audience of this document are people wishing to
modify and/or extend this part of <b class="cmd"><a href="pt.html">pt</a></b>'s functionality. Users of
<b class="cmd"><a href="pt.html">pt</a></b> on the other hand are hereby refered to the applications'
manpage, i.e. <i class="term"><a href="pt.html">Parser Tools Application</a></i>.</p>

Changes to embedded/www/tcllib/files/modules/pt/pt_rdengine.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::rde.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::rde(n) 1.0.2 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::rde - Parsing Runtime Support, PARAM based</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::rde.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">pt::rde(n) 1.0.2 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::rde - Parsing Runtime Support, PARAM based</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>

Changes to embedded/www/tcllib/files/modules/pt/pt_tclparam_config_snit.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::tclparam::configuration::snit.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::tclparam::configuration::snit(n) 1.0.1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::tclparam::configuration::snit - Tcl/PARAM, Canned configuration, Snit</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::tclparam::configuration::snit.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">pt::tclparam::configuration::snit(n) 1.0.1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::tclparam::configuration::snit - Tcl/PARAM, Canned configuration, Snit</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>

Changes to embedded/www/tcllib/files/modules/pt/pt_tclparam_config_tcloo.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::tclparam::configuration::tcloo.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt::tclparam::configuration::tcloo(n) 1.0.1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::tclparam::configuration::tcloo - Tcl/PARAM, Canned configuration, Tcloo</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt::tclparam::configuration::tcloo.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">pt::tclparam::configuration::tcloo(n) 1.0.1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::tclparam::configuration::tcloo - Tcl/PARAM, Canned configuration, Tcloo</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>

Changes to embedded/www/tcllib/files/modules/pt/pt_to_api.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt_export_api.i
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">pt_export_api(i) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt_export_api - Parser Tools Export API</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ pt_export_api.i
   -->
<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">pt_export_api(i) 1 tcllib &quot;Parser Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt_export_api - Parser Tools Export API</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>

Changes to embedded/www/tcllib/files/modules/rc4/rc4.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2003, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ rc4.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">rc4(n) 1.1.0 tcllib &quot;RC4 Stream Cipher&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>rc4 - Implementation of the RC4 stream 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2003, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ rc4.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">rc4(n) 1.1.0 tcllib &quot;RC4 Stream Cipher&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>rc4 - Implementation of the RC4 stream 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>

Changes to embedded/www/tcllib/files/modules/rcs/rcs.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2005, Andreas Kupries &lt;[email protected]&gt;   -- Copyright &copy; 2005, Colin McCormack &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ rcs.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">rcs(n) 2.0.2 tcllib &quot;RCS low level utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>rcs - RCS low level 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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2005, Andreas Kupries &lt;[email protected]&gt;   -- Copyright &copy; 2005, Colin McCormack &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ rcs.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">rcs(n) 2.0.2 tcllib &quot;RCS low level utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>rcs - RCS low level 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>
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
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#key285">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#key583">CVS</a>, <a href="../../../../index.html#key584">RCS</a>, <a href="../../../../index.html#key581">RCS patch</a>, <a href="../../../../index.html#key582">SCCS</a>, <a href="../../../../index.html#key585">diff -n format</a>, <a href="../../../../index.html#key586">patching</a>, <a href="../../../../index.html#key588">text conversion</a>, <a href="../../../../index.html#key587">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>







|












332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
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#key294">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#key583">CVS</a>, <a href="../../../../index.html#key584">RCS</a>, <a href="../../../../index.html#key581">RCS patch</a>, <a href="../../../../index.html#key582">SCCS</a>, <a href="../../../../index.html#key585">diff -n format</a>, <a href="../../../../index.html#key586">patching</a>, <a href="../../../../index.html#key588">text conversion</a>, <a href="../../../../index.html#key587">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ report.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">report(n) 0.3.1 tcllib &quot;Matrix reports&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>report - Create and manipulate report 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ report.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">report(n) 0.3.1 tcllib &quot;Matrix reports&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>report - Create and manipulate report 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>
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
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#key105">report</a>, <a href="../../../../index.html#key104">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>







|








464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
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#key102">report</a>, <a href="../../../../index.html#key101">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/rest/rest.html.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/rest/rest.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ rest.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">rest(n) 1.0 tcllib &quot;A framework for RESTful web services&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>rest - define REST web APIs and call them inline or asychronously</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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/rest/rest.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ rest.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">rest(n) 1.0 tcllib &quot;A framework for RESTful web services&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>rest - define REST web APIs and call them inline or asychronously</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>

Changes to embedded/www/tcllib/files/modules/ripemd/ripemd128.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2004, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ ripemd128.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">ripemd128(n) 1.0.3 tcllib &quot;RIPEMD Message-Digest Algorithm&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>ripemd128 - RIPEMD-128 Message-Digest Algorithm</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2004, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ ripemd128.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">ripemd128(n) 1.0.3 tcllib &quot;RIPEMD Message-Digest Algorithm&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>ripemd128 - RIPEMD-128 Message-Digest Algorithm</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>

Changes to embedded/www/tcllib/files/modules/ripemd/ripemd160.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2004, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ ripemd160.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">ripemd160(n) 1.0.3 tcllib &quot;RIPEMD Message-Digest Algorithm&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>ripemd160 - RIPEMD-160 Message-Digest Algorithm</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2004, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ ripemd160.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">ripemd160(n) 1.0.3 tcllib &quot;RIPEMD Message-Digest Algorithm&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>ripemd160 - RIPEMD-160 Message-Digest Algorithm</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>

Changes to embedded/www/tcllib/files/modules/sasl/sasl.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2005-2006, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ SASL.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">SASL(n) 1.3.0 tcllib &quot;Simple Authentication and Security Layer (SASL)&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>SASL - Implementation of SASL mechanisms for Tcl</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2005-2006, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ SASL.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">SASL(n) 1.3.0 tcllib &quot;Simple Authentication and Security Layer (SASL)&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>SASL - Implementation of SASL mechanisms for Tcl</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>

Changes to embedded/www/tcllib/files/modules/sha1/sha1.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2005, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ sha1.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">sha1(n) 2.0.3 tcllib &quot;SHA-x Message-Digest Algorithm&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>sha1 - SHA1 Message-Digest Algorithm</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2005, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ sha1.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">sha1(n) 2.0.3 tcllib &quot;SHA-x Message-Digest Algorithm&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>sha1 - SHA1 Message-Digest Algorithm</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>

Changes to embedded/www/tcllib/files/modules/sha1/sha256.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2008, Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ sha256.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">sha256(n) 1.0.3 tcllib &quot;SHA-x Message-Digest Algorithm&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>sha256 - SHA256 Message-Digest Algorithm</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2008, Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ sha256.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">sha256(n) 1.0.3 tcllib &quot;SHA-x Message-Digest Algorithm&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>sha256 - SHA256 Message-Digest Algorithm</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>

Changes to embedded/www/tcllib/files/modules/simulation/annealing.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2008 Arjen Markus &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ simulation::annealing.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">simulation::annealing(n) 0.2 tcllib &quot;Tcl Simulation Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>simulation::annealing - Simulated annealing</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2008 Arjen Markus &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ simulation::annealing.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">simulation::annealing(n) 0.2 tcllib &quot;Tcl Simulation Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>simulation::annealing - Simulated annealing</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>

Changes to embedded/www/tcllib/files/modules/simulation/montecarlo.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2008 Arjen Markus &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ simulation::montecarlo.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">simulation::montecarlo(n) 0.1 tcllib &quot;Tcl Simulation Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>simulation::montecarlo - Monte Carlo simulations</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2008 Arjen Markus &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ simulation::montecarlo.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">simulation::montecarlo(n) 0.1 tcllib &quot;Tcl Simulation Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>simulation::montecarlo - Monte Carlo simulations</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>

Changes to embedded/www/tcllib/files/modules/simulation/simulation_random.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ simulation::random.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">simulation::random(n) 0.1 tcllib &quot;Tcl Simulation Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>simulation::random - Pseudo-random number generators</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2004 Arjen Markus &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ simulation::random.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">simulation::random(n) 0.1 tcllib &quot;Tcl Simulation Tools&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>simulation::random - Pseudo-random number generators</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>
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
<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#key592">random numbers</a>, <a href="../../../../index.html#key593">simulation</a>, <a href="../../../../index.html#key594">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>
</div></body></html>







|








291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
<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#key593">random numbers</a>, <a href="../../../../index.html#key594">simulation</a>, <a href="../../../../index.html#key595">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>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/smtpd/smtpd.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ smtpd.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">smtpd(n) 1.5 tcllib &quot;Tcl SMTP Server Package&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>smtpd - Tcl SMTP server implementation</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ smtpd.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">smtpd(n) 1.5 tcllib &quot;Tcl SMTP Server Package&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>smtpd - Tcl SMTP server implementation</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>
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
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#key287">rfc 2821</a>, <a href="../../../../index.html#key290">rfc 821</a>, <a href="../../../../index.html#key555">services</a>, <a href="../../../../index.html#key295">smtp</a>, <a href="../../../../index.html#key623">smtpd</a>, <a href="../../../../index.html#key311">socket</a>, <a href="../../../../index.html#key367">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>







|








330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
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#key285">rfc 2821</a>, <a href="../../../../index.html#key288">rfc 821</a>, <a href="../../../../index.html#key556">services</a>, <a href="../../../../index.html#key293">smtp</a>, <a href="../../../../index.html#key624">smtpd</a>, <a href="../../../../index.html#key311">socket</a>, <a href="../../../../index.html#key367">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2003-2009, by William H. Duquette
   -->
<! -- CVS: $Id$ snit.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">snit(n) 2.3.2 tcllib &quot;Snit's Not Incr Tcl, OO system&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>snit - Snit's Not Incr Tcl</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2003-2009, by William H. Duquette
   -->
<! -- CVS: $Id$ snit.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">snit(n) 2.3.2 tcllib &quot;Snit's Not Incr Tcl, OO system&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>snit - Snit's Not Incr Tcl</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>
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
<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#key72">info</a></b> that is used for type introspection; the <b class="cmd"><a href="../../../../index.html#key72">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>







|







812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
<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#key77">info</a></b> that is used for type introspection; the <b class="cmd"><a href="../../../../index.html#key77">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>

Changes to embedded/www/tcllib/files/modules/snit/snitfaq.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2003-2006, by William H. Duquette
   -->
<! -- CVS: $Id$ snitfaq.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">snitfaq(n) 2.2 tcllib &quot;Snit's Not Incr Tcl, OO system&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>snitfaq - Snit Frequently Asked Questions</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2003-2006, by William H. Duquette
   -->
<! -- CVS: $Id$ snitfaq.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">snitfaq(n) 2.2 tcllib &quot;Snit's Not Incr Tcl, OO system&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>snitfaq - Snit Frequently Asked Questions</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>

Changes to embedded/www/tcllib/files/modules/soundex/soundex.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; ????, Algorithm: Donald E. Knuth   -- Copyright &copy; 2003, Documentation: Andreas Kupries &lt;[email protected]&gt;   -- Copyright &copy; 1998, Tcl port: Evan Rempel &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ soundex.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">soundex(n) 1.0 tcllib &quot;Soundex&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>soundex - Soundex</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; ????, Algorithm: Donald E. Knuth   -- Copyright &copy; 2003, Documentation: Andreas Kupries &lt;[email protected]&gt;   -- Copyright &copy; 1998, Tcl port: Evan Rempel &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ soundex.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">soundex(n) 1.0 tcllib &quot;Soundex&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>soundex - Soundex</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>
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
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#key241">knuth</a>, <a href="../../../../index.html#key242">soundex</a>, <a href="../../../../index.html#key240">text comparison</a>, <a href="../../../../index.html#key243">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>







|










158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
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#key244">knuth</a>, <a href="../../../../index.html#key245">soundex</a>, <a href="../../../../index.html#key243">text comparison</a>, <a href="../../../../index.html#key246">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.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/stooop/stooop.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ stooop.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">stooop(n) 4.4.1 tcllib &quot;Simple Tcl Only Object Oriented Programming&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>stooop - Object oriented extension.</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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/stooop/stooop.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ stooop.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">stooop(n) 4.4.1 tcllib &quot;Simple Tcl Only Object Oriented Programming&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>stooop - Object oriented extension.</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>

Changes to embedded/www/tcllib/files/modules/string/token.html.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/string/token.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ string::token.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">string::token(n) 1 tcllib &quot;Text and string utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/string/token.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ string::token.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">string::token(n) 1 tcllib &quot;Text and string utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/string/token_shell.html.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/string/token_shell.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ string::token::shell.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">string::token::shell(n) 1 tcllib &quot;Text and string utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/string/token_shell.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ string::token::shell.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">string::token::shell(n) 1 tcllib &quot;Text and string utilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/stringprep/stringprep.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007-2009, Sergei Golovan &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ stringprep.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">stringprep(n) 1.0.1 tcllib &quot;Preparation of Internationalized Strings&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>stringprep - Implementation of stringprep</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007-2009, Sergei Golovan &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ stringprep.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">stringprep(n) 1.0.1 tcllib &quot;Preparation of Internationalized Strings&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>stringprep - Implementation of stringprep</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>

Changes to embedded/www/tcllib/files/modules/stringprep/stringprep_data.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007-2009, Sergei Golovan &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ stringprep::data.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">stringprep::data(n) 1.0.1 tcllib &quot;Preparation of Internationalized Strings&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007-2009, Sergei Golovan &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ stringprep::data.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">stringprep::data(n) 1.0.1 tcllib &quot;Preparation of Internationalized Strings&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/stringprep/unicode.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007, Sergei Golovan &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ unicode.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">unicode(n) 1.0.0 tcllib &quot;Unicode normalization&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>unicode - Implementation of Unicode normalization</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007, Sergei Golovan &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ unicode.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">unicode(n) 1.0.0 tcllib &quot;Unicode normalization&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>unicode - Implementation of Unicode normalization</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>

Changes to embedded/www/tcllib/files/modules/stringprep/unicode_data.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007, Sergei Golovan &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ unicode::data.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">unicode::data(n) 1.0.0 tcllib &quot;Preparation of Internationalized Strings&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007, Sergei Golovan &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ unicode::data.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">unicode::data(n) 1.0.0 tcllib &quot;Preparation of Internationalized Strings&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/struct/disjointset.html.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/struct/disjointset.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ struct::disjointset.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">struct::disjointset(n) 1.0 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>struct::disjointset - Disjoint set data structure</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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/struct/disjointset.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ struct::disjointset.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">struct::disjointset(n) 1.0 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>struct::disjointset - Disjoint set data structure</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>
233
234
235
236
237
238
239
240
241
242
243
244
245
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#key573">disjoint set</a>, <a href="../../../../index.html#key572">equivalence class</a>, <a href="../../../../index.html#key574">find</a>, <a href="../../../../index.html#key576">merge find</a>, <a href="../../../../index.html#key577">partition</a>, <a href="../../../../index.html#key578">partitioned set</a>, <a href="../../../../index.html#key575">union</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Data structures</p>
</div>
</div></body></html>







|





236
237
238
239
240
241
242
243
244
245
246
247
248
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#key575">disjoint set</a>, <a href="../../../../index.html#key574">equivalence class</a>, <a href="../../../../index.html#key576">find</a>, <a href="../../../../index.html#key578">merge find</a>, <a href="../../../../index.html#key579">partition</a>, <a href="../../../../index.html#key580">partitioned set</a>, <a href="../../../../index.html#key577">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2002-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::graph.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">struct::graph(n) 2.4 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>struct::graph - 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2002-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::graph.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">struct::graph(n) 2.4 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>struct::graph - 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>
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
former are called the <i class="term">outgoing arcs</i> of the node, the latter
the <i class="term">incoming arcs</i> of the node. The number of arcs in either
set is called the <i class="term">in-degree</i> resp. the <i class="term">out-degree</i> of the
node.</p>
<p>In addition to maintaining the node and arc relationships, this graph
implementation allows any number of named <i class="term">attributes</i> to be
associated with the graph itself, and each node or arc.</p>
<p><em>Note:</em> The major version of the package <b class="package"><a href="../../../../index.html#key285">struct</a></b> has
been changed to version 2.0, due to backward incompatible changes in
the API of this module. Please read the section
<span class="sectref"><a href="#section2">Changes for 2.0</a></span> for a full list of all changes,
incompatible and otherwise.</p>
<p><em>Note:</em> A C-implementation of the command can be had from the
location <a href="http://www.purl.org/NET/schlenker/tcl/cgraph">http://www.purl.org/NET/schlenker/tcl/cgraph</a>. See also
<a href="http://wiki.tcl.tk/cgraph">http://wiki.tcl.tk/cgraph</a>.  This implementation uses a bit less







|







221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
former are called the <i class="term">outgoing arcs</i> of the node, the latter
the <i class="term">incoming arcs</i> of the node. The number of arcs in either
set is called the <i class="term">in-degree</i> resp. the <i class="term">out-degree</i> of the
node.</p>
<p>In addition to maintaining the node and arc relationships, this graph
implementation allows any number of named <i class="term">attributes</i> to be
associated with the graph itself, and each node or arc.</p>
<p><em>Note:</em> The major version of the package <b class="package"><a href="../../../../index.html#key294">struct</a></b> has
been changed to version 2.0, due to backward incompatible changes in
the API of this module. Please read the section
<span class="sectref"><a href="#section2">Changes for 2.0</a></span> for a full list of all changes,
incompatible and otherwise.</p>
<p><em>Note:</em> A C-implementation of the command can be had from the
location <a href="http://www.purl.org/NET/schlenker/tcl/cgraph">http://www.purl.org/NET/schlenker/tcl/cgraph</a>. See also
<a href="http://wiki.tcl.tk/cgraph">http://wiki.tcl.tk/cgraph</a>.  This implementation uses a bit less
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
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#key434">adjacent</a>, <a href="../../../../index.html#key422">arc</a>, <a href="../../../../index.html#key565">cgraph</a>, <a href="../../../../index.html#key425">degree</a>, <a href="../../../../index.html#key409">edge</a>, <a href="../../../../index.html#key256">graph</a>, <a href="../../../../index.html#key406">loop</a>, <a href="../../../../index.html#key437">neighbour</a>, <a href="../../../../index.html#key412">node</a>, <a href="../../../../index.html#key102">serialization</a>, <a href="../../../../index.html#key429">subgraph</a>, <a href="../../../../index.html#key411">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>







|








773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
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#key434">adjacent</a>, <a href="../../../../index.html#key422">arc</a>, <a href="../../../../index.html#key565">cgraph</a>, <a href="../../../../index.html#key425">degree</a>, <a href="../../../../index.html#key409">edge</a>, <a href="../../../../index.html#key256">graph</a>, <a href="../../../../index.html#key406">loop</a>, <a href="../../../../index.html#key437">neighbour</a>, <a href="../../../../index.html#key412">node</a>, <a href="../../../../index.html#key104">serialization</a>, <a href="../../../../index.html#key429">subgraph</a>, <a href="../../../../index.html#key411">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::graph_v1.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">struct::graph_v1(n) 1.2.1 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::graph_v1.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">struct::graph_v1(n) 1.2.1 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/struct/graphops.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2008 Alejandro Paz &lt;[email protected]&gt;   -- Copyright &copy; 2008 (docs) Andreas Kupries &lt;[email protected]&gt;   -- Copyright &copy; 2009 Michal Antoniewski &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::graph::op.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">struct::graph::op(n) 0.11.3 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>struct::graph::op - Operation for (un)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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2008 Alejandro Paz &lt;[email protected]&gt;   -- Copyright &copy; 2008 (docs) Andreas Kupries &lt;[email protected]&gt;   -- Copyright &copy; 2009 Michal Antoniewski &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::graph::op.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">struct::graph::op(n) 0.11.3 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>struct::graph::op - Operation for (un)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>
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
<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#key749">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#key749">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#key750">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#key750">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
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
<p>The (un)directed <i class="term"><a href="../../../../index.html#key407">diameter</a></i> of a graph is the maximal (un)directed
<i class="term"><a href="../../../../index.html#key450">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#key749">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#key407">diameter</a></i> of a graph is the maximal (un)directed
<i class="term"><a href="../../../../index.html#key450">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#key750">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>
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
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#key749">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">







|







562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
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#key750">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">
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
<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#key749">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#key750">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>
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
<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#key447">maximum flow</a></i> for that <i class="term"><a href="../../../../index.html#key624">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>







|







715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
<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#key447">maximum flow</a></i> for that <i class="term"><a href="../../../../index.html#key623">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>
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
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#key749">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>







|







825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
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#key750">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>
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
<dl class="definitions">
<dt>Definitions:</dt>
<dd><ul class="itemized">
<li><p><i class="term">the maximum flow problem</i> - the goal is to find a feasible flow through a single-source, single-sink flow network that is maximum.
The <i class="term">maximum flow problem</i> can be seen as a special case of more complex network flow problems, such as the <i class="term">circulation problem</i>.
The maximum value of an <i class="term">s-t flow</i> is equal to the minimum capacity of an <i class="term">s-t cut</i> in the network, as stated in the
<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#key129">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#key388">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>







|







951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
<dl class="definitions">
<dt>Definitions:</dt>
<dd><ul class="itemized">
<li><p><i class="term">the maximum flow problem</i> - the goal is to find a feasible flow through a single-source, single-sink flow network that is maximum.
The <i class="term">maximum flow problem</i> can be seen as a special case of more complex network flow problems, such as the <i class="term">circulation problem</i>.
The maximum value of an <i class="term">s-t flow</i> is equal to the minimum capacity of an <i class="term">s-t cut</i> in the network, as stated in the
<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#key124">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#key388">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>

Changes to embedded/www/tcllib/files/modules/struct/matrix.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::matrix.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">struct::matrix(n) 2.0.1 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>struct::matrix - Create and manipulate matrix 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::matrix.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">struct::matrix(n) 2.0.1 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>struct::matrix - Create and manipulate matrix 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>

Changes to embedded/www/tcllib/files/modules/struct/matrix1.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::matrix_v1.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">struct::matrix_v1(n) 1.2.1 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>struct::matrix_v1 - Create and manipulate matrix 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::matrix_v1.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">struct::matrix_v1(n) 1.2.1 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>struct::matrix_v1 - Create and manipulate matrix 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>

Changes to embedded/www/tcllib/files/modules/struct/pool.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2002, Erik Leunissen &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::pool.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">struct::pool(n) 1.2.1 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>struct::pool - Create and manipulate pool objects (of discrete items)</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2002, Erik Leunissen &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::pool.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">struct::pool(n) 1.2.1 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>struct::pool - Create and manipulate pool objects (of discrete items)</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>
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
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#key730">discrete items</a>, <a href="../../../../index.html#key731">finite</a>, <a href="../../../../index.html#key255">pool</a>, <a href="../../../../index.html#key285">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>







|








445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
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#key730">discrete items</a>, <a href="../../../../index.html#key731">finite</a>, <a href="../../../../index.html#key255">pool</a>, <a href="../../../../index.html#key294">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.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2003 Michael Schlenker &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::prioqueue.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">struct::prioqueue(n) 1.4 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2003 Michael Schlenker &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::prioqueue.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">struct::prioqueue(n) 1.4 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
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#key697">ordered list</a>, <a href="../../../../index.html#key260">prioqueue</a>, <a href="../../../../index.html#key698">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>







|








209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
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#key699">ordered list</a>, <a href="../../../../index.html#key260">prioqueue</a>, <a href="../../../../index.html#key700">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.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/struct/queue.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ struct::queue.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">struct::queue(n) 1.4.4 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/struct/queue.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ struct::queue.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">struct::queue(n) 1.4.4 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/struct/record.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2002, Brett Schwarz &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::record.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">struct::record(n) 1.2.1 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>struct::record - Define and create records (similar to 'C' 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2002, Brett Schwarz &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::record.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">struct::record(n) 1.2.1 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>struct::record - Define and create records (similar to 'C' 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>
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
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#key286">data structures</a>, <a href="../../../../index.html#key259">record</a>, <a href="../../../../index.html#key285">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>







|








419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
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#key295">data structures</a>, <a href="../../../../index.html#key259">record</a>, <a href="../../../../index.html#key294">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2000 Keith Vetter
   -->
<! -- CVS: $Id$ struct::skiplist.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">struct::skiplist(n) 1.3 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2000 Keith Vetter
   -->
<! -- CVS: $Id$ struct::skiplist.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">struct::skiplist(n) 1.3 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/struct/stack.html.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/struct/stack.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ struct::stack.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">struct::stack(n) 1.5.3 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/struct/stack.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ struct::stack.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">struct::stack(n) 1.5.3 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/struct/struct_list.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2003-2005 by Kevin B. Kenny. All rights reserved   -- Copyright &copy; 2003-2012 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::list.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">struct::list(n) 1.8.2 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>struct::list - Procedures for manipulating lists</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2003-2005 by Kevin B. Kenny. All rights reserved   -- Copyright &copy; 2003-2012 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::list.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">struct::list(n) 1.8.2 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>struct::list - Procedures for manipulating lists</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>
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
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#key519">Fisher-Yates</a>, <a href="../../../../index.html#key521">assign</a>, <a href="../../../../index.html#key502">common</a>, <a href="../../../../index.html#key504">comparison</a>, <a href="../../../../index.html#key513">diff</a>, <a href="../../../../index.html#key507">differential</a>, <a href="../../../../index.html#key511">equal</a>, <a href="../../../../index.html#key523">equality</a>, <a href="../../../../index.html#key203">filter</a>, <a href="../../../../index.html#key509">first permutation</a>, <a href="../../../../index.html#key508">flatten</a>, <a href="../../../../index.html#key515">folding</a>, <a href="../../../../index.html#key514">full outer join</a>, <a href="../../../../index.html#key522">generate permutations</a>, <a href="../../../../index.html#key517">inner join</a>, <a href="../../../../index.html#key510">join</a>, <a href="../../../../index.html#key503">left outer join</a>, <a href="../../../../index.html#key252">list</a>, <a href="../../../../index.html#key501">longest common subsequence</a>, <a href="../../../../index.html#key187">map</a>, <a href="../../../../index.html#key524">next permutation</a>, <a href="../../../../index.html#key525">outer join</a>, <a href="../../../../index.html#key500">permutation</a>, <a href="../../../../index.html#key198">reduce</a>, <a href="../../../../index.html#key526">repeating</a>, <a href="../../../../index.html#key238">repetition</a>, <a href="../../../../index.html#key518">reshuffle</a>, <a href="../../../../index.html#key505">reverse</a>, <a href="../../../../index.html#key506">right outer join</a>, <a href="../../../../index.html#key520">shuffle</a>, <a href="../../../../index.html#key516">subsequence</a>, <a href="../../../../index.html#key512">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>







|









689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
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#key519">Fisher-Yates</a>, <a href="../../../../index.html#key521">assign</a>, <a href="../../../../index.html#key502">common</a>, <a href="../../../../index.html#key504">comparison</a>, <a href="../../../../index.html#key513">diff</a>, <a href="../../../../index.html#key507">differential</a>, <a href="../../../../index.html#key511">equal</a>, <a href="../../../../index.html#key523">equality</a>, <a href="../../../../index.html#key201">filter</a>, <a href="../../../../index.html#key509">first permutation</a>, <a href="../../../../index.html#key508">flatten</a>, <a href="../../../../index.html#key515">folding</a>, <a href="../../../../index.html#key514">full outer join</a>, <a href="../../../../index.html#key522">generate permutations</a>, <a href="../../../../index.html#key517">inner join</a>, <a href="../../../../index.html#key510">join</a>, <a href="../../../../index.html#key503">left outer join</a>, <a href="../../../../index.html#key252">list</a>, <a href="../../../../index.html#key501">longest common subsequence</a>, <a href="../../../../index.html#key180">map</a>, <a href="../../../../index.html#key524">next permutation</a>, <a href="../../../../index.html#key525">outer join</a>, <a href="../../../../index.html#key500">permutation</a>, <a href="../../../../index.html#key196">reduce</a>, <a href="../../../../index.html#key526">repeating</a>, <a href="../../../../index.html#key238">repetition</a>, <a href="../../../../index.html#key518">reshuffle</a>, <a href="../../../../index.html#key505">reverse</a>, <a href="../../../../index.html#key506">right outer join</a>, <a href="../../../../index.html#key520">shuffle</a>, <a href="../../../../index.html#key516">subsequence</a>, <a href="../../../../index.html#key512">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2004-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::set.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">struct::set(n) 2.2.3 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>struct::set - Procedures for manipulating sets</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2004-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::set.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">struct::set(n) 2.2.3 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>struct::set - Procedures for manipulating sets</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>
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
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#key675">cardinality</a>, <a href="../../../../index.html#key680">difference</a>, <a href="../../../../index.html#key677">emptiness</a>, <a href="../../../../index.html#key679">exclusion</a>, <a href="../../../../index.html#key674">inclusion</a>, <a href="../../../../index.html#key681">intersection</a>, <a href="../../../../index.html#key676">membership</a>, <a href="../../../../index.html#key253">set</a>, <a href="../../../../index.html#key678">symmetric difference</a>, <a href="../../../../index.html#key575">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>







|








229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
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#key675">cardinality</a>, <a href="../../../../index.html#key680">difference</a>, <a href="../../../../index.html#key677">emptiness</a>, <a href="../../../../index.html#key679">exclusion</a>, <a href="../../../../index.html#key674">inclusion</a>, <a href="../../../../index.html#key681">intersection</a>, <a href="../../../../index.html#key676">membership</a>, <a href="../../../../index.html#key253">set</a>, <a href="../../../../index.html#key678">symmetric difference</a>, <a href="../../../../index.html#key577">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2002-2004,2012 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::tree.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">struct::tree(n) 2.1.1 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>struct::tree - 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2002-2004,2012 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::tree.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">struct::tree(n) 2.1.1 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>struct::tree - 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>
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
<li><p>Trees are accessed through an object command, whereas arrays are
accessed as variables. (This means trees cannot be local to a procedure.)</p></li>
<li><p>Trees have a hierarchical structure, whereas an array is just an
unordered collection.</p></li>
<li><p>Each node of a tree has a separate collection of attributes and
values. This is like an array where every value is a dictionary.</p></li>
</ol>
<p><em>Note:</em> The major version of the package <b class="package"><a href="../../../../index.html#key285">struct</a></b> has
been changed to version 2.0, due to backward incompatible changes in
the API of this module. Please read the section
<span class="sectref"><a href="#subsection3">Changes for 2.0</a></span> for a full list of all changes,
incompatible and otherwise.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Tree CLASS API</a></h3>







|







201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
<li><p>Trees are accessed through an object command, whereas arrays are
accessed as variables. (This means trees cannot be local to a procedure.)</p></li>
<li><p>Trees have a hierarchical structure, whereas an array is just an
unordered collection.</p></li>
<li><p>Each node of a tree has a separate collection of attributes and
values. This is like an array where every value is a dictionary.</p></li>
</ol>
<p><em>Note:</em> The major version of the package <b class="package"><a href="../../../../index.html#key294">struct</a></b> has
been changed to version 2.0, due to backward incompatible changes in
the API of this module. Please read the section
<span class="sectref"><a href="#subsection3">Changes for 2.0</a></span> for a full list of all changes,
incompatible and otherwise.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Tree CLASS API</a></h3>
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
<p>Please read the documentation for the methods <b class="method">serialize</b>,
<b class="method">deserialize</b>, <b class="method">=</b>, and <b class="method">--&gt;</b>, and the
documentation on the construction of tree objects.</p>
<p>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.</p></li>
<li><p>The walker API has been streamlined and made more similar to the
command <b class="cmd"><a href="../../../../index.html#key199">foreach</a></b>. In detail:</p>
<ul class="itemized">
<li><p>The superfluous option <b class="option">-command</b> has been removed.</p></li>
<li><p>Ditto for the place holders. Instead of the placeholders two loop
variables have to be specified to contain node and action information.</p></li>
<li><p>The old command argument has been documented as a script now, which it
was in the past too.</p></li>
<li><p>The fact that <b class="const">enter</b> actions are called before the walker looks







|







640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
<p>Please read the documentation for the methods <b class="method">serialize</b>,
<b class="method">deserialize</b>, <b class="method">=</b>, and <b class="method">--&gt;</b>, and the
documentation on the construction of tree objects.</p>
<p>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.</p></li>
<li><p>The walker API has been streamlined and made more similar to the
command <b class="cmd"><a href="../../../../index.html#key197">foreach</a></b>. In detail:</p>
<ul class="itemized">
<li><p>The superfluous option <b class="option">-command</b> has been removed.</p></li>
<li><p>Ditto for the place holders. Instead of the placeholders two loop
variables have to be specified to contain node and action information.</p></li>
<li><p>The old command argument has been documented as a script now, which it
was in the past too.</p></li>
<li><p>The fact that <b class="const">enter</b> actions are called before the walker looks
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
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#key653">breadth-first</a>, <a href="../../../../index.html#key652">depth-first</a>, <a href="../../../../index.html#key650">in-order</a>, <a href="../../../../index.html#key412">node</a>, <a href="../../../../index.html#key654">post-order</a>, <a href="../../../../index.html#key651">pre-order</a>, <a href="../../../../index.html#key102">serialization</a>, <a href="../../../../index.html#key254">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>







|








684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
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#key653">breadth-first</a>, <a href="../../../../index.html#key652">depth-first</a>, <a href="../../../../index.html#key650">in-order</a>, <a href="../../../../index.html#key412">node</a>, <a href="../../../../index.html#key654">post-order</a>, <a href="../../../../index.html#key651">pre-order</a>, <a href="../../../../index.html#key104">serialization</a>, <a href="../../../../index.html#key254">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::tree_v1.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">struct::tree_v1(n) 1.2.2 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2002 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ struct::tree_v1.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">struct::tree_v1(n) 1.2.2 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/tar/tar.html.

94
95
96
97
98
99
100

101
102
103

104

105
106
107
108
109
110
111
112
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/tar/tar.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ tar.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tar(n) 0.7 tcllib &quot;Tar file handling&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/tar/tar.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ tar.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">tar(n) 0.7 tcllib &quot;Tar file handling&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/tepam/tepam_argument_dialogbox.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2009/2010, Andreas Drollinger
   -->
<! -- CVS: $Id$ tepam::argument_dialogbox.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tepam::argument_dialogbox(n) 0.4.0 tcllib &quot;Tcl's Enhanced Procedure and Argument Manager&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tepam::argument_dialogbox - TEPAM argument_dialogbox, reference manual</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2009/2010, Andreas Drollinger
   -->
<! -- CVS: $Id$ tepam::argument_dialogbox.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">tepam::argument_dialogbox(n) 0.4.0 tcllib &quot;Tcl's Enhanced Procedure and Argument Manager&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tepam::argument_dialogbox - TEPAM argument_dialogbox, reference manual</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>

Changes to embedded/www/tcllib/files/modules/tepam/tepam_introduction.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2009/2010, Andreas Drollinger
   -->
<! -- CVS: $Id$ tepam.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tepam(n) 0.4.0 tcllib &quot;Tcl's Enhanced Procedure and Argument Manager&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tepam - An introduction into TEPAM, Tcl's Enhanced Procedure and Argument Manager</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2009/2010, Andreas Drollinger
   -->
<! -- CVS: $Id$ tepam.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">tepam(n) 0.4.0 tcllib &quot;Tcl's Enhanced Procedure and Argument Manager&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tepam - An introduction into TEPAM, Tcl's Enhanced Procedure and Argument Manager</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>

Changes to embedded/www/tcllib/files/modules/tepam/tepam_procedure.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2009/2010, Andreas Drollinger
   -->
<! -- CVS: $Id$ tepam::procedure.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tepam::procedure(n) 0.4.0 tcllib &quot;Tcl's Enhanced Procedure and Argument Manager&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tepam::procedure - TEPAM procedure, reference manual</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2009/2010, Andreas Drollinger
   -->
<! -- CVS: $Id$ tepam::procedure.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">tepam::procedure(n) 0.4.0 tcllib &quot;Tcl's Enhanced Procedure and Argument Manager&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tepam::procedure - TEPAM procedure, reference manual</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>

Changes to embedded/www/tcllib/files/modules/term/ansi_cattr.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term::ansi::code::attr.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">term::ansi::code::attr(n) 0.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>term::ansi::code::attr - ANSI attribute 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term::ansi::code::attr.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">term::ansi::code::attr(n) 0.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>term::ansi::code::attr - ANSI attribute 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>

Changes to embedded/www/tcllib/files/modules/term/ansi_cctrl.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term::ansi::code::ctrl.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">term::ansi::code::ctrl(n) 0.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>term::ansi::code::ctrl - ANSI 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term::ansi::code::ctrl.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">term::ansi::code::ctrl(n) 0.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>term::ansi::code::ctrl - ANSI 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>

Changes to embedded/www/tcllib/files/modules/term/ansi_cmacros.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term::ansi::code::macros.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">term::ansi::code::macros(n) 0.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>term::ansi::code::macros - Macro 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term::ansi::code::macros.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">term::ansi::code::macros(n) 0.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>term::ansi::code::macros - Macro 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>

Changes to embedded/www/tcllib/files/modules/term/ansi_code.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term::ansi::code.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">term::ansi::code(n) 0.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term::ansi::code.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">term::ansi::code(n) 0.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/term/ansi_ctrlu.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006-2011 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term::ansi::ctrl::unix.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">term::ansi::ctrl::unix(n) 0.1.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>term::ansi::ctrl::unix - Control operations and queries</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006-2011 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term::ansi::ctrl::unix.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">term::ansi::ctrl::unix(n) 0.1.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>term::ansi::ctrl::unix - Control operations and queries</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>

Changes to embedded/www/tcllib/files/modules/term/ansi_send.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term::ansi::send.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">term::ansi::send(n) 0.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term::ansi::send.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">term::ansi::send(n) 0.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/term/imenu.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term::interact::menu.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">term::interact::menu(n) 0.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>term::interact::menu - Terminal widget, menu</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term::interact::menu.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">term::interact::menu(n) 0.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>term::interact::menu - Terminal widget, menu</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>

Changes to embedded/www/tcllib/files/modules/term/ipager.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term::interact::pager.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">term::interact::pager(n) 0.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>term::interact::pager - Terminal widget, paging</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term::interact::pager.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">term::interact::pager(n) 0.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>term::interact::pager - Terminal widget, paging</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>

Changes to embedded/www/tcllib/files/modules/term/receive.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term::receive.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">term::receive(n) 0.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term::receive.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">term::receive(n) 0.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/term/term.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">term(n) 0.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term.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">term(n) 0.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/term/term_bind.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term::receive::bind.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">term::receive::bind(n) 0.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>term::receive::bind - Keyboard dispatch 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term::receive::bind.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">term::receive::bind(n) 0.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>term::receive::bind - Keyboard dispatch 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>

Changes to embedded/www/tcllib/files/modules/term/term_send.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term::send.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">term::send(n) 0.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ term::send.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">term::send(n) 0.1 tcllib &quot;Terminal control&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/textutil/adjust.html.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/textutil/adjust.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ textutil::adjust.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">textutil::adjust(n) 0.7.1 tcllib &quot;Text and string utilities, macro processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/textutil/adjust.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ textutil::adjust.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">textutil::adjust(n) 0.7.1 tcllib &quot;Text and string utilities, macro processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/textutil/expander.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; William H. Duquette, http://www.wjduquette.com/expand
   -->
<! -- CVS: $Id$ textutil::expander.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">textutil::expander(n) 1.3.1 tcllib &quot;Text and string utilities, macro processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>textutil::expander - Procedures to process templates and expand text.</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; William H. Duquette, http://www.wjduquette.com/expand
   -->
<! -- CVS: $Id$ textutil::expander.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">textutil::expander(n) 1.3.1 tcllib &quot;Text and string utilities, macro processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>textutil::expander - Procedures to process templates and expand text.</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>

Changes to embedded/www/tcllib/files/modules/textutil/repeat.html.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/textutil/repeat.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ textutil::repeat.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">textutil::repeat(n) 0.7.1 tcllib &quot;Text and string utilities, macro processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/textutil/repeat.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ textutil::repeat.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">textutil::repeat(n) 0.7.1 tcllib &quot;Text and string utilities, macro processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/textutil/tabify.html.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/textutil/tabify.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ textutil::tabify.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">textutil::tabify(n) 0.7 tcllib &quot;Text and string utilities, macro processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/textutil/tabify.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ textutil::tabify.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">textutil::tabify(n) 0.7 tcllib &quot;Text and string utilities, macro processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/textutil/textutil.html.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/textutil/textutil.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ textutil.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">textutil(n) 0.7.1 tcllib &quot;Text and string utilities, macro processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/textutil/textutil.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ textutil.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">textutil(n) 0.7.1 tcllib &quot;Text and string utilities, macro processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/textutil/textutil_split.html.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/textutil/textutil_split.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ textutil::split.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">textutil::split(n) 0.7 tcllib &quot;Text and string utilities, macro processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/textutil/textutil_split.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ textutil::split.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">textutil::split(n) 0.7 tcllib &quot;Text and string utilities, macro processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/textutil/textutil_string.html.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/textutil/textutil_string.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ textutil::string.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">textutil::string(n) 0.7 tcllib &quot;Text and string utilities, macro processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/textutil/textutil_string.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ textutil::string.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">textutil::string(n) 0.7 tcllib &quot;Text and string utilities, macro processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/textutil/trim.html.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/textutil/trim.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ textutil::trim.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">textutil::trim(n) 0.7 tcllib &quot;Text and string utilities, macro processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/textutil/trim.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ textutil::trim.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">textutil::trim(n) 0.7 tcllib &quot;Text and string utilities, macro processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/tie/tie.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2004-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tie.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tie(n) 1.1 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tie - Array persistence</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2004-2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tie.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">tie(n) 1.1 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tie - Array persistence</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>

Changes to embedded/www/tcllib/files/modules/tie/tie_std.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tie.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tie(n) 1.1 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tie.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">tie(n) 1.1 tcllib &quot;Tcl Data Structures&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<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>

Changes to embedded/www/tcllib/files/modules/tiff/tiff.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2005-2006, Aaron Faupell &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tiff.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tiff(n) 0.2.1 tcllib &quot;TIFF image manipulation&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tiff - TIFF reading, writing, and querying and manipulation of meta data</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2005-2006, Aaron Faupell &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tiff.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">tiff(n) 0.2.1 tcllib &quot;TIFF image manipulation&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tiff - TIFF reading, writing, and querying and manipulation of meta data</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>
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
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#key135">image</a>, <a href="../../../../index.html#key136">tif</a>, <a href="../../../../index.html#key134">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>







|








279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
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#key122">image</a>, <a href="../../../../index.html#key123">tif</a>, <a href="../../../../index.html#key121">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ transfer::connect.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">transfer::connect(n) 0.2 tcllib &quot;Data transfer facilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>transfer::connect - Connection setup</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ transfer::connect.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">transfer::connect(n) 0.2 tcllib &quot;Data transfer facilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>transfer::connect - Connection setup</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>
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
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
compatible with that command is allowed.</p>
<p>The envisioned main use is the specfication of <b class="cmd">tls::socket</b>. I.e.
this option allows the creation of secure transfer channels, without
making this package explicitly dependent on the <b class="package"><a href="../../../../index.html#key289">tls</a></b> package.</p>
<p>See also section <span class="sectref"><a href="#section3">Secure connections</a></span>.</p></dd>
<dt><b class="option">-encoding</b> encodingname</dt>
<dd></dd>
<dt><b class="option">-eofchar</b> eofspec</dt>
<dd></dd>
<dt><b class="option">-translation</b> transspec</dt>
<dd><p>These options are the same as are recognized by the builtin command
<b class="cmd">fconfigure</b>. They provide the configuration to be set for the
channel between the two partners after it has been established, but
before the callback is invoked (See method <b class="method">connect</b>).</p></dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">Secure connections</a></h2>
<p>One way to secure connections made by objects of this package is to
require the package <b class="package"><a href="../../../../index.html#key289">tls</a></b> and then configure the option
<b class="option">-socketcmd</b> to force the use of command <b class="cmd">tls::socket</b> to
open the socket.</p>
<pre class="example">
    # Load and initialize tls
    package require tls
    tls::init -cafile /path/to/ca/cert -keyfile ...
    # Create a connector with secure socket setup,
    transfer::connect C -socketcmd tls::socket ...
    ...
</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#key562">active</a>, <a href="../../../../index.html#key59">channel</a>, <a href="../../../../index.html#key563">connection</a>, <a href="../../../../index.html#key564">passive</a>, <a href="../../../../index.html#key315">secure</a>, <a href="../../../../index.html#key318">ssl</a>, <a href="../../../../index.html#key289">tls</a>, <a href="../../../../index.html#key60">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>







|















|




















|








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
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
compatible with that command is allowed.</p>
<p>The envisioned main use is the specfication of <b class="cmd">tls::socket</b>. I.e.
this option allows the creation of secure transfer channels, without
making this package explicitly dependent on the <b class="package"><a href="../../../../index.html#key287">tls</a></b> package.</p>
<p>See also section <span class="sectref"><a href="#section3">Secure connections</a></span>.</p></dd>
<dt><b class="option">-encoding</b> encodingname</dt>
<dd></dd>
<dt><b class="option">-eofchar</b> eofspec</dt>
<dd></dd>
<dt><b class="option">-translation</b> transspec</dt>
<dd><p>These options are the same as are recognized by the builtin command
<b class="cmd">fconfigure</b>. They provide the configuration to be set for the
channel between the two partners after it has been established, but
before the callback is invoked (See method <b class="method">connect</b>).</p></dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">Secure connections</a></h2>
<p>One way to secure connections made by objects of this package is to
require the package <b class="package"><a href="../../../../index.html#key287">tls</a></b> and then configure the option
<b class="option">-socketcmd</b> to force the use of command <b class="cmd">tls::socket</b> to
open the socket.</p>
<pre class="example">
    # Load and initialize tls
    package require tls
    tls::init -cafile /path/to/ca/cert -keyfile ...
    # Create a connector with secure socket setup,
    transfer::connect C -socketcmd tls::socket ...
    ...
</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#key562">active</a>, <a href="../../../../index.html#key59">channel</a>, <a href="../../../../index.html#key563">connection</a>, <a href="../../../../index.html#key564">passive</a>, <a href="../../../../index.html#key315">secure</a>, <a href="../../../../index.html#key318">ssl</a>, <a href="../../../../index.html#key287">tls</a>, <a href="../../../../index.html#key60">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ transfer::copy.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">transfer::copy(n) 0.2 tcllib &quot;Data transfer facilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>transfer::copy - Data transfer foundation</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ transfer::copy.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">transfer::copy(n) 0.2 tcllib &quot;Data transfer facilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>transfer::copy - Data transfer foundation</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>

Changes to embedded/www/tcllib/files/modules/transfer/ddest.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ transfer::data::destination.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">transfer::data::destination(n) 0.2 tcllib &quot;Data transfer facilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>transfer::data::destination - Data destination</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ transfer::data::destination.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">transfer::data::destination(n) 0.2 tcllib &quot;Data transfer facilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>transfer::data::destination - Data destination</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>

Changes to embedded/www/tcllib/files/modules/transfer/dsource.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ transfer::data::source.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">transfer::data::source(n) 0.2 tcllib &quot;Data transfer facilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>transfer::data::source - Data source</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ transfer::data::source.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">transfer::data::source(n) 0.2 tcllib &quot;Data transfer facilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>transfer::data::source - Data source</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>

Changes to embedded/www/tcllib/files/modules/transfer/receiver.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ transfer::receiver.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">transfer::receiver(n) 0.2 tcllib &quot;Data transfer facilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>transfer::receiver - Data source</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ transfer::receiver.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">transfer::receiver(n) 0.2 tcllib &quot;Data transfer facilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>transfer::receiver - Data source</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>
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
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
compatible with that command is allowed.</p>
<p>The envisioned main use is the specfication of <b class="cmd">tls::socket</b>. I.e.
this option allows the creation of secure transfer channels, without
making this package explicitly dependent on the <b class="package"><a href="../../../../index.html#key289">tls</a></b> package.</p>
<p>See also section <span class="sectref"><a href="#section3">Secure connections</a></span>.</p></dd>
<dt><b class="option">-encoding</b> encodingname</dt>
<dd></dd>
<dt><b class="option">-eofchar</b> eofspec</dt>
<dd></dd>
<dt><b class="option">-translation</b> transspec</dt>
<dd><p>These options are the same as are recognized by the builtin command







|







287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
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
compatible with that command is allowed.</p>
<p>The envisioned main use is the specfication of <b class="cmd">tls::socket</b>. I.e.
this option allows the creation of secure transfer channels, without
making this package explicitly dependent on the <b class="package"><a href="../../../../index.html#key287">tls</a></b> package.</p>
<p>See also section <span class="sectref"><a href="#section3">Secure connections</a></span>.</p></dd>
<dt><b class="option">-encoding</b> encodingname</dt>
<dd></dd>
<dt><b class="option">-eofchar</b> eofspec</dt>
<dd></dd>
<dt><b class="option">-translation</b> transspec</dt>
<dd><p>These options are the same as are recognized by the builtin command
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
the reception of the data. The callback is always invoked with one
additional argument, the number of bytes received so far.</p></dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">Secure connections</a></h2>
<p>One way to secure connections made by objects of this package is to
require the package <b class="package"><a href="../../../../index.html#key289">tls</a></b> and then configure the option
<b class="option">-socketcmd</b> to force the use of command <b class="cmd">tls::socket</b> to
open the socket.</p>
<pre class="example">
    # Load and initialize tls
    package require tls
    tls::init -cafile /path/to/ca/cert -keyfile ...
    # Create a connector with secure socket setup,
    transfer::receiver R -socketcmd tls::socket ...
    ...
</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#key59">channel</a>, <a href="../../../../index.html#key61">copy</a>, <a href="../../../../index.html#key58">data destination</a>, <a href="../../../../index.html#key90">receiver</a>, <a href="../../../../index.html#key315">secure</a>, <a href="../../../../index.html#key318">ssl</a>, <a href="../../../../index.html#key289">tls</a>, <a href="../../../../index.html#key60">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>







|




















|








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
the reception of the data. The callback is always invoked with one
additional argument, the number of bytes received so far.</p></dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">Secure connections</a></h2>
<p>One way to secure connections made by objects of this package is to
require the package <b class="package"><a href="../../../../index.html#key287">tls</a></b> and then configure the option
<b class="option">-socketcmd</b> to force the use of command <b class="cmd">tls::socket</b> to
open the socket.</p>
<pre class="example">
    # Load and initialize tls
    package require tls
    tls::init -cafile /path/to/ca/cert -keyfile ...
    # Create a connector with secure socket setup,
    transfer::receiver R -socketcmd tls::socket ...
    ...
</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#key59">channel</a>, <a href="../../../../index.html#key61">copy</a>, <a href="../../../../index.html#key58">data destination</a>, <a href="../../../../index.html#key90">receiver</a>, <a href="../../../../index.html#key315">secure</a>, <a href="../../../../index.html#key318">ssl</a>, <a href="../../../../index.html#key287">tls</a>, <a href="../../../../index.html#key60">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ transfer::copy::queue.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">transfer::copy::queue(n) 0.1 tcllib &quot;Data transfer facilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>transfer::copy::queue - Queued transfers</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ transfer::copy::queue.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">transfer::copy::queue(n) 0.1 tcllib &quot;Data transfer facilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>transfer::copy::queue - Queued transfers</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>

Changes to embedded/www/tcllib/files/modules/transfer/transmitter.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ transfer::transmitter.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">transfer::transmitter(n) 0.2 tcllib &quot;Data transfer facilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>transfer::transmitter - Data source</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2006-2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ transfer::transmitter.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">transfer::transmitter(n) 0.2 tcllib &quot;Data transfer facilities&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>transfer::transmitter - Data source</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>
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
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
compatible with that command is allowed.</p>
<p>The envisioned main use is the specfication of <b class="cmd">tls::socket</b>. I.e.
this option allows the creation of secure transfer channels, without
making this package explicitly dependent on the <b class="package"><a href="../../../../index.html#key289">tls</a></b> package.</p>
<p>See also section <span class="sectref"><a href="#section3">Secure connections</a></span>.</p></dd>
<dt><b class="option">-encoding</b> encodingname</dt>
<dd></dd>
<dt><b class="option">-eofchar</b> eofspec</dt>
<dd></dd>
<dt><b class="option">-translation</b> transspec</dt>
<dd><p>These options are the same as are recognized by the builtin command







|







286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
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
compatible with that command is allowed.</p>
<p>The envisioned main use is the specfication of <b class="cmd">tls::socket</b>. I.e.
this option allows the creation of secure transfer channels, without
making this package explicitly dependent on the <b class="package"><a href="../../../../index.html#key287">tls</a></b> package.</p>
<p>See also section <span class="sectref"><a href="#section3">Secure connections</a></span>.</p></dd>
<dt><b class="option">-encoding</b> encodingname</dt>
<dd></dd>
<dt><b class="option">-eofchar</b> eofspec</dt>
<dd></dd>
<dt><b class="option">-translation</b> transspec</dt>
<dd><p>These options are the same as are recognized by the builtin command
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
of the transmission of the data. The callback is always invoked with
one additional argument, the number of bytes transmitted so far.</p></dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">Secure connections</a></h2>
<p>One way to secure connections made by objects of this package is to
require the package <b class="package"><a href="../../../../index.html#key289">tls</a></b> and then configure the option
<b class="option">-socketcmd</b> to force the use of command <b class="cmd">tls::socket</b> to
open the socket.</p>
<pre class="example">
    # Load and initialize tls
    package require tls
    tls::init -cafile /path/to/ca/cert -keyfile ...
    # Create a connector with secure socket setup,
    transfer::transmitter T -socketcmd tls::socket ...
    ...
</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#key59">channel</a>, <a href="../../../../index.html#key61">copy</a>, <a href="../../../../index.html#key331">data source</a>, <a href="../../../../index.html#key315">secure</a>, <a href="../../../../index.html#key318">ssl</a>, <a href="../../../../index.html#key289">tls</a>, <a href="../../../../index.html#key60">transfer</a>, <a href="../../../../index.html#key666">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>







|




















|








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
of the transmission of the data. The callback is always invoked with
one additional argument, the number of bytes transmitted so far.</p></dd>
</dl>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">Secure connections</a></h2>
<p>One way to secure connections made by objects of this package is to
require the package <b class="package"><a href="../../../../index.html#key287">tls</a></b> and then configure the option
<b class="option">-socketcmd</b> to force the use of command <b class="cmd">tls::socket</b> to
open the socket.</p>
<pre class="example">
    # Load and initialize tls
    package require tls
    tls::init -cafile /path/to/ca/cert -keyfile ...
    # Create a connector with secure socket setup,
    transfer::transmitter T -socketcmd tls::socket ...
    ...
</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#key59">channel</a>, <a href="../../../../index.html#key61">copy</a>, <a href="../../../../index.html#key331">data source</a>, <a href="../../../../index.html#key315">secure</a>, <a href="../../../../index.html#key318">ssl</a>, <a href="../../../../index.html#key287">tls</a>, <a href="../../../../index.html#key60">transfer</a>, <a href="../../../../index.html#key666">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2004 Colin McCormack &lt;[email protected]&gt;   -- Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ treeql.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">treeql(n) 1.3.1 tcllib &quot;Tree Query Language&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>treeql - Query 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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2004 Colin McCormack &lt;[email protected]&gt;   -- Copyright &copy; 2004 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ treeql.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">treeql(n) 1.3.1 tcllib &quot;Tree Query Language&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>treeql - Query 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>
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
node set generated by the query. At last it restores the current node
set as it was before the execution of the query.</p>
<p>The script <i class="arg">body</i> is executed in the context of the caller.</p></dd>
<dt><b class="method">over</b> <i class="arg">var</i> <i class="arg">body</i></dt>
<dd><p>Executes the script <i class="arg">body</i> for each node in the node set, with the
variable named by <i class="arg">var</i> bound to the name of the current node.
The script <i class="arg">body</i> is executed in the context of the caller.</p>
<p>This is like the builtin <b class="cmd"><a href="../../../../index.html#key199">foreach</a></b>, with the node set as the
source of the list to iterate over.</p>
<p>The results of executing the <i class="arg">body</i> are ignored.</p></dd>
<dt><b class="method">delete</b></dt>
<dd><p>Deletes all the nodes contained in the current node set from the tree.</p></dd>
</dl>
</div>
<div id="subsection11" class="subsection"><h3><a name="subsection11">Typed node support</a></h3>







|







592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
node set generated by the query. At last it restores the current node
set as it was before the execution of the query.</p>
<p>The script <i class="arg">body</i> is executed in the context of the caller.</p></dd>
<dt><b class="method">over</b> <i class="arg">var</i> <i class="arg">body</i></dt>
<dd><p>Executes the script <i class="arg">body</i> for each node in the node set, with the
variable named by <i class="arg">var</i> bound to the name of the current node.
The script <i class="arg">body</i> is executed in the context of the caller.</p>
<p>This is like the builtin <b class="cmd"><a href="../../../../index.html#key197">foreach</a></b>, with the node set as the
source of the list to iterate over.</p>
<p>The results of executing the <i class="arg">body</i> are ignored.</p></dd>
<dt><b class="method">delete</b></dt>
<dd><p>Deletes all the nodes contained in the current node set from the tree.</p></dd>
</dl>
</div>
<div id="subsection11" class="subsection"><h3><a name="subsection11">Typed node support</a></h3>
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
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#key765">Cost</a>, <a href="../../../../index.html#key763">DOM</a>, <a href="../../../../index.html#key766">TreeQL</a>, <a href="../../../../index.html#key764">XPath</a>, <a href="../../../../index.html#key768">XSLT</a>, <a href="../../../../index.html#key769">structured queries</a>, <a href="../../../../index.html#key254">tree</a>, <a href="../../../../index.html#key767">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>







|









641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
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#key761">Cost</a>, <a href="../../../../index.html#key759">DOM</a>, <a href="../../../../index.html#key762">TreeQL</a>, <a href="../../../../index.html#key760">XPath</a>, <a href="../../../../index.html#key764">XSLT</a>, <a href="../../../../index.html#key765">structured queries</a>, <a href="../../../../index.html#key254">tree</a>, <a href="../../../../index.html#key763">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2008 Donal K. Fellows, BSD licensed
   -->
<! -- CVS: $Id$ try.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">try(n) 1 tcllib &quot;Forward compatibility implementation of [try]&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>try - try - Trap and process errors and exceptions</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2008 Donal K. Fellows, BSD licensed
   -->
<! -- CVS: $Id$ try.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">try(n) 1 tcllib &quot;Forward compatibility implementation of [try]&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>try - try - Trap and process errors and exceptions</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>

Changes to embedded/www/tcllib/files/modules/uev/uevent.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2007-2012 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ uevent.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">uevent(n) 0.3.1 tcllib &quot;User events&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>uevent - User events</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2007-2012 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ uevent.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">uevent(n) 0.3.1 tcllib &quot;User events&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>uevent - User events</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>
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
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>
<p><a href="../../../../index.html#key662">bind</a>, <a href="../../../../index.html#key496">event</a>, <a href="../../../../index.html#key661">generate event</a>, <a href="../../../../index.html#key632">hook</a>, <a href="../../../../index.html#key660">unbind</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-2012 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
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>
<p><a href="../../../../index.html#key662">bind</a>, <a href="../../../../index.html#key496">event</a>, <a href="../../../../index.html#key661">generate event</a>, <a href="../../../../index.html#key630">hook</a>, <a href="../../../../index.html#key660">unbind</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-2012 Andreas Kupries &lt;[email protected]&gt;</p>
</div>
</div></body></html>

Changes to embedded/www/tcllib/files/modules/uev/uevent_onidle.html.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ uevent::onidle.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">uevent::onidle(n) 0.1 tcllib &quot;User events&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>uevent::onidle - Request merging and deferal to idle time</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2008 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ uevent::onidle.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">uevent::onidle(n) 0.1 tcllib &quot;User events&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>uevent::onidle - Request merging and deferal to idle time</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>

Changes to embedded/www/tcllib/files/modules/units/units.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2000-2005 Mayo Foundation
   -->
<! -- CVS: $Id$ units.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">units(n) 1.2 tcllib &quot;Convert and manipulate quantities with units&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>units - unit conversion</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2000-2005 Mayo Foundation
   -->
<! -- CVS: $Id$ units.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">units(n) 1.2 tcllib &quot;Convert and manipulate quantities with units&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>units - unit conversion</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>
463
464
465
466
467
468
469
470
471
472
473
474
475
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#key532">angle</a>, <a href="../../../../index.html#key560">constants</a>, <a href="../../../../index.html#key3">conversion</a>, <a href="../../../../index.html#key428">distance</a>, <a href="../../../../index.html#key561">radians</a>, <a href="../../../../index.html#key559">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>







|





466
467
468
469
470
471
472
473
474
475
476
477
478
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#key530">angle</a>, <a href="../../../../index.html#key560">constants</a>, <a href="../../../../index.html#key3">conversion</a>, <a href="../../../../index.html#key428">distance</a>, <a href="../../../../index.html#key561">radians</a>, <a href="../../../../index.html#key559">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.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/uri/uri.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ uri.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">uri(n) 1.2.2 tcllib &quot;Tcl Uniform Resource Identifier Management&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>uri - URI 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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/uri/uri.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ uri.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">uri(n) 1.2.2 tcllib &quot;Tcl Uniform Resource Identifier Management&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>uri - URI 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>
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
<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#key481">http</a></i> else. Currently only the schemes <i class="term"><a href="../../../../index.html#key481">http</a></i>,
<i class="term"><a href="../../../../index.html#key249">ftp</a></i>, <i class="term"><a href="../../../../index.html#key488">mailto</a></i>, <i class="term"><a href="../../../../index.html#key527">urn</a></i>, <i class="term"><a href="../../../../index.html#key485">news</a></i>, <i class="term"><a href="../../../../index.html#key124">ldap</a></i> and
<i class="term"><a href="../../../../index.html#key31">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">







|







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">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#key481">http</a></i> else. Currently only the schemes <i class="term"><a href="../../../../index.html#key481">http</a></i>,
<i class="term"><a href="../../../../index.html#key249">ftp</a></i>, <i class="term"><a href="../../../../index.html#key488">mailto</a></i>, <i class="term"><a href="../../../../index.html#key531">urn</a></i>, <i class="term"><a href="../../../../index.html#key485">news</a></i>, <i class="term"><a href="../../../../index.html#key132">ldap</a></i> and
<i class="term"><a href="../../../../index.html#key31">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">
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
<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#key481">http</a></i>, <i class="term"><a href="../../../../index.html#key249">ftp</a></i>,
<i class="term"><a href="../../../../index.html#key488">mailto</a></i>, <i class="term"><a href="../../../../index.html#key527">urn</a></i>, <i class="term"><a href="../../../../index.html#key485">news</a></i>, <i class="term"><a href="../../../../index.html#key124">ldap</a></i> and <i class="term"><a href="../../../../index.html#key31">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







|







181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
<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#key481">http</a></i>, <i class="term"><a href="../../../../index.html#key249">ftp</a></i>,
<i class="term"><a href="../../../../index.html#key488">mailto</a></i>, <i class="term"><a href="../../../../index.html#key531">urn</a></i>, <i class="term"><a href="../../../../index.html#key485">news</a></i>, <i class="term"><a href="../../../../index.html#key132">ldap</a></i> and <i class="term"><a href="../../../../index.html#key31">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
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
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#key249">ftp</a></i>, <i class="term"><a href="../../../../index.html#key124">ldap</a></i>, <i class="term"><a href="../../../../index.html#key31">file</a></i>,
<i class="term"><a href="../../../../index.html#key481">http</a></i>, <i class="term"><a href="../../../../index.html#key486">gopher</a></i>, <i class="term"><a href="../../../../index.html#key488">mailto</a></i>, <i class="term"><a href="../../../../index.html#key485">news</a></i>,
<i class="term"><a href="../../../../index.html#key484">wais</a></i> and <i class="term"><a href="../../../../index.html#key482">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







|







233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
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#key249">ftp</a></i>, <i class="term"><a href="../../../../index.html#key132">ldap</a></i>, <i class="term"><a href="../../../../index.html#key31">file</a></i>,
<i class="term"><a href="../../../../index.html#key481">http</a></i>, <i class="term"><a href="../../../../index.html#key486">gopher</a></i>, <i class="term"><a href="../../../../index.html#key488">mailto</a></i>, <i class="term"><a href="../../../../index.html#key485">news</a></i>,
<i class="term"><a href="../../../../index.html#key484">wais</a></i> and <i class="term"><a href="../../../../index.html#key482">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
257
258
259
260
261
262
263
264
265
266
267
268
269
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#key487">fetching information</a>, <a href="../../../../index.html#key31">file</a>, <a href="../../../../index.html#key249">ftp</a>, <a href="../../../../index.html#key486">gopher</a>, <a href="../../../../index.html#key481">http</a>, <a href="../../../../index.html#key124">ldap</a>, <a href="../../../../index.html#key488">mailto</a>, <a href="../../../../index.html#key485">news</a>, <a href="../../../../index.html#key482">prospero</a>, <a href="../../../../index.html#key489">rfc 2255</a>, <a href="../../../../index.html#key491">rfc 2396</a>, <a href="../../../../index.html#key480">uri</a>, <a href="../../../../index.html#key483">url</a>, <a href="../../../../index.html#key484">wais</a>, <a href="../../../../index.html#key490">www</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>







|





260
261
262
263
264
265
266
267
268
269
270
271
272
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#key487">fetching information</a>, <a href="../../../../index.html#key31">file</a>, <a href="../../../../index.html#key249">ftp</a>, <a href="../../../../index.html#key486">gopher</a>, <a href="../../../../index.html#key481">http</a>, <a href="../../../../index.html#key132">ldap</a>, <a href="../../../../index.html#key488">mailto</a>, <a href="../../../../index.html#key485">news</a>, <a href="../../../../index.html#key482">prospero</a>, <a href="../../../../index.html#key489">rfc 2255</a>, <a href="../../../../index.html#key491">rfc 2396</a>, <a href="../../../../index.html#key480">uri</a>, <a href="../../../../index.html#key483">url</a>, <a href="../../../../index.html#key484">wais</a>, <a href="../../../../index.html#key490">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.

93
94
95
96
97
98
99

100
101
102

103

104
105
106
107
108
109
110
111
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/uri/urn-scheme.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ uri_urn.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">uri_urn(n) 1.1.2 tcllib &quot;Tcl Uniform Resource Identifier Management&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>uri_urn - URI utilities, URN scheme</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>







>
|


>
|
>
|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</head>
<! -- Generated from file '/net/nas/data/andreask/Dev/Tcllib/tcllib/embedded/www/tcllib/files/modules/uri/urn-scheme.html' by tcllib/doctools with format 'html'
   -->
<! -- CVS: $Id$ uri_urn.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">uri_urn(n) 1.1.2 tcllib &quot;Tcl Uniform Resource Identifier Management&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>uri_urn - URI utilities, URN scheme</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>
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
<li><a href="#1"><b class="cmd">uri::urn::quote</b> <i class="arg">url</i></a></li>
<li><a href="#2"><b class="cmd">uri::urn::unquote</b> <i class="arg">url</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package provides two commands to quote and unquote the disallowed
characters for url using the <i class="term"><a href="../../../../index.html#key527">urn</a></i> scheme, registers the scheme
with the package <b class="package"><a href="uri.html">uri</a></b>, and provides internal helpers which
will be automatically used by the commands <b class="cmd">uri::split</b> and
<b class="cmd">uri::join</b> of package <b class="package"><a href="uri.html">uri</a></b> to handle urls using the
<i class="term"><a href="../../../../index.html#key527">urn</a></i> scheme.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">uri::urn::quote</b> <i class="arg">url</i></a></dt>
<dd><p>This command quotes the characters disallowed by the <i class="term"><a href="../../../../index.html#key527">urn</a></i> scheme
(per RFC 2141 sec2.2) in the <i class="arg">url</i> and returns the modified url as
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#key527">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#key528">rfc 2141</a>, <a href="../../../../index.html#key480">uri</a>, <a href="../../../../index.html#key483">url</a>, <a href="../../../../index.html#key527">urn</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Networking</p>
</div>
</div></body></html>







|



|




|




|












|





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
<li><a href="#1"><b class="cmd">uri::urn::quote</b> <i class="arg">url</i></a></li>
<li><a href="#2"><b class="cmd">uri::urn::unquote</b> <i class="arg">url</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>This package provides two commands to quote and unquote the disallowed
characters for url using the <i class="term"><a href="../../../../index.html#key531">urn</a></i> scheme, registers the scheme
with the package <b class="package"><a href="uri.html">uri</a></b>, and provides internal helpers which
will be automatically used by the commands <b class="cmd">uri::split</b> and
<b class="cmd">uri::join</b> of package <b class="package"><a href="uri.html">uri</a></b> to handle urls using the
<i class="term"><a href="../../../../index.html#key531">urn</a></i> scheme.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">COMMANDS</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">uri::urn::quote</b> <i class="arg">url</i></a></dt>
<dd><p>This command quotes the characters disallowed by the <i class="term"><a href="../../../../index.html#key531">urn</a></i> scheme
(per RFC 2141 sec2.2) in the <i class="arg">url</i> and returns the modified url as
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#key531">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#key532">rfc 2141</a>, <a href="../../../../index.html#key480">uri</a>, <a href="../../../../index.html#key483">url</a>, <a href="../../../../index.html#key531">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.

95
96
97
98
99
100
101

102
103
104

105

106
107
108
109
110
111
112
113
   -->
<! -- Copyright &copy; 2004, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ uuid.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">uuid(n) 1.0.2 tcllib &quot;uuid&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>uuid - UUID generation and comparison</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>







>
|


>
|
>
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
   -->
<! -- Copyright &copy; 2004, Pat Thoyts &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ uuid.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">uuid(n) 1.0.2 tcllib &quot;uuid&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>uuid - UUID generation and comparison</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>
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
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#key196">GUID</a>, <a href="../../../../index.html#key197">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>







|








170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
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#key206">GUID</a>, <a href="../../../../index.html#key207">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/virtchannel_base/cat.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2011 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::cat.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::chan::cat(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::cat - Concatenation channel</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2011 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::cat.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">tcl::chan::cat(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::cat - Concatenation channel</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/facade.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2011 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::facade.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::chan::facade(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::facade - Facade channel</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2011 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::facade.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">tcl::chan::facade(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::facade - Facade channel</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/fifo.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::fifo.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::chan::fifo(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::fifo - In-memory fifo channel</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::fifo.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">tcl::chan::fifo(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::fifo - In-memory fifo channel</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/fifo2.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::fifo2.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::chan::fifo2(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::fifo2 - In-memory interconnected fifo channels</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::fifo2.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">tcl::chan::fifo2(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::fifo2 - In-memory interconnected fifo channels</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/halfpipe.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::halfpipe.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::chan::halfpipe(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::halfpipe - In-memory channel, half of a fifo2</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::halfpipe.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">tcl::chan::halfpipe(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::halfpipe - In-memory channel, half of a fifo2</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/memchan.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::memchan.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::chan::memchan(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::memchan - In-memory channel</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::memchan.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">tcl::chan::memchan(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::memchan - In-memory channel</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/null.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::null.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::chan::null(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::null - Null channel</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::null.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">tcl::chan::null(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::null - Null channel</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/nullzero.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::nullzero.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::chan::nullzero(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::nullzero - Null/Zero channel combination</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::nullzero.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">tcl::chan::nullzero(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::nullzero - Null/Zero channel combination</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/random.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::random.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::chan::random(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::random - Random channel</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::random.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">tcl::chan::random(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::random - Random channel</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/randseed.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::randseed.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::chan::randseed(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::randseed - Utilities for random channels</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::randseed.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">tcl::chan::randseed(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::randseed - Utilities for random channels</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/std.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2011 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::std.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::chan::std(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::std - Standard I/O, unification of stdin and stdout</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2011 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::std.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">tcl::chan::std(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::std - Standard I/O, unification of stdin and stdout</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/string.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::string.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::chan::string(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::string - Read-only in-memory channel</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::string.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">tcl::chan::string(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::string - Read-only in-memory channel</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/textwindow.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::textwindow.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::chan::textwindow(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::textwindow - Textwindow channel</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::textwindow.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">tcl::chan::textwindow(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::textwindow - Textwindow channel</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/variable.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::variable.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::chan::variable(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::variable - In-memory channel using variable for storage</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::variable.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">tcl::chan::variable(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::variable - In-memory channel using variable for storage</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_base/zero.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::zero.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::chan::zero(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::zero - Zero channel</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::zero.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">tcl::chan::zero(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::zero - Zero channel</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_core/core.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::core.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::chan::core(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::core - Basic reflected/virtual channel support</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::core.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">tcl::chan::core(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::core - Basic reflected/virtual channel support</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_core/events.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::events.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::chan::events(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::events - Event support for reflected/virtual channels</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::chan::events.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">tcl::chan::events(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::chan::events - Event support for reflected/virtual channels</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_core/transformcore.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::core.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::transform::core(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::core - Basic reflected/virtual channel transform support</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::core.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">tcl::transform::core(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::core - Basic reflected/virtual channel transform support</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/adler32.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::adler32.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::transform::adler32(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::adler32 - Adler32 transformation</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::adler32.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">tcl::transform::adler32(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::adler32 - Adler32 transformation</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/base64.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::base64.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::transform::base64(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::base64 - Base64 encoding transformation</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::base64.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">tcl::transform::base64(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::base64 - Base64 encoding transformation</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/counter.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::counter.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::transform::counter(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::counter - Counter transformation</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::counter.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">tcl::transform::counter(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::counter - Counter transformation</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/crc32.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::crc32.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::transform::crc32(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::crc32 - Crc32 transformation</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::crc32.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">tcl::transform::crc32(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::crc32 - Crc32 transformation</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/hex.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::hex.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::transform::hex(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::hex - Hexadecimal encoding transformation</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::hex.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">tcl::transform::hex(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::hex - Hexadecimal encoding transformation</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/identity.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::identity.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::transform::identity(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::identity - Identity transformation</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::identity.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">tcl::transform::identity(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::identity - Identity transformation</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/limitsize.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::limitsize.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::transform::limitsize(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::limitsize - limiting input</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::limitsize.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">tcl::transform::limitsize(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::limitsize - limiting input</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/observe.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::observe.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::transform::observe(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::observe - Observer transformation, stream copy</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::observe.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">tcl::transform::observe(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::observe - Observer transformation, stream copy</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/otp.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::otp.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::transform::otp(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::otp - Encryption via one-time pad</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::otp.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">tcl::transform::otp(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::otp - Encryption via one-time pad</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/rot.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::rot.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::transform::rot(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::rot - rot-encryption</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::rot.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">tcl::transform::rot(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::rot - rot-encryption</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/spacer.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::spacer.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::transform::spacer(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::spacer - Space insertation and removal</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::spacer.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">tcl::transform::spacer(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::spacer - Space insertation and removal</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>

Changes to embedded/www/tcllib/files/modules/virtchannel_transform/zlib.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::zlib.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">tcl::transform::zlib(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::zlib - zlib (de)compression</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2009 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ tcl::transform::zlib.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">tcl::transform::zlib(n) 1 tcllib &quot;Reflected/virtual channel support&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcl::transform::zlib - zlib (de)compression</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>

Changes to embedded/www/tcllib/files/modules/wip/wip.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2007-2010 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ wip.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">wip(n) 2.2 tcllib &quot;Word Interpreter&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>wip - Word Interpreter</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2007-2010 Andreas Kupries &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ wip.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">wip(n) 2.2 tcllib &quot;Word Interpreter&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>wip - Word Interpreter</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>

Changes to embedded/www/tcllib/files/modules/yaml/huddle.html.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2008 KATO Kanryu &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ huddle.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">huddle(n) 0.1.5 tcllib &quot;HUDDLE&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>huddle - Create and manipulate huddle object</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2008 KATO Kanryu &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ huddle.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">huddle(n) 0.1.5 tcllib &quot;HUDDLE&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>huddle - Create and manipulate huddle object</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>
588
589
590
591
592
593
594
595
596
597
598
599
600
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#key171">data exchange</a>, <a href="../../../../index.html#key170">exchange format</a>, <a href="../../../../index.html#key541">huddle</a>, <a href="../../../../index.html#key172">json</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key178">text processing</a>, <a href="../../../../index.html#key542">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>







|





591
592
593
594
595
596
597
598
599
600
601
602
603
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#key171">data exchange</a>, <a href="../../../../index.html#key170">exchange format</a>, <a href="../../../../index.html#key541">huddle</a>, <a href="../../../../index.html#key172">json</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key185">text processing</a>, <a href="../../../../index.html#key542">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.

96
97
98
99
100
101
102

103
104
105

106

107
108
109
110
111
112
113
114
   -->
<! -- Copyright &copy; 2008 KATO Kanryu &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ yaml.n
   -->
<body><div class="doctools">
<hr> [

  <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="/tcllib">Home</a>

] <hr>
<h1 class="title">yaml(n) 0.3.6 tcllib &quot;YAML processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>yaml - YAML Format Encoder/Decoder</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>







>
|


>
|
>
|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
   -->
<! -- Copyright &copy; 2008 KATO Kanryu &lt;[email protected]&gt;
   -->
<! -- CVS: $Id$ yaml.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">yaml(n) 0.3.6 tcllib &quot;YAML processing&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>yaml - YAML Format Encoder/Decoder</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>
271
272
273
274
275
276
277
278
279
280
281
282
283
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#key171">data exchange</a>, <a href="../../../../index.html#key541">huddle</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key178">text processing</a>, <a href="../../../../index.html#key542">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>







|





274
275
276
277
278
279
280
281
282
283
284
285
286
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#key171">data exchange</a>, <a href="../../../../index.html#key541">huddle</a>, <a href="../../../../index.html#key26">parsing</a>, <a href="../../../../index.html#key185">text processing</a>, <a href="../../../../index.html#key542">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/toc.html.

1
2
3
4
5
6
7
8
9

10

11

12
13
14
15
16
17
18
19
<html><head>
<title> Table Of Contents </title>
</head>
<! -- Generated by tcllib/doctools/toc with format 'html'
   -->
<! -- CVS: $Id$ Table Of Contents
   -->
<body>
<hr> [

  <a href="../index.html">Keyword Index</a>

| <a href="/tcllib">Home</a>

] <hr>
<h3> Table Of Contents </h3>
<hr><dl><dt><h2> tcllib </h2><dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/aes/aes.html">aes</a></td>
<td class="#tocright">Implementation of the AES block cipher</td>
</tr>









>
|
>
|
>
|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<html><head>
<title> Table Of Contents </title>
</head>
<! -- Generated by tcllib/doctools/toc with format 'html'
   -->
<! -- CVS: $Id$ Table Of Contents
   -->
<body>
<hr> [
   <a href="../../../../../home">Tcllib Home</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>
<h3> Table Of Contents </h3>
<hr><dl><dt><h2> tcllib </h2><dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/aes/aes.html">aes</a></td>
<td class="#tocright">Implementation of the AES block cipher</td>
</tr>
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
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
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
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
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
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
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
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
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
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
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
<td class="#tocright">doctools plugin API reference</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/apps/dtplite.html">dtplite</a></td>
<td class="#tocright">Lightweight DocTools Markup Processor</td>
</tr>
<tr class="#toceven" >




<td class="#tocleft" ><a href="files/modules/exif/exif.html">exif</a></td>
<td class="#tocright">Tcl EXIF extracts and parses EXIF fields from digital images</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/fileutil/fileutil.html">fileutil</a></td>
<td class="#tocright">Procedures implementing some file utilities</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/fumagic/cfront.html">fileutil::magic::cfront</a></td>
<td class="#tocright">Generator core for compiler of magic(5) files</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/fumagic/cgen.html">fileutil::magic::cgen</a></td>
<td class="#tocright">Generator core for compiler of magic(5) files</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/fumagic/filetypes.html">fileutil::magic::filetype</a></td>
<td class="#tocright">Procedures implementing file-type recognition</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/fumagic/mimetypes.html">fileutil::magic::mimetype</a></td>
<td class="#tocright">Procedures implementing mime-type recognition</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/fumagic/rtcore.html">fileutil::magic::rt</a></td>
<td class="#tocright">Runtime core for file type recognition engines written in pure Tcl</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/fileutil/multi.html">fileutil::multi</a></td>
<td class="#tocright">Multi-file operation, scatter/gather, standard object</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/fileutil/multiop.html">fileutil::multi::op</a></td>
<td class="#tocright">Multi-file operation, scatter/gather</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/fileutil/traverse.html">fileutil_traverse</a></td>
<td class="#tocright">Iterative directory traversal</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/ftp/ftp.html">ftp</a></td>
<td class="#tocright">Client-side tcl implementation of the ftp protocol</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/ftp/ftp_geturl.html">ftp::geturl</a></td>
<td class="#tocright">Uri handler for ftp urls</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/ftpd/ftpd.html">ftpd</a></td>
<td class="#tocright">Tcl FTP server implementation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/generator/generator.html">generator</a></td>
<td class="#tocright">Procedures for creating and using generators.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/gpx/gpx.html">gpx</a></td>
<td class="#tocright">Extracts waypoints, tracks and routes from GPX files</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/grammar_aycock/aycock.html">grammar::aycock</a></td>
<td class="#tocright">Aycock-Horspool-Earley parser generator for Tcl</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/grammar_fa/fa.html">grammar::fa</a></td>
<td class="#tocright">Create and manipulate finite automatons</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/grammar_fa/dacceptor.html">grammar::fa::dacceptor</a></td>
<td class="#tocright">Create and use deterministic acceptors</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/grammar_fa/dexec.html">grammar::fa::dexec</a></td>
<td class="#tocright">Execute deterministic finite automatons</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/grammar_fa/faop.html">grammar::fa::op</a></td>
<td class="#tocright">Operations on finite automatons</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/grammar_me/me_cpu.html">grammar::me::cpu</a></td>
<td class="#tocright">Virtual machine implementation II for parsing token streams</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/grammar_me/me_cpucore.html">grammar::me::cpu::core</a></td>
<td class="#tocright">ME virtual machine state manipulation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/grammar_me/gasm.html">grammar::me::cpu::gasm</a></td>
<td class="#tocright">ME assembler</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/grammar_me/me_tcl.html">grammar::me::tcl</a></td>
<td class="#tocright">Virtual machine implementation I for parsing token streams</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/grammar_me/me_util.html">grammar::me::util</a></td>
<td class="#tocright">AST utilities</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/grammar_me/me_ast.html">grammar::me_ast</a></td>
<td class="#tocright">Various representations of ASTs</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/grammar_me/me_intro.html">grammar::me_intro</a></td>
<td class="#tocright">Introduction to virtual machines for parsing token streams</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/grammar_me/me_vm.html">grammar::me_vm</a></td>
<td class="#tocright">Virtual machine for parsing token streams</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/grammar_peg/peg.html">grammar::peg</a></td>
<td class="#tocright">Create and manipulate parsing expression grammars</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/grammar_peg/peg_interp.html">grammar::peg::interp</a></td>
<td class="#tocright">Interpreter for parsing expression grammars</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/hook/hook.html">hook</a></td>
<td class="#tocright">Hooks</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/html/html.html">html</a></td>
<td class="#tocright">Procedures to generate HTML structures</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/htmlparse/htmlparse.html">htmlparse</a></td>
<td class="#tocright">Procedures to parse HTML strings</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/yaml/huddle.html">huddle</a></td>
<td class="#tocright">Create and manipulate huddle object</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/ident/ident.html">ident</a></td>
<td class="#tocright">Ident protocol client</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/imap4/imap4.html">imap4</a></td>
<td class="#tocright">imap client-side tcl implementation of imap protocol</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/inifile/ini.html">inifile</a></td>
<td class="#tocright">Parsing of Windows INI files</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/interp/tcllib_interp.html">interp</a></td>
<td class="#tocright">Interp creation and aliasing</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/irc/irc.html">irc</a></td>
<td class="#tocright">Create IRC connection and interface.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/javascript/javascript.html">javascript</a></td>
<td class="#tocright">Procedures to generate HTML and Java Script structures.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/jpeg/jpeg.html">jpeg</a></td>
<td class="#tocright">JPEG querying and manipulation of meta data</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/json/json.html">json</a></td>
<td class="#tocright">JSON parser</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/json/json_write.html">json::write</a></td>
<td class="#tocright">JSON generation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/lambda/lambda.html">lambda</a></td>
<td class="#tocright">Utility commands for anonymous procedures</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/ldap/ldap.html">ldap</a></td>
<td class="#tocright">LDAP client</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/ldap/ldapx.html">ldapx</a></td>
<td class="#tocright">LDAP extended object interface</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/log/log.html">log</a></td>
<td class="#tocright">Procedures to log messages of libraries and applications.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/log/logger.html">logger</a></td>
<td class="#tocright">System to control logging of events.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/log/loggerAppender.html">logger::appender</a></td>
<td class="#tocright">Collection of predefined appenders for logger</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/log/loggerUtils.html">logger::utils</a></td>
<td class="#tocright">Utilities for logger</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/map/map_geocode_nominatim.html">map::geocode::nominatim</a></td>
<td class="#tocright">Resolving geographical names with a Nominatim service</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/map/map_slippy.html">map::slippy</a></td>
<td class="#tocright">Common code for slippy based map packages</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/map/map_slippy_cache.html">map::slippy::cache</a></td>
<td class="#tocright">Management of a tile cache in the local filesystem</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/map/map_slippy_fetcher.html">map::slippy::fetcher</a></td>
<td class="#tocright">Accessing a server providing tiles for slippy-based maps</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/mapproj/mapproj.html">mapproj</a></td>
<td class="#tocright">Map projection routines</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/math/math.html">math</a></td>
<td class="#tocright">Tcl Math Library</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/math/bigfloat.html">math::bigfloat</a></td>
<td class="#tocright">Arbitrary precision floating-point numbers</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/math/bignum.html">math::bignum</a></td>
<td class="#tocright">Arbitrary precision integer numbers</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/math/calculus.html">math::calculus</a></td>
<td class="#tocright">Integration and ordinary differential equations</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/math/romberg.html">math::calculus::romberg</a></td>
<td class="#tocright">Romberg integration</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/math/symdiff.html">math::calculus::symdiff</a></td>
<td class="#tocright">Symbolic differentiation for Tcl</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/math/combinatorics.html">math::combinatorics</a></td>
<td class="#tocright">Combinatorial functions in the Tcl Math Library</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/math/qcomplex.html">math::complexnumbers</a></td>
<td class="#tocright">Straightforward complex number package</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/math/constants.html">math::constants</a></td>
<td class="#tocright">Mathematical and numerical constants</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/math/decimal.html">math::decimal</a></td>
<td class="#tocright">General decimal arithmetic</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/math/fourier.html">math::fourier</a></td>
<td class="#tocright">Discrete and fast fourier transforms</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/math/fuzzy.html">math::fuzzy</a></td>
<td class="#tocright">Fuzzy comparison of floating-point numbers</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/math/math_geometry.html">math::geometry</a></td>
<td class="#tocright">Geometrical computations</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/math/interpolate.html">math::interpolate</a></td>
<td class="#tocright">Interpolation routines</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/math/linalg.html">math::linearalgebra</a></td>
<td class="#tocright">Linear Algebra</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/math/numtheory.html">math::numtheory</a></td>
<td class="#tocright">Number Theory</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/math/optimize.html">math::optimize</a></td>
<td class="#tocright">Optimisation routines</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/math/polynomials.html">math::polynomials</a></td>
<td class="#tocright">Polynomial functions</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/math/rational_funcs.html">math::rationalfunctions</a></td>
<td class="#tocright">Polynomial functions</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/math/roman.html">math::roman</a></td>
<td class="#tocright">Tools for creating and manipulating roman numerals</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/math/special.html">math::special</a></td>
<td class="#tocright">Special mathematical functions</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/math/statistics.html">math::statistics</a></td>
<td class="#tocright">Basic statistical functions and procedures</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/md4/md4.html">md4</a></td>
<td class="#tocright">MD4 Message-Digest Algorithm</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/md5/md5.html">md5</a></td>
<td class="#tocright">MD5 Message-Digest Algorithm</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/md5crypt/md5crypt.html">md5crypt</a></td>
<td class="#tocright">MD5-based password encryption</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/mime/mime.html">mime</a></td>
<td class="#tocright">Manipulation of MIME body parts</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/doctools/mpexpand.html">mpexpand</a></td>
<td class="#tocright">Markup processor</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/multiplexer/multiplexer.html">multiplexer</a></td>
<td class="#tocright">One-to-many communication with sockets.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/nns/nns_client.html">nameserv</a></td>
<td class="#tocright">Name service facility, Client</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/nns/nns_auto.html">nameserv::auto</a></td>
<td class="#tocright">Name service facility, Client Extension</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/nns/nns_common.html">nameserv::common</a></td>
<td class="#tocright">Name service facility, shared definitions</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/nns/nns_protocol.html">nameserv::protocol</a></td>
<td class="#tocright">Name service facility, client/server protocol</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/nns/nns_server.html">nameserv::server</a></td>
<td class="#tocright">Name service facility, Server</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/namespacex/namespacex.html">namespacex</a></td>
<td class="#tocright">Namespace utility commands</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/ncgi/ncgi.html">ncgi</a></td>
<td class="#tocright">Procedures to manipulate CGI values.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/nmea/nmea.html">nmea</a></td>
<td class="#tocright">Process NMEA data</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/apps/nns.html">nns</a></td>
<td class="#tocright">Name service facility, Commandline Client Application</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/nns/nns_intro.html">nns_intro</a></td>
<td class="#tocright">Name service facility, introduction</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/apps/nnsd.html">nnsd</a></td>
<td class="#tocright">Name service facility, Commandline Server Application</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/apps/nnslog.html">nnslog</a></td>
<td class="#tocright">Name service facility, Commandline Logging Client Application</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/nntp/nntp.html">nntp</a></td>
<td class="#tocright">Tcl client for the NNTP protocol</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/ntp/ntp_time.html">ntp_time</a></td>
<td class="#tocright">Tcl Time Service Client</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/ooutil/ooutil.html">oo::util</a></td>
<td class="#tocright">Utility commands for TclOO</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/otp/otp.html">otp</a></td>
<td class="#tocright">One-Time Passwords</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/apps/page.html">page</a></td>
<td class="#tocright">Parser Generator</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/page/page_intro.html">page_intro</a></td>
<td class="#tocright">page introduction</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/page/page_pluginmgr.html">page_pluginmgr</a></td>
<td class="#tocright">page plugin manager</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/page/page_util_flow.html">page_util_flow</a></td>
<td class="#tocright">page dataflow/treewalker utility</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/page/page_util_norm_lemon.html">page_util_norm_lemon</a></td>
<td class="#tocright">page AST normalization, LEMON</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/page/page_util_norm_peg.html">page_util_norm_peg</a></td>
<td class="#tocright">page AST normalization, PEG</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/page/page_util_peg.html">page_util_peg</a></td>
<td class="#tocright">page PEG transformation utilities</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/page/page_util_quote.html">page_util_quote</a></td>
<td class="#tocright">page character quoting utilities</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/irc/picoirc.html">picoirc</a></td>
<td class="#tocright">Small and simple embeddable IRC client.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pki/pki.html">pki</a></td>
<td class="#tocright">Implementation of the public key cipher</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pluginmgr/pluginmgr.html">pluginmgr</a></td>
<td class="#tocright">Manage a plugin</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/png/png.html">png</a></td>
<td class="#tocright">PNG querying and manipulation of meta data</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pop3/pop3.html">pop3</a></td>
<td class="#tocright">Tcl client for POP3 email protocol</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pop3d/pop3d.html">pop3d</a></td>
<td class="#tocright">Tcl POP3 server implementation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pop3d/pop3d_dbox.html">pop3d::dbox</a></td>
<td class="#tocright">Simple mailbox database for pop3d</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pop3d/pop3d_udb.html">pop3d::udb</a></td>
<td class="#tocright">Simple user database for pop3d</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/profiler/profiler.html">profiler</a></td>
<td class="#tocright">Tcl source code profiler</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt.html">pt</a></td>
<td class="#tocright">Parser Tools Application</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_astree.html">pt::ast</a></td>
<td class="#tocright">Abstract Syntax Tree Serialization</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_cparam_config_critcl.html">pt::cparam::configuration::critcl</a></td>
<td class="#tocright">C/PARAM, Canned configuration, Critcl</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_json_language.html">pt::json_language</a></td>
<td class="#tocright">The JSON Grammar Exchange Format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_param.html">pt::param</a></td>
<td class="#tocright">PackRat Machine Specification</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_pexpression.html">pt::pe</a></td>
<td class="#tocright">Parsing Expression Serialization</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_pexpr_op.html">pt::pe::op</a></td>
<td class="#tocright">Parsing Expression Utilities</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_pegrammar.html">pt::peg</a></td>
<td class="#tocright">Parsing Expression Grammar Serialization</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_container.html">pt::peg::container</a></td>
<td class="#tocright">PEG Storage</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_container_peg.html">pt::peg::container::peg</a></td>
<td class="#tocright">PEG Storage. Canned PEG grammar specification</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_export.html">pt::peg::export</a></td>
<td class="#tocright">PEG Export</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_export_container.html">pt::peg::export::container</a></td>
<td class="#tocright">PEG Export Plugin. Write CONTAINER format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_export_json.html">pt::peg::export::json</a></td>
<td class="#tocright">PEG Export Plugin. Write JSON format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_export_peg.html">pt::peg::export::peg</a></td>
<td class="#tocright">PEG Export Plugin. Write PEG format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_from_container.html">pt::peg::from::container</a></td>
<td class="#tocright">PEG Conversion. From CONTAINER format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_from_json.html">pt::peg::from::json</a></td>
<td class="#tocright">PEG Conversion. Read JSON format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_from_peg.html">pt::peg::from::peg</a></td>
<td class="#tocright">PEG Conversion. Read PEG format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_import.html">pt::peg::import</a></td>
<td class="#tocright">PEG Import</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_import_container.html">pt::peg::import::container</a></td>
<td class="#tocright">PEG Import Plugin. From CONTAINER format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_import_json.html">pt::peg::import::json</a></td>
<td class="#tocright">PEG Import Plugin. Read JSON format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_import_peg.html">pt::peg::import::peg</a></td>
<td class="#tocright">PEG Import Plugin. Read PEG format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_interp.html">pt::peg::interp</a></td>
<td class="#tocright">Interpreter for parsing expression grammars</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_to_container.html">pt::peg::to::container</a></td>
<td class="#tocright">PEG Conversion. Write CONTAINER format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_to_cparam.html">pt::peg::to::cparam</a></td>
<td class="#tocright">PEG Conversion. Write CPARAM format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_to_json.html">pt::peg::to::json</a></td>
<td class="#tocright">PEG Conversion. Write JSON format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_to_param.html">pt::peg::to::param</a></td>
<td class="#tocright">PEG Conversion. Write PARAM format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_to_peg.html">pt::peg::to::peg</a></td>
<td class="#tocright">PEG Conversion. Write PEG format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_to_tclparam.html">pt::peg::to::tclparam</a></td>
<td class="#tocright">PEG Conversion. Write TCLPARAM format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_language.html">pt::peg_language</a></td>
<td class="#tocright">PEG Language Tutorial</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_introduction.html">pt::pegrammar</a></td>
<td class="#tocright">Introduction to Parsing Expression Grammars</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_pgen.html">pt::pgen</a></td>
<td class="#tocright">Parser Generator</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_rdengine.html">pt::rde</a></td>
<td class="#tocright">Parsing Runtime Support, PARAM based</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_tclparam_config_snit.html">pt::tclparam::configuration::snit</a></td>
<td class="#tocright">Tcl/PARAM, Canned configuration, Snit</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_tclparam_config_tcloo.html">pt::tclparam::configuration::tcloo</a></td>
<td class="#tocright">Tcl/PARAM, Canned configuration, Tcloo</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_to_api.html">pt_export_api</a></td>
<td class="#tocright">Parser Tools Export API</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_from_api.html">pt_import_api</a></td>
<td class="#tocright">Parser Tools Import API</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_introduction.html">pt_introduction</a></td>
<td class="#tocright">Introduction to Parser Tools</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_parser_api.html">pt_parser_api</a></td>
<td class="#tocright">Parser API</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/rc4/rc4.html">rc4</a></td>
<td class="#tocright">Implementation of the RC4 stream cipher</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/rcs/rcs.html">rcs</a></td>
<td class="#tocright">RCS low level utilities</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/report/report.html">report</a></td>
<td class="#tocright">Create and manipulate report objects</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/rest/rest.html">rest</a></td>
<td class="#tocright">define REST web APIs and call them inline or asychronously</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/ripemd/ripemd128.html">ripemd128</a></td>
<td class="#tocright">RIPEMD-128 Message-Digest Algorithm</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/ripemd/ripemd160.html">ripemd160</a></td>
<td class="#tocright">RIPEMD-160 Message-Digest Algorithm</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/amazon-s3/S3.html">S3</a></td>
<td class="#tocright">Amazon S3 Web Service Interface</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/sasl/sasl.html">SASL</a></td>
<td class="#tocright">Implementation of SASL mechanisms for Tcl</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/sha1/sha1.html">sha1</a></td>
<td class="#tocright">SHA1 Message-Digest Algorithm</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/sha1/sha256.html">sha256</a></td>
<td class="#tocright">SHA256 Message-Digest Algorithm</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/simulation/annealing.html">simulation::annealing</a></td>
<td class="#tocright">Simulated annealing</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/simulation/montecarlo.html">simulation::montecarlo</a></td>
<td class="#tocright">Monte Carlo simulations</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/simulation/simulation_random.html">simulation::random</a></td>
<td class="#tocright">Pseudo-random number generators</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/mime/smtp.html">smtp</a></td>
<td class="#tocright">Client-side tcl implementation of the smtp protocol</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/smtpd/smtpd.html">smtpd</a></td>
<td class="#tocright">Tcl SMTP server implementation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/snit/snit.html">snit</a></td>
<td class="#tocright">Snit's Not Incr Tcl</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/snit/snitfaq.html">snitfaq</a></td>
<td class="#tocright">Snit Frequently Asked Questions</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/soundex/soundex.html">soundex</a></td>
<td class="#tocright">Soundex</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/stooop/stooop.html">stooop</a></td>
<td class="#tocright">Object oriented extension.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/string/token.html">string::token</a></td>
<td class="#tocright">Regex based iterative lexing</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/string/token_shell.html">string::token::shell</a></td>
<td class="#tocright">Parsing of shell command line</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/stringprep/stringprep.html">stringprep</a></td>
<td class="#tocright">Implementation of stringprep</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/stringprep/stringprep_data.html">stringprep::data</a></td>
<td class="#tocright">stringprep data tables, generated, internal</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/struct/disjointset.html">struct::disjointset</a></td>
<td class="#tocright">Disjoint set data structure</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/struct/graph.html">struct::graph</a></td>
<td class="#tocright">Create and manipulate directed graph objects</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/struct/graphops.html">struct::graph::op</a></td>
<td class="#tocright">Operation for (un)directed graph objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/struct/graph1.html">struct::graph_v1</a></td>
<td class="#tocright">Create and manipulate directed graph objects</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/struct/struct_list.html">struct::list</a></td>
<td class="#tocright">Procedures for manipulating lists</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/struct/matrix.html">struct::matrix</a></td>
<td class="#tocright">Create and manipulate matrix objects</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/struct/matrix1.html">struct::matrix_v1</a></td>
<td class="#tocright">Create and manipulate matrix objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/struct/pool.html">struct::pool</a></td>
<td class="#tocright">Create and manipulate pool objects (of discrete items)</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/struct/prioqueue.html">struct::prioqueue</a></td>
<td class="#tocright">Create and manipulate prioqueue objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/struct/queue.html">struct::queue</a></td>
<td class="#tocright">Create and manipulate queue objects</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/struct/record.html">struct::record</a></td>
<td class="#tocright">Define and create records (similar to 'C' structures)</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/struct/struct_set.html">struct::set</a></td>
<td class="#tocright">Procedures for manipulating sets</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/struct/skiplist.html">struct::skiplist</a></td>
<td class="#tocright">Create and manipulate skiplists</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/struct/stack.html">struct::stack</a></td>
<td class="#tocright">Create and manipulate stack objects</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/struct/struct_tree.html">struct::tree</a></td>
<td class="#tocright">Create and manipulate tree objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/struct/struct_tree1.html">struct::tree_v1</a></td>
<td class="#tocright">Create and manipulate tree objects</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/crc/sum.html">sum</a></td>
<td class="#tocright">Calculate a sum(1) compatible checksum</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/tar/tar.html">tar</a></td>
<td class="#tocright">Tar file creation, extraction &amp; manipulation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/cat.html">tcl::chan::cat</a></td>
<td class="#tocright">Concatenation channel</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_core/core.html">tcl::chan::core</a></td>
<td class="#tocright">Basic reflected/virtual channel support</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_core/events.html">tcl::chan::events</a></td>
<td class="#tocright">Event support for reflected/virtual channels</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/facade.html">tcl::chan::facade</a></td>
<td class="#tocright">Facade channel</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/fifo.html">tcl::chan::fifo</a></td>
<td class="#tocright">In-memory fifo channel</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/fifo2.html">tcl::chan::fifo2</a></td>
<td class="#tocright">In-memory interconnected fifo channels</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/halfpipe.html">tcl::chan::halfpipe</a></td>
<td class="#tocright">In-memory channel, half of a fifo2</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/memchan.html">tcl::chan::memchan</a></td>
<td class="#tocright">In-memory channel</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/null.html">tcl::chan::null</a></td>
<td class="#tocright">Null channel</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/nullzero.html">tcl::chan::nullzero</a></td>
<td class="#tocright">Null/Zero channel combination</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/random.html">tcl::chan::random</a></td>
<td class="#tocright">Random channel</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/randseed.html">tcl::chan::randseed</a></td>
<td class="#tocright">Utilities for random channels</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/std.html">tcl::chan::std</a></td>
<td class="#tocright">Standard I/O, unification of stdin and stdout</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/string.html">tcl::chan::string</a></td>
<td class="#tocright">Read-only in-memory channel</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/textwindow.html">tcl::chan::textwindow</a></td>
<td class="#tocright">Textwindow channel</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/variable.html">tcl::chan::variable</a></td>
<td class="#tocright">In-memory channel using variable for storage</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/zero.html">tcl::chan::zero</a></td>
<td class="#tocright">Zero channel</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/adler32.html">tcl::transform::adler32</a></td>
<td class="#tocright">Adler32 transformation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/base64.html">tcl::transform::base64</a></td>
<td class="#tocright">Base64 encoding transformation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_core/transformcore.html">tcl::transform::core</a></td>
<td class="#tocright">Basic reflected/virtual channel transform support</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/counter.html">tcl::transform::counter</a></td>
<td class="#tocright">Counter transformation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/crc32.html">tcl::transform::crc32</a></td>
<td class="#tocright">Crc32 transformation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/hex.html">tcl::transform::hex</a></td>
<td class="#tocright">Hexadecimal encoding transformation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/identity.html">tcl::transform::identity</a></td>
<td class="#tocright">Identity transformation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/limitsize.html">tcl::transform::limitsize</a></td>
<td class="#tocright">limiting input</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/observe.html">tcl::transform::observe</a></td>
<td class="#tocright">Observer transformation, stream copy</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/otp.html">tcl::transform::otp</a></td>
<td class="#tocright">Encryption via one-time pad</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/rot.html">tcl::transform::rot</a></td>
<td class="#tocright">rot-encryption</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/spacer.html">tcl::transform::spacer</a></td>
<td class="#tocright">Space insertation and removal</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/zlib.html">tcl::transform::zlib</a></td>
<td class="#tocright">zlib (de)compression</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/apps/tcldocstrip.html">tcldocstrip</a></td>
<td class="#tocright">Tcl-based Docstrip Processor</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/dns/tcllib_ip.html">tcllib_ip</a></td>
<td class="#tocright">IPv4 and IPv6 address manipulation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/math/machineparameters.html">tclrep/machineparameters</a></td>
<td class="#tocright">Compute double precision machine parameters.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/tepam/tepam_introduction.html">tepam</a></td>
<td class="#tocright">An introduction into TEPAM, Tcl's Enhanced Procedure and Argument Manager</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/tepam/tepam_argument_dialogbox.html">tepam::argument_dialogbox</a></td>
<td class="#tocright">TEPAM argument_dialogbox, reference manual</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/tepam/tepam_procedure.html">tepam::procedure</a></td>
<td class="#tocright">TEPAM procedure, reference manual</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/term/term.html">term</a></td>
<td class="#tocright">General terminal control</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/term/ansi_code.html">term::ansi::code</a></td>
<td class="#tocright">Helper for control sequences</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/term/ansi_cattr.html">term::ansi::code::attr</a></td>
<td class="#tocright">ANSI attribute sequences</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/term/ansi_cctrl.html">term::ansi::code::ctrl</a></td>
<td class="#tocright">ANSI control sequences</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/term/ansi_cmacros.html">term::ansi::code::macros</a></td>
<td class="#tocright">Macro sequences</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/term/ansi_ctrlu.html">term::ansi::ctrl::unix</a></td>
<td class="#tocright">Control operations and queries</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/term/ansi_send.html">term::ansi::send</a></td>
<td class="#tocright">Output of ANSI control sequences to terminals</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/term/imenu.html">term::interact::menu</a></td>
<td class="#tocright">Terminal widget, menu</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/term/ipager.html">term::interact::pager</a></td>
<td class="#tocright">Terminal widget, paging</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/term/receive.html">term::receive</a></td>
<td class="#tocright">General input from terminals</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/term/term_bind.html">term::receive::bind</a></td>
<td class="#tocright">Keyboard dispatch from terminals</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/term/term_send.html">term::send</a></td>
<td class="#tocright">General output to terminals</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/textutil/textutil.html">textutil</a></td>
<td class="#tocright">Procedures to manipulate texts and strings.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/textutil/adjust.html">textutil::adjust</a></td>
<td class="#tocright">Procedures to adjust, indent, and undent paragraphs</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/textutil/expander.html">textutil::expander</a></td>
<td class="#tocright">Procedures to process templates and expand text.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/textutil/repeat.html">textutil::repeat</a></td>
<td class="#tocright">Procedures to repeat strings.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/textutil/textutil_split.html">textutil::split</a></td>
<td class="#tocright">Procedures to split texts</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/textutil/textutil_string.html">textutil::string</a></td>
<td class="#tocright">Procedures to manipulate texts and strings.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/textutil/tabify.html">textutil::tabify</a></td>
<td class="#tocright">Procedures to (un)tabify strings</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/textutil/trim.html">textutil::trim</a></td>
<td class="#tocright">Procedures to trim strings</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/tie/tie_std.html">tie</a></td>
<td class="#tocright">Array persistence, standard data sources</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/tie/tie.html">tie</a></td>
<td class="#tocright">Array persistence</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/tiff/tiff.html">tiff</a></td>
<td class="#tocright">TIFF reading, writing, and querying and manipulation of meta data</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/transfer/connect.html">transfer::connect</a></td>
<td class="#tocright">Connection setup</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/transfer/copyops.html">transfer::copy</a></td>
<td class="#tocright">Data transfer foundation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/transfer/tqueue.html">transfer::copy::queue</a></td>
<td class="#tocright">Queued transfers</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/transfer/ddest.html">transfer::data::destination</a></td>
<td class="#tocright">Data destination</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/transfer/dsource.html">transfer::data::source</a></td>
<td class="#tocright">Data source</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/transfer/receiver.html">transfer::receiver</a></td>
<td class="#tocright">Data source</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/transfer/transmitter.html">transfer::transmitter</a></td>
<td class="#tocright">Data source</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/treeql/treeql.html">treeql</a></td>
<td class="#tocright">Query tree objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/try/tcllib_try.html">try</a></td>
<td class="#tocright">try - Trap and process errors and exceptions</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/uev/uevent.html">uevent</a></td>
<td class="#tocright">User events</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/uev/uevent_onidle.html">uevent::onidle</a></td>
<td class="#tocright">Request merging and deferal to idle time</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/stringprep/unicode.html">unicode</a></td>
<td class="#tocright">Implementation of Unicode normalization</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/stringprep/unicode_data.html">unicode::data</a></td>
<td class="#tocright">unicode data tables, generated, internal</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/units/units.html">units</a></td>
<td class="#tocright">unit conversion</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/uri/uri.html">uri</a></td>
<td class="#tocright">URI utilities</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/uri/urn-scheme.html">uri_urn</a></td>
<td class="#tocright">URI utilities, URN scheme</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/base64/uuencode.html">uuencode</a></td>
<td class="#tocright">UU-encode/decode binary data</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/uuid/uuid.html">uuid</a></td>
<td class="#tocright">UUID generation and comparison</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/wip/wip.html">wip</a></td>
<td class="#tocright">Word Interpreter</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/amazon-s3/xsxp.html">xsxp</a></td>
<td class="#tocright">eXtremely Simple Xml Parser</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/yaml/yaml.html">yaml</a></td>
<td class="#tocright">YAML Format Encoder/Decoder</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/base64/yencode.html">yencode</a></td>
<td class="#tocright">Y-encode/decode binary data</td>
</tr>
</table>
</dl><hr></body></html>







>
>
>
>



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|





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
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
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
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
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
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
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
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
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
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
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
<td class="#tocright">doctools plugin API reference</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/apps/dtplite.html">dtplite</a></td>
<td class="#tocright">Lightweight DocTools Markup Processor</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/dtplite/dtplite.html">dtplite</a></td>
<td class="#tocright">Lightweight DocTools Markup Processor</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/exif/exif.html">exif</a></td>
<td class="#tocright">Tcl EXIF extracts and parses EXIF fields from digital images</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/fileutil/fileutil.html">fileutil</a></td>
<td class="#tocright">Procedures implementing some file utilities</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/fumagic/cfront.html">fileutil::magic::cfront</a></td>
<td class="#tocright">Generator core for compiler of magic(5) files</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/fumagic/cgen.html">fileutil::magic::cgen</a></td>
<td class="#tocright">Generator core for compiler of magic(5) files</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/fumagic/filetypes.html">fileutil::magic::filetype</a></td>
<td class="#tocright">Procedures implementing file-type recognition</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/fumagic/mimetypes.html">fileutil::magic::mimetype</a></td>
<td class="#tocright">Procedures implementing mime-type recognition</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/fumagic/rtcore.html">fileutil::magic::rt</a></td>
<td class="#tocright">Runtime core for file type recognition engines written in pure Tcl</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/fileutil/multi.html">fileutil::multi</a></td>
<td class="#tocright">Multi-file operation, scatter/gather, standard object</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/fileutil/multiop.html">fileutil::multi::op</a></td>
<td class="#tocright">Multi-file operation, scatter/gather</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/fileutil/traverse.html">fileutil_traverse</a></td>
<td class="#tocright">Iterative directory traversal</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/ftp/ftp.html">ftp</a></td>
<td class="#tocright">Client-side tcl implementation of the ftp protocol</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/ftp/ftp_geturl.html">ftp::geturl</a></td>
<td class="#tocright">Uri handler for ftp urls</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/ftpd/ftpd.html">ftpd</a></td>
<td class="#tocright">Tcl FTP server implementation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/generator/generator.html">generator</a></td>
<td class="#tocright">Procedures for creating and using generators.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/gpx/gpx.html">gpx</a></td>
<td class="#tocright">Extracts waypoints, tracks and routes from GPX files</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/grammar_aycock/aycock.html">grammar::aycock</a></td>
<td class="#tocright">Aycock-Horspool-Earley parser generator for Tcl</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/grammar_fa/fa.html">grammar::fa</a></td>
<td class="#tocright">Create and manipulate finite automatons</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/grammar_fa/dacceptor.html">grammar::fa::dacceptor</a></td>
<td class="#tocright">Create and use deterministic acceptors</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/grammar_fa/dexec.html">grammar::fa::dexec</a></td>
<td class="#tocright">Execute deterministic finite automatons</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/grammar_fa/faop.html">grammar::fa::op</a></td>
<td class="#tocright">Operations on finite automatons</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/grammar_me/me_cpu.html">grammar::me::cpu</a></td>
<td class="#tocright">Virtual machine implementation II for parsing token streams</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/grammar_me/me_cpucore.html">grammar::me::cpu::core</a></td>
<td class="#tocright">ME virtual machine state manipulation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/grammar_me/gasm.html">grammar::me::cpu::gasm</a></td>
<td class="#tocright">ME assembler</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/grammar_me/me_tcl.html">grammar::me::tcl</a></td>
<td class="#tocright">Virtual machine implementation I for parsing token streams</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/grammar_me/me_util.html">grammar::me::util</a></td>
<td class="#tocright">AST utilities</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/grammar_me/me_ast.html">grammar::me_ast</a></td>
<td class="#tocright">Various representations of ASTs</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/grammar_me/me_intro.html">grammar::me_intro</a></td>
<td class="#tocright">Introduction to virtual machines for parsing token streams</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/grammar_me/me_vm.html">grammar::me_vm</a></td>
<td class="#tocright">Virtual machine for parsing token streams</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/grammar_peg/peg.html">grammar::peg</a></td>
<td class="#tocright">Create and manipulate parsing expression grammars</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/grammar_peg/peg_interp.html">grammar::peg::interp</a></td>
<td class="#tocright">Interpreter for parsing expression grammars</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/hook/hook.html">hook</a></td>
<td class="#tocright">Hooks</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/html/html.html">html</a></td>
<td class="#tocright">Procedures to generate HTML structures</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/htmlparse/htmlparse.html">htmlparse</a></td>
<td class="#tocright">Procedures to parse HTML strings</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/yaml/huddle.html">huddle</a></td>
<td class="#tocright">Create and manipulate huddle object</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/ident/ident.html">ident</a></td>
<td class="#tocright">Ident protocol client</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/imap4/imap4.html">imap4</a></td>
<td class="#tocright">imap client-side tcl implementation of imap protocol</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/inifile/ini.html">inifile</a></td>
<td class="#tocright">Parsing of Windows INI files</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/interp/tcllib_interp.html">interp</a></td>
<td class="#tocright">Interp creation and aliasing</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/irc/irc.html">irc</a></td>
<td class="#tocright">Create IRC connection and interface.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/javascript/javascript.html">javascript</a></td>
<td class="#tocright">Procedures to generate HTML and Java Script structures.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/jpeg/jpeg.html">jpeg</a></td>
<td class="#tocright">JPEG querying and manipulation of meta data</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/json/json.html">json</a></td>
<td class="#tocright">JSON parser</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/json/json_write.html">json::write</a></td>
<td class="#tocright">JSON generation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/lambda/lambda.html">lambda</a></td>
<td class="#tocright">Utility commands for anonymous procedures</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/ldap/ldap.html">ldap</a></td>
<td class="#tocright">LDAP client</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/ldap/ldapx.html">ldapx</a></td>
<td class="#tocright">LDAP extended object interface</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/log/log.html">log</a></td>
<td class="#tocright">Procedures to log messages of libraries and applications.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/log/logger.html">logger</a></td>
<td class="#tocright">System to control logging of events.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/log/loggerAppender.html">logger::appender</a></td>
<td class="#tocright">Collection of predefined appenders for logger</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/log/loggerUtils.html">logger::utils</a></td>
<td class="#tocright">Utilities for logger</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/map/map_geocode_nominatim.html">map::geocode::nominatim</a></td>
<td class="#tocright">Resolving geographical names with a Nominatim service</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/map/map_slippy.html">map::slippy</a></td>
<td class="#tocright">Common code for slippy based map packages</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/map/map_slippy_cache.html">map::slippy::cache</a></td>
<td class="#tocright">Management of a tile cache in the local filesystem</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/map/map_slippy_fetcher.html">map::slippy::fetcher</a></td>
<td class="#tocright">Accessing a server providing tiles for slippy-based maps</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/mapproj/mapproj.html">mapproj</a></td>
<td class="#tocright">Map projection routines</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/math/math.html">math</a></td>
<td class="#tocright">Tcl Math Library</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/math/bigfloat.html">math::bigfloat</a></td>
<td class="#tocright">Arbitrary precision floating-point numbers</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/math/bignum.html">math::bignum</a></td>
<td class="#tocright">Arbitrary precision integer numbers</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/math/calculus.html">math::calculus</a></td>
<td class="#tocright">Integration and ordinary differential equations</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/math/romberg.html">math::calculus::romberg</a></td>
<td class="#tocright">Romberg integration</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/math/symdiff.html">math::calculus::symdiff</a></td>
<td class="#tocright">Symbolic differentiation for Tcl</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/math/combinatorics.html">math::combinatorics</a></td>
<td class="#tocright">Combinatorial functions in the Tcl Math Library</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/math/qcomplex.html">math::complexnumbers</a></td>
<td class="#tocright">Straightforward complex number package</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/math/constants.html">math::constants</a></td>
<td class="#tocright">Mathematical and numerical constants</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/math/decimal.html">math::decimal</a></td>
<td class="#tocright">General decimal arithmetic</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/math/fourier.html">math::fourier</a></td>
<td class="#tocright">Discrete and fast fourier transforms</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/math/fuzzy.html">math::fuzzy</a></td>
<td class="#tocright">Fuzzy comparison of floating-point numbers</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/math/math_geometry.html">math::geometry</a></td>
<td class="#tocright">Geometrical computations</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/math/interpolate.html">math::interpolate</a></td>
<td class="#tocright">Interpolation routines</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/math/linalg.html">math::linearalgebra</a></td>
<td class="#tocright">Linear Algebra</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/math/numtheory.html">math::numtheory</a></td>
<td class="#tocright">Number Theory</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/math/optimize.html">math::optimize</a></td>
<td class="#tocright">Optimisation routines</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/math/polynomials.html">math::polynomials</a></td>
<td class="#tocright">Polynomial functions</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/math/rational_funcs.html">math::rationalfunctions</a></td>
<td class="#tocright">Polynomial functions</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/math/roman.html">math::roman</a></td>
<td class="#tocright">Tools for creating and manipulating roman numerals</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/math/special.html">math::special</a></td>
<td class="#tocright">Special mathematical functions</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/math/statistics.html">math::statistics</a></td>
<td class="#tocright">Basic statistical functions and procedures</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/md4/md4.html">md4</a></td>
<td class="#tocright">MD4 Message-Digest Algorithm</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/md5/md5.html">md5</a></td>
<td class="#tocright">MD5 Message-Digest Algorithm</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/md5crypt/md5crypt.html">md5crypt</a></td>
<td class="#tocright">MD5-based password encryption</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/mime/mime.html">mime</a></td>
<td class="#tocright">Manipulation of MIME body parts</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/doctools/mpexpand.html">mpexpand</a></td>
<td class="#tocright">Markup processor</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/multiplexer/multiplexer.html">multiplexer</a></td>
<td class="#tocright">One-to-many communication with sockets.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/nns/nns_client.html">nameserv</a></td>
<td class="#tocright">Name service facility, Client</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/nns/nns_auto.html">nameserv::auto</a></td>
<td class="#tocright">Name service facility, Client Extension</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/nns/nns_common.html">nameserv::common</a></td>
<td class="#tocright">Name service facility, shared definitions</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/nns/nns_protocol.html">nameserv::protocol</a></td>
<td class="#tocright">Name service facility, client/server protocol</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/nns/nns_server.html">nameserv::server</a></td>
<td class="#tocright">Name service facility, Server</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/namespacex/namespacex.html">namespacex</a></td>
<td class="#tocright">Namespace utility commands</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/ncgi/ncgi.html">ncgi</a></td>
<td class="#tocright">Procedures to manipulate CGI values.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/nmea/nmea.html">nmea</a></td>
<td class="#tocright">Process NMEA data</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/apps/nns.html">nns</a></td>
<td class="#tocright">Name service facility, Commandline Client Application</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/nns/nns_intro.html">nns_intro</a></td>
<td class="#tocright">Name service facility, introduction</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/apps/nnsd.html">nnsd</a></td>
<td class="#tocright">Name service facility, Commandline Server Application</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/apps/nnslog.html">nnslog</a></td>
<td class="#tocright">Name service facility, Commandline Logging Client Application</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/nntp/nntp.html">nntp</a></td>
<td class="#tocright">Tcl client for the NNTP protocol</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/ntp/ntp_time.html">ntp_time</a></td>
<td class="#tocright">Tcl Time Service Client</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/ooutil/ooutil.html">oo::util</a></td>
<td class="#tocright">Utility commands for TclOO</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/otp/otp.html">otp</a></td>
<td class="#tocright">One-Time Passwords</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/apps/page.html">page</a></td>
<td class="#tocright">Parser Generator</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/page/page_intro.html">page_intro</a></td>
<td class="#tocright">page introduction</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/page/page_pluginmgr.html">page_pluginmgr</a></td>
<td class="#tocright">page plugin manager</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/page/page_util_flow.html">page_util_flow</a></td>
<td class="#tocright">page dataflow/treewalker utility</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/page/page_util_norm_lemon.html">page_util_norm_lemon</a></td>
<td class="#tocright">page AST normalization, LEMON</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/page/page_util_norm_peg.html">page_util_norm_peg</a></td>
<td class="#tocright">page AST normalization, PEG</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/page/page_util_peg.html">page_util_peg</a></td>
<td class="#tocright">page PEG transformation utilities</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/page/page_util_quote.html">page_util_quote</a></td>
<td class="#tocright">page character quoting utilities</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/irc/picoirc.html">picoirc</a></td>
<td class="#tocright">Small and simple embeddable IRC client.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pki/pki.html">pki</a></td>
<td class="#tocright">Implementation of the public key cipher</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pluginmgr/pluginmgr.html">pluginmgr</a></td>
<td class="#tocright">Manage a plugin</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/png/png.html">png</a></td>
<td class="#tocright">PNG querying and manipulation of meta data</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pop3/pop3.html">pop3</a></td>
<td class="#tocright">Tcl client for POP3 email protocol</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pop3d/pop3d.html">pop3d</a></td>
<td class="#tocright">Tcl POP3 server implementation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pop3d/pop3d_dbox.html">pop3d::dbox</a></td>
<td class="#tocright">Simple mailbox database for pop3d</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pop3d/pop3d_udb.html">pop3d::udb</a></td>
<td class="#tocright">Simple user database for pop3d</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/profiler/profiler.html">profiler</a></td>
<td class="#tocright">Tcl source code profiler</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt.html">pt</a></td>
<td class="#tocright">Parser Tools Application</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_astree.html">pt::ast</a></td>
<td class="#tocright">Abstract Syntax Tree Serialization</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_cparam_config_critcl.html">pt::cparam::configuration::critcl</a></td>
<td class="#tocright">C/PARAM, Canned configuration, Critcl</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_json_language.html">pt::json_language</a></td>
<td class="#tocright">The JSON Grammar Exchange Format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_param.html">pt::param</a></td>
<td class="#tocright">PackRat Machine Specification</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_pexpression.html">pt::pe</a></td>
<td class="#tocright">Parsing Expression Serialization</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_pexpr_op.html">pt::pe::op</a></td>
<td class="#tocright">Parsing Expression Utilities</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_pegrammar.html">pt::peg</a></td>
<td class="#tocright">Parsing Expression Grammar Serialization</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_container.html">pt::peg::container</a></td>
<td class="#tocright">PEG Storage</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_container_peg.html">pt::peg::container::peg</a></td>
<td class="#tocright">PEG Storage. Canned PEG grammar specification</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_export.html">pt::peg::export</a></td>
<td class="#tocright">PEG Export</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_export_container.html">pt::peg::export::container</a></td>
<td class="#tocright">PEG Export Plugin. Write CONTAINER format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_export_json.html">pt::peg::export::json</a></td>
<td class="#tocright">PEG Export Plugin. Write JSON format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_export_peg.html">pt::peg::export::peg</a></td>
<td class="#tocright">PEG Export Plugin. Write PEG format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_from_container.html">pt::peg::from::container</a></td>
<td class="#tocright">PEG Conversion. From CONTAINER format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_from_json.html">pt::peg::from::json</a></td>
<td class="#tocright">PEG Conversion. Read JSON format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_from_peg.html">pt::peg::from::peg</a></td>
<td class="#tocright">PEG Conversion. Read PEG format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_import.html">pt::peg::import</a></td>
<td class="#tocright">PEG Import</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_import_container.html">pt::peg::import::container</a></td>
<td class="#tocright">PEG Import Plugin. From CONTAINER format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_import_json.html">pt::peg::import::json</a></td>
<td class="#tocright">PEG Import Plugin. Read JSON format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_import_peg.html">pt::peg::import::peg</a></td>
<td class="#tocright">PEG Import Plugin. Read PEG format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_interp.html">pt::peg::interp</a></td>
<td class="#tocright">Interpreter for parsing expression grammars</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_to_container.html">pt::peg::to::container</a></td>
<td class="#tocright">PEG Conversion. Write CONTAINER format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_to_cparam.html">pt::peg::to::cparam</a></td>
<td class="#tocright">PEG Conversion. Write CPARAM format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_to_json.html">pt::peg::to::json</a></td>
<td class="#tocright">PEG Conversion. Write JSON format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_to_param.html">pt::peg::to::param</a></td>
<td class="#tocright">PEG Conversion. Write PARAM format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_to_peg.html">pt::peg::to::peg</a></td>
<td class="#tocright">PEG Conversion. Write PEG format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_to_tclparam.html">pt::peg::to::tclparam</a></td>
<td class="#tocright">PEG Conversion. Write TCLPARAM format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_language.html">pt::peg_language</a></td>
<td class="#tocright">PEG Language Tutorial</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_peg_introduction.html">pt::pegrammar</a></td>
<td class="#tocright">Introduction to Parsing Expression Grammars</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_pgen.html">pt::pgen</a></td>
<td class="#tocright">Parser Generator</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_rdengine.html">pt::rde</a></td>
<td class="#tocright">Parsing Runtime Support, PARAM based</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_tclparam_config_snit.html">pt::tclparam::configuration::snit</a></td>
<td class="#tocright">Tcl/PARAM, Canned configuration, Snit</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_tclparam_config_tcloo.html">pt::tclparam::configuration::tcloo</a></td>
<td class="#tocright">Tcl/PARAM, Canned configuration, Tcloo</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_to_api.html">pt_export_api</a></td>
<td class="#tocright">Parser Tools Export API</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_from_api.html">pt_import_api</a></td>
<td class="#tocright">Parser Tools Import API</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/pt/pt_introduction.html">pt_introduction</a></td>
<td class="#tocright">Introduction to Parser Tools</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/pt/pt_parser_api.html">pt_parser_api</a></td>
<td class="#tocright">Parser API</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/rc4/rc4.html">rc4</a></td>
<td class="#tocright">Implementation of the RC4 stream cipher</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/rcs/rcs.html">rcs</a></td>
<td class="#tocright">RCS low level utilities</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/report/report.html">report</a></td>
<td class="#tocright">Create and manipulate report objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/rest/rest.html">rest</a></td>
<td class="#tocright">define REST web APIs and call them inline or asychronously</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/ripemd/ripemd128.html">ripemd128</a></td>
<td class="#tocright">RIPEMD-128 Message-Digest Algorithm</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/ripemd/ripemd160.html">ripemd160</a></td>
<td class="#tocright">RIPEMD-160 Message-Digest Algorithm</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/amazon-s3/S3.html">S3</a></td>
<td class="#tocright">Amazon S3 Web Service Interface</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/sasl/sasl.html">SASL</a></td>
<td class="#tocright">Implementation of SASL mechanisms for Tcl</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/sha1/sha1.html">sha1</a></td>
<td class="#tocright">SHA1 Message-Digest Algorithm</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/sha1/sha256.html">sha256</a></td>
<td class="#tocright">SHA256 Message-Digest Algorithm</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/simulation/annealing.html">simulation::annealing</a></td>
<td class="#tocright">Simulated annealing</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/simulation/montecarlo.html">simulation::montecarlo</a></td>
<td class="#tocright">Monte Carlo simulations</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/simulation/simulation_random.html">simulation::random</a></td>
<td class="#tocright">Pseudo-random number generators</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/mime/smtp.html">smtp</a></td>
<td class="#tocright">Client-side tcl implementation of the smtp protocol</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/smtpd/smtpd.html">smtpd</a></td>
<td class="#tocright">Tcl SMTP server implementation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/snit/snit.html">snit</a></td>
<td class="#tocright">Snit's Not Incr Tcl</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/snit/snitfaq.html">snitfaq</a></td>
<td class="#tocright">Snit Frequently Asked Questions</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/soundex/soundex.html">soundex</a></td>
<td class="#tocright">Soundex</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/stooop/stooop.html">stooop</a></td>
<td class="#tocright">Object oriented extension.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/string/token.html">string::token</a></td>
<td class="#tocright">Regex based iterative lexing</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/string/token_shell.html">string::token::shell</a></td>
<td class="#tocright">Parsing of shell command line</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/stringprep/stringprep.html">stringprep</a></td>
<td class="#tocright">Implementation of stringprep</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/stringprep/stringprep_data.html">stringprep::data</a></td>
<td class="#tocright">stringprep data tables, generated, internal</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/struct/disjointset.html">struct::disjointset</a></td>
<td class="#tocright">Disjoint set data structure</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/struct/graph.html">struct::graph</a></td>
<td class="#tocright">Create and manipulate directed graph objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/struct/graphops.html">struct::graph::op</a></td>
<td class="#tocright">Operation for (un)directed graph objects</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/struct/graph1.html">struct::graph_v1</a></td>
<td class="#tocright">Create and manipulate directed graph objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/struct/struct_list.html">struct::list</a></td>
<td class="#tocright">Procedures for manipulating lists</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/struct/matrix.html">struct::matrix</a></td>
<td class="#tocright">Create and manipulate matrix objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/struct/matrix1.html">struct::matrix_v1</a></td>
<td class="#tocright">Create and manipulate matrix objects</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/struct/pool.html">struct::pool</a></td>
<td class="#tocright">Create and manipulate pool objects (of discrete items)</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/struct/prioqueue.html">struct::prioqueue</a></td>
<td class="#tocright">Create and manipulate prioqueue objects</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/struct/queue.html">struct::queue</a></td>
<td class="#tocright">Create and manipulate queue objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/struct/record.html">struct::record</a></td>
<td class="#tocright">Define and create records (similar to 'C' structures)</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/struct/struct_set.html">struct::set</a></td>
<td class="#tocright">Procedures for manipulating sets</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/struct/skiplist.html">struct::skiplist</a></td>
<td class="#tocright">Create and manipulate skiplists</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/struct/stack.html">struct::stack</a></td>
<td class="#tocright">Create and manipulate stack objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/struct/struct_tree.html">struct::tree</a></td>
<td class="#tocright">Create and manipulate tree objects</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/struct/struct_tree1.html">struct::tree_v1</a></td>
<td class="#tocright">Create and manipulate tree objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/crc/sum.html">sum</a></td>
<td class="#tocright">Calculate a sum(1) compatible checksum</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/tar/tar.html">tar</a></td>
<td class="#tocright">Tar file creation, extraction &amp; manipulation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/cat.html">tcl::chan::cat</a></td>
<td class="#tocright">Concatenation channel</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_core/core.html">tcl::chan::core</a></td>
<td class="#tocright">Basic reflected/virtual channel support</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_core/events.html">tcl::chan::events</a></td>
<td class="#tocright">Event support for reflected/virtual channels</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/facade.html">tcl::chan::facade</a></td>
<td class="#tocright">Facade channel</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/fifo.html">tcl::chan::fifo</a></td>
<td class="#tocright">In-memory fifo channel</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/fifo2.html">tcl::chan::fifo2</a></td>
<td class="#tocright">In-memory interconnected fifo channels</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/halfpipe.html">tcl::chan::halfpipe</a></td>
<td class="#tocright">In-memory channel, half of a fifo2</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/memchan.html">tcl::chan::memchan</a></td>
<td class="#tocright">In-memory channel</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/null.html">tcl::chan::null</a></td>
<td class="#tocright">Null channel</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/nullzero.html">tcl::chan::nullzero</a></td>
<td class="#tocright">Null/Zero channel combination</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/random.html">tcl::chan::random</a></td>
<td class="#tocright">Random channel</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/randseed.html">tcl::chan::randseed</a></td>
<td class="#tocright">Utilities for random channels</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/std.html">tcl::chan::std</a></td>
<td class="#tocright">Standard I/O, unification of stdin and stdout</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/string.html">tcl::chan::string</a></td>
<td class="#tocright">Read-only in-memory channel</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/textwindow.html">tcl::chan::textwindow</a></td>
<td class="#tocright">Textwindow channel</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/variable.html">tcl::chan::variable</a></td>
<td class="#tocright">In-memory channel using variable for storage</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_base/zero.html">tcl::chan::zero</a></td>
<td class="#tocright">Zero channel</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/adler32.html">tcl::transform::adler32</a></td>
<td class="#tocright">Adler32 transformation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/base64.html">tcl::transform::base64</a></td>
<td class="#tocright">Base64 encoding transformation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_core/transformcore.html">tcl::transform::core</a></td>
<td class="#tocright">Basic reflected/virtual channel transform support</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/counter.html">tcl::transform::counter</a></td>
<td class="#tocright">Counter transformation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/crc32.html">tcl::transform::crc32</a></td>
<td class="#tocright">Crc32 transformation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/hex.html">tcl::transform::hex</a></td>
<td class="#tocright">Hexadecimal encoding transformation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/identity.html">tcl::transform::identity</a></td>
<td class="#tocright">Identity transformation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/limitsize.html">tcl::transform::limitsize</a></td>
<td class="#tocright">limiting input</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/observe.html">tcl::transform::observe</a></td>
<td class="#tocright">Observer transformation, stream copy</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/otp.html">tcl::transform::otp</a></td>
<td class="#tocright">Encryption via one-time pad</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/rot.html">tcl::transform::rot</a></td>
<td class="#tocright">rot-encryption</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/spacer.html">tcl::transform::spacer</a></td>
<td class="#tocright">Space insertation and removal</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/virtchannel_transform/zlib.html">tcl::transform::zlib</a></td>
<td class="#tocright">zlib (de)compression</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/apps/tcldocstrip.html">tcldocstrip</a></td>
<td class="#tocright">Tcl-based Docstrip Processor</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/dns/tcllib_ip.html">tcllib_ip</a></td>
<td class="#tocright">IPv4 and IPv6 address manipulation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/math/machineparameters.html">tclrep/machineparameters</a></td>
<td class="#tocright">Compute double precision machine parameters.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/tepam/tepam_introduction.html">tepam</a></td>
<td class="#tocright">An introduction into TEPAM, Tcl's Enhanced Procedure and Argument Manager</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/tepam/tepam_argument_dialogbox.html">tepam::argument_dialogbox</a></td>
<td class="#tocright">TEPAM argument_dialogbox, reference manual</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/tepam/tepam_procedure.html">tepam::procedure</a></td>
<td class="#tocright">TEPAM procedure, reference manual</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/term/term.html">term</a></td>
<td class="#tocright">General terminal control</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/term/ansi_code.html">term::ansi::code</a></td>
<td class="#tocright">Helper for control sequences</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/term/ansi_cattr.html">term::ansi::code::attr</a></td>
<td class="#tocright">ANSI attribute sequences</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/term/ansi_cctrl.html">term::ansi::code::ctrl</a></td>
<td class="#tocright">ANSI control sequences</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/term/ansi_cmacros.html">term::ansi::code::macros</a></td>
<td class="#tocright">Macro sequences</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/term/ansi_ctrlu.html">term::ansi::ctrl::unix</a></td>
<td class="#tocright">Control operations and queries</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/term/ansi_send.html">term::ansi::send</a></td>
<td class="#tocright">Output of ANSI control sequences to terminals</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/term/imenu.html">term::interact::menu</a></td>
<td class="#tocright">Terminal widget, menu</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/term/ipager.html">term::interact::pager</a></td>
<td class="#tocright">Terminal widget, paging</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/term/receive.html">term::receive</a></td>
<td class="#tocright">General input from terminals</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/term/term_bind.html">term::receive::bind</a></td>
<td class="#tocright">Keyboard dispatch from terminals</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/term/term_send.html">term::send</a></td>
<td class="#tocright">General output to terminals</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/textutil/textutil.html">textutil</a></td>
<td class="#tocright">Procedures to manipulate texts and strings.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/textutil/adjust.html">textutil::adjust</a></td>
<td class="#tocright">Procedures to adjust, indent, and undent paragraphs</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/textutil/expander.html">textutil::expander</a></td>
<td class="#tocright">Procedures to process templates and expand text.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/textutil/repeat.html">textutil::repeat</a></td>
<td class="#tocright">Procedures to repeat strings.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/textutil/textutil_split.html">textutil::split</a></td>
<td class="#tocright">Procedures to split texts</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/textutil/textutil_string.html">textutil::string</a></td>
<td class="#tocright">Procedures to manipulate texts and strings.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/textutil/tabify.html">textutil::tabify</a></td>
<td class="#tocright">Procedures to (un)tabify strings</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/textutil/trim.html">textutil::trim</a></td>
<td class="#tocright">Procedures to trim strings</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/tie/tie_std.html">tie</a></td>
<td class="#tocright">Array persistence, standard data sources</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/tie/tie.html">tie</a></td>
<td class="#tocright">Array persistence</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/tiff/tiff.html">tiff</a></td>
<td class="#tocright">TIFF reading, writing, and querying and manipulation of meta data</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/transfer/connect.html">transfer::connect</a></td>
<td class="#tocright">Connection setup</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/transfer/copyops.html">transfer::copy</a></td>
<td class="#tocright">Data transfer foundation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/transfer/tqueue.html">transfer::copy::queue</a></td>
<td class="#tocright">Queued transfers</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/transfer/ddest.html">transfer::data::destination</a></td>
<td class="#tocright">Data destination</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/transfer/dsource.html">transfer::data::source</a></td>
<td class="#tocright">Data source</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/transfer/receiver.html">transfer::receiver</a></td>
<td class="#tocright">Data source</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/transfer/transmitter.html">transfer::transmitter</a></td>
<td class="#tocright">Data source</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/treeql/treeql.html">treeql</a></td>
<td class="#tocright">Query tree objects</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/try/tcllib_try.html">try</a></td>
<td class="#tocright">try - Trap and process errors and exceptions</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/uev/uevent.html">uevent</a></td>
<td class="#tocright">User events</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/uev/uevent_onidle.html">uevent::onidle</a></td>
<td class="#tocright">Request merging and deferal to idle time</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/stringprep/unicode.html">unicode</a></td>
<td class="#tocright">Implementation of Unicode normalization</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/stringprep/unicode_data.html">unicode::data</a></td>
<td class="#tocright">unicode data tables, generated, internal</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/units/units.html">units</a></td>
<td class="#tocright">unit conversion</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/uri/uri.html">uri</a></td>
<td class="#tocright">URI utilities</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/uri/urn-scheme.html">uri_urn</a></td>
<td class="#tocright">URI utilities, URN scheme</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/base64/uuencode.html">uuencode</a></td>
<td class="#tocright">UU-encode/decode binary data</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/uuid/uuid.html">uuid</a></td>
<td class="#tocright">UUID generation and comparison</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/wip/wip.html">wip</a></td>
<td class="#tocright">Word Interpreter</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/amazon-s3/xsxp.html">xsxp</a></td>
<td class="#tocright">eXtremely Simple Xml Parser</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/modules/yaml/yaml.html">yaml</a></td>
<td class="#tocright">YAML Format Encoder/Decoder</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/base64/yencode.html">yencode</a></td>
<td class="#tocright">Y-encode/decode binary data</td>
</tr>
</table>
</dl><hr></body></html>

Changes to embedded/www/toc.html.

1
2
3
4
5
6
7
8
9

10

11

12
13
14
15
16
17
18
19
<html><head>
<title> Table Of Contents </title>
</head>
<! -- Generated by tcllib/doctools/toc with format 'html'
   -->
<! -- CVS: $Id$ Table Of Contents
   -->
<body>
<hr> [

  <a href="index.html">Keyword Index</a>

| <a href="/tcllib">Home</a>

] <hr>
<h3> Table Of Contents </h3>
<hr><dl><dt><h2>  </h2><dd>
<dl><dt>By Categories<dd>
<dl><dt>Argument entry form, mega widget<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/tepam/tepam_argument_dialogbox.html">tepam::argument_dialogbox</a></td>









>
|
>
|
>
|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<html><head>
<title> Table Of Contents </title>
</head>
<! -- Generated by tcllib/doctools/toc with format 'html'
   -->
<! -- CVS: $Id$ Table Of Contents
   -->
<body>
<hr> [
   <a href="../../../../home">Tcllib Home</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>
<h3> Table Of Contents </h3>
<hr><dl><dt><h2>  </h2><dd>
<dl><dt>By Categories<dd>
<dl><dt>Argument entry form, mega widget<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/tepam/tepam_argument_dialogbox.html">tepam::argument_dialogbox</a></td>
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
<td class="#tocright">doctools language syntax</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctools_plugin_apiref.html">doctools_plugin_apiref</a></td>
<td class="#tocright">doctools plugin API reference</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="apps/dtplite.html">dtplite</a></td>
<td class="#tocright">Lightweight DocTools Markup Processor</td>
</tr>
<tr class="#toceven" >




<td class="#tocleft" ><a href="tcllib/files/modules/doctools/mpexpand.html">mpexpand</a></td>
<td class="#tocright">Markup processor</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="apps/tcldocstrip.html">tcldocstrip</a></td>
<td class="#tocright">Tcl-based Docstrip Processor</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/textutil/expander.html">textutil::expander</a></td>
<td class="#tocright">Procedures to process templates and expand text.</td>
</tr>
</table></dl>
<dl><dt>File formats<dd>
<table class="#toc">
<tr class="#toceven" >







|



>
>
>
>



|
|


|







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
<td class="#tocright">doctools language syntax</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctools_plugin_apiref.html">doctools_plugin_apiref</a></td>
<td class="#tocright">doctools plugin API reference</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/dtplite/dtplite.html">dtplite</a></td>
<td class="#tocright">Lightweight DocTools Markup Processor</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/apps/dtplite.html">dtplite</a></td>
<td class="#tocright">Lightweight DocTools Markup Processor</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/mpexpand.html">mpexpand</a></td>
<td class="#tocright">Markup processor</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/apps/tcldocstrip.html">tcldocstrip</a></td>
<td class="#tocright">Tcl-based Docstrip Processor</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/textutil/expander.html">textutil::expander</a></td>
<td class="#tocright">Procedures to process templates and expand text.</td>
</tr>
</table></dl>
<dl><dt>File formats<dd>
<table class="#toc">
<tr class="#toceven" >
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
<td class="#tocright">Name service facility, Server</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/nmea/nmea.html">nmea</a></td>
<td class="#tocright">Process NMEA data</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="apps/nns.html">nns</a></td>
<td class="#tocright">Name service facility, Commandline Client Application</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/nns/nns_intro.html">nns_intro</a></td>
<td class="#tocright">Name service facility, introduction</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="apps/nnsd.html">nnsd</a></td>
<td class="#tocright">Name service facility, Commandline Server Application</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="apps/nnslog.html">nnslog</a></td>
<td class="#tocright">Name service facility, Commandline Logging Client Application</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/nntp/nntp.html">nntp</a></td>
<td class="#tocright">Tcl client for the NNTP protocol</td>
</tr>
<tr class="#toceven" >







|







|



|







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
<td class="#tocright">Name service facility, Server</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/nmea/nmea.html">nmea</a></td>
<td class="#tocright">Process NMEA data</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/apps/nns.html">nns</a></td>
<td class="#tocright">Name service facility, Commandline Client Application</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/nns/nns_intro.html">nns_intro</a></td>
<td class="#tocright">Name service facility, introduction</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/apps/nnsd.html">nnsd</a></td>
<td class="#tocright">Name service facility, Commandline Server Application</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/apps/nnslog.html">nnslog</a></td>
<td class="#tocright">Name service facility, Commandline Logging Client Application</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/nntp/nntp.html">nntp</a></td>
<td class="#tocright">Tcl client for the NNTP protocol</td>
</tr>
<tr class="#toceven" >
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
<td class="#tocleft" ><a href="tcllib/files/modules/uri/urn-scheme.html">uri_urn</a></td>
<td class="#tocright">URI utilities, URN scheme</td>
</tr>
</table></dl>
<dl><dt>Page Parser Generator<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="apps/page.html">page</a></td>
<td class="#tocright">Parser Generator</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/page/page_intro.html">page_intro</a></td>
<td class="#tocright">page introduction</td>
</tr>
<tr class="#toceven" >







|







919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
<td class="#tocleft" ><a href="tcllib/files/modules/uri/urn-scheme.html">uri_urn</a></td>
<td class="#tocright">URI utilities, URN scheme</td>
</tr>
</table></dl>
<dl><dt>Page Parser Generator<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/apps/page.html">page</a></td>
<td class="#tocright">Parser Generator</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/page/page_intro.html">page_intro</a></td>
<td class="#tocright">page introduction</td>
</tr>
<tr class="#toceven" >
1646
1647
1648
1649
1650
1651
1652
1653
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
<td class="#tocright">Validation for plain number with a VERHOEFF checkdigit</td>
</tr>
</table></dl></table></dl>
<dl><dt>By Type<dd>
<dl><dt>Applications<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="apps/dtplite.html">dtplite</a></td>
<td class="#tocright">Lightweight DocTools Markup Processor</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="apps/nns.html">nns</a></td>
<td class="#tocright">Name service facility, Commandline Client Application</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="apps/nnsd.html">nnsd</a></td>
<td class="#tocright">Name service facility, Commandline Server Application</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="apps/nnslog.html">nnslog</a></td>
<td class="#tocright">Name service facility, Commandline Logging Client Application</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="apps/page.html">page</a></td>
<td class="#tocright">Parser Generator</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="apps/tcldocstrip.html">tcldocstrip</a></td>
<td class="#tocright">Tcl-based Docstrip Processor</td>
</tr>
</table></dl>
<dl><dt>Modules<dd>
<dl><dt>aes<dd>
<table class="#toc">
<tr class="#toceven" >







|



|



|



|



|



|







1653
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
<td class="#tocright">Validation for plain number with a VERHOEFF checkdigit</td>
</tr>
</table></dl></table></dl>
<dl><dt>By Type<dd>
<dl><dt>Applications<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/apps/dtplite.html">dtplite</a></td>
<td class="#tocright">Lightweight DocTools Markup Processor</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/apps/nns.html">nns</a></td>
<td class="#tocright">Name service facility, Commandline Client Application</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/apps/nnsd.html">nnsd</a></td>
<td class="#tocright">Name service facility, Commandline Server Application</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/apps/nnslog.html">nnslog</a></td>
<td class="#tocright">Name service facility, Commandline Logging Client Application</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/apps/page.html">page</a></td>
<td class="#tocright">Parser Generator</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/apps/tcldocstrip.html">tcldocstrip</a></td>
<td class="#tocright">Tcl-based Docstrip Processor</td>
</tr>
</table></dl>
<dl><dt>Modules<dd>
<dl><dt>aes<dd>
<table class="#toc">
<tr class="#toceven" >
2165
2166
2167
2168
2169
2170
2171







2172
2173
2174
2175
2176
2177
2178
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/parse.html">doctools::toc::parse</a></td>
<td class="#tocright">Parsing text in doctoc format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/structure.html">doctools::toc::structure</a></td>
<td class="#tocright">Doctoc serialization utilities</td>
</tr>







</table></dl>
<dl><dt>exif<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/exif/exif.html">exif</a></td>
<td class="#tocright">Tcl EXIF extracts and parses EXIF fields from digital images</td>
</tr>







>
>
>
>
>
>
>







2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/parse.html">doctools::toc::parse</a></td>
<td class="#tocright">Parsing text in doctoc format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/structure.html">doctools::toc::structure</a></td>
<td class="#tocright">Doctoc serialization utilities</td>
</tr>
</table></dl>
<dl><dt>dtplite<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/dtplite/dtplite.html">dtplite</a></td>
<td class="#tocright">Lightweight DocTools Markup Processor</td>
</tr>
</table></dl>
<dl><dt>exif<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/exif/exif.html">exif</a></td>
<td class="#tocright">Tcl EXIF extracts and parses EXIF fields from digital images</td>
</tr>

Added embedded/www/toc0.html.

















































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
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
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
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
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
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
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
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
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
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
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
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
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
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
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
<html><head>
<title> Table Of Contents </title>
</head>
<! -- Generated by tcllib/doctools/toc with format 'html'
   -->
<! -- CVS: $Id$ Table Of Contents
   -->
<body>
<hr> [
   <a href="../../../../home">Tcllib Home</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>
<h3> Table Of Contents </h3>
<hr><dl><dt><h2>  </h2><dd>
<dl><dt>By Categories<dd>
<dl><dt>Argument entry form, mega widget<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/tepam/tepam_argument_dialogbox.html">tepam::argument_dialogbox</a></td>
<td class="#tocright">TEPAM argument_dialogbox, reference manual</td>
</tr>
</table></dl>
<dl><dt>Benchmark tools<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/bench/bench.html">bench</a></td>
<td class="#tocright">bench - Processing benchmark suites</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/bench/bench_read.html">bench::in</a></td>
<td class="#tocright">bench::in - Reading benchmark results</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/bench/bench_wcsv.html">bench::out::csv</a></td>
<td class="#tocright">bench::out::csv - Formatting benchmark results as CSV</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/bench/bench_wtext.html">bench::out::text</a></td>
<td class="#tocright">bench::out::text - Formatting benchmark results as human readable text</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/bench/bench_intro.html">bench_intro</a></td>
<td class="#tocright">bench introduction</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/bench/bench_lang_intro.html">bench_lang_intro</a></td>
<td class="#tocright">bench language introduction</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/bench/bench_lang_spec.html">bench_lang_spec</a></td>
<td class="#tocright">bench language specification</td>
</tr>
</table></dl>
<dl><dt>CGI programming<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/html/html.html">html</a></td>
<td class="#tocright">Procedures to generate HTML structures</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/javascript/javascript.html">javascript</a></td>
<td class="#tocright">Procedures to generate HTML and Java Script structures.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/json/json.html">json</a></td>
<td class="#tocright">JSON parser</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/json/json_write.html">json::write</a></td>
<td class="#tocright">JSON generation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/ncgi/ncgi.html">ncgi</a></td>
<td class="#tocright">Procedures to manipulate CGI values.</td>
</tr>
</table></dl>
<dl><dt>Channels<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/cat.html">tcl::chan::cat</a></td>
<td class="#tocright">Concatenation channel</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_core/core.html">tcl::chan::core</a></td>
<td class="#tocright">Basic reflected/virtual channel support</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_core/events.html">tcl::chan::events</a></td>
<td class="#tocright">Event support for reflected/virtual channels</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/facade.html">tcl::chan::facade</a></td>
<td class="#tocright">Facade channel</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/fifo.html">tcl::chan::fifo</a></td>
<td class="#tocright">In-memory fifo channel</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/fifo2.html">tcl::chan::fifo2</a></td>
<td class="#tocright">In-memory interconnected fifo channels</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/halfpipe.html">tcl::chan::halfpipe</a></td>
<td class="#tocright">In-memory channel, half of a fifo2</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/memchan.html">tcl::chan::memchan</a></td>
<td class="#tocright">In-memory channel</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/null.html">tcl::chan::null</a></td>
<td class="#tocright">Null channel</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/nullzero.html">tcl::chan::nullzero</a></td>
<td class="#tocright">Null/Zero channel combination</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/random.html">tcl::chan::random</a></td>
<td class="#tocright">Random channel</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/randseed.html">tcl::chan::randseed</a></td>
<td class="#tocright">Utilities for random channels</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/std.html">tcl::chan::std</a></td>
<td class="#tocright">Standard I/O, unification of stdin and stdout</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/string.html">tcl::chan::string</a></td>
<td class="#tocright">Read-only in-memory channel</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/textwindow.html">tcl::chan::textwindow</a></td>
<td class="#tocright">Textwindow channel</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/variable.html">tcl::chan::variable</a></td>
<td class="#tocright">In-memory channel using variable for storage</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/zero.html">tcl::chan::zero</a></td>
<td class="#tocright">Zero channel</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/adler32.html">tcl::transform::adler32</a></td>
<td class="#tocright">Adler32 transformation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/base64.html">tcl::transform::base64</a></td>
<td class="#tocright">Base64 encoding transformation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_core/transformcore.html">tcl::transform::core</a></td>
<td class="#tocright">Basic reflected/virtual channel transform support</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/counter.html">tcl::transform::counter</a></td>
<td class="#tocright">Counter transformation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/crc32.html">tcl::transform::crc32</a></td>
<td class="#tocright">Crc32 transformation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/hex.html">tcl::transform::hex</a></td>
<td class="#tocright">Hexadecimal encoding transformation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/identity.html">tcl::transform::identity</a></td>
<td class="#tocright">Identity transformation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/limitsize.html">tcl::transform::limitsize</a></td>
<td class="#tocright">limiting input</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/observe.html">tcl::transform::observe</a></td>
<td class="#tocright">Observer transformation, stream copy</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/otp.html">tcl::transform::otp</a></td>
<td class="#tocright">Encryption via one-time pad</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/rot.html">tcl::transform::rot</a></td>
<td class="#tocright">rot-encryption</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/spacer.html">tcl::transform::spacer</a></td>
<td class="#tocright">Space insertation and removal</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/zlib.html">tcl::transform::zlib</a></td>
<td class="#tocright">zlib (de)compression</td>
</tr>
</table></dl>
<dl><dt>Coroutine<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/coroutine/coroutine.html">coroutine</a></td>
<td class="#tocright">Coroutine based event and IO handling</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/coroutine/coro_auto.html">coroutine::auto</a></td>
<td class="#tocright">Automatic event and IO coroutine awareness</td>
</tr>
</table></dl>
<dl><dt>Data structures<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/counter/counter.html">counter</a></td>
<td class="#tocright">Procedures for counters and histograms</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/report/report.html">report</a></td>
<td class="#tocright">Create and manipulate report objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/disjointset.html">struct::disjointset</a></td>
<td class="#tocright">Disjoint set data structure</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/graph.html">struct::graph</a></td>
<td class="#tocright">Create and manipulate directed graph objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/graphops.html">struct::graph::op</a></td>
<td class="#tocright">Operation for (un)directed graph objects</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/graph1.html">struct::graph_v1</a></td>
<td class="#tocright">Create and manipulate directed graph objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/struct_list.html">struct::list</a></td>
<td class="#tocright">Procedures for manipulating lists</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/matrix.html">struct::matrix</a></td>
<td class="#tocright">Create and manipulate matrix objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/matrix1.html">struct::matrix_v1</a></td>
<td class="#tocright">Create and manipulate matrix objects</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/pool.html">struct::pool</a></td>
<td class="#tocright">Create and manipulate pool objects (of discrete items)</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/prioqueue.html">struct::prioqueue</a></td>
<td class="#tocright">Create and manipulate prioqueue objects</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/queue.html">struct::queue</a></td>
<td class="#tocright">Create and manipulate queue objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/record.html">struct::record</a></td>
<td class="#tocright">Define and create records (similar to 'C' structures)</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/struct_set.html">struct::set</a></td>
<td class="#tocright">Procedures for manipulating sets</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/skiplist.html">struct::skiplist</a></td>
<td class="#tocright">Create and manipulate skiplists</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/stack.html">struct::stack</a></td>
<td class="#tocright">Create and manipulate stack objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/struct_tree.html">struct::tree</a></td>
<td class="#tocright">Create and manipulate tree objects</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/struct_tree1.html">struct::tree_v1</a></td>
<td class="#tocright">Create and manipulate tree objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/treeql/treeql.html">treeql</a></td>
<td class="#tocright">Query tree objects</td>
</tr>
</table></dl>
<dl><dt>Documentation tools<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/docidx_intro.html">docidx_intro</a></td>
<td class="#tocright">docidx introduction</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/docidx_lang_cmdref.html">docidx_lang_cmdref</a></td>
<td class="#tocright">docidx language command reference</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/docidx_lang_faq.html">docidx_lang_faq</a></td>
<td class="#tocright">docidx language faq</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/docidx_lang_intro.html">docidx_lang_intro</a></td>
<td class="#tocright">docidx language introduction</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/docidx_lang_syntax.html">docidx_lang_syntax</a></td>
<td class="#tocright">docidx language syntax</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/docidx_plugin_apiref.html">docidx_plugin_apiref</a></td>
<td class="#tocright">docidx plugin API reference</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/docstrip/docstrip.html">docstrip</a></td>
<td class="#tocright">Docstrip style source code extraction</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/docstrip/docstrip_util.html">docstrip_util</a></td>
<td class="#tocright">Docstrip-related utilities</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctoc_intro.html">doctoc_intro</a></td>
<td class="#tocright">doctoc introduction</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctoc_lang_cmdref.html">doctoc_lang_cmdref</a></td>
<td class="#tocright">doctoc language command reference</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctoc_lang_faq.html">doctoc_lang_faq</a></td>
<td class="#tocright">doctoc language faq</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctoc_lang_intro.html">doctoc_lang_intro</a></td>
<td class="#tocright">doctoc language introduction</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctoc_lang_syntax.html">doctoc_lang_syntax</a></td>
<td class="#tocright">doctoc language syntax</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctoc_plugin_apiref.html">doctoc_plugin_apiref</a></td>
<td class="#tocright">doctoc plugin API reference</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctools.html">doctools</a></td>
<td class="#tocright">doctools - Processing documents</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/introduction.html">doctools2idx_introduction</a></td>
<td class="#tocright">DocTools - Keyword indices</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/introduction.html">doctools2toc_introduction</a></td>
<td class="#tocright">DocTools - Tables of Contents</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/changelog.html">doctools::changelog</a></td>
<td class="#tocright">Processing text in Emacs ChangeLog format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/cvs.html">doctools::cvs</a></td>
<td class="#tocright">Processing text in 'cvs log' format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2base/html_cssdefaults.html">doctools::html::cssdefaults</a></td>
<td class="#tocright">Default CSS style for HTML export plugins</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/container.html">doctools::idx</a></td>
<td class="#tocright">Holding keyword indices</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/docidx.html">doctools::idx</a></td>
<td class="#tocright">docidx - Processing indices</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/export.html">doctools::idx::export</a></td>
<td class="#tocright">Exporting keyword indices</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/import.html">doctools::idx::import</a></td>
<td class="#tocright">Importing keyword indices</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/parse.html">doctools::idx::parse</a></td>
<td class="#tocright">Parsing text in docidx format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/structure.html">doctools::idx::structure</a></td>
<td class="#tocright">Docidx serialization utilities</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2base/tcllib_msgcat.html">doctools::msgcat</a></td>
<td class="#tocright">Message catalog management for the various document parsers</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/msgcat_c.html">doctools::msgcat::idx::c</a></td>
<td class="#tocright">Message catalog for the docidx parser (C)</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/msgcat_de.html">doctools::msgcat::idx::de</a></td>
<td class="#tocright">Message catalog for the docidx parser (DE)</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/msgcat_en.html">doctools::msgcat::idx::en</a></td>
<td class="#tocright">Message catalog for the docidx parser (EN)</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/msgcat_fr.html">doctools::msgcat::idx::fr</a></td>
<td class="#tocright">Message catalog for the docidx parser (FR)</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/msgcat_c.html">doctools::msgcat::toc::c</a></td>
<td class="#tocright">Message catalog for the doctoc parser (C)</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/msgcat_de.html">doctools::msgcat::toc::de</a></td>
<td class="#tocright">Message catalog for the doctoc parser (DE)</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/msgcat_en.html">doctools::msgcat::toc::en</a></td>
<td class="#tocright">Message catalog for the doctoc parser (EN)</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/msgcat_fr.html">doctools::msgcat::toc::fr</a></td>
<td class="#tocright">Message catalog for the doctoc parser (FR)</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2base/nroff_manmacros.html">doctools::nroff::man_macros</a></td>
<td class="#tocright">Default CSS style for NROFF export plugins</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2base/tcl_parse.html">doctools::tcl::parse</a></td>
<td class="#tocright">Processing text in 'subst -novariables' format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/container.html">doctools::toc</a></td>
<td class="#tocright">Holding tables of contents</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctoc.html">doctools::toc</a></td>
<td class="#tocright">doctoc - Processing tables of contents</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/export.html">doctools::toc::export</a></td>
<td class="#tocright">Exporting tables of contents</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/import.html">doctools::toc::import</a></td>
<td class="#tocright">Importing keyword indices</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/parse.html">doctools::toc::parse</a></td>
<td class="#tocright">Parsing text in doctoc format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/structure.html">doctools::toc::structure</a></td>
<td class="#tocright">Doctoc serialization utilities</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctools_intro.html">doctools_intro</a></td>
<td class="#tocright">doctools introduction</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctools_lang_cmdref.html">doctools_lang_cmdref</a></td>
<td class="#tocright">doctools language command reference</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctools_lang_faq.html">doctools_lang_faq</a></td>
<td class="#tocright">doctools language faq</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctools_lang_intro.html">doctools_lang_intro</a></td>
<td class="#tocright">doctools language introduction</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctools_lang_syntax.html">doctools_lang_syntax</a></td>
<td class="#tocright">doctools language syntax</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctools_plugin_apiref.html">doctools_plugin_apiref</a></td>
<td class="#tocright">doctools plugin API reference</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/dtplite/dtplite.html">dtplite</a></td>
<td class="#tocright">Lightweight DocTools Markup Processor</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/apps/dtplite.html">dtplite</a></td>
<td class="#tocright">Lightweight DocTools Markup Processor</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/mpexpand.html">mpexpand</a></td>
<td class="#tocright">Markup processor</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/apps/tcldocstrip.html">tcldocstrip</a></td>
<td class="#tocright">Tcl-based Docstrip Processor</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/textutil/expander.html">textutil::expander</a></td>
<td class="#tocright">Procedures to process templates and expand text.</td>
</tr>
</table></dl>
<dl><dt>File formats<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/exif/exif.html">exif</a></td>
<td class="#tocright">Tcl EXIF extracts and parses EXIF fields from digital images</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/gpx/gpx.html">gpx</a></td>
<td class="#tocright">Extracts waypoints, tracks and routes from GPX files</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/jpeg/jpeg.html">jpeg</a></td>
<td class="#tocright">JPEG querying and manipulation of meta data</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/png/png.html">png</a></td>
<td class="#tocright">PNG querying and manipulation of meta data</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/tar/tar.html">tar</a></td>
<td class="#tocright">Tar file creation, extraction &amp; manipulation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/tiff/tiff.html">tiff</a></td>
<td class="#tocright">TIFF reading, writing, and querying and manipulation of meta data</td>
</tr>
</table></dl>
<dl><dt>Grammars and finite automata<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_aycock/aycock.html">grammar::aycock</a></td>
<td class="#tocright">Aycock-Horspool-Earley parser generator for Tcl</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_fa/fa.html">grammar::fa</a></td>
<td class="#tocright">Create and manipulate finite automatons</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_fa/dacceptor.html">grammar::fa::dacceptor</a></td>
<td class="#tocright">Create and use deterministic acceptors</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_fa/dexec.html">grammar::fa::dexec</a></td>
<td class="#tocright">Execute deterministic finite automatons</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_fa/faop.html">grammar::fa::op</a></td>
<td class="#tocright">Operations on finite automatons</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_me/me_cpu.html">grammar::me::cpu</a></td>
<td class="#tocright">Virtual machine implementation II for parsing token streams</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_me/me_cpucore.html">grammar::me::cpu::core</a></td>
<td class="#tocright">ME virtual machine state manipulation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_me/gasm.html">grammar::me::cpu::gasm</a></td>
<td class="#tocright">ME assembler</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_me/me_tcl.html">grammar::me::tcl</a></td>
<td class="#tocright">Virtual machine implementation I for parsing token streams</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_me/me_util.html">grammar::me::util</a></td>
<td class="#tocright">AST utilities</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_me/me_ast.html">grammar::me_ast</a></td>
<td class="#tocright">Various representations of ASTs</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_me/me_intro.html">grammar::me_intro</a></td>
<td class="#tocright">Introduction to virtual machines for parsing token streams</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_me/me_vm.html">grammar::me_vm</a></td>
<td class="#tocright">Virtual machine for parsing token streams</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_peg/peg.html">grammar::peg</a></td>
<td class="#tocright">Create and manipulate parsing expression grammars</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_peg/peg_interp.html">grammar::peg::interp</a></td>
<td class="#tocright">Interpreter for parsing expression grammars</td>
</tr>
</table></dl>
<dl><dt>Hashes, checksums, and encryption<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/aes/aes.html">aes</a></td>
<td class="#tocright">Implementation of the AES block cipher</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/blowfish/blowfish.html">blowfish</a></td>
<td class="#tocright">Implementation of the Blowfish block cipher</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/crc/cksum.html">cksum</a></td>
<td class="#tocright">Calculate a cksum(1) compatible checksum</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/crc/crc16.html">crc16</a></td>
<td class="#tocright">Perform a 16bit Cyclic Redundancy Check</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/crc/crc32.html">crc32</a></td>
<td class="#tocright">Perform a 32bit Cyclic Redundancy Check</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/des/des.html">des</a></td>
<td class="#tocright">Implementation of the DES and triple-DES ciphers</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/md4/md4.html">md4</a></td>
<td class="#tocright">MD4 Message-Digest Algorithm</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/md5/md5.html">md5</a></td>
<td class="#tocright">MD5 Message-Digest Algorithm</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/md5crypt/md5crypt.html">md5crypt</a></td>
<td class="#tocright">MD5-based password encryption</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/otp/otp.html">otp</a></td>
<td class="#tocright">One-Time Passwords</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pki/pki.html">pki</a></td>
<td class="#tocright">Implementation of the public key cipher</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/rc4/rc4.html">rc4</a></td>
<td class="#tocright">Implementation of the RC4 stream cipher</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/ripemd/ripemd128.html">ripemd128</a></td>
<td class="#tocright">RIPEMD-128 Message-Digest Algorithm</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/ripemd/ripemd160.html">ripemd160</a></td>
<td class="#tocright">RIPEMD-160 Message-Digest Algorithm</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/sha1/sha1.html">sha1</a></td>
<td class="#tocright">SHA1 Message-Digest Algorithm</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/sha1/sha256.html">sha256</a></td>
<td class="#tocright">SHA256 Message-Digest Algorithm</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/soundex/soundex.html">soundex</a></td>
<td class="#tocright">Soundex</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/crc/sum.html">sum</a></td>
<td class="#tocright">Calculate a sum(1) compatible checksum</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/uuid/uuid.html">uuid</a></td>
<td class="#tocright">UUID generation and comparison</td>
</tr>
</table></dl>
<dl><dt>Mathematics<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/math.html">math</a></td>
<td class="#tocright">Tcl Math Library</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/math/bigfloat.html">math::bigfloat</a></td>
<td class="#tocright">Arbitrary precision floating-point numbers</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/bignum.html">math::bignum</a></td>
<td class="#tocright">Arbitrary precision integer numbers</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/math/calculus.html">math::calculus</a></td>
<td class="#tocright">Integration and ordinary differential equations</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/romberg.html">math::calculus::romberg</a></td>
<td class="#tocright">Romberg integration</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/math/combinatorics.html">math::combinatorics</a></td>
<td class="#tocright">Combinatorial functions in the Tcl Math Library</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/qcomplex.html">math::complexnumbers</a></td>
<td class="#tocright">Straightforward complex number package</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/math/constants.html">math::constants</a></td>
<td class="#tocright">Mathematical and numerical constants</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/decimal.html">math::decimal</a></td>
<td class="#tocright">General decimal arithmetic</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/math/fourier.html">math::fourier</a></td>
<td class="#tocright">Discrete and fast fourier transforms</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/fuzzy.html">math::fuzzy</a></td>
<td class="#tocright">Fuzzy comparison of floating-point numbers</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/math/math_geometry.html">math::geometry</a></td>
<td class="#tocright">Geometrical computations</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/interpolate.html">math::interpolate</a></td>
<td class="#tocright">Interpolation routines</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/math/linalg.html">math::linearalgebra</a></td>
<td class="#tocright">Linear Algebra</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/numtheory.html">math::numtheory</a></td>
<td class="#tocright">Number Theory</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/math/optimize.html">math::optimize</a></td>
<td class="#tocright">Optimisation routines</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/polynomials.html">math::polynomials</a></td>
<td class="#tocright">Polynomial functions</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/math/rational_funcs.html">math::rationalfunctions</a></td>
<td class="#tocright">Polynomial functions</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/roman.html">math::roman</a></td>
<td class="#tocright">Tools for creating and manipulating roman numerals</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/math/special.html">math::special</a></td>
<td class="#tocright">Special mathematical functions</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/statistics.html">math::statistics</a></td>
<td class="#tocright">Basic statistical functions and procedures</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/simulation/annealing.html">simulation::annealing</a></td>
<td class="#tocright">Simulated annealing</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/simulation/montecarlo.html">simulation::montecarlo</a></td>
<td class="#tocright">Monte Carlo simulations</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/simulation/simulation_random.html">simulation::random</a></td>
<td class="#tocright">Pseudo-random number generators</td>
</tr>
</table></dl>
<dl><dt>Networking<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/asn/asn.html">asn</a></td>
<td class="#tocright">ASN.1 BER encoder/decoder</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/http/autoproxy.html">autoproxy</a></td>
<td class="#tocright">Automatic HTTP proxy usage and authentication</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/bee/bee.html">bee</a></td>
<td class="#tocright">BitTorrent Serialization Format Encoder/Decoder</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/dns/tcllib_dns.html">dns</a></td>
<td class="#tocright">Tcl Domain Name Service Client</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/ftp/ftp.html">ftp</a></td>
<td class="#tocright">Client-side tcl implementation of the ftp protocol</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/ftp/ftp_geturl.html">ftp::geturl</a></td>
<td class="#tocright">Uri handler for ftp urls</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/ftpd/ftpd.html">ftpd</a></td>
<td class="#tocright">Tcl FTP server implementation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/ident/ident.html">ident</a></td>
<td class="#tocright">Ident protocol client</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/irc/irc.html">irc</a></td>
<td class="#tocright">Create IRC connection and interface.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/ldap/ldap.html">ldap</a></td>
<td class="#tocright">LDAP client</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/ldap/ldapx.html">ldapx</a></td>
<td class="#tocright">LDAP extended object interface</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/nns/nns_client.html">nameserv</a></td>
<td class="#tocright">Name service facility, Client</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/nns/nns_auto.html">nameserv::auto</a></td>
<td class="#tocright">Name service facility, Client Extension</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/nns/nns_common.html">nameserv::common</a></td>
<td class="#tocright">Name service facility, shared definitions</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/nns/nns_protocol.html">nameserv::protocol</a></td>
<td class="#tocright">Name service facility, client/server protocol</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/nns/nns_server.html">nameserv::server</a></td>
<td class="#tocright">Name service facility, Server</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/nmea/nmea.html">nmea</a></td>
<td class="#tocright">Process NMEA data</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/apps/nns.html">nns</a></td>
<td class="#tocright">Name service facility, Commandline Client Application</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/nns/nns_intro.html">nns_intro</a></td>
<td class="#tocright">Name service facility, introduction</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/apps/nnsd.html">nnsd</a></td>
<td class="#tocright">Name service facility, Commandline Server Application</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/apps/nnslog.html">nnslog</a></td>
<td class="#tocright">Name service facility, Commandline Logging Client Application</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/nntp/nntp.html">nntp</a></td>
<td class="#tocright">Tcl client for the NNTP protocol</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/ntp/ntp_time.html">ntp_time</a></td>
<td class="#tocright">Tcl Time Service Client</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/irc/picoirc.html">picoirc</a></td>
<td class="#tocright">Small and simple embeddable IRC client.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pop3/pop3.html">pop3</a></td>
<td class="#tocright">Tcl client for POP3 email protocol</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pop3d/pop3d.html">pop3d</a></td>
<td class="#tocright">Tcl POP3 server implementation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pop3d/pop3d_dbox.html">pop3d::dbox</a></td>
<td class="#tocright">Simple mailbox database for pop3d</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pop3d/pop3d_udb.html">pop3d::udb</a></td>
<td class="#tocright">Simple user database for pop3d</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/amazon-s3/S3.html">S3</a></td>
<td class="#tocright">Amazon S3 Web Service Interface</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/sasl/sasl.html">SASL</a></td>
<td class="#tocright">Implementation of SASL mechanisms for Tcl</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/mime/smtp.html">smtp</a></td>
<td class="#tocright">Client-side tcl implementation of the smtp protocol</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/smtpd/smtpd.html">smtpd</a></td>
<td class="#tocright">Tcl SMTP server implementation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/dns/tcllib_ip.html">tcllib_ip</a></td>
<td class="#tocright">IPv4 and IPv6 address manipulation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/uri/uri.html">uri</a></td>
<td class="#tocright">URI utilities</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/uri/urn-scheme.html">uri_urn</a></td>
<td class="#tocright">URI utilities, URN scheme</td>
</tr>
</table></dl>
<dl><dt>Page Parser Generator<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/apps/page.html">page</a></td>
<td class="#tocright">Parser Generator</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/page/page_intro.html">page_intro</a></td>
<td class="#tocright">page introduction</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/page/page_pluginmgr.html">page_pluginmgr</a></td>
<td class="#tocright">page plugin manager</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/page/page_util_flow.html">page_util_flow</a></td>
<td class="#tocright">page dataflow/treewalker utility</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/page/page_util_norm_lemon.html">page_util_norm_lemon</a></td>
<td class="#tocright">page AST normalization, LEMON</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/page/page_util_norm_peg.html">page_util_norm_peg</a></td>
<td class="#tocright">page AST normalization, PEG</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/page/page_util_peg.html">page_util_peg</a></td>
<td class="#tocright">page PEG transformation utilities</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/page/page_util_quote.html">page_util_quote</a></td>
<td class="#tocright">page character quoting utilities</td>
</tr>
</table></dl>
<dl><dt>Parsing and Grammars<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt.html">pt</a></td>
<td class="#tocright">Parser Tools Application</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_astree.html">pt::ast</a></td>
<td class="#tocright">Abstract Syntax Tree Serialization</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_cparam_config_critcl.html">pt::cparam::configuration::critcl</a></td>
<td class="#tocright">C/PARAM, Canned configuration, Critcl</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_json_language.html">pt::json_language</a></td>
<td class="#tocright">The JSON Grammar Exchange Format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_param.html">pt::param</a></td>
<td class="#tocright">PackRat Machine Specification</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_pexpression.html">pt::pe</a></td>
<td class="#tocright">Parsing Expression Serialization</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_pexpr_op.html">pt::pe::op</a></td>
<td class="#tocright">Parsing Expression Utilities</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_pegrammar.html">pt::peg</a></td>
<td class="#tocright">Parsing Expression Grammar Serialization</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_container.html">pt::peg::container</a></td>
<td class="#tocright">PEG Storage</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_container_peg.html">pt::peg::container::peg</a></td>
<td class="#tocright">PEG Storage. Canned PEG grammar specification</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_export.html">pt::peg::export</a></td>
<td class="#tocright">PEG Export</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_export_container.html">pt::peg::export::container</a></td>
<td class="#tocright">PEG Export Plugin. Write CONTAINER format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_export_json.html">pt::peg::export::json</a></td>
<td class="#tocright">PEG Export Plugin. Write JSON format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_export_peg.html">pt::peg::export::peg</a></td>
<td class="#tocright">PEG Export Plugin. Write PEG format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_from_container.html">pt::peg::from::container</a></td>
<td class="#tocright">PEG Conversion. From CONTAINER format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_from_json.html">pt::peg::from::json</a></td>
<td class="#tocright">PEG Conversion. Read JSON format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_from_peg.html">pt::peg::from::peg</a></td>
<td class="#tocright">PEG Conversion. Read PEG format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_import.html">pt::peg::import</a></td>
<td class="#tocright">PEG Import</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_import_container.html">pt::peg::import::container</a></td>
<td class="#tocright">PEG Import Plugin. From CONTAINER format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_import_json.html">pt::peg::import::json</a></td>
<td class="#tocright">PEG Import Plugin. Read JSON format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_import_peg.html">pt::peg::import::peg</a></td>
<td class="#tocright">PEG Import Plugin. Read PEG format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_interp.html">pt::peg::interp</a></td>
<td class="#tocright">Interpreter for parsing expression grammars</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_to_container.html">pt::peg::to::container</a></td>
<td class="#tocright">PEG Conversion. Write CONTAINER format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_to_cparam.html">pt::peg::to::cparam</a></td>
<td class="#tocright">PEG Conversion. Write CPARAM format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_to_json.html">pt::peg::to::json</a></td>
<td class="#tocright">PEG Conversion. Write JSON format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_to_param.html">pt::peg::to::param</a></td>
<td class="#tocright">PEG Conversion. Write PARAM format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_to_peg.html">pt::peg::to::peg</a></td>
<td class="#tocright">PEG Conversion. Write PEG format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_to_tclparam.html">pt::peg::to::tclparam</a></td>
<td class="#tocright">PEG Conversion. Write TCLPARAM format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_language.html">pt::peg_language</a></td>
<td class="#tocright">PEG Language Tutorial</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_introduction.html">pt::pegrammar</a></td>
<td class="#tocright">Introduction to Parsing Expression Grammars</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_pgen.html">pt::pgen</a></td>
<td class="#tocright">Parser Generator</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_rdengine.html">pt::rde</a></td>
<td class="#tocright">Parsing Runtime Support, PARAM based</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_tclparam_config_snit.html">pt::tclparam::configuration::snit</a></td>
<td class="#tocright">Tcl/PARAM, Canned configuration, Snit</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_tclparam_config_tcloo.html">pt::tclparam::configuration::tcloo</a></td>
<td class="#tocright">Tcl/PARAM, Canned configuration, Tcloo</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_to_api.html">pt_export_api</a></td>
<td class="#tocright">Parser Tools Export API</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_from_api.html">pt_import_api</a></td>
<td class="#tocright">Parser Tools Import API</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_introduction.html">pt_introduction</a></td>
<td class="#tocright">Introduction to Parser Tools</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_parser_api.html">pt_parser_api</a></td>
<td class="#tocright">Parser API</td>
</tr>
</table></dl>
<dl><dt>Procedures, arguments, parameters, options<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/tepam/tepam_introduction.html">tepam</a></td>
<td class="#tocright">An introduction into TEPAM, Tcl's Enhanced Procedure and Argument Manager</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/tepam/tepam_procedure.html">tepam::procedure</a></td>
<td class="#tocright">TEPAM procedure, reference manual</td>
</tr>
</table></dl>
<dl><dt>Programming tools<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/cmdline/cmdline.html">cmdline</a></td>
<td class="#tocright">Procedures to process command lines and options.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/comm/comm.html">comm</a></td>
<td class="#tocright">A remote communication facility for Tcl (8.3 and later)</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/comm/comm_wire.html">comm_wire</a></td>
<td class="#tocright">The comm wire protocol</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/control/control.html">control</a></td>
<td class="#tocright">Procedures for control flow structures.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/interp/deleg_method.html">deleg_method</a></td>
<td class="#tocright">Creation of comm delegates (snit methods)</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/interp/deleg_proc.html">deleg_proc</a></td>
<td class="#tocright">Creation of comm delegates (procedures)</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/fileutil/fileutil.html">fileutil</a></td>
<td class="#tocright">Procedures implementing some file utilities</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/fumagic/cfront.html">fileutil::magic::cfront</a></td>
<td class="#tocright">Generator core for compiler of magic(5) files</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/fumagic/cgen.html">fileutil::magic::cgen</a></td>
<td class="#tocright">Generator core for compiler of magic(5) files</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/fumagic/filetypes.html">fileutil::magic::filetype</a></td>
<td class="#tocright">Procedures implementing file-type recognition</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/fumagic/mimetypes.html">fileutil::magic::mimetype</a></td>
<td class="#tocright">Procedures implementing mime-type recognition</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/fumagic/rtcore.html">fileutil::magic::rt</a></td>
<td class="#tocright">Runtime core for file type recognition engines written in pure Tcl</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/fileutil/multi.html">fileutil::multi</a></td>
<td class="#tocright">Multi-file operation, scatter/gather, standard object</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/fileutil/multiop.html">fileutil::multi::op</a></td>
<td class="#tocright">Multi-file operation, scatter/gather</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/fileutil/traverse.html">fileutil_traverse</a></td>
<td class="#tocright">Iterative directory traversal</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/hook/hook.html">hook</a></td>
<td class="#tocright">Hooks</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/interp/tcllib_interp.html">interp</a></td>
<td class="#tocright">Interp creation and aliasing</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/log/log.html">log</a></td>
<td class="#tocright">Procedures to log messages of libraries and applications.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/log/logger.html">logger</a></td>
<td class="#tocright">System to control logging of events.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/log/loggerAppender.html">logger::appender</a></td>
<td class="#tocright">Collection of predefined appenders for logger</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/log/loggerUtils.html">logger::utils</a></td>
<td class="#tocright">Utilities for logger</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/multiplexer/multiplexer.html">multiplexer</a></td>
<td class="#tocright">One-to-many communication with sockets.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pluginmgr/pluginmgr.html">pluginmgr</a></td>
<td class="#tocright">Manage a plugin</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/profiler/profiler.html">profiler</a></td>
<td class="#tocright">Tcl source code profiler</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/snit/snit.html">snit</a></td>
<td class="#tocright">Snit's Not Incr Tcl</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/snit/snitfaq.html">snitfaq</a></td>
<td class="#tocright">Snit Frequently Asked Questions</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/stooop/stooop.html">stooop</a></td>
<td class="#tocright">Object oriented extension.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/tie/tie.html">tie</a></td>
<td class="#tocright">Array persistence</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/tie/tie_std.html">tie</a></td>
<td class="#tocright">Array persistence, standard data sources</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/uev/uevent.html">uevent</a></td>
<td class="#tocright">User events</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/wip/wip.html">wip</a></td>
<td class="#tocright">Word Interpreter</td>
</tr>
</table></dl>
<dl><dt>Terminal control<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/term/term.html">term</a></td>
<td class="#tocright">General terminal control</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/term/ansi_code.html">term::ansi::code</a></td>
<td class="#tocright">Helper for control sequences</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/term/ansi_cattr.html">term::ansi::code::attr</a></td>
<td class="#tocright">ANSI attribute sequences</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/term/ansi_cctrl.html">term::ansi::code::ctrl</a></td>
<td class="#tocright">ANSI control sequences</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/term/ansi_cmacros.html">term::ansi::code::macros</a></td>
<td class="#tocright">Macro sequences</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/term/ansi_ctrlu.html">term::ansi::ctrl::unix</a></td>
<td class="#tocright">Control operations and queries</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/term/ansi_send.html">term::ansi::send</a></td>
<td class="#tocright">Output of ANSI control sequences to terminals</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/term/imenu.html">term::interact::menu</a></td>
<td class="#tocright">Terminal widget, menu</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/term/ipager.html">term::interact::pager</a></td>
<td class="#tocright">Terminal widget, paging</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/term/receive.html">term::receive</a></td>
<td class="#tocright">General input from terminals</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/term/term_bind.html">term::receive::bind</a></td>
<td class="#tocright">Keyboard dispatch from terminals</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/term/term_send.html">term::send</a></td>
<td class="#tocright">General output to terminals</td>
</tr>
</table></dl>
<dl><dt>Text formatter plugin<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/export_docidx.html">doctools::idx::export::docidx</a></td>
<td class="#tocright">docidx export plugin</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/export_html.html">doctools::idx::export::html</a></td>
<td class="#tocright">HTML export plugin</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/export_json.html">doctools::idx::export::json</a></td>
<td class="#tocright">JSON export plugin</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/export_nroff.html">doctools::idx::export::nroff</a></td>
<td class="#tocright">nroff export plugin</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/export_text.html">doctools::idx::export::text</a></td>
<td class="#tocright">plain text export plugin</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/export_wiki.html">doctools::idx::export::wiki</a></td>
<td class="#tocright">wiki export plugin</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/import_docidx.html">doctools::idx::import::docidx</a></td>
<td class="#tocright">docidx import plugin</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/import_json.html">doctools::idx::import::json</a></td>
<td class="#tocright">JSON import plugin</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/export_doctoc.html">doctools::toc::export::doctoc</a></td>
<td class="#tocright">doctoc export plugin</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/export_html.html">doctools::toc::export::html</a></td>
<td class="#tocright">HTML export plugin</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/export_json.html">doctools::toc::export::json</a></td>
<td class="#tocright">JSON export plugin</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/export_nroff.html">doctools::toc::export::nroff</a></td>
<td class="#tocright">nroff export plugin</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/export_text.html">doctools::toc::export::text</a></td>
<td class="#tocright">plain text export plugin</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/export_wiki.html">doctools::toc::export::wiki</a></td>
<td class="#tocright">wiki export plugin</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/import_doctoc.html">doctools::toc::import::doctoc</a></td>
<td class="#tocright">doctoc import plugin</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/import_json.html">doctools::toc::import::json</a></td>
<td class="#tocright">JSON import plugin</td>
</tr>
</table></dl>
<dl><dt>Text processing<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/base64/ascii85.html">ascii85</a></td>
<td class="#tocright">ascii85-encode/decode binary data</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/base32/base32.html">base32</a></td>
<td class="#tocright">base32 standard encoding</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/base32/base32core.html">base32::core</a></td>
<td class="#tocright">Expanding basic base32 maps</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/base32/base32hex.html">base32::hex</a></td>
<td class="#tocright">base32 extended hex encoding</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/base64/base64.html">base64</a></td>
<td class="#tocright">base64-encode/decode binary data</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/bibtex/bibtex.html">bibtex</a></td>
<td class="#tocright">Parse bibtex files</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/clock/iso8601.html">clock_iso8601</a></td>
<td class="#tocright">Parsing ISO 8601 dates/times</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/clock/rfc2822.html">clock_rfc2822</a></td>
<td class="#tocright">Parsing ISO 8601 dates/times</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/csv/csv.html">csv</a></td>
<td class="#tocright">Procedures to handle CSV data.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/htmlparse/htmlparse.html">htmlparse</a></td>
<td class="#tocright">Procedures to parse HTML strings</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/inifile/ini.html">inifile</a></td>
<td class="#tocright">Parsing of Windows INI files</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/mime/mime.html">mime</a></td>
<td class="#tocright">Manipulation of MIME body parts</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/rcs/rcs.html">rcs</a></td>
<td class="#tocright">RCS low level utilities</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/string/token.html">string::token</a></td>
<td class="#tocright">Regex based iterative lexing</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/string/token_shell.html">string::token::shell</a></td>
<td class="#tocright">Parsing of shell command line</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/textutil/textutil.html">textutil</a></td>
<td class="#tocright">Procedures to manipulate texts and strings.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/textutil/adjust.html">textutil::adjust</a></td>
<td class="#tocright">Procedures to adjust, indent, and undent paragraphs</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/textutil/repeat.html">textutil::repeat</a></td>
<td class="#tocright">Procedures to repeat strings.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/textutil/textutil_split.html">textutil::split</a></td>
<td class="#tocright">Procedures to split texts</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/textutil/textutil_string.html">textutil::string</a></td>
<td class="#tocright">Procedures to manipulate texts and strings.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/textutil/tabify.html">textutil::tabify</a></td>
<td class="#tocright">Procedures to (un)tabify strings</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/textutil/trim.html">textutil::trim</a></td>
<td class="#tocright">Procedures to trim strings</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/base64/uuencode.html">uuencode</a></td>
<td class="#tocright">UU-encode/decode binary data</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/amazon-s3/xsxp.html">xsxp</a></td>
<td class="#tocright">eXtremely Simple Xml Parser</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/base64/yencode.html">yencode</a></td>
<td class="#tocright">Y-encode/decode binary data</td>
</tr>
</table></dl>
<dl><dt>Transfer module<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/transfer/connect.html">transfer::connect</a></td>
<td class="#tocright">Connection setup</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/transfer/copyops.html">transfer::copy</a></td>
<td class="#tocright">Data transfer foundation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/transfer/tqueue.html">transfer::copy::queue</a></td>
<td class="#tocright">Queued transfers</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/transfer/ddest.html">transfer::data::destination</a></td>
<td class="#tocright">Data destination</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/transfer/dsource.html">transfer::data::source</a></td>
<td class="#tocright">Data source</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/transfer/receiver.html">transfer::receiver</a></td>
<td class="#tocright">Data source</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/transfer/transmitter.html">transfer::transmitter</a></td>
<td class="#tocright">Data source</td>
</tr>
</table></dl>
<dl><dt>Unfiled<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/cache/async.html">cache::async</a></td>
<td class="#tocright">Asynchronous in-memory cache</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/generator/generator.html">generator</a></td>
<td class="#tocright">Procedures for creating and using generators.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/yaml/huddle.html">huddle</a></td>
<td class="#tocright">Create and manipulate huddle object</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/imap4/imap4.html">imap4</a></td>
<td class="#tocright">imap client-side tcl implementation of imap protocol</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/map/map_geocode_nominatim.html">map::geocode::nominatim</a></td>
<td class="#tocright">Resolving geographical names with a Nominatim service</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/map/map_slippy.html">map::slippy</a></td>
<td class="#tocright">Common code for slippy based map packages</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/map/map_slippy_cache.html">map::slippy::cache</a></td>
<td class="#tocright">Management of a tile cache in the local filesystem</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/map/map_slippy_fetcher.html">map::slippy::fetcher</a></td>
<td class="#tocright">Accessing a server providing tiles for slippy-based maps</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/mapproj/mapproj.html">mapproj</a></td>
<td class="#tocright">Map projection routines</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/math/symdiff.html">math::calculus::symdiff</a></td>
<td class="#tocright">Symbolic differentiation for Tcl</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/namespacex/namespacex.html">namespacex</a></td>
<td class="#tocright">Namespace utility commands</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/rest/rest.html">rest</a></td>
<td class="#tocright">define REST web APIs and call them inline or asychronously</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/stringprep/stringprep.html">stringprep</a></td>
<td class="#tocright">Implementation of stringprep</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/stringprep/stringprep_data.html">stringprep::data</a></td>
<td class="#tocright">stringprep data tables, generated, internal</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/machineparameters.html">tclrep/machineparameters</a></td>
<td class="#tocright">Compute double precision machine parameters.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/uev/uevent_onidle.html">uevent::onidle</a></td>
<td class="#tocright">Request merging and deferal to idle time</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/stringprep/unicode.html">unicode</a></td>
<td class="#tocright">Implementation of Unicode normalization</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/stringprep/unicode_data.html">unicode::data</a></td>
<td class="#tocright">unicode data tables, generated, internal</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/units/units.html">units</a></td>
<td class="#tocright">unit conversion</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/yaml/yaml.html">yaml</a></td>
<td class="#tocright">YAML Format Encoder/Decoder</td>
</tr>
</table></dl>
<dl><dt>Utility<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/lambda/lambda.html">lambda</a></td>
<td class="#tocright">Utility commands for anonymous procedures</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/ooutil/ooutil.html">oo::util</a></td>
<td class="#tocright">Utility commands for TclOO</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/try/tcllib_try.html">try</a></td>
<td class="#tocright">try - Trap and process errors and exceptions</td>
</tr>
</table></dl>
<dl><dt>Validation, Type checking<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/valtype_common.html">valtype::common</a></td>
<td class="#tocright">Validation, common code</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/cc_amex.html">valtype::creditcard::amex</a></td>
<td class="#tocright">Validation for AMEX creditcard number</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/cc_discover.html">valtype::creditcard::discover</a></td>
<td class="#tocright">Validation for Discover creditcard number</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/cc_mastercard.html">valtype::creditcard::mastercard</a></td>
<td class="#tocright">Validation for Mastercard creditcard number</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/cc_visa.html">valtype::creditcard::visa</a></td>
<td class="#tocright">Validation for VISA creditcard number</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/ean13.html">valtype::gs1::ean13</a></td>
<td class="#tocright">Validation for EAN13</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/iban.html">valtype::iban</a></td>
<td class="#tocright">Validation for IBAN</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/imei.html">valtype::imei</a></td>
<td class="#tocright">Validation for IMEI</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/isbn.html">valtype::isbn</a></td>
<td class="#tocright">Validation for ISBN</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/luhn.html">valtype::luhn</a></td>
<td class="#tocright">Validation for plain number with a LUHN checkdigit</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/luhn5.html">valtype::luhn5</a></td>
<td class="#tocright">Validation for plain number with a LUHN5 checkdigit</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/usnpi.html">valtype::usnpi</a></td>
<td class="#tocright">Validation for USNPI</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/verhoeff.html">valtype::verhoeff</a></td>
<td class="#tocright">Validation for plain number with a VERHOEFF checkdigit</td>
</tr>
</table></dl></table></dl>
</dl><hr></body></html>

Added embedded/www/toc1.html.











































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
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
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
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
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
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
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
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
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
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
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
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
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
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
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
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
1724
1725
1726
1727
1728
1729
1730
1731
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
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
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
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
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
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
<html><head>
<title> Table Of Contents </title>
</head>
<! -- Generated by tcllib/doctools/toc with format 'html'
   -->
<! -- CVS: $Id$ Table Of Contents
   -->
<body>
<hr> [
   <a href="../../../../home">Tcllib Home</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>
<h3> Table Of Contents </h3>
<hr><dl><dt><h2>  </h2><dd>
<dl><dt>Modules<dd>
<dl><dt>aes<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/aes/aes.html">aes</a></td>
<td class="#tocright">Implementation of the AES block cipher</td>
</tr>
</table></dl>
<dl><dt>amazon-s3<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/amazon-s3/S3.html">S3</a></td>
<td class="#tocright">Amazon S3 Web Service Interface</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/amazon-s3/xsxp.html">xsxp</a></td>
<td class="#tocright">eXtremely Simple Xml Parser</td>
</tr>
</table></dl>
<dl><dt>asn<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/asn/asn.html">asn</a></td>
<td class="#tocright">ASN.1 BER encoder/decoder</td>
</tr>
</table></dl>
<dl><dt>base32<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/base32/base32.html">base32</a></td>
<td class="#tocright">base32 standard encoding</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/base32/base32core.html">base32::core</a></td>
<td class="#tocright">Expanding basic base32 maps</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/base32/base32hex.html">base32::hex</a></td>
<td class="#tocright">base32 extended hex encoding</td>
</tr>
</table></dl>
<dl><dt>base64<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/base64/ascii85.html">ascii85</a></td>
<td class="#tocright">ascii85-encode/decode binary data</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/base64/base64.html">base64</a></td>
<td class="#tocright">base64-encode/decode binary data</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/base64/uuencode.html">uuencode</a></td>
<td class="#tocright">UU-encode/decode binary data</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/base64/yencode.html">yencode</a></td>
<td class="#tocright">Y-encode/decode binary data</td>
</tr>
</table></dl>
<dl><dt>bee<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/bee/bee.html">bee</a></td>
<td class="#tocright">BitTorrent Serialization Format Encoder/Decoder</td>
</tr>
</table></dl>
<dl><dt>bench<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/bench/bench.html">bench</a></td>
<td class="#tocright">bench - Processing benchmark suites</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/bench/bench_read.html">bench::in</a></td>
<td class="#tocright">bench::in - Reading benchmark results</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/bench/bench_wcsv.html">bench::out::csv</a></td>
<td class="#tocright">bench::out::csv - Formatting benchmark results as CSV</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/bench/bench_wtext.html">bench::out::text</a></td>
<td class="#tocright">bench::out::text - Formatting benchmark results as human readable text</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/bench/bench_intro.html">bench_intro</a></td>
<td class="#tocright">bench introduction</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/bench/bench_lang_intro.html">bench_lang_intro</a></td>
<td class="#tocright">bench language introduction</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/bench/bench_lang_spec.html">bench_lang_spec</a></td>
<td class="#tocright">bench language specification</td>
</tr>
</table></dl>
<dl><dt>bibtex<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/bibtex/bibtex.html">bibtex</a></td>
<td class="#tocright">Parse bibtex files</td>
</tr>
</table></dl>
<dl><dt>blowfish<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/blowfish/blowfish.html">blowfish</a></td>
<td class="#tocright">Implementation of the Blowfish block cipher</td>
</tr>
</table></dl>
<dl><dt>cache<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/cache/async.html">cache::async</a></td>
<td class="#tocright">Asynchronous in-memory cache</td>
</tr>
</table></dl>
<dl><dt>clock<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/clock/iso8601.html">clock_iso8601</a></td>
<td class="#tocright">Parsing ISO 8601 dates/times</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/clock/rfc2822.html">clock_rfc2822</a></td>
<td class="#tocright">Parsing ISO 8601 dates/times</td>
</tr>
</table></dl>
<dl><dt>cmdline<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/cmdline/cmdline.html">cmdline</a></td>
<td class="#tocright">Procedures to process command lines and options.</td>
</tr>
</table></dl>
<dl><dt>comm<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/comm/comm.html">comm</a></td>
<td class="#tocright">A remote communication facility for Tcl (8.3 and later)</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/comm/comm_wire.html">comm_wire</a></td>
<td class="#tocright">The comm wire protocol</td>
</tr>
</table></dl>
<dl><dt>control<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/control/control.html">control</a></td>
<td class="#tocright">Procedures for control flow structures.</td>
</tr>
</table></dl>
<dl><dt>coroutine<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/coroutine/coroutine.html">coroutine</a></td>
<td class="#tocright">Coroutine based event and IO handling</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/coroutine/coro_auto.html">coroutine::auto</a></td>
<td class="#tocright">Automatic event and IO coroutine awareness</td>
</tr>
</table></dl>
<dl><dt>counter<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/counter/counter.html">counter</a></td>
<td class="#tocright">Procedures for counters and histograms</td>
</tr>
</table></dl>
<dl><dt>crc<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/crc/cksum.html">cksum</a></td>
<td class="#tocright">Calculate a cksum(1) compatible checksum</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/crc/crc16.html">crc16</a></td>
<td class="#tocright">Perform a 16bit Cyclic Redundancy Check</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/crc/crc32.html">crc32</a></td>
<td class="#tocright">Perform a 32bit Cyclic Redundancy Check</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/crc/sum.html">sum</a></td>
<td class="#tocright">Calculate a sum(1) compatible checksum</td>
</tr>
</table></dl>
<dl><dt>csv<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/csv/csv.html">csv</a></td>
<td class="#tocright">Procedures to handle CSV data.</td>
</tr>
</table></dl>
<dl><dt>des<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/des/des.html">des</a></td>
<td class="#tocright">Implementation of the DES and triple-DES ciphers</td>
</tr>
</table></dl>
<dl><dt>dns<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/dns/tcllib_dns.html">dns</a></td>
<td class="#tocright">Tcl Domain Name Service Client</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/dns/tcllib_ip.html">tcllib_ip</a></td>
<td class="#tocright">IPv4 and IPv6 address manipulation</td>
</tr>
</table></dl>
<dl><dt>docstrip<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/docstrip/docstrip.html">docstrip</a></td>
<td class="#tocright">Docstrip style source code extraction</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/docstrip/docstrip_util.html">docstrip_util</a></td>
<td class="#tocright">Docstrip-related utilities</td>
</tr>
</table></dl>
<dl><dt>doctools<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/docidx_intro.html">docidx_intro</a></td>
<td class="#tocright">docidx introduction</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/docidx_lang_cmdref.html">docidx_lang_cmdref</a></td>
<td class="#tocright">docidx language command reference</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/docidx_lang_faq.html">docidx_lang_faq</a></td>
<td class="#tocright">docidx language faq</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/docidx_lang_intro.html">docidx_lang_intro</a></td>
<td class="#tocright">docidx language introduction</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/docidx_lang_syntax.html">docidx_lang_syntax</a></td>
<td class="#tocright">docidx language syntax</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/docidx_plugin_apiref.html">docidx_plugin_apiref</a></td>
<td class="#tocright">docidx plugin API reference</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctoc_intro.html">doctoc_intro</a></td>
<td class="#tocright">doctoc introduction</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctoc_lang_cmdref.html">doctoc_lang_cmdref</a></td>
<td class="#tocright">doctoc language command reference</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctoc_lang_faq.html">doctoc_lang_faq</a></td>
<td class="#tocright">doctoc language faq</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctoc_lang_intro.html">doctoc_lang_intro</a></td>
<td class="#tocright">doctoc language introduction</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctoc_lang_syntax.html">doctoc_lang_syntax</a></td>
<td class="#tocright">doctoc language syntax</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctoc_plugin_apiref.html">doctoc_plugin_apiref</a></td>
<td class="#tocright">doctoc plugin API reference</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctools.html">doctools</a></td>
<td class="#tocright">doctools - Processing documents</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/changelog.html">doctools::changelog</a></td>
<td class="#tocright">Processing text in Emacs ChangeLog format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/cvs.html">doctools::cvs</a></td>
<td class="#tocright">Processing text in 'cvs log' format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/docidx.html">doctools::idx</a></td>
<td class="#tocright">docidx - Processing indices</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctoc.html">doctools::toc</a></td>
<td class="#tocright">doctoc - Processing tables of contents</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctools_intro.html">doctools_intro</a></td>
<td class="#tocright">doctools introduction</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctools_lang_cmdref.html">doctools_lang_cmdref</a></td>
<td class="#tocright">doctools language command reference</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctools_lang_faq.html">doctools_lang_faq</a></td>
<td class="#tocright">doctools language faq</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctools_lang_intro.html">doctools_lang_intro</a></td>
<td class="#tocright">doctools language introduction</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctools_lang_syntax.html">doctools_lang_syntax</a></td>
<td class="#tocright">doctools language syntax</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/doctools_plugin_apiref.html">doctools_plugin_apiref</a></td>
<td class="#tocright">doctools plugin API reference</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools/mpexpand.html">mpexpand</a></td>
<td class="#tocright">Markup processor</td>
</tr>
</table></dl>
<dl><dt>doctools2base<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2base/html_cssdefaults.html">doctools::html::cssdefaults</a></td>
<td class="#tocright">Default CSS style for HTML export plugins</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2base/tcllib_msgcat.html">doctools::msgcat</a></td>
<td class="#tocright">Message catalog management for the various document parsers</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2base/nroff_manmacros.html">doctools::nroff::man_macros</a></td>
<td class="#tocright">Default CSS style for NROFF export plugins</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2base/tcl_parse.html">doctools::tcl::parse</a></td>
<td class="#tocright">Processing text in 'subst -novariables' format</td>
</tr>
</table></dl>
<dl><dt>doctools2idx<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/introduction.html">doctools2idx_introduction</a></td>
<td class="#tocright">DocTools - Keyword indices</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/container.html">doctools::idx</a></td>
<td class="#tocright">Holding keyword indices</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/export.html">doctools::idx::export</a></td>
<td class="#tocright">Exporting keyword indices</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/export_docidx.html">doctools::idx::export::docidx</a></td>
<td class="#tocright">docidx export plugin</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/export_html.html">doctools::idx::export::html</a></td>
<td class="#tocright">HTML export plugin</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/export_json.html">doctools::idx::export::json</a></td>
<td class="#tocright">JSON export plugin</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/export_nroff.html">doctools::idx::export::nroff</a></td>
<td class="#tocright">nroff export plugin</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/export_text.html">doctools::idx::export::text</a></td>
<td class="#tocright">plain text export plugin</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/export_wiki.html">doctools::idx::export::wiki</a></td>
<td class="#tocright">wiki export plugin</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/import.html">doctools::idx::import</a></td>
<td class="#tocright">Importing keyword indices</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/import_docidx.html">doctools::idx::import::docidx</a></td>
<td class="#tocright">docidx import plugin</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/import_json.html">doctools::idx::import::json</a></td>
<td class="#tocright">JSON import plugin</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/parse.html">doctools::idx::parse</a></td>
<td class="#tocright">Parsing text in docidx format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/structure.html">doctools::idx::structure</a></td>
<td class="#tocright">Docidx serialization utilities</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/msgcat_c.html">doctools::msgcat::idx::c</a></td>
<td class="#tocright">Message catalog for the docidx parser (C)</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/msgcat_de.html">doctools::msgcat::idx::de</a></td>
<td class="#tocright">Message catalog for the docidx parser (DE)</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/msgcat_en.html">doctools::msgcat::idx::en</a></td>
<td class="#tocright">Message catalog for the docidx parser (EN)</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2idx/msgcat_fr.html">doctools::msgcat::idx::fr</a></td>
<td class="#tocright">Message catalog for the docidx parser (FR)</td>
</tr>
</table></dl>
<dl><dt>doctools2toc<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/introduction.html">doctools2toc_introduction</a></td>
<td class="#tocright">DocTools - Tables of Contents</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/msgcat_c.html">doctools::msgcat::toc::c</a></td>
<td class="#tocright">Message catalog for the doctoc parser (C)</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/msgcat_de.html">doctools::msgcat::toc::de</a></td>
<td class="#tocright">Message catalog for the doctoc parser (DE)</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/msgcat_en.html">doctools::msgcat::toc::en</a></td>
<td class="#tocright">Message catalog for the doctoc parser (EN)</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/msgcat_fr.html">doctools::msgcat::toc::fr</a></td>
<td class="#tocright">Message catalog for the doctoc parser (FR)</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/container.html">doctools::toc</a></td>
<td class="#tocright">Holding tables of contents</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/export.html">doctools::toc::export</a></td>
<td class="#tocright">Exporting tables of contents</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/export_doctoc.html">doctools::toc::export::doctoc</a></td>
<td class="#tocright">doctoc export plugin</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/export_html.html">doctools::toc::export::html</a></td>
<td class="#tocright">HTML export plugin</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/export_json.html">doctools::toc::export::json</a></td>
<td class="#tocright">JSON export plugin</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/export_nroff.html">doctools::toc::export::nroff</a></td>
<td class="#tocright">nroff export plugin</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/export_text.html">doctools::toc::export::text</a></td>
<td class="#tocright">plain text export plugin</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/export_wiki.html">doctools::toc::export::wiki</a></td>
<td class="#tocright">wiki export plugin</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/import.html">doctools::toc::import</a></td>
<td class="#tocright">Importing keyword indices</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/import_doctoc.html">doctools::toc::import::doctoc</a></td>
<td class="#tocright">doctoc import plugin</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/import_json.html">doctools::toc::import::json</a></td>
<td class="#tocright">JSON import plugin</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/parse.html">doctools::toc::parse</a></td>
<td class="#tocright">Parsing text in doctoc format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/doctools2toc/structure.html">doctools::toc::structure</a></td>
<td class="#tocright">Doctoc serialization utilities</td>
</tr>
</table></dl>
<dl><dt>dtplite<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/dtplite/dtplite.html">dtplite</a></td>
<td class="#tocright">Lightweight DocTools Markup Processor</td>
</tr>
</table></dl>
<dl><dt>exif<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/exif/exif.html">exif</a></td>
<td class="#tocright">Tcl EXIF extracts and parses EXIF fields from digital images</td>
</tr>
</table></dl>
<dl><dt>fileutil<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/fileutil/fileutil.html">fileutil</a></td>
<td class="#tocright">Procedures implementing some file utilities</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/fileutil/multi.html">fileutil::multi</a></td>
<td class="#tocright">Multi-file operation, scatter/gather, standard object</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/fileutil/multiop.html">fileutil::multi::op</a></td>
<td class="#tocright">Multi-file operation, scatter/gather</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/fileutil/traverse.html">fileutil_traverse</a></td>
<td class="#tocright">Iterative directory traversal</td>
</tr>
</table></dl>
<dl><dt>ftp<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/ftp/ftp.html">ftp</a></td>
<td class="#tocright">Client-side tcl implementation of the ftp protocol</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/ftp/ftp_geturl.html">ftp::geturl</a></td>
<td class="#tocright">Uri handler for ftp urls</td>
</tr>
</table></dl>
<dl><dt>ftpd<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/ftpd/ftpd.html">ftpd</a></td>
<td class="#tocright">Tcl FTP server implementation</td>
</tr>
</table></dl>
<dl><dt>fumagic<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/fumagic/cfront.html">fileutil::magic::cfront</a></td>
<td class="#tocright">Generator core for compiler of magic(5) files</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/fumagic/cgen.html">fileutil::magic::cgen</a></td>
<td class="#tocright">Generator core for compiler of magic(5) files</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/fumagic/filetypes.html">fileutil::magic::filetype</a></td>
<td class="#tocright">Procedures implementing file-type recognition</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/fumagic/mimetypes.html">fileutil::magic::mimetype</a></td>
<td class="#tocright">Procedures implementing mime-type recognition</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/fumagic/rtcore.html">fileutil::magic::rt</a></td>
<td class="#tocright">Runtime core for file type recognition engines written in pure Tcl</td>
</tr>
</table></dl>
<dl><dt>generator<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/generator/generator.html">generator</a></td>
<td class="#tocright">Procedures for creating and using generators.</td>
</tr>
</table></dl>
<dl><dt>gpx<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/gpx/gpx.html">gpx</a></td>
<td class="#tocright">Extracts waypoints, tracks and routes from GPX files</td>
</tr>
</table></dl>
<dl><dt>grammar_aycock<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_aycock/aycock.html">grammar::aycock</a></td>
<td class="#tocright">Aycock-Horspool-Earley parser generator for Tcl</td>
</tr>
</table></dl>
<dl><dt>grammar_fa<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_fa/fa.html">grammar::fa</a></td>
<td class="#tocright">Create and manipulate finite automatons</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_fa/dacceptor.html">grammar::fa::dacceptor</a></td>
<td class="#tocright">Create and use deterministic acceptors</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_fa/dexec.html">grammar::fa::dexec</a></td>
<td class="#tocright">Execute deterministic finite automatons</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_fa/faop.html">grammar::fa::op</a></td>
<td class="#tocright">Operations on finite automatons</td>
</tr>
</table></dl>
<dl><dt>grammar_me<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_me/me_cpu.html">grammar::me::cpu</a></td>
<td class="#tocright">Virtual machine implementation II for parsing token streams</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_me/me_cpucore.html">grammar::me::cpu::core</a></td>
<td class="#tocright">ME virtual machine state manipulation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_me/gasm.html">grammar::me::cpu::gasm</a></td>
<td class="#tocright">ME assembler</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_me/me_tcl.html">grammar::me::tcl</a></td>
<td class="#tocright">Virtual machine implementation I for parsing token streams</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_me/me_util.html">grammar::me::util</a></td>
<td class="#tocright">AST utilities</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_me/me_ast.html">grammar::me_ast</a></td>
<td class="#tocright">Various representations of ASTs</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_me/me_intro.html">grammar::me_intro</a></td>
<td class="#tocright">Introduction to virtual machines for parsing token streams</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_me/me_vm.html">grammar::me_vm</a></td>
<td class="#tocright">Virtual machine for parsing token streams</td>
</tr>
</table></dl>
<dl><dt>grammar_peg<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_peg/peg.html">grammar::peg</a></td>
<td class="#tocright">Create and manipulate parsing expression grammars</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/grammar_peg/peg_interp.html">grammar::peg::interp</a></td>
<td class="#tocright">Interpreter for parsing expression grammars</td>
</tr>
</table></dl>
<dl><dt>hook<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/hook/hook.html">hook</a></td>
<td class="#tocright">Hooks</td>
</tr>
</table></dl>
<dl><dt>html<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/html/html.html">html</a></td>
<td class="#tocright">Procedures to generate HTML structures</td>
</tr>
</table></dl>
<dl><dt>htmlparse<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/htmlparse/htmlparse.html">htmlparse</a></td>
<td class="#tocright">Procedures to parse HTML strings</td>
</tr>
</table></dl>
<dl><dt>http<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/http/autoproxy.html">autoproxy</a></td>
<td class="#tocright">Automatic HTTP proxy usage and authentication</td>
</tr>
</table></dl>
<dl><dt>ident<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/ident/ident.html">ident</a></td>
<td class="#tocright">Ident protocol client</td>
</tr>
</table></dl>
<dl><dt>imap4<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/imap4/imap4.html">imap4</a></td>
<td class="#tocright">imap client-side tcl implementation of imap protocol</td>
</tr>
</table></dl>
<dl><dt>inifile<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/inifile/ini.html">inifile</a></td>
<td class="#tocright">Parsing of Windows INI files</td>
</tr>
</table></dl>
<dl><dt>interp<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/interp/deleg_method.html">deleg_method</a></td>
<td class="#tocright">Creation of comm delegates (snit methods)</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/interp/deleg_proc.html">deleg_proc</a></td>
<td class="#tocright">Creation of comm delegates (procedures)</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/interp/tcllib_interp.html">interp</a></td>
<td class="#tocright">Interp creation and aliasing</td>
</tr>
</table></dl>
<dl><dt>irc<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/irc/irc.html">irc</a></td>
<td class="#tocright">Create IRC connection and interface.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/irc/picoirc.html">picoirc</a></td>
<td class="#tocright">Small and simple embeddable IRC client.</td>
</tr>
</table></dl>
<dl><dt>javascript<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/javascript/javascript.html">javascript</a></td>
<td class="#tocright">Procedures to generate HTML and Java Script structures.</td>
</tr>
</table></dl>
<dl><dt>jpeg<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/jpeg/jpeg.html">jpeg</a></td>
<td class="#tocright">JPEG querying and manipulation of meta data</td>
</tr>
</table></dl>
<dl><dt>json<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/json/json.html">json</a></td>
<td class="#tocright">JSON parser</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/json/json_write.html">json::write</a></td>
<td class="#tocright">JSON generation</td>
</tr>
</table></dl>
<dl><dt>lambda<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/lambda/lambda.html">lambda</a></td>
<td class="#tocright">Utility commands for anonymous procedures</td>
</tr>
</table></dl>
<dl><dt>ldap<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/ldap/ldap.html">ldap</a></td>
<td class="#tocright">LDAP client</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/ldap/ldapx.html">ldapx</a></td>
<td class="#tocright">LDAP extended object interface</td>
</tr>
</table></dl>
<dl><dt>log<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/log/log.html">log</a></td>
<td class="#tocright">Procedures to log messages of libraries and applications.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/log/logger.html">logger</a></td>
<td class="#tocright">System to control logging of events.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/log/loggerAppender.html">logger::appender</a></td>
<td class="#tocright">Collection of predefined appenders for logger</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/log/loggerUtils.html">logger::utils</a></td>
<td class="#tocright">Utilities for logger</td>
</tr>
</table></dl>
<dl><dt>map<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/map/map_geocode_nominatim.html">map::geocode::nominatim</a></td>
<td class="#tocright">Resolving geographical names with a Nominatim service</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/map/map_slippy.html">map::slippy</a></td>
<td class="#tocright">Common code for slippy based map packages</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/map/map_slippy_cache.html">map::slippy::cache</a></td>
<td class="#tocright">Management of a tile cache in the local filesystem</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/map/map_slippy_fetcher.html">map::slippy::fetcher</a></td>
<td class="#tocright">Accessing a server providing tiles for slippy-based maps</td>
</tr>
</table></dl>
<dl><dt>mapproj<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/mapproj/mapproj.html">mapproj</a></td>
<td class="#tocright">Map projection routines</td>
</tr>
</table></dl>
<dl><dt>math<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/math.html">math</a></td>
<td class="#tocright">Tcl Math Library</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/math/bigfloat.html">math::bigfloat</a></td>
<td class="#tocright">Arbitrary precision floating-point numbers</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/bignum.html">math::bignum</a></td>
<td class="#tocright">Arbitrary precision integer numbers</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/math/calculus.html">math::calculus</a></td>
<td class="#tocright">Integration and ordinary differential equations</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/romberg.html">math::calculus::romberg</a></td>
<td class="#tocright">Romberg integration</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/math/symdiff.html">math::calculus::symdiff</a></td>
<td class="#tocright">Symbolic differentiation for Tcl</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/combinatorics.html">math::combinatorics</a></td>
<td class="#tocright">Combinatorial functions in the Tcl Math Library</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/math/qcomplex.html">math::complexnumbers</a></td>
<td class="#tocright">Straightforward complex number package</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/constants.html">math::constants</a></td>
<td class="#tocright">Mathematical and numerical constants</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/math/decimal.html">math::decimal</a></td>
<td class="#tocright">General decimal arithmetic</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/fourier.html">math::fourier</a></td>
<td class="#tocright">Discrete and fast fourier transforms</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/math/fuzzy.html">math::fuzzy</a></td>
<td class="#tocright">Fuzzy comparison of floating-point numbers</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/math_geometry.html">math::geometry</a></td>
<td class="#tocright">Geometrical computations</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/math/interpolate.html">math::interpolate</a></td>
<td class="#tocright">Interpolation routines</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/linalg.html">math::linearalgebra</a></td>
<td class="#tocright">Linear Algebra</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/math/numtheory.html">math::numtheory</a></td>
<td class="#tocright">Number Theory</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/optimize.html">math::optimize</a></td>
<td class="#tocright">Optimisation routines</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/math/polynomials.html">math::polynomials</a></td>
<td class="#tocright">Polynomial functions</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/rational_funcs.html">math::rationalfunctions</a></td>
<td class="#tocright">Polynomial functions</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/math/roman.html">math::roman</a></td>
<td class="#tocright">Tools for creating and manipulating roman numerals</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/special.html">math::special</a></td>
<td class="#tocright">Special mathematical functions</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/math/statistics.html">math::statistics</a></td>
<td class="#tocright">Basic statistical functions and procedures</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/math/machineparameters.html">tclrep/machineparameters</a></td>
<td class="#tocright">Compute double precision machine parameters.</td>
</tr>
</table></dl>
<dl><dt>md4<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/md4/md4.html">md4</a></td>
<td class="#tocright">MD4 Message-Digest Algorithm</td>
</tr>
</table></dl>
<dl><dt>md5<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/md5/md5.html">md5</a></td>
<td class="#tocright">MD5 Message-Digest Algorithm</td>
</tr>
</table></dl>
<dl><dt>md5crypt<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/md5crypt/md5crypt.html">md5crypt</a></td>
<td class="#tocright">MD5-based password encryption</td>
</tr>
</table></dl>
<dl><dt>mime<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/mime/mime.html">mime</a></td>
<td class="#tocright">Manipulation of MIME body parts</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/mime/smtp.html">smtp</a></td>
<td class="#tocright">Client-side tcl implementation of the smtp protocol</td>
</tr>
</table></dl>
<dl><dt>multiplexer<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/multiplexer/multiplexer.html">multiplexer</a></td>
<td class="#tocright">One-to-many communication with sockets.</td>
</tr>
</table></dl>
<dl><dt>namespacex<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/namespacex/namespacex.html">namespacex</a></td>
<td class="#tocright">Namespace utility commands</td>
</tr>
</table></dl>
<dl><dt>ncgi<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/ncgi/ncgi.html">ncgi</a></td>
<td class="#tocright">Procedures to manipulate CGI values.</td>
</tr>
</table></dl>
<dl><dt>nmea<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/nmea/nmea.html">nmea</a></td>
<td class="#tocright">Process NMEA data</td>
</tr>
</table></dl>
<dl><dt>nns<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/nns/nns_client.html">nameserv</a></td>
<td class="#tocright">Name service facility, Client</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/nns/nns_auto.html">nameserv::auto</a></td>
<td class="#tocright">Name service facility, Client Extension</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/nns/nns_common.html">nameserv::common</a></td>
<td class="#tocright">Name service facility, shared definitions</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/nns/nns_protocol.html">nameserv::protocol</a></td>
<td class="#tocright">Name service facility, client/server protocol</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/nns/nns_server.html">nameserv::server</a></td>
<td class="#tocright">Name service facility, Server</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/nns/nns_intro.html">nns_intro</a></td>
<td class="#tocright">Name service facility, introduction</td>
</tr>
</table></dl>
<dl><dt>nntp<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/nntp/nntp.html">nntp</a></td>
<td class="#tocright">Tcl client for the NNTP protocol</td>
</tr>
</table></dl>
<dl><dt>ntp<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/ntp/ntp_time.html">ntp_time</a></td>
<td class="#tocright">Tcl Time Service Client</td>
</tr>
</table></dl>
<dl><dt>ooutil<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/ooutil/ooutil.html">oo::util</a></td>
<td class="#tocright">Utility commands for TclOO</td>
</tr>
</table></dl>
<dl><dt>otp<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/otp/otp.html">otp</a></td>
<td class="#tocright">One-Time Passwords</td>
</tr>
</table></dl>
<dl><dt>page<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/page/page_intro.html">page_intro</a></td>
<td class="#tocright">page introduction</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/page/page_pluginmgr.html">page_pluginmgr</a></td>
<td class="#tocright">page plugin manager</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/page/page_util_flow.html">page_util_flow</a></td>
<td class="#tocright">page dataflow/treewalker utility</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/page/page_util_norm_lemon.html">page_util_norm_lemon</a></td>
<td class="#tocright">page AST normalization, LEMON</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/page/page_util_norm_peg.html">page_util_norm_peg</a></td>
<td class="#tocright">page AST normalization, PEG</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/page/page_util_peg.html">page_util_peg</a></td>
<td class="#tocright">page PEG transformation utilities</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/page/page_util_quote.html">page_util_quote</a></td>
<td class="#tocright">page character quoting utilities</td>
</tr>
</table></dl>
<dl><dt>pki<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pki/pki.html">pki</a></td>
<td class="#tocright">Implementation of the public key cipher</td>
</tr>
</table></dl>
<dl><dt>pluginmgr<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pluginmgr/pluginmgr.html">pluginmgr</a></td>
<td class="#tocright">Manage a plugin</td>
</tr>
</table></dl>
<dl><dt>png<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/png/png.html">png</a></td>
<td class="#tocright">PNG querying and manipulation of meta data</td>
</tr>
</table></dl>
<dl><dt>pop3<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pop3/pop3.html">pop3</a></td>
<td class="#tocright">Tcl client for POP3 email protocol</td>
</tr>
</table></dl>
<dl><dt>pop3d<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pop3d/pop3d.html">pop3d</a></td>
<td class="#tocright">Tcl POP3 server implementation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pop3d/pop3d_dbox.html">pop3d::dbox</a></td>
<td class="#tocright">Simple mailbox database for pop3d</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pop3d/pop3d_udb.html">pop3d::udb</a></td>
<td class="#tocright">Simple user database for pop3d</td>
</tr>
</table></dl>
<dl><dt>profiler<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/profiler/profiler.html">profiler</a></td>
<td class="#tocright">Tcl source code profiler</td>
</tr>
</table></dl>
<dl><dt>pt<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt.html">pt</a></td>
<td class="#tocright">Parser Tools Application</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_astree.html">pt::ast</a></td>
<td class="#tocright">Abstract Syntax Tree Serialization</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_cparam_config_critcl.html">pt::cparam::configuration::critcl</a></td>
<td class="#tocright">C/PARAM, Canned configuration, Critcl</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_json_language.html">pt::json_language</a></td>
<td class="#tocright">The JSON Grammar Exchange Format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_param.html">pt::param</a></td>
<td class="#tocright">PackRat Machine Specification</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_pexpression.html">pt::pe</a></td>
<td class="#tocright">Parsing Expression Serialization</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_pexpr_op.html">pt::pe::op</a></td>
<td class="#tocright">Parsing Expression Utilities</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_pegrammar.html">pt::peg</a></td>
<td class="#tocright">Parsing Expression Grammar Serialization</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_container.html">pt::peg::container</a></td>
<td class="#tocright">PEG Storage</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_container_peg.html">pt::peg::container::peg</a></td>
<td class="#tocright">PEG Storage. Canned PEG grammar specification</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_export.html">pt::peg::export</a></td>
<td class="#tocright">PEG Export</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_export_container.html">pt::peg::export::container</a></td>
<td class="#tocright">PEG Export Plugin. Write CONTAINER format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_export_json.html">pt::peg::export::json</a></td>
<td class="#tocright">PEG Export Plugin. Write JSON format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_export_peg.html">pt::peg::export::peg</a></td>
<td class="#tocright">PEG Export Plugin. Write PEG format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_from_container.html">pt::peg::from::container</a></td>
<td class="#tocright">PEG Conversion. From CONTAINER format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_from_json.html">pt::peg::from::json</a></td>
<td class="#tocright">PEG Conversion. Read JSON format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_from_peg.html">pt::peg::from::peg</a></td>
<td class="#tocright">PEG Conversion. Read PEG format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_import.html">pt::peg::import</a></td>
<td class="#tocright">PEG Import</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_import_container.html">pt::peg::import::container</a></td>
<td class="#tocright">PEG Import Plugin. From CONTAINER format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_import_json.html">pt::peg::import::json</a></td>
<td class="#tocright">PEG Import Plugin. Read JSON format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_import_peg.html">pt::peg::import::peg</a></td>
<td class="#tocright">PEG Import Plugin. Read PEG format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_interp.html">pt::peg::interp</a></td>
<td class="#tocright">Interpreter for parsing expression grammars</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_to_container.html">pt::peg::to::container</a></td>
<td class="#tocright">PEG Conversion. Write CONTAINER format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_to_cparam.html">pt::peg::to::cparam</a></td>
<td class="#tocright">PEG Conversion. Write CPARAM format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_to_json.html">pt::peg::to::json</a></td>
<td class="#tocright">PEG Conversion. Write JSON format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_to_param.html">pt::peg::to::param</a></td>
<td class="#tocright">PEG Conversion. Write PARAM format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_to_peg.html">pt::peg::to::peg</a></td>
<td class="#tocright">PEG Conversion. Write PEG format</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_to_tclparam.html">pt::peg::to::tclparam</a></td>
<td class="#tocright">PEG Conversion. Write TCLPARAM format</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_language.html">pt::peg_language</a></td>
<td class="#tocright">PEG Language Tutorial</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_peg_introduction.html">pt::pegrammar</a></td>
<td class="#tocright">Introduction to Parsing Expression Grammars</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_pgen.html">pt::pgen</a></td>
<td class="#tocright">Parser Generator</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_rdengine.html">pt::rde</a></td>
<td class="#tocright">Parsing Runtime Support, PARAM based</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_tclparam_config_snit.html">pt::tclparam::configuration::snit</a></td>
<td class="#tocright">Tcl/PARAM, Canned configuration, Snit</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_tclparam_config_tcloo.html">pt::tclparam::configuration::tcloo</a></td>
<td class="#tocright">Tcl/PARAM, Canned configuration, Tcloo</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_to_api.html">pt_export_api</a></td>
<td class="#tocright">Parser Tools Export API</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_from_api.html">pt_import_api</a></td>
<td class="#tocright">Parser Tools Import API</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_introduction.html">pt_introduction</a></td>
<td class="#tocright">Introduction to Parser Tools</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/pt/pt_parser_api.html">pt_parser_api</a></td>
<td class="#tocright">Parser API</td>
</tr>
</table></dl>
<dl><dt>rc4<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/rc4/rc4.html">rc4</a></td>
<td class="#tocright">Implementation of the RC4 stream cipher</td>
</tr>
</table></dl>
<dl><dt>rcs<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/rcs/rcs.html">rcs</a></td>
<td class="#tocright">RCS low level utilities</td>
</tr>
</table></dl>
<dl><dt>report<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/report/report.html">report</a></td>
<td class="#tocright">Create and manipulate report objects</td>
</tr>
</table></dl>
<dl><dt>rest<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/rest/rest.html">rest</a></td>
<td class="#tocright">define REST web APIs and call them inline or asychronously</td>
</tr>
</table></dl>
<dl><dt>ripemd<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/ripemd/ripemd128.html">ripemd128</a></td>
<td class="#tocright">RIPEMD-128 Message-Digest Algorithm</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/ripemd/ripemd160.html">ripemd160</a></td>
<td class="#tocright">RIPEMD-160 Message-Digest Algorithm</td>
</tr>
</table></dl>
<dl><dt>sasl<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/sasl/sasl.html">SASL</a></td>
<td class="#tocright">Implementation of SASL mechanisms for Tcl</td>
</tr>
</table></dl>
<dl><dt>sha1<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/sha1/sha1.html">sha1</a></td>
<td class="#tocright">SHA1 Message-Digest Algorithm</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/sha1/sha256.html">sha256</a></td>
<td class="#tocright">SHA256 Message-Digest Algorithm</td>
</tr>
</table></dl>
<dl><dt>simulation<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/simulation/annealing.html">simulation::annealing</a></td>
<td class="#tocright">Simulated annealing</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/simulation/montecarlo.html">simulation::montecarlo</a></td>
<td class="#tocright">Monte Carlo simulations</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/simulation/simulation_random.html">simulation::random</a></td>
<td class="#tocright">Pseudo-random number generators</td>
</tr>
</table></dl>
<dl><dt>smtpd<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/smtpd/smtpd.html">smtpd</a></td>
<td class="#tocright">Tcl SMTP server implementation</td>
</tr>
</table></dl>
<dl><dt>snit<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/snit/snit.html">snit</a></td>
<td class="#tocright">Snit's Not Incr Tcl</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/snit/snitfaq.html">snitfaq</a></td>
<td class="#tocright">Snit Frequently Asked Questions</td>
</tr>
</table></dl>
<dl><dt>soundex<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/soundex/soundex.html">soundex</a></td>
<td class="#tocright">Soundex</td>
</tr>
</table></dl>
<dl><dt>stooop<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/stooop/stooop.html">stooop</a></td>
<td class="#tocright">Object oriented extension.</td>
</tr>
</table></dl>
<dl><dt>string<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/string/token.html">string::token</a></td>
<td class="#tocright">Regex based iterative lexing</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/string/token_shell.html">string::token::shell</a></td>
<td class="#tocright">Parsing of shell command line</td>
</tr>
</table></dl>
<dl><dt>stringprep<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/stringprep/stringprep.html">stringprep</a></td>
<td class="#tocright">Implementation of stringprep</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/stringprep/stringprep_data.html">stringprep::data</a></td>
<td class="#tocright">stringprep data tables, generated, internal</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/stringprep/unicode.html">unicode</a></td>
<td class="#tocright">Implementation of Unicode normalization</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/stringprep/unicode_data.html">unicode::data</a></td>
<td class="#tocright">unicode data tables, generated, internal</td>
</tr>
</table></dl>
<dl><dt>struct<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/disjointset.html">struct::disjointset</a></td>
<td class="#tocright">Disjoint set data structure</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/graph.html">struct::graph</a></td>
<td class="#tocright">Create and manipulate directed graph objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/graphops.html">struct::graph::op</a></td>
<td class="#tocright">Operation for (un)directed graph objects</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/graph1.html">struct::graph_v1</a></td>
<td class="#tocright">Create and manipulate directed graph objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/struct_list.html">struct::list</a></td>
<td class="#tocright">Procedures for manipulating lists</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/matrix.html">struct::matrix</a></td>
<td class="#tocright">Create and manipulate matrix objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/matrix1.html">struct::matrix_v1</a></td>
<td class="#tocright">Create and manipulate matrix objects</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/pool.html">struct::pool</a></td>
<td class="#tocright">Create and manipulate pool objects (of discrete items)</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/prioqueue.html">struct::prioqueue</a></td>
<td class="#tocright">Create and manipulate prioqueue objects</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/queue.html">struct::queue</a></td>
<td class="#tocright">Create and manipulate queue objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/record.html">struct::record</a></td>
<td class="#tocright">Define and create records (similar to 'C' structures)</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/struct_set.html">struct::set</a></td>
<td class="#tocright">Procedures for manipulating sets</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/skiplist.html">struct::skiplist</a></td>
<td class="#tocright">Create and manipulate skiplists</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/stack.html">struct::stack</a></td>
<td class="#tocright">Create and manipulate stack objects</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/struct_tree.html">struct::tree</a></td>
<td class="#tocright">Create and manipulate tree objects</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/struct/struct_tree1.html">struct::tree_v1</a></td>
<td class="#tocright">Create and manipulate tree objects</td>
</tr>
</table></dl>
<dl><dt>tar<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/tar/tar.html">tar</a></td>
<td class="#tocright">Tar file creation, extraction &amp; manipulation</td>
</tr>
</table></dl>
<dl><dt>tepam<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/tepam/tepam_introduction.html">tepam</a></td>
<td class="#tocright">An introduction into TEPAM, Tcl's Enhanced Procedure and Argument Manager</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/tepam/tepam_argument_dialogbox.html">tepam::argument_dialogbox</a></td>
<td class="#tocright">TEPAM argument_dialogbox, reference manual</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/tepam/tepam_procedure.html">tepam::procedure</a></td>
<td class="#tocright">TEPAM procedure, reference manual</td>
</tr>
</table></dl>
<dl><dt>term<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/term/term.html">term</a></td>
<td class="#tocright">General terminal control</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/term/ansi_code.html">term::ansi::code</a></td>
<td class="#tocright">Helper for control sequences</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/term/ansi_cattr.html">term::ansi::code::attr</a></td>
<td class="#tocright">ANSI attribute sequences</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/term/ansi_cctrl.html">term::ansi::code::ctrl</a></td>
<td class="#tocright">ANSI control sequences</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/term/ansi_cmacros.html">term::ansi::code::macros</a></td>
<td class="#tocright">Macro sequences</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/term/ansi_ctrlu.html">term::ansi::ctrl::unix</a></td>
<td class="#tocright">Control operations and queries</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/term/ansi_send.html">term::ansi::send</a></td>
<td class="#tocright">Output of ANSI control sequences to terminals</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/term/imenu.html">term::interact::menu</a></td>
<td class="#tocright">Terminal widget, menu</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/term/ipager.html">term::interact::pager</a></td>
<td class="#tocright">Terminal widget, paging</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/term/receive.html">term::receive</a></td>
<td class="#tocright">General input from terminals</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/term/term_bind.html">term::receive::bind</a></td>
<td class="#tocright">Keyboard dispatch from terminals</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/term/term_send.html">term::send</a></td>
<td class="#tocright">General output to terminals</td>
</tr>
</table></dl>
<dl><dt>textutil<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/textutil/textutil.html">textutil</a></td>
<td class="#tocright">Procedures to manipulate texts and strings.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/textutil/adjust.html">textutil::adjust</a></td>
<td class="#tocright">Procedures to adjust, indent, and undent paragraphs</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/textutil/expander.html">textutil::expander</a></td>
<td class="#tocright">Procedures to process templates and expand text.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/textutil/repeat.html">textutil::repeat</a></td>
<td class="#tocright">Procedures to repeat strings.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/textutil/textutil_split.html">textutil::split</a></td>
<td class="#tocright">Procedures to split texts</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/textutil/textutil_string.html">textutil::string</a></td>
<td class="#tocright">Procedures to manipulate texts and strings.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/textutil/tabify.html">textutil::tabify</a></td>
<td class="#tocright">Procedures to (un)tabify strings</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/textutil/trim.html">textutil::trim</a></td>
<td class="#tocright">Procedures to trim strings</td>
</tr>
</table></dl>
<dl><dt>tie<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/tie/tie.html">tie</a></td>
<td class="#tocright">Array persistence</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/tie/tie_std.html">tie</a></td>
<td class="#tocright">Array persistence, standard data sources</td>
</tr>
</table></dl>
<dl><dt>tiff<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/tiff/tiff.html">tiff</a></td>
<td class="#tocright">TIFF reading, writing, and querying and manipulation of meta data</td>
</tr>
</table></dl>
<dl><dt>transfer<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/transfer/connect.html">transfer::connect</a></td>
<td class="#tocright">Connection setup</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/transfer/copyops.html">transfer::copy</a></td>
<td class="#tocright">Data transfer foundation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/transfer/tqueue.html">transfer::copy::queue</a></td>
<td class="#tocright">Queued transfers</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/transfer/ddest.html">transfer::data::destination</a></td>
<td class="#tocright">Data destination</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/transfer/dsource.html">transfer::data::source</a></td>
<td class="#tocright">Data source</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/transfer/receiver.html">transfer::receiver</a></td>
<td class="#tocright">Data source</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/transfer/transmitter.html">transfer::transmitter</a></td>
<td class="#tocright">Data source</td>
</tr>
</table></dl>
<dl><dt>treeql<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/treeql/treeql.html">treeql</a></td>
<td class="#tocright">Query tree objects</td>
</tr>
</table></dl>
<dl><dt>try<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/try/tcllib_try.html">try</a></td>
<td class="#tocright">try - Trap and process errors and exceptions</td>
</tr>
</table></dl>
<dl><dt>uev<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/uev/uevent.html">uevent</a></td>
<td class="#tocright">User events</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/uev/uevent_onidle.html">uevent::onidle</a></td>
<td class="#tocright">Request merging and deferal to idle time</td>
</tr>
</table></dl>
<dl><dt>units<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/units/units.html">units</a></td>
<td class="#tocright">unit conversion</td>
</tr>
</table></dl>
<dl><dt>uri<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/uri/uri.html">uri</a></td>
<td class="#tocright">URI utilities</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/uri/urn-scheme.html">uri_urn</a></td>
<td class="#tocright">URI utilities, URN scheme</td>
</tr>
</table></dl>
<dl><dt>uuid<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/uuid/uuid.html">uuid</a></td>
<td class="#tocright">UUID generation and comparison</td>
</tr>
</table></dl>
<dl><dt>valtype<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/valtype_common.html">valtype::common</a></td>
<td class="#tocright">Validation, common code</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/cc_amex.html">valtype::creditcard::amex</a></td>
<td class="#tocright">Validation for AMEX creditcard number</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/cc_discover.html">valtype::creditcard::discover</a></td>
<td class="#tocright">Validation for Discover creditcard number</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/cc_mastercard.html">valtype::creditcard::mastercard</a></td>
<td class="#tocright">Validation for Mastercard creditcard number</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/cc_visa.html">valtype::creditcard::visa</a></td>
<td class="#tocright">Validation for VISA creditcard number</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/ean13.html">valtype::gs1::ean13</a></td>
<td class="#tocright">Validation for EAN13</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/iban.html">valtype::iban</a></td>
<td class="#tocright">Validation for IBAN</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/imei.html">valtype::imei</a></td>
<td class="#tocright">Validation for IMEI</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/isbn.html">valtype::isbn</a></td>
<td class="#tocright">Validation for ISBN</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/luhn.html">valtype::luhn</a></td>
<td class="#tocright">Validation for plain number with a LUHN checkdigit</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/luhn5.html">valtype::luhn5</a></td>
<td class="#tocright">Validation for plain number with a LUHN5 checkdigit</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/usnpi.html">valtype::usnpi</a></td>
<td class="#tocright">Validation for USNPI</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/valtype/verhoeff.html">valtype::verhoeff</a></td>
<td class="#tocright">Validation for plain number with a VERHOEFF checkdigit</td>
</tr>
</table></dl>
<dl><dt>virtchannel_base<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/cat.html">tcl::chan::cat</a></td>
<td class="#tocright">Concatenation channel</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/facade.html">tcl::chan::facade</a></td>
<td class="#tocright">Facade channel</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/fifo.html">tcl::chan::fifo</a></td>
<td class="#tocright">In-memory fifo channel</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/fifo2.html">tcl::chan::fifo2</a></td>
<td class="#tocright">In-memory interconnected fifo channels</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/halfpipe.html">tcl::chan::halfpipe</a></td>
<td class="#tocright">In-memory channel, half of a fifo2</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/memchan.html">tcl::chan::memchan</a></td>
<td class="#tocright">In-memory channel</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/null.html">tcl::chan::null</a></td>
<td class="#tocright">Null channel</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/nullzero.html">tcl::chan::nullzero</a></td>
<td class="#tocright">Null/Zero channel combination</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/random.html">tcl::chan::random</a></td>
<td class="#tocright">Random channel</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/randseed.html">tcl::chan::randseed</a></td>
<td class="#tocright">Utilities for random channels</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/std.html">tcl::chan::std</a></td>
<td class="#tocright">Standard I/O, unification of stdin and stdout</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/string.html">tcl::chan::string</a></td>
<td class="#tocright">Read-only in-memory channel</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/textwindow.html">tcl::chan::textwindow</a></td>
<td class="#tocright">Textwindow channel</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/variable.html">tcl::chan::variable</a></td>
<td class="#tocright">In-memory channel using variable for storage</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_base/zero.html">tcl::chan::zero</a></td>
<td class="#tocright">Zero channel</td>
</tr>
</table></dl>
<dl><dt>virtchannel_core<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_core/core.html">tcl::chan::core</a></td>
<td class="#tocright">Basic reflected/virtual channel support</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_core/events.html">tcl::chan::events</a></td>
<td class="#tocright">Event support for reflected/virtual channels</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_core/transformcore.html">tcl::transform::core</a></td>
<td class="#tocright">Basic reflected/virtual channel transform support</td>
</tr>
</table></dl>
<dl><dt>virtchannel_transform<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/adler32.html">tcl::transform::adler32</a></td>
<td class="#tocright">Adler32 transformation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/base64.html">tcl::transform::base64</a></td>
<td class="#tocright">Base64 encoding transformation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/counter.html">tcl::transform::counter</a></td>
<td class="#tocright">Counter transformation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/crc32.html">tcl::transform::crc32</a></td>
<td class="#tocright">Crc32 transformation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/hex.html">tcl::transform::hex</a></td>
<td class="#tocright">Hexadecimal encoding transformation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/identity.html">tcl::transform::identity</a></td>
<td class="#tocright">Identity transformation</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/limitsize.html">tcl::transform::limitsize</a></td>
<td class="#tocright">limiting input</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/observe.html">tcl::transform::observe</a></td>
<td class="#tocright">Observer transformation, stream copy</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/otp.html">tcl::transform::otp</a></td>
<td class="#tocright">Encryption via one-time pad</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/rot.html">tcl::transform::rot</a></td>
<td class="#tocright">rot-encryption</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/spacer.html">tcl::transform::spacer</a></td>
<td class="#tocright">Space insertation and removal</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/virtchannel_transform/zlib.html">tcl::transform::zlib</a></td>
<td class="#tocright">zlib (de)compression</td>
</tr>
</table></dl>
<dl><dt>wip<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/wip/wip.html">wip</a></td>
<td class="#tocright">Word Interpreter</td>
</tr>
</table></dl>
<dl><dt>yaml<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/yaml/huddle.html">huddle</a></td>
<td class="#tocright">Create and manipulate huddle object</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/modules/yaml/yaml.html">yaml</a></td>
<td class="#tocright">YAML Format Encoder/Decoder</td>
</tr>
</table></dl></table></dl>
</dl><hr></body></html>

Added embedded/www/toc2.html.



























































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
<html><head>
<title> Table Of Contents </title>
</head>
<! -- Generated by tcllib/doctools/toc with format 'html'
   -->
<! -- CVS: $Id$ Table Of Contents
   -->
<body>
<hr> [
   <a href="../../../../home">Tcllib Home</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>
<h3> Table Of Contents </h3>
<hr><dl><dt><h2>  </h2><dd>
<dl><dt>Applications<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/apps/dtplite.html">dtplite</a></td>
<td class="#tocright">Lightweight DocTools Markup Processor</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/apps/nns.html">nns</a></td>
<td class="#tocright">Name service facility, Commandline Client Application</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/apps/nnsd.html">nnsd</a></td>
<td class="#tocright">Name service facility, Commandline Server Application</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/apps/nnslog.html">nnslog</a></td>
<td class="#tocright">Name service facility, Commandline Logging Client Application</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/apps/page.html">page</a></td>
<td class="#tocright">Parser Generator</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="tcllib/files/apps/tcldocstrip.html">tcldocstrip</a></td>
<td class="#tocright">Tcl-based Docstrip Processor</td>
</tr>
</table></dl>
</dl><hr></body></html>

Added 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
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
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
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
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin dtplite n 1.0]
[copyright {2004 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]
[list_begin enumerated]
[enum]
Validation of a single document, i.e. checking that it was written in
valid doctools format. This mode can also be used to get a preliminary
version of the formatted output for a single document, for display in
a browser, nroff, etc., allowing proofreading of the formatting.

[enum]
Generation of the formatted documentation for a single package,
i.e. all the manpages, plus a table of contents and an index of
keywords.

[enum]
An extension of the previous mode of operation, a method for the easy
generation of one documentation tree for several packages, and
especially of a unified table of contents and keyword index.

[list_end]

[para]

Beyond the above we also want to make use of the customization
features provided by the HTML formatter. It is not the only format the
application should be able to generate, but we anticipiate it to be
the most commonly used, and it is one of the few which do provide
customization hooks.

[para]

We allow the caller to specify a header string, footer string, a
stylesheet, and data for a bar of navigation links at the top of the
generated document.

While all can be set as long as the formatting engine provides an
appropriate engine parameter (See section [sectref OPTIONS]) the last
two have internal processing which make them specific to HTML.

[subsection {COMMAND LINE}]

[list_begin definitions]

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

This is the form for use case [lb]1[rb]. The [arg options] will be
explained later, in section [sectref OPTIONS].

[list_begin arguments]

[arg_def path output in]

This argument specifies where to write the generated document. It can
be the path to a file or directory, or [const -].

The last value causes the application to write the generated
documented to [const stdout].

[para]

If the [arg output] does not exist then [lb]file dirname $output[rb]
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]

Each such call will merge the generated documents coming from
processing the input documents under [arg inputdirectory] or any of
its subdirectories to the files under [arg output]. In this manner it
is possible to incrementally build the unified documentation for any
number of packages. Note that it is necessary to run through all the
packages twice to get fully correct cross-references (for formats
supporting them).

[list_end]

[subsection OPTIONS]

This section describes all the options available to the user of the
application, with

the exception of the options [option -o] and [option -merge]. These
two were described already, in section [sectref {COMMAND LINE}].

[para]
[list_begin options]
[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
parameter. The HTML engine will insert this inot the document, just
after the tag [const <head>].

[para]

When processing an input directory the stylesheet file is copied into
the output directory and the generated HTML will refer to the copy, to
make the result more self-contained. When processing an input file we
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 -nav "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 first definition shown at the left
edge and the last definition to the right.

[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.

[para]

[emph {Note a limitation}]: If treating the format as path to the tcl
script implementing the engine was sucessful, then this script has to
implement not only the engine API for doctools, i.e.

[term doctools_api], but for [term doctoc_api] and [term docidx_api]
as well. Otherwise the generation of a table of contents and of a
keyword index will fail.

[para]

List of predefined formats, i.e. as provided by the
package [package doctools]:

[para]
[list_begin definitions]

[def [const nroff]]

The processor generates *roff output, the standard format for unix
manpages.

[def [const html]]

The processor generates HTML output, for usage in and display by web
browsers. This engine is currently the only one providing the various
engine parameters required for the additional customaization of the
output.

[def [const tmml]]

The processor generates TMML output, the Tcl Manpage Markup Language,
a derivative of XML.

[def [const latex]]

The processor generates LaTeX output.

[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].

[list_begin definitions]

[def "[lb]2[rb]"]

The following directory structure is created when processing a single
set of input documents.  The file extension used is for output in
HTML, but that is not relevant to the structure and was just used to
have proper file names.

[example {
    output/
        toc.html
        index.html
        files/
            path/to/FOO.html
}]

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 {
    output
        .toc
        .idx
        .tocdoc
        .idxdoc
        .xrf
        toc.html
        index.html
        FOO1/
            ...
        FOO2/
            toc.html
            files/
                path/to/BAR.html
}]

Each of the directories FOO1, ... contains the documents generated for
the package FOO1, ... and follows the structure shown for use case
[lb]2[rb]. The only exception is that there is no per-package index.

[para]

The files [file .toc], [file .idx], and [file .xrf] contain the
internal status of the whole output and will be read and updated by
the next invokation. Their contents will not be documented. Remove
these files when all packages wanted for the output have been
processed, i.e. when the output is complete.

[para]

The files [file .tocdoc], and [file .idxdoc], are intermediate files
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.

[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]

Added modules/dtplite/dtplite.tcl.







































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
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
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
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
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
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
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
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
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
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
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
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
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
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
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
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
#! /bin/sh
# -*- tcl -*- \
exec tclsh "$0" ${1+"$@"}

# @@ Meta Begin
# Application dtplite 1.0.4
# Meta platform     tcl
# Meta summary      Lightweight DocTools Processor
# Meta description  This application is a simple processor
# Meta description  for documents written in the doctools
# Meta description  markup language. It covers the most
# Meta description  common use cases, but is not as
# Meta description  configurable as its big brother dtp.
# Meta category     Processing doctools documents
# Meta subject      doctools doctoc docidx
# Meta require      {doctools 1}
# Meta require      {doctools::idx 1}
# Meta require      {doctools::toc 1}
# Meta require      fileutil
# Meta require      textutil::repeat
# Meta author       Andreas Kupries
# Meta license      BSD
# @@ Meta End

package provide dtplite 1.0.4

# dtp lite - Lightweight DocTools Processor
# ======== = ==============================
#
# Use cases
# ---------
#
# (1)	Validation of a single manpage, i.e. checking that it is valid
#	doctools format.
#
# (1a)	Getting a preliminary version of the formatted output, for
#	display in a browser, nroff, etc., proofreading the
#	formatting.
#
# (2)	Generate documentation for a single package, i.e. all the
#	manpages, plus index and table of contents.
#
# (3)	Generation of unified documentation for several
#	packages. Especially unified keyword index and table of
#	contents. This may additionally generate per-package TOCs
#	as well (Per-package indices don't make sense IMHO).
#
# Command syntax
# --------------
#
# Ad 1)	dtplite -o output format file
#
#	The option -o specifies where to write the output to. Using
#	the string "-" as name of the output file causes the tool to
#	write the generated data to stdout. If $output is a directory
#	then a file named [[file rootname $file].$format] is written
#	to the directory.

# Ad 1a)	dtplite validate file
#
#	The "validate" format does not generate output at all, only
#	syntax checking is performed.
#
# Ad 2)	dtplite -o output format directory
#
#	I.e. we distinguish (2) from (1) by the type of the input,
#	file, or directory. In this situation output has to be a
#	directory. Use the path "." to place the results into the
#	current directory.
#
#	We locate _all_ files under directory, i.e. all subdirectories
#	are scanned as well. We replicate the found directory
#	structure in the output (See example below). The index and
#	table of contents are written to the toplevel directory in the
#	output. The names are hardwired to "toc.$format" and
#	"index.$format".
#
# Ad 3)	dtplite -merge -o output format directory
#
#	This can be treated as special case of (2). The -merge option
#	tells it that the output is nested one level deeper, to keep a
#	global toc and index in the toplevel and to merge the package
#	toc and index into them.
#
#	This way the global documents are built up incrementally. This
#	can help us in a future extended installer as well!, extending
#	a global documentation tree of all installed packages.
#
# Additional features.
#
# *	As described above the format name is used as the extension
#	for the generated files. Does it make sense to introduce an
#	option with which we can overide this, or should we simply
#	extect that a calling script does a proper renaming of all the
#	files ?  ... The option is better. In HTML output we have
#	links between the files, and renaming from the outside just
#	breaks the links. This option is '-ext'. It is ignored if the
#	output is a single file (fully specified via -o), or stdout.
#
#	-ext extension
#
# *	Most of the formats don't need much/none of customizability.
#	I.e. text, nroff, wiki, tmml, ...  For HTML however some
#	degree of customizability is required for good output.  What
#	should we given to the user ?
#
#	- Allow setting of a stylesheet.
#	- Allow integration of custom body header and footer html.
#	- Allow additional links for the navigation bar.
#
#	Note: The tool generates standard navigation bars to link the
#	all tocs, indices, and pages together.
#
#	-style file
#	-header file
#	-footer file
#	-nav label url
#	-prenav label url
#	-postnav label url
#
# *	The application may mis-detect files as doctools input.
#	And we cannot always mark them as non-doctools because
#	they may be such. Test cases, for example. To exclude
#	these we have the option '-exclude' taking a glob pattern.
#	Multiple uses of the option accumulate.
#
#	-exclude glob
#
# *	For tcllib itself we have external tools generating a nicer
#	TOC. Use option -toc to specify the doctoc file to use
#	_instead_ of generating our own. And using option -post+toc
#	and -pre+toc to _add_ more special toc's to the main
#	navbar. These latter mix with the -pre- and -postnav options.
#
#	-toc            path|text
#	-post+toc label path|text
#	-pre+toc label path|text
#
# That should be enough to allow the creation of good looking formatted
# documentation without getting overly complex in both implementation
# and use.

package require doctools      1.4.11 ; # 'image' support, -ibase support
package require doctools::idx 1.0.4 ;
package require doctools::toc 1.1.3 ;
package require fileutil
package require textutil::repeat

# ### ### ### ######### ######### #########
## Internal data and status

namespace eval ::dtplite {
    variable print ::puts

    # Path to where the output goes to. This is a file in case of mode
    # 'file', irrelevant for mode 'file.stdout', and the directory for
    # all the generated files for the two directory modes. Specified
    # through the mandatory option '-o'.

    variable  output ""

    # Path to where the documents to convert come from. This is a
    # single file in the case of the two file modes, and a directory
    # for the directory modes. In the later case all files under that
    # directory are significant, including links, if identifiable as
    # in doctools format (fileutil::fileType). Specified through the
    # last argument on the command line. The relative path of a file
    # under 'input' also becomes its relative path under 'output'.

    variable  input  ""

    # The extension to use for the generated files. Ignored by the
    # file modes, as for them they either don't generate a file, or
    # know its full name already, i.e. including any wanted
    # extension. Set via option '-ext'. Defaults to the format name if
    # '-ext' was not used.

    variable  ext    ""

    # Optional. HTML specific, requires engine parameter 'meta'. Path
    # to a stylesheet file to use in the output. The file modes link
    # to it using the original location, but the directory modes copy
    # the file into the 'output' and link it there (to make the
    # 'output' more selfcontained). Initially set via option '-style'.

    variable  style  ""

    # Optional. Path to a file. Contents of the file are assigned to
    # engine parameter 'header', if present. If navigation buttons
    # were defined their HTML will be appended to the file contents
    # before doing the assignment. A specification is ignored if the
    # engine does not support the parameter 'header'. Set via option
    # '-header'.

    variable  header ""

    # Like header, but for the document footer, and no navigation bar
    # insert. Set via option '-footer', requires engine parameter
    # 'footer'.

    variable  footer ""

    # List of buttons/links for a navigation bar. No navigation bar is
    # created if this is empty. HTML specific, requires engine
    # parameter 'header' (The navigation bar is merged with the
    # 'header' data, see above). Each element of the list is a
    # 2-element list, containing the button label and url, in this
    # order. Initial data comes from the command line, via options
    # '-nav', '-prenav', and '-postnav'. The commands 'Navbutton(Push|Pop)'
    # then allow the programmatic addition and removal of buttons at
    # the left (stack like, top at end index). This is used for the
    # insertion of links to TOC and Index into each document, if
    # applicable.

    variable  nav     {}
    variable  prenav  {}
    variable  postnav {}

    # The name of the format to convert the doctools documents
    # into. Set via the next-to-last argument on the command
    # line. Used as extension for the generated files as well by the
    # directory modes, and if not overridden via '-ext'. See 'ext'
    # above.

    variable  format ""

    # Boolean flag. Set by the option '-merge'. Ignored when a file
    # mode is detected, but for a directory it determines the
    # difference between the two directory modes, i.e. plain
    # generation, or incremental merging of many inputs into one
    # output.

    variable  merge  0

    # Boolean flag. Automatically set by code distinguishing between
    # file and directory modes. Set for a the file modes, unset for
    # the directory modes.

    variable  single 1

    # Boolean flag. Automatically set by the code processing the '-o'
    # option. Set if output is '-', unset otherwise. Ignored for the
    # directory modes. Distinguished between the two file modes, i.e.
    # writing to a file (unset), or stdout (set).

    variable  stdout 0

    # Name of the found processing mode. Derived from the values of
    # the three boolean flags (merge, single, stdout). This value is
    # used during the dispatch to the command implementing the mode,
    # after processing the command line.
    #
    # Possible/Legal values:	Meaning
    # ---------------------	-------
    # File			File mode. Write result to a file.
    # File.Stdout		File mode. Write result to stdout.
    # Directory			Directory mode. Plain processing of one set.
    # Directory.Merge		Directory mode. Merging of multiple sets into
    #				one output.
    # ---------------------	-------

    variable  mode   ""

    # Name of the module currently processed. Derived from the 'input'
    # (last element of this path, without extension).

    variable  module ""

    # Crossreference data. Extracted from the processed documents, a
    # rearrangement and filtration of the full meta data (See 'meta'
    # below). Relevant only to the directory modes. I.e. the file
    # modes don't bother with its extraction and use.

    variable  xref
    array set xref   {}

    # Index data. Mapping from keyword (label) to the name of its
    # anchor in the index output. Requires support for the engine
    # parameter 'kwid' in the index engine.

    variable  kwid
    array set kwid {}

    # Cache. This array maps from the path of an input file/document
    # (relative to 'input'), to the paths of the file to generate
    # (relative to 'output', including extension and such). In other
    # words we derive the output paths from the inputs only once and
    # then simply get them here.

    variable  out
    array set out  {}

    # Meta data cache. Stores the meta data extracted from the input
    # files/documents, per input. The meta data is a dictionary and
    # processed several ways to get: Crossreferences (See 'xref'
    # above), Table Of Contents, and Keyword Index. The last two are
    # not cached, but ephemeral.

    variable  meta
    array set meta {}

    # Cache of input documents. When we read an input file we store
    # its contents here, keyed by path (relative to 'input') so that
    # we don't have to go to the disk when we we need the file again.
    # The directory modes need each input twice, for metadata
    # extraction, and the actual conversion.

    variable  data
    array set data {}

    # Database of image files for use by dt_imap.

    variable  imap
    array set imap {}

    # Database of exclusion patterns. Files matching these are not
    # manpages. For example, test files for doctools itself may fall
    # under this.

    variable excl {}

    # Path of a user specified table of contents (doctoc format).

    variable utoc {}

    # List of path|text of additional TOCs to put into the navigation
    # bar. Label and ordering information is found in the pre- and
    # postnav lists. See above.

    variable mtoc {}
}

# ### ### ### ######### ######### #########
## External data and status
#
## Only the directory merge mode uses external data, saving the
## internal representations of current toc, index. and xref
## information for use by future mergers. It uses three files,
## described below. The files are created if they don't exist.
## Remove them when the merging is complete.
#
## .toc
## Contains the current full toc in form of a dictionary.
#  Keys are division labels, values the lists of toc items.
#
## .idx
## Contains the current full index, plus keyword id map.  Is a list of
#  three elements, index, start id for new kwid entries, and the
#  keyword id map (kwid). Index and Kwid are both dictionaries, keyed
#  by keywords. Index value is a list of 2-tuples containing symbolic
#  file plus label, in this order. Kwid value is the id of the anchor
#  for that keyword in the index.
#
## .xrf
## Contains the current cross reference database, a dictionary. Keys
#  are tags the formatter can search for (keywords, keywords with
#  prefixes, keywords with suffices), values a list containing either
#  the file to refer to to, or both file and an anchor in that
#  file. The latter is for references into the index.

proc ::dtplite::Init {} {
    variable  data
    variable  excl {}
    variable  ext    ""
    variable  footer ""
    variable  format ""
    variable  header ""
    variable  imap
    variable  input  ""
    variable  kwid
    variable  merge  0
    variable  meta
    variable  mode   ""
    variable  module ""
    variable  mtoc {}
    variable  nav     {}
    variable  out
    variable  output ""
    variable  postnav {}
    variable  prenav  {}
    variable  single 1
    variable  stdout 0
    variable  style  ""
    variable  utoc {}
    variable  xref
    variable  xrefl

    array unset data     *
    array unset imap     *
    array unset kwid     *
    array unset meta     *
    array unset out      *
    array unset xref     *
    catch { unset xrefl }

    return
}

# ### ### ### ######### ######### #########
## Option processing.
## Validate command line.
## Full command line syntax.
##
# dtplite	-o outputpath	\
#		?-merge?	\
#		?-ext ext?	\
#		?-style file?	\
#		?-header file?	\
#		?-footer file?	\
#		?-nav label url?... \
#		?-prenav label url?... \
#		?-postnav label url?... \
#		?-exclude glob?... \
#		?-toc path|text? \
#		?-post+toc label path|text? \
#		?-pre+toc label path|text? \
#		format inputpath
##

proc ::dtplite::ProcessCmdline {argv} {
    variable output ; variable style  ; variable stdout
    variable format ; variable header ; variable single
    variable input  ; variable footer ; variable mode
    variable ext    ; variable nav    ; variable merge
    variable module ; variable excl   ; variable utoc
    variable prenav ; variable postnav ; variable mtoc

    # Process the options, perform basic validation.

    set fixup {}

    while {[llength $argv]} {
	set opt [lindex $argv 0]
	if {![string match "-*" $opt]} break

	if {[string equal $opt "-o"]} {
	    if {[llength $argv] < 2} Usage
	    set output [lindex $argv 1]
	    set argv   [lrange $argv 2 end]
	} elseif {[string equal $opt "-merge"]} {
	    set merge 1
	    set argv [lrange $argv 1 end]
	} elseif {[string equal $opt "-ext"]} {
	    if {[llength $argv] < 2} Usage
	    set ext  [lindex $argv 1]
	    set argv [lrange $argv 2 end]
	} elseif {[string equal $opt "-toc"]} {
	    if {[llength $argv] < 2} Usage
	    set utoc [lindex $argv 1]
	    set argv [lrange $argv 2 end]
	} elseif {[string equal $opt "-post+toc"]} {
	    if {[llength $argv] < 3} Usage
	    # Place toc data separate from the nav data, and identify
	    # by counter (list length). The nav data gets the file
	    # name (see Do.Directory* commands, marker (+TOC)). As
	    # relative paths they will be transformed during navbar
	    # generation to link properly.
	    set n [llength $mtoc]
	    set fname toc$n.$ext
	    if {$ext == {}} {
		lappend fixup postnav [llength $postnav]
	    }
	    lappend postnav [list [lindex $argv 1] $fname]
	    lappend mtoc    [lindex $argv 2]
	    set argv        [lrange $argv 3 end]
	} elseif {[string equal $opt "-pre+toc"]} {
	    if {[llength $argv] < 3} Usage
	    # Place toc data separate from the nav data, and identify
	    # by counter (list length). The nav data gets the file
	    # name (see Do.Directory* commands, marker (+TOC)). As
	    # relative paths they will be transformed during navbar
	    # generation to link properly.
	    set n [llength $mtoc]
	    set fname toc$n.$ext
	    if {$ext == {}} {
		lappend fixup prenav [llength $prenav]
	    }
	    lappend prenav [list [lindex $argv 1] $fname]
	    lappend mtoc   [lindex $argv 2]
	    set argv       [lrange $argv 3 end]
	} elseif {[string equal $opt "-exclude"]} {
	    if {[llength $argv] < 2} Usage
	    lappend excl [lindex $argv 1]
	    set argv [lrange $argv 2 end]
	} elseif {[string equal $opt "-style"]} {
	    if {[llength $argv] < 2} Usage
	    set style [lindex $argv 1]
	    set argv  [lrange $argv 2 end]
	} elseif {[string equal $opt "-header"]} {
	    if {[llength $argv] < 2} Usage
	    set header [lindex $argv 1]
	    set argv   [lrange $argv 2 end]
	} elseif {[string equal $opt "-footer"]} {
	    if {[llength $argv] < 2} Usage
	    set footer [lindex $argv 1]
	    set argv   [lrange $argv 2 end]
	} elseif {[string equal $opt "-nav"]} {
	    if {[llength $argv] < 3} Usage
	    lappend prenav [lrange $argv 1 2]
	    set argv       [lrange $argv 3 end]
	} elseif {[string equal $opt "-postnav"]} {
	    if {[llength $argv] < 3} Usage
	    lappend postnav [lrange $argv 1 2]
	    set argv        [lrange $argv 3 end]
	} elseif {[string equal $opt "-prenav"]} {
	    if {[llength $argv] < 3} Usage
	    lappend prenav [lrange $argv 1 2]
	    set argv       [lrange $argv 3 end]
	} else {
	    Usage
	}
    }

    # Additional validation, and extraction of the non-option
    # arguments.

    if {[llength $argv] != 2} Usage

    set format [lindex $argv 0]
    set input  [lindex $argv 1]

    if {[string equal $format validate]} {
	set format null
    }

    # Final validation across the whole configuration.

    if {[string equal $format ""]} {
	ArgError "Illegal empty format specification"

    } else {
	# Early check: Is the chosen format ok ? For this we have
	# create and configure a doctools object.

	doctools::new dt
	if {[catch {dt configure -format $format}]} {
	    ArgError "Unknown format \"$format\""
	}
	dt configure -deprecated 1

	# Check style, header, and footer options, if present.

	CheckInsert header {Header file}
	CheckInsert footer {Footer file}

	if {[llength $nav] && ![in [dt parameters] header]} {
	    ArgError "-nav not supported by format \"$format\""
	}
	if {![string equal $style ""]} {
	    if {![in [dt parameters] meta]} {
		ArgError "-style not supported by format \"$format\""
	    } elseif {![file exists $style]} {
		ArgError "Unable to find style file \"$style\""
	    }
	}
    }

    # Set up an extension based on the format, if no extension was
    # specified.  also compute the name of the module, based on the
    # input. [SF Tcllib Bug 1111364]. Has to come before the line
    # marked with a [*], or a filename without extension is created.

    if {[string equal $ext ""]} {
	set ext $format
	foreach {v i} $fixup {
	    upvar 0 $v navlist
	    set item [lindex $navlist $i]
	    set item [lreplace $item 1 1 [lindex $item 1]$ext]
	    set navlist [lreplace $navlist $i $i $item]
	}
    }

    CheckInput $input {Input path}
    if {[file isfile $input]} {
	# Input file. Merge mode is not possible. Output can be file
	# or directory, or "-" for stdout. The output may exist, but
	# does not have to. The directory it is in however does have
	# to exist, and has to be writable (if the output does not
	# exist yet). An existing output has to be writable.

	if {$merge} {
	    ArgError "-merge illegal when processing a single input file."
	}
	if {![string equal $output "-"]} {
	    CheckTheOutput

	    # If the output is an existing directory then we have to
	    # ensure that the actual output is a file in that
	    # directory, and we derive its name from the name of the
	    # input file (and -ext, if present).

	    if {[file isdirectory $output]} {
		# [*] [SF Tcllib Bug 1111364]
		set output [file join $output [file tail [Output $input]]]
	    }
	} else {
	    set stdout 1
	}
    } else {
	# Input directory. Merge mode is possible. Output has to be a
	# directory. The output may exist, but does not have to. The
	# directory it is in however does have to exist. An existing
	# output has to be writable.

	set single 0
	CheckTheOutput 1
    }

    # Determine the operation mode from the flags

    if {$single} {
	if {$stdout} {
	    set mode File.Stdout
	} else {
	    set mode File
	}
    } elseif {$merge} {
	set mode Directory.Merge
    } else {
	set mode Directory
    }

    set module [file rootname [file tail [file normalize $input]]]
    return
}

# ### ### ### ######### ######### #########
## Option processing.
## Helpers: Generation of error messages.
## I.  General usage/help message.
## II. Specific messages.
#
# Both write their messages to stderr and then
# exit the application with status 1.
##

proc ::dtplite::Usage {} {
    global argv0
    Print stderr "$argv0 wrong#args, expected:\
	    -o outputpath ?-merge? ?-ext ext?\
	    ?-style file? ?-header file?\
	    ?-footer file? ?-nav label url?...\
	    format inputpath"
    return -code error -errorcode STOP {}
}

proc ::dtplite::ArgError {text} {
    global argv0
    Print stderr "$argv0: $text"
    return -code error -errorcode STOP {}
}

proc ::dtplite::Print {args} {
    variable print
    set cmd [concat $print $args]
    return [uplevel 1 $cmd]
}

proc in {list item} {
    expr {([lsearch -exact $list $item] >= 0)}
}

# ### ### ### ######### ######### #########
## Helper commands. File paths.
## Conversion of relative paths
## to absolute ones for input
## and output. Derivation of
## output file name from input.

proc ::dtplite::Pick {f} {
    variable input
    return [file join $input $f]
}

proc ::dtplite::Output {f} {
    variable ext
    return [file rootname $f].$ext
}

proc ::dtplite::At {f} {
    variable output
    set of     [file normalize [file join $output $f]]
    file mkdir [file dirname $of]
    return $of
}

# ### ### ### ######### ######### #########
## Check existence and permissions of an input/output file or
## directory.

proc ::dtplite::CheckInput {f label} {
    if {![file exists $f]} {
	ArgError "Unable to find $label \"$f\""
    } elseif {![file readable $f]} {
	ArgError "$label \"$f\" not readable (permission denied)"
    }
    return
}

proc ::dtplite::CheckTheOutput {{needdir 0}} {
    variable output
    variable format

    if {[string equal $format null]} {
	# The format does not generate output, so not specifying an
	# output file is ok for that case.
	return
    }

    if {[string equal $output ""]} {
	ArgError "No output path specified"
    }

    set base [file dirname $output]
    if {[string equal $base ""]} {set base [pwd]}

    if {![file exists $output]} {
	if {![file exists $base]} {
	    ArgError "Output base path \"$base\" not found"
	}
	if {![file writable $base]} {
	    ArgError "Output base path \"$base\" not writable (permission denied)"
	}
    } else {
	if {![file writable $output]} {
	    ArgError "Output path \"$output\" not writable (permission denied)"
	}
	if {$needdir && ![file isdirectory $output]} {
	    ArgError "Output path \"$output\" not a directory"
	}
    }
    return
}

proc ::dtplite::CheckInsert {option label} {
    variable format
    variable $option
    upvar 0  $option opt

    if {![string equal $opt ""]} {
	if {![in [dt parameters] $option]} {
	    ArgError "-$option not supported by format \"$format\""
	}
	CheckInput $opt $label
	set opt [Get $opt]
    }
    return
}

# ### ### ### ######### ######### #########
## Helper commands. File reading and writing.

proc ::dtplite::Get {f} {
    variable data
    if {[info exists data($f)]} {return $data($f)}
    return [set data($f) [fileutil::cat $f]]
}

proc ::dtplite::Write {f data} {
    # An empty filename is acceptable, the format will be 'null'
    if {[string equal $f ""]} return
    fileutil::writeFile $f $data
    return
}

# ### ### ### ######### ######### #########
## Dump accumulated warnings.

proc ::dtplite::Warnings {} {
    set warnings [dt warnings]
    if {[llength $warnings] > 0} {
	Print stderr [join $warnings \n]
    }
    return
}

# ### ### ### ######### ######### #########
## Configuation phase, validate command line.

# ### ### ### ######### ######### #########
## We can assume that we have from here on a command 'dt', which is a
## doctools object command, and already configured for the format to
## generate.
# ### ### ### ######### ######### #########

# ### ### ### ######### ######### #########
## Commands implementing the main functionality.

proc ::dtplite::Do.File {} {
    # Process a single input file, write the result to a single outut file.

    variable input
    variable output

    SinglePrep
    Write $output [dt format [Get $input]]
    Warnings
    return
}

proc ::dtplite::Do.File.Stdout {} {
    # Process a single input file, write the result to stdout.

    variable input

    SinglePrep
    puts  stdout [dt format [Get $input]]
    close stdout
    Warnings
    return
}

proc ::dtplite::Do.Directory {} {
    # Process a directory of input files, through all subdirectories.
    # Generate index and toc, but no merging with an existing index
    # and toc. I.e. any existing index and toc files are overwritten.

    variable input
    variable out
    variable module
    variable meta
    variable format
    variable utoc
    variable mtoc

    # Phase 0. Find the documents to convert.
    # Phase I. Collect meta data, and compute the map from input to
    # ........ output files. This is also the map for the symbolic
    # ........ references. We extend an existing map (required for use
    # ........ in merge op.
    # Phase II. Build index and toc information from the meta data.
    # Phase III. Convert each file, using index, toc and meta
    # .......... information.

    MapImages
    set files [LocateManpages $input]
    if {![llength $files]} {
	ArgError "Module \"$module\" has no files to process."
    }

    MetadataGet $files
    StyleMakeLocal

    if {$utoc ne {}} {
	if {[file exists $utoc]} { set utoc [Get $utoc] }
	TocWrite toc index $utoc
    } else {
	TocWrite toc index [TocGenerate [TocGet $module toc]]
    }
    # (+TOC)
    set n 0
    foreach item $mtoc {
	if {[file exists $item]} { set item [Get $item] }
	TocWrite toc$n index $item
	incr n
    }
    IdxWrite index toc [IdxGenerate $module [IdxGet]]

    dt configure -module $module
    XrefGet
    XrefSetup   dt
    FooterSetup dt
    MapSetup    dt

    foreach f [lsort -dict $files] {
	Print stdout \t$f

	set o $out($f)
	dt configure -file [At $o] -ibase $input/$f

	NavbuttonPush {Keyword Index}     [Output index] $o
	NavbuttonPush {Table Of Contents} [Output toc]   $o
	HeaderSetup dt $o
	NavbuttonPop
	NavbuttonPop
	StyleSetup dt $o

	if {[string equal $format null]} {
	    dt format [Get [Pick $f]]
	} else {
	    Write [At $o] [dt format [Get [Pick $f]]]
	}
	Warnings
    }
    return
}

proc ::dtplite::Do.Directory.Merge {} {
    # See Do.Directory, but merge the TOC/Index information from this
    # set of input files into an existing TOC/Index.

    variable input
    variable out
    variable module
    variable meta
    variable output
    variable format
    variable utoc
    variable mtoc

    # Phase 0. Find the documents to process.
    # Phase I. Collect meta data, and compute the map from input to
    # ........ output files. This is also the map for the symbolic
    # ........ references. We extend an existing map (required for use
    # ........ in merge op.
    # Phase II. Build module local toc from the meta data, insert it
    # ......... into the main toc as well, and generate a global
    # ......... index.
    # Phase III. Process each file, using cross references, and links
    # .......... to boths tocs and the index.

    MapImages
    set files [LocateManpages $input]
    if {![llength $files]} {
	ArgError "Module \"$module\" has no files to process."
    }

    MetadataGet $files $module
    StyleMakeLocal     $module

    set localtoc [TocGet $module $module/toc]
    TocWrite $module/toc index [TocGenerate $localtoc] [TocMap $localtoc]
    if {$utoc ne {}} {
	if {[file exists $utoc]} { set utoc [Get $utoc] }
	TocWrite toc index $utoc
    } else {
	TocWrite toc index [TocGenerate [TocMergeSaved $localtoc]]
    }
    # (+TOC)
    set n 0
    foreach item $mtoc {
	if {[file exists $item]} { set item [Get $item] }
	TocWrite toc$n index $item
	incr n
    }
    IdxWrite index toc [IdxGenerate {} [IdxGetSaved index]]

    dt configure -module $module
    XrefGetSaved
    XrefSetup   dt
    FooterSetup dt
    MapSetup    dt

    foreach f [lsort -dict $files] {
	Print stdout \t$f

	set o $out($f)
	dt configure -file [At $o] -ibase $input/$f

	NavbuttonPush {Keyword Index}          [Output index]       $o
	NavbuttonPush {Table Of Contents}      [Output $module/toc] $o
	NavbuttonPush {Main Table Of Contents} [Output toc]         $o
	HeaderSetup dt $o
	NavbuttonPop
	NavbuttonPop
	NavbuttonPop
	StyleSetup dt $o

	if {[string equal $format null]} {
	    dt format [Get [Pick $f]]
	} else {
	    Write [At $o] [dt format [Get [Pick $f]]]
	}
	Warnings
    }
    return
}

# ### ### ### ######### ######### #########
## Helper commands. Preparations shared between the two file modes.

proc ::dtplite::SinglePrep {} {
    variable input
    variable module

    MapImages
    StyleSetup  dt
    HeaderSetup dt {}
    FooterSetup dt
    MapSetup    dt

    dt configure -module $module -file $input
    return
}

# ### ### ### ######### ######### #########
## Get the base meta data out of the listed documents.

proc ::dtplite::MetadataGet {files {floc {}}} {
    # meta :: map (symbolicfile -> metadata)
    # metadata = dict (key -> value)
    # key      = set { desc, fid, file, keywords,
    #                  module, section, see_also,
    #                  shortdesc, title, version }
    # desc      :: string 'document title'
    # fid       :: string           'file name, without path/extension'
    # file      :: string           'file name, without path'
    # keywords  :: list (string...) 'key phrases'
    # module    :: string           'module the file is in'
    # section   :: string           'manpage section'
    # see_also  :: list (string...) 'related files'
    # shortdesc :: string           'module description'
    # title     :: string           'manpage file name intended'
    # version   :: string           'file/package version'
    variable meta
    variable input
    variable out

    doctools::new meta -format list -deprecated 1
    foreach f $files {
	meta configure -file $input/$f
	set o [Output [file join $floc files $f]]
	set out($f)  $o
	set meta($o) [lindex [string trim [meta format [Get [Pick $f]]]] 1]
    }
    meta destroy
    return
}

# ### ### ### ######### ######### #########
## Handling Tables of Contents:
## - Get them out of the base meta data.
## - As above, and merging them with global toc.
## - Conversion of internals into doctoc.
## - Processing doctoc into final formatting.

proc ::dtplite::TocGet {desc {f toc}} {
    # Generate the intermediate form of a TOC for the current document
    # set. This generates a single division.

    # Get toc out of the meta data.
    variable meta
    set res {}
    foreach {k item} [array get meta] {
	lappend res [TocItem $k $item]
    }
    return [list $desc [list $f $res]]
}

proc ::dtplite::TocMap {toc {base {}}} {
    if {$base == {}} {
	set base  [lindex [lindex $toc 1] 0]
    }
    set items [lindex [lindex $toc 1] 1]

    set res {}
    foreach i $items {
	foreach {f label desc} $i break
	lappend res $f [fileutil::relativeUrl $base $f]
    }
    return $res
}

proc ::dtplite::TocItem {f meta} {
    array set md $meta
    set desc    $md(desc)
    set label   $md(title)
    return [list $f $label $desc]
}

proc ::dtplite::TocMergeSaved {sub} {
    # sub is the TOC of the current doc set (local toc). Merge this
    # into the main toc (as read from the saved global state), and
    # return the resulting internal rep for further processing.

    set fqn [At .toc]
    if {[file exists $fqn]} {
	array set _ [Get $fqn]
    }
    array set _ $sub
    set thetoc [array get _]

    # Save extended toc for next merge.
    Write $fqn $thetoc

    return $thetoc
}

proc ::dtplite::TocGenerate {data} {
    # Handling single and multiple divisions.
    # single div => div is full toc
    # multi div  => place divs into the toc in alpha order.
    #
    # Sort toc (each division) by label (index 1).
    # Write as doctoc.

    array set toc $data

    TagsBegin
    if {[array size toc] < 2} {
	# Empty, or single division. The division is the TOC, toplevel.

	unset toc
	set desc [lindex $data 0]
	set data [lindex [lindex $data 1] 1]
	TocAlign mxf mxl $data

	Tag+ toc_begin [list {Table Of Contents} $desc]
	foreach item [lsort -dict -index 1 $data] {
	    foreach {symfile label desc} $item break
	    Tag+ item \
		    [FmtR mxf $symfile] \
		    [FmtR mxl $label] \
		    [list $desc]
	}
    } else {
	Tag+ toc_begin [list {Table Of Contents} Modules]
	foreach desc [lsort -dict [array names toc]] {
	    foreach {ref div} $toc($desc) break
	    TocAlign mxf mxl $div

	    Tag+ division_start [list $desc [Output $ref]]
	    foreach item [lsort -dict -index 1 $div] {
		foreach {symfile label desc} $item break
		Tag+ item \
			[FmtR mxf $symfile] \
			[FmtR mxl $label] \
			[list $desc]
	    }
	    Tag+ division_end
	}
    }

    Tag+ toc_end

    #puts ____________________\n[join $lines \n]\n_________________________
    return [join $lines \n]\n
}

proc ::dtplite::TocWrite {ftoc findex text {map {}}} {
    variable format

    if {[string equal $format null]} return
    Write [At .tocdoc] $text

    set ft [Output $ftoc]

    doctools::toc::new toc -format $format -file $ft

    NavbuttonPush {Keyword Index} [Output $findex] $ftoc
    HeaderSetup  toc $ft
    NavbuttonPop
    FooterSetup  toc
    StyleSetup   toc $ftoc

    foreach {k v} $map {toc map $k $v}

    Write [At $ft] [toc format $text]
    toc destroy
    return
}

proc ::dtplite::TocAlign {fv lv div} {
    upvar 1 $fv mxf $lv mxl
    set mxf 0
    set mxl 0
    foreach item $div {
	foreach {symfile label desc} $item break
	Max mxf $symfile
	Max mxl $label
    }
    return
}

# ### ### ### ######### ######### #########
## Handling Keyword Indices:
## - Get them out of the base meta data.
## - As above, and merging them with global index.
## - Conversion of internals into docidx.
## - Processing docidx into final formatting.

proc ::dtplite::IdxGet {{f index}} {
    # Get index out of the meta data.
    array set keys {}
    array set kdup {}
    return [lindex [IdxExtractMeta] 1]
}

proc ::dtplite::IdxGetSaved {{f index}} {
    # Get index out of the meta data, merge into global state.
    variable meta
    variable kwid

    array set keys {}
    array set kwid {}
    array set kdup {}
    set start 0

    set fqn [At .idx]
    if {[file exists $fqn]} {
	foreach {kw kd start ki} [Get $fqn] break
	array set keys $kw
	array set kwid $ki
	array set kdup $kd
    }

    foreach {start theindex} [IdxExtractMeta $start] break

    # Save extended index for next merge.
    Write $fqn [list $theindex [array get kdup] $start [array get kwid]]

    return $theindex
}

proc ::dtplite::IdxExtractMeta {{start 0}} {
    # Get index out of the meta data.
    variable meta
    variable kwid

    upvar keys keys kdup kdup
    foreach {k item} [array get meta] {
	foreach {symfile keywords label} [IdxItem $k $item] break
	# Store inverted file - keyword relationship
	# Kdup is used to prevent entering of duplicates.
	# Checks full (keyword file label).
	foreach k $keywords {
	    set kx [list $k $symfile $label]
	    if {![info exists kdup($kx)]} {
		lappend keys($k) [list $symfile $label]
		set kdup($kx) .
	    }
	    if {[info exist kwid($k)]} continue
	    set kwid($k) key$start
	    incr start
	}
    }
    return [list $start [array get keys]]
}

proc ::dtplite::IdxItem {f meta} {
    array set md $meta
    set keywords $md(keywords)
    set title    $md(title)
    return [list $f $keywords $title]
}

proc ::dtplite::IdxGenerate {desc data} {
    # Sort by keyword label.
    # Write as docidx.

    array set keys $data

    TagsBegin
    Tag+ index_begin [list {Keyword Index} $desc]

    foreach k [lsort -dict [array names keys]] {
	IdxAlign mxf $keys($k)

	Tag+ key [list $k]
	foreach v [lsort -dict -index 1 $keys($k)] {
	    foreach {file label} $v break
	    Tag+ manpage [FmtR mxf $file] [list $label]
	}
    }

    Tag+ index_end
    #puts ____________________\n[join $lines \n]\n_________________________
    return [join $lines \n]\n
}

proc ::dtplite::IdxWrite {findex ftoc text} {
    variable format

    if {[string equal $format null]} return
    Write [At .idxdoc] $text

    set fi [Output $findex]

    doctools::idx::new idx -format $format -file $fi

    NavbuttonPush {Table Of Contents} [Output $ftoc] $findex
    HeaderSetup   idx $findex
    NavbuttonPop
    FooterSetup   idx
    StyleSetup    idx $findex
    XrefSetupKwid idx

    Write [At $fi] [idx format $text]
    idx destroy
    return
}

proc ::dtplite::IdxAlign {v keys} {
    upvar 1 $v mxf
    set mxf 0
    foreach item $keys {
	foreach {symfile label} $item break
	Max mxf $symfile
    }
    return
}

# ### ### ### ######### ######### #########
## Column sizing

proc ::dtplite::Max {v str} {
    upvar 1 $v max
    set l [string length [list $str]]
    if {$max < $l} {set max $l}
    return
}

proc ::dtplite::FmtR {v str} {
    upvar 1 $v max
    return [list $str][textutil::repeat::blank \
	    [expr {$max - [string length [list $str]]}]]
}

# ### ### ### ######### ######### #########
## Code generation.

proc ::dtplite::Tag {n args} {
    if {[llength $args]} {
	return "\[$n [join $args]\]"
    } else {
	return "\[$n\]"
    }
    #return \[[linsert $args 0 $n]\]
}

proc ::dtplite::Tag+ {n args} {
    upvar 1 lines lines
    lappend lines [eval [linsert $args 0 ::dtplite::Tag $n]]
    return
}

proc ::dtplite::TagsBegin {} {
    upvar 1 lines lines
    set lines {}
    return
}

# ### ### ### ######### ######### #########
## Collect all files for possible use as image

proc ::dtplite::MapImages {} {
    variable input
    variable output
    variable single
    variable stdout

    # Ignore images when writing results to a pipe.
    if {$stdout} return

    set out  [file normalize $output]
    set path [file normalize $input]
    set res  {}

    if {$single} {
	# output is file, image directory is sibling to it.
	set imgbase [file join [file dirname $output] image]
	# input to search is director the input file is in, and below
	set path    [file dirname $path]
    } else {
	# output is directory, image directory is inside.
	set imgbase [file join $out image]
    }

    set n [llength [file split $path]]

    foreach f [::fileutil::find $path] {
	MapImage \
	    [::fileutil::stripN $f $n] \
	    $f [file join $imgbase [file tail $f]]
    }
    return
}

proc ::dtplite::MapImage {path orig dest} {
    # A file a/b/x.y is stored under
    # a/b/x.y, b/x.y, and x.y

    variable imap
    set plist [file split $path]
    while {[llength $plist]} {
	set imap([join $plist /]) [list $orig $dest]
	set plist [lrange $plist 1 end]
    }
    return
}

proc ::dtplite::MapSetup {dt} {
    # imap :: map (symbolicfile -> list (originpath,destpath)))
    variable imap
    # Skip if no data available

    #puts MIS|[array size imap]|
    if {![array size imap]} return

    foreach sf [array names imap] {
	foreach {origin destination} $imap($sf) break
	$dt img $sf $origin $destination
    }
    return
}

# ### ### ### ######### ######### #########
## Find the documents to process.

proc ::dtplite::LocateManpages {path} {
    set path [file normalize $path]
    set n    [llength [file split $path]]
    set res  {}
    foreach f [::fileutil::find $path ::dtplite::IsDoctools] {
	lappend res [::fileutil::stripN $f $n]
    }
    return $res
}

proc ::dtplite::IsDoctools {f} {
    set res [expr {[in [::fileutil::fileType $f] doctools] && ![Excluded [file normalize $f]]}]
    #puts ...$f\t$res\t|[fileutil::fileType $f]|\texcluded=[Excluded [file normalize $f]]\tin.[pwd]
    return $res
}

proc ::dtplite::Excluded {f} {
    variable excl
    foreach p $excl {
	if {[string match $p $f]} {return 1}
    }
    return 0
}

# ### ### ### ######### ######### #########
## Handling a style sheet
## - Decoupling output from input location.
## - Generate HTML to insert into a generated document.

proc ::dtplite::StyleMakeLocal {{pfx {}}} {
    variable style
    if {[string equal $style ""]} return
    set base [file join $pfx [file tail $style]]

    # TODO input == output does what here ?

    file copy -force $style [At $base]
    set style $base
    return
}

proc ::dtplite::StyleSetup {o {f {}}} {
    variable style
    if {[string equal $style ""]}   return
    if {![in [$o parameters] meta]} return

    if {![string equal $f ""]} {
	set dst [fileutil::relativeUrl $f $style]
    } else {
	set dst $style
    }
    set value "<link\
	    rel=\"stylesheet\"\
	    href=\"$dst\"\
	    type=\"text/css\">"

    $o setparam meta $value
    return
}

# ### ### ### ######### ######### #########
## Handling the cross references
## - Getting them out of the base meta data.
## - ditto, plus merging with saved xref information.
## - Insertion into processor, cached list.
## - Setting up the keyword-2-anchor map.

proc ::dtplite::XrefGet {} {
    variable meta
    variable xref
    variable kwid

    array set keys {}
    foreach {symfile item} [array get meta] {
	array set md $item
	# Cross-references ... File based, see-also

	set t  $md(title)
	set ts ${t}($md(section))
	set td $md(desc)

	set xref(sa,$t)  [set _ [list $symfile]]
	set xref(sa,$ts) $_
	set xref($t)     $_ ; # index on manpage file name
	set xref($ts)    $_ ; # ditto, with section added
	set xref($td)    $_ ; # index on document title

	# Store an inverted file - keyword relationship, for the index
	foreach kw $md(keywords) {
	    lappend keys($kw) $symfile
	}
    }

    set if [Output index]
    foreach k [array names keys] {
	if {[info exists xref(kw,$k)]} continue

	set frag $kwid($k)
	set xref(kw,$k) [set _ [list $if $frag]]
	set xref($k)    $_
    }
    return
}

proc ::dtplite::XrefGetSaved {} {
    # xref :: map (xrefid -> list (symbolicfile))
    variable  xref
    array set xref {}

    # Load old cross references, from a previous run
    set fqn [At .xrf]
    if {[file exists $fqn]} {
	array set xref [set s [Get $fqn]]
    }

    # Add any new cross references ...
    XrefGet
    Write $fqn [array get xref]
    return
}

proc ::dtplite::XrefSetup {o} {
    # xref :: map (xrefid -> list (symbolicfile))
    variable xref
    # Skip if no data available
    if {![array size xref]}         return
    # Skip if backend doesn't support an index
    if {![in [$o parameters] xref]} return

    # Transfer index data to the backend. The data we keep has to be
    # re-formatted from a dict into a list of tuples with leading
    # xrefid.

    # xrefl :: list (list (xrefid symbolicfile...)...)
    variable xrefl
    if {![info exist xrefl]} {
	set xrefl {}
	foreach k [array names xref] {
	    lappend xrefl [linsert $xref($k) 0 $k]
	    set f [lindex $xref($k) 0]
	    dt map $f [At $f]
	}
    }
    $o setparam xref $xrefl
    return
}

proc ::dtplite::XrefSetupKwid {o} {
    # kwid :: map (label -> anchorname)
    variable kwid
    # Skip if no data available
    if {![array size kwid]}         return
    # Skip if backend doesn't support an index
    if {![in [$o parameters] kwid]} return
    # Transfer index data to the backend
    $o setparam kwid [array get kwid]
    return
}

# ### ### ### ######### ######### #########
## Extending and shrinking the navigation bar.

proc ::dtplite::NavbuttonPush {label file ref} {
    # nav = list (list (label reference) ...)
    variable nav
    #set file [fileutil::relativeUrl $ref $file]]]
    set      nav [linsert $nav 0 [list $label $file]]
    return
}

proc ::dtplite::NavbuttonPop {} {
    # nav = list (list (label reference) ...)
    variable nav
    set      nav [lrange $nav 1 end]
    return
}

# ### ### ### ######### ######### #########
## Header/Footer mgmt
## Header is merged from regular header, plus nav bar.
## Caching the merge result for quicker future access.

proc ::dtplite::HeaderSetup {o ref} {
    variable header
    variable nav

    if {[string equal $header ""] && ![llength $nav]} return
    if {![in [$o parameters] header]}                 return

    $o setparam header [Navbar $nav $ref]
    return
}

proc ::dtplite::Navbar {nav ref} {
    variable header
    variable prenav
    variable postnav

    set sep 0
    set first 1
    set hdr ""
    if {![string equal $header ""]} {
	append hdr $header
	set sep 1
    }

    append hdr [NavbarSegment sep first $prenav  $ref]
    append hdr [NavbarSegment sep first $nav     $ref]
    append hdr [NavbarSegment sep first $postnav $ref]

    if {[string length $hdr]} {
	set hdr "<hr> \[\n $hdr \] <hr>\n"
    }

    return $hdr
}

proc ::dtplite::NavbarSegment {sepv firstv nav ref} {
    if {![llength $nav]} { return {} }
    upvar 1 $sepv sep $firstv first

    if {$sep} {append hdr <br>\n}
    set sep 0

    foreach item $nav {
	if {!$first} {append hdr "| "} else {append hdr "  "}
	set first 0
	foreach {label url} $item break

	if {[string length $ref] &&
	    ![string match *://* $url] &&
	    ![string match /*    $url]} {
	    # The specified url is a plain relative path and we have a
	    # proper referent.  We assume that this path is relative
	    # to the toplevel toc and index files we are generating,
	    # and transform it here to be relative to the referent
	    # instead.
	    set url [fileutil::relativeUrl $ref $url]
	}
	append hdr "<a href=\"" $url "\">" $label "</a>\n"
    }
    return $hdr
}

proc ::dtplite::FooterSetup {o} {
    variable footer
    if {[string equal $footer ""]}    return
    if {![in [$o parameters] footer]} return
    $o setparam footer $footer
    return
}

# ### ### ### ######### ######### #########
## Invoking the functionality.

proc ::dtplite::print-via {cmd} {
    variable print $cmd
    return
}

proc ::dtplite::do {arguments} {
    Init

    if {[catch {
	ProcessCmdline $arguments
    }]} {
	return 1
    }
    if {[catch {
	set mode $::dtplite::mode
	Do.$mode
    } msg]} {
	## puts $::errorInfo
	dt destroy
	ArgError $msg
	return 1
    }
    dt destroy
    return 0
}

# ### ### ### ######### ######### #########
return

Added modules/dtplite/pkgIndex.tcl.











>
>
>
>
>
1
2
3
4
5
if {![package vsatisfies [package provide Tcl] 8.2]} {
    # PRAGMA: returnok
    return
}
package ifneeded dtplite 1.0.4 [list source [file join $dir dtplite.tcl]]

Changes to support/devel/sak/doc/doc.tcl.

20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
    auto::saveManpages $manpages

    # Then scan the found pages and extract the information needed for
    # keyword index and table of contents.
    array set meta [auto::scanManpages $manpages]

    # Sort through the extracted data.
    array set kwic  {}
    array set title {}
    array set cat   {}
    array set name  {}
    set       apps  {}
    array set mods  {}

    foreach page [array names meta] {
	unset -nocomplain m
	array set m $meta($page)

	# Collect keywords and file mapping for index.
	foreach kw $m(keywords) {







|
|
|
|
|
|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
    auto::saveManpages $manpages

    # Then scan the found pages and extract the information needed for
    # keyword index and table of contents.
    array set meta [auto::scanManpages $manpages]

    # Sort through the extracted data.
    array set kwic  {} ; # map: keyword  -> list (file...)
    array set title {} ; # map: file     -> description
    array set cat   {} ; # map: category -> list (file...)
    array set name  {} ; # map: file     -> label
    set       apps  {} ; # list (file...) 
    array set mods  {} ; # map: module   -> list(file...)

    foreach page [array names meta] {
	unset -nocomplain m
	array set m $meta($page)

	# Collect keywords and file mapping for index.
	foreach kw $m(keywords) {
68
69
70
71
72
73
74
75
76



77
78
79
80
81
82
83
    #parray kwic
    #parray title
    #parray name
    #parray cat
    #puts "apps = $apps"
    #parray mods

    auto::saveKeywordIndex    kwic  name
    auto::saveTableOfContents title name cat apps mods



    return
}

proc ::sak::doc::imake {modules} {
    global base
    # The argument (= set of modules) is irrelevant to this command.
    auto::saveManpages [auto::findManpages $base]







|
|
>
>
>







68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
    #parray kwic
    #parray title
    #parray name
    #parray cat
    #puts "apps = $apps"
    #parray mods

    auto::saveKeywordIndex           kwic  name
    auto::saveTableOfContents        title name cat apps mods
    auto::saveSimpleTableOfContents1 title name apps toc_apps.txt
    auto::saveSimpleTableOfContents2 title name mods toc_mods.txt
    auto::saveSimpleTableOfContents3 title name cat  toc_cats.txt
    return
}

proc ::sak::doc::imake {modules} {
    global base
    # The argument (= set of modules) is irrelevant to this command.
    auto::saveManpages [auto::findManpages $base]

Changes to support/devel/sak/doc/doc_auto.tcl.

21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
}

proc ::sak::doc::auto::kwic {} {
    variable here
    return [file join $here kwic.txt]
}

proc ::sak::doc::auto::toc {} {
    variable here
    return [file join $here toc.txt]
}

## ### ### ### ######### ######### #########

proc ::sak::doc::auto::findManpages {base} {
    set top [file normalize $base]
    set manpages {}







|

|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
}

proc ::sak::doc::auto::kwic {} {
    variable here
    return [file join $here kwic.txt]
}

proc ::sak::doc::auto::toc {{name toc.txt}} {
    variable here
    return [file join $here $name]
}

## ### ### ### ######### ######### #########

proc ::sak::doc::auto::findManpages {base} {
    set top [file normalize $base]
    set manpages {}
158
159
160
161
162
163
164
























































































165
166
167
168
169
170
171
    Tag+ division_end
    Tag+ division_end
    Tag+ toc_end

    fileutil::writeFile [toc] [join $lines \n]
    return
}

























































































proc ::sak::doc::auto::Sortable {files nv mfv mnv} {
    upvar 1 $nv name $mfv maxf $mnv maxn
    # Generate a list of files sortable by name, and also find the
    # max length of all relevant names.
    set maxf 0
    set maxn 0







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







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
    Tag+ division_end
    Tag+ division_end
    Tag+ toc_end

    fileutil::writeFile [toc] [join $lines \n]
    return
}

proc ::sak::doc::auto::saveSimpleTableOfContents1 {tv nv dv fname} {
    upvar 1 $tv title $nv name $dv data
    # title: file     -> description
    # name:  file     -> label
    # data:  list(file...)

    TagsBegin
    Tag+ toc_begin [list {Table Of Contents} {}]

    # The man pages are sorted in several ways for the toc.
    # Subsections are the modules or apps, whatever is in data.

    # Not handled: 'no applications'
    Tag+ division_start [list {Applications}]
    foreach item [lsort -dict -index 0 [Sortable $data name maxf maxl]] {
	foreach {label file} $item break
	Tag+ item \
	    [FmtR maxf $file] \
	    [FmtR maxl $label] \
	    [list $title($file)]
    }
    Tag+ division_end
    Tag+ toc_end

    fileutil::writeFile [toc $fname] [join $lines \n]
    return
}

proc ::sak::doc::auto::saveSimpleTableOfContents2 {tv nv dv fname} {
    upvar 1 $tv title $nv name $dv data
    # title: file     -> description
    # name:  file     -> label
    # data:  module -> list (file...)

    TagsBegin
    Tag+ toc_begin [list {Table Of Contents} {}]

    # The man pages are sorted in several ways for the toc.
    # Subsections are the modules or apps, whatever is in data.

    # Not handled: 'no modules'
    Tag+ division_start [list {Modules}]
    foreach m [lsort -dict [array names data]] {
	Tag+ division_start [list $m]
	foreach item [lsort -dict -index 0 [Sortable $data($m) name maxf maxl]] {
	    foreach {label file} $item break
	    Tag+ item \
		[FmtR maxf $file] \
		[FmtR maxl $label] \
		[list $title($file)]
	}
	Tag+ division_end
    }
    Tag+ division_end
    Tag+ toc_end

    fileutil::writeFile [toc $fname] [join $lines \n]
    return
}

proc ::sak::doc::auto::saveSimpleTableOfContents3 {tv nv cv fname} {
    upvar 1 $tv title $nv name $cv cat
    # title: file     -> description
    # name:  file     -> label
    # cat:   category -> list (file...)

    TagsBegin
    Tag+ toc_begin [list {Table Of Contents} {}]

    Tag+ division_start [list {By Categories}]
    foreach c [lsort -dict [array names cat]] {
	Tag+ division_start [list $c]
	foreach item [lsort -dict -index 0 [Sortable $cat($c) name maxf maxl]] {
	    foreach {label file} $item break
	    Tag+ item \
		[FmtR maxf $file] \
		[FmtR maxl $label] \
		[list $title($file)]
	}
	Tag+ division_end
    }
    Tag+ division_end
    Tag+ toc_end

    fileutil::writeFile [toc $fname] [join $lines \n]
    return
}

proc ::sak::doc::auto::Sortable {files nv mfv mnv} {
    upvar 1 $nv name $mfv maxf $mnv maxn
    # Generate a list of files sortable by name, and also find the
    # max length of all relevant names.
    set maxf 0
    set maxn 0

Changes to support/devel/sak/doc/kwic.txt.

476
477
478
479
480
481
482

483
484
485
486
487
488
489
[manpage modules/doctools/docidx.man           doctools::idx]
[manpage modules/doctools2idx/export.man       doctools::idx::export]
[manpage modules/doctools2idx/import.man       doctools::idx::import]
[manpage modules/doctools2toc/container.man    doctools::toc]
[manpage modules/doctools/doctoc.man           doctools::toc]
[manpage modules/doctools2toc/export.man       doctools::toc::export]
[manpage modules/doctools2toc/import.man       doctools::toc::import]

[manpage apps/dtplite.man                      dtplite]
[manpage modules/math/roman.man                math::roman]
[manpage modules/doctools/mpexpand.man         mpexpand]
[manpage modules/pt/pt_peg_from_json.man       pt::peg::from::json]
[manpage modules/pt/pt_peg_from_peg.man        pt::peg::from::peg]
[manpage modules/pt/pt_peg_to_container.man    pt::peg::to::container]
[manpage modules/pt/pt_peg_to_cparam.man       pt::peg::to::cparam]







>







476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
[manpage modules/doctools/docidx.man           doctools::idx]
[manpage modules/doctools2idx/export.man       doctools::idx::export]
[manpage modules/doctools2idx/import.man       doctools::idx::import]
[manpage modules/doctools2toc/container.man    doctools::toc]
[manpage modules/doctools/doctoc.man           doctools::toc]
[manpage modules/doctools2toc/export.man       doctools::toc::export]
[manpage modules/doctools2toc/import.man       doctools::toc::import]
[manpage modules/dtplite/dtplite.man           dtplite]
[manpage apps/dtplite.man                      dtplite]
[manpage modules/math/roman.man                math::roman]
[manpage modules/doctools/mpexpand.man         mpexpand]
[manpage modules/pt/pt_peg_from_json.man       pt::peg::from::json]
[manpage modules/pt/pt_peg_from_peg.man        pt::peg::from::peg]
[manpage modules/pt/pt_peg_to_container.man    pt::peg::to::container]
[manpage modules/pt/pt_peg_to_cparam.man       pt::peg::to::cparam]
677
678
679
680
681
682
683

684
685
686
687
688
689
690
[manpage modules/doctools2idx/parse.man          doctools::idx::parse]
[manpage modules/doctools2idx/structure.man      doctools::idx::structure]
[manpage modules/doctools2base/tcllib_msgcat.man doctools::msgcat]
[manpage modules/doctools2idx/msgcat_c.man       doctools::msgcat::idx::c]
[manpage modules/doctools2idx/msgcat_de.man      doctools::msgcat::idx::de]
[manpage modules/doctools2idx/msgcat_en.man      doctools::msgcat::idx::en]
[manpage modules/doctools2idx/msgcat_fr.man      doctools::msgcat::idx::fr]

[manpage apps/dtplite.man                        dtplite]
[key {docidx commands}]
[manpage modules/doctools/docidx_lang_cmdref.man docidx_lang_cmdref]
[manpage modules/doctools/docidx_lang_faq.man    docidx_lang_faq]
[manpage modules/doctools/docidx_lang_intro.man  docidx_lang_intro]
[manpage modules/doctools/docidx_lang_syntax.man docidx_lang_syntax]
[key {docidx language}]







>







678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
[manpage modules/doctools2idx/parse.man          doctools::idx::parse]
[manpage modules/doctools2idx/structure.man      doctools::idx::structure]
[manpage modules/doctools2base/tcllib_msgcat.man doctools::msgcat]
[manpage modules/doctools2idx/msgcat_c.man       doctools::msgcat::idx::c]
[manpage modules/doctools2idx/msgcat_de.man      doctools::msgcat::idx::de]
[manpage modules/doctools2idx/msgcat_en.man      doctools::msgcat::idx::en]
[manpage modules/doctools2idx/msgcat_fr.man      doctools::msgcat::idx::fr]
[manpage modules/dtplite/dtplite.man             dtplite]
[manpage apps/dtplite.man                        dtplite]
[key {docidx commands}]
[manpage modules/doctools/docidx_lang_cmdref.man docidx_lang_cmdref]
[manpage modules/doctools/docidx_lang_faq.man    docidx_lang_faq]
[manpage modules/doctools/docidx_lang_intro.man  docidx_lang_intro]
[manpage modules/doctools/docidx_lang_syntax.man docidx_lang_syntax]
[key {docidx language}]
715
716
717
718
719
720
721

722
723
724
725
726
727
728
[manpage modules/doctools/doctoc.man             doctools::toc]
[manpage modules/doctools2toc/export.man         doctools::toc::export]
[manpage modules/doctools2toc/export_doctoc.man  doctools::toc::export::doctoc]
[manpage modules/doctools2toc/import.man         doctools::toc::import]
[manpage modules/doctools2toc/import_doctoc.man  doctools::toc::import::doctoc]
[manpage modules/doctools2toc/parse.man          doctools::toc::parse]
[manpage modules/doctools2toc/structure.man      doctools::toc::structure]

[manpage apps/dtplite.man                        dtplite]
[key {doctoc commands}]
[manpage modules/doctools/doctoc_lang_cmdref.man doctoc_lang_cmdref]
[manpage modules/doctools/doctoc_lang_faq.man    doctoc_lang_faq]
[manpage modules/doctools/doctoc_lang_intro.man  doctoc_lang_intro]
[manpage modules/doctools/doctoc_lang_syntax.man doctoc_lang_syntax]
[key {doctoc language}]







>







717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
[manpage modules/doctools/doctoc.man             doctools::toc]
[manpage modules/doctools2toc/export.man         doctools::toc::export]
[manpage modules/doctools2toc/export_doctoc.man  doctools::toc::export::doctoc]
[manpage modules/doctools2toc/import.man         doctools::toc::import]
[manpage modules/doctools2toc/import_doctoc.man  doctools::toc::import::doctoc]
[manpage modules/doctools2toc/parse.man          doctools::toc::parse]
[manpage modules/doctools2toc/structure.man      doctools::toc::structure]
[manpage modules/dtplite/dtplite.man             dtplite]
[manpage apps/dtplite.man                        dtplite]
[key {doctoc commands}]
[manpage modules/doctools/doctoc_lang_cmdref.man doctoc_lang_cmdref]
[manpage modules/doctools/doctoc_lang_faq.man    doctoc_lang_faq]
[manpage modules/doctools/doctoc_lang_intro.man  doctoc_lang_intro]
[manpage modules/doctools/doctoc_lang_syntax.man doctoc_lang_syntax]
[key {doctoc language}]
771
772
773
774
775
776
777

778
779
780
781
782
783
784
[manpage modules/doctools2toc/export_nroff.man      doctools::toc::export::nroff]
[manpage modules/doctools2toc/export_text.man       doctools::toc::export::text]
[manpage modules/doctools2toc/export_wiki.man       doctools::toc::export::wiki]
[manpage modules/doctools2toc/import_doctoc.man     doctools::toc::import::doctoc]
[manpage modules/doctools2toc/import_json.man       doctools::toc::import::json]
[manpage modules/doctools2toc/parse.man             doctools::toc::parse]
[manpage modules/doctools2toc/structure.man         doctools::toc::structure]

[manpage apps/dtplite.man                           dtplite]
[key {doctools commands}]
[manpage modules/doctools/doctools_lang_cmdref.man doctools_lang_cmdref]
[manpage modules/doctools/doctools_lang_faq.man    doctools_lang_faq]
[manpage modules/doctools/doctools_lang_intro.man  doctools_lang_intro]
[manpage modules/doctools/doctools_lang_syntax.man doctools_lang_syntax]
[key {doctools language}]







>







774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
[manpage modules/doctools2toc/export_nroff.man      doctools::toc::export::nroff]
[manpage modules/doctools2toc/export_text.man       doctools::toc::export::text]
[manpage modules/doctools2toc/export_wiki.man       doctools::toc::export::wiki]
[manpage modules/doctools2toc/import_doctoc.man     doctools::toc::import::doctoc]
[manpage modules/doctools2toc/import_json.man       doctools::toc::import::json]
[manpage modules/doctools2toc/parse.man             doctools::toc::parse]
[manpage modules/doctools2toc/structure.man         doctools::toc::structure]
[manpage modules/dtplite/dtplite.man                dtplite]
[manpage apps/dtplite.man                           dtplite]
[key {doctools commands}]
[manpage modules/doctools/doctools_lang_cmdref.man doctools_lang_cmdref]
[manpage modules/doctools/doctools_lang_faq.man    doctools_lang_faq]
[manpage modules/doctools/doctools_lang_intro.man  doctools_lang_intro]
[manpage modules/doctools/doctools_lang_syntax.man doctools_lang_syntax]
[key {doctools language}]
1272
1273
1274
1275
1276
1277
1278

1279
1280
1281
1282
1283
1284
1285
[manpage modules/doctools/docidx.man                doctools::idx]
[manpage modules/doctools2idx/export.man            doctools::idx::export]
[manpage modules/doctools2idx/export_html.man       doctools::idx::export::html]
[manpage modules/doctools2toc/container.man         doctools::toc]
[manpage modules/doctools/doctoc.man                doctools::toc]
[manpage modules/doctools2toc/export.man            doctools::toc::export]
[manpage modules/doctools2toc/export_html.man       doctools::toc::export::html]

[manpage apps/dtplite.man                           dtplite]
[manpage modules/doctools/mpexpand.man              mpexpand]
[key html]
[manpage modules/html/html.man             html]
[manpage modules/htmlparse/htmlparse.man   htmlparse]
[manpage modules/javascript/javascript.man javascript]
[manpage modules/ncgi/ncgi.man             ncgi]







>







1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
[manpage modules/doctools/docidx.man                doctools::idx]
[manpage modules/doctools2idx/export.man            doctools::idx::export]
[manpage modules/doctools2idx/export_html.man       doctools::idx::export::html]
[manpage modules/doctools2toc/container.man         doctools::toc]
[manpage modules/doctools/doctoc.man                doctools::toc]
[manpage modules/doctools2toc/export.man            doctools::toc::export]
[manpage modules/doctools2toc/export_html.man       doctools::toc::export::html]
[manpage modules/dtplite/dtplite.man                dtplite]
[manpage apps/dtplite.man                           dtplite]
[manpage modules/doctools/mpexpand.man              mpexpand]
[key html]
[manpage modules/html/html.man             html]
[manpage modules/htmlparse/htmlparse.man   htmlparse]
[manpage modules/javascript/javascript.man javascript]
[manpage modules/ncgi/ncgi.man             ncgi]
1671
1672
1673
1674
1675
1676
1677

1678
1679
1680
1681
1682
1683
1684
[manpage modules/doctools/docidx.man                 doctools::idx]
[manpage modules/doctools2idx/export.man             doctools::idx::export]
[manpage modules/doctools2idx/import.man             doctools::idx::import]
[manpage modules/doctools/doctoc.man                 doctools::toc]
[manpage modules/doctools2toc/export.man             doctools::toc::export]
[manpage modules/doctools2toc/import.man             doctools::toc::import]
[manpage modules/doctools/doctools_plugin_apiref.man doctools_plugin_apiref]

[manpage apps/dtplite.man                            dtplite]
[manpage modules/doctools/mpexpand.man               mpexpand]
[key map]
[manpage modules/generator/generator.man       generator]
[manpage modules/map/map_geocode_nominatim.man map::geocode::nominatim]
[manpage modules/map/map_slippy.man            map::slippy]
[manpage modules/map/map_slippy_cache.man      map::slippy::cache]







>







1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
[manpage modules/doctools/docidx.man                 doctools::idx]
[manpage modules/doctools2idx/export.man             doctools::idx::export]
[manpage modules/doctools2idx/import.man             doctools::idx::import]
[manpage modules/doctools/doctoc.man                 doctools::toc]
[manpage modules/doctools2toc/export.man             doctools::toc::export]
[manpage modules/doctools2toc/import.man             doctools::toc::import]
[manpage modules/doctools/doctools_plugin_apiref.man doctools_plugin_apiref]
[manpage modules/dtplite/dtplite.man                 dtplite]
[manpage apps/dtplite.man                            dtplite]
[manpage modules/doctools/mpexpand.man               mpexpand]
[key map]
[manpage modules/generator/generator.man       generator]
[manpage modules/map/map_geocode_nominatim.man map::geocode::nominatim]
[manpage modules/map/map_slippy.man            map::slippy]
[manpage modules/map/map_slippy_cache.man      map::slippy::cache]
1711
1712
1713
1714
1715
1716
1717

1718
1719
1720
1721
1722
1723
1724
[manpage modules/doctools2toc/import.man             doctools::toc::import]
[manpage modules/doctools/doctools_intro.man         doctools_intro]
[manpage modules/doctools/doctools_lang_cmdref.man   doctools_lang_cmdref]
[manpage modules/doctools/doctools_lang_faq.man      doctools_lang_faq]
[manpage modules/doctools/doctools_lang_intro.man    doctools_lang_intro]
[manpage modules/doctools/doctools_lang_syntax.man   doctools_lang_syntax]
[manpage modules/doctools/doctools_plugin_apiref.man doctools_plugin_apiref]

[manpage apps/dtplite.man                            dtplite]
[manpage modules/doctools/mpexpand.man               mpexpand]
[manpage apps/tcldocstrip.man                        tcldocstrip]
[key MasterCard]
[manpage modules/valtype/cc_mastercard.man valtype::creditcard::mastercard]
[key matching]
[manpage modules/grammar_me/me_intro.man         grammar::me_intro]







>







1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
[manpage modules/doctools2toc/import.man             doctools::toc::import]
[manpage modules/doctools/doctools_intro.man         doctools_intro]
[manpage modules/doctools/doctools_lang_cmdref.man   doctools_lang_cmdref]
[manpage modules/doctools/doctools_lang_faq.man      doctools_lang_faq]
[manpage modules/doctools/doctools_lang_intro.man    doctools_lang_intro]
[manpage modules/doctools/doctools_lang_syntax.man   doctools_lang_syntax]
[manpage modules/doctools/doctools_plugin_apiref.man doctools_plugin_apiref]
[manpage modules/dtplite/dtplite.man                 dtplite]
[manpage apps/dtplite.man                            dtplite]
[manpage modules/doctools/mpexpand.man               mpexpand]
[manpage apps/tcldocstrip.man                        tcldocstrip]
[key MasterCard]
[manpage modules/valtype/cc_mastercard.man valtype::creditcard::mastercard]
[key matching]
[manpage modules/grammar_me/me_intro.man         grammar::me_intro]
1967
1968
1969
1970
1971
1972
1973

1974
1975
1976
1977
1978
1979
1980
[manpage modules/doctools2idx/export.man           doctools::idx::export]
[manpage modules/doctools2idx/export_nroff.man     doctools::idx::export::nroff]
[manpage modules/doctools2base/nroff_manmacros.man doctools::nroff::man_macros]
[manpage modules/doctools2toc/container.man        doctools::toc]
[manpage modules/doctools/doctoc.man               doctools::toc]
[manpage modules/doctools2toc/export.man           doctools::toc::export]
[manpage modules/doctools2toc/export_nroff.man     doctools::toc::export::nroff]

[manpage apps/dtplite.man                          dtplite]
[manpage modules/doctools/mpexpand.man             mpexpand]
[key NTP]
[manpage modules/ntp/ntp_time.man ntp_time]
[key null]
[manpage modules/virtchannel_base/null.man     tcl::chan::null]
[manpage modules/virtchannel_base/nullzero.man tcl::chan::nullzero]







>







1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
[manpage modules/doctools2idx/export.man           doctools::idx::export]
[manpage modules/doctools2idx/export_nroff.man     doctools::idx::export::nroff]
[manpage modules/doctools2base/nroff_manmacros.man doctools::nroff::man_macros]
[manpage modules/doctools2toc/container.man        doctools::toc]
[manpage modules/doctools/doctoc.man               doctools::toc]
[manpage modules/doctools2toc/export.man           doctools::toc::export]
[manpage modules/doctools2toc/export_nroff.man     doctools::toc::export::nroff]
[manpage modules/dtplite/dtplite.man               dtplite]
[manpage apps/dtplite.man                          dtplite]
[manpage modules/doctools/mpexpand.man             mpexpand]
[key NTP]
[manpage modules/ntp/ntp_time.man ntp_time]
[key null]
[manpage modules/virtchannel_base/null.man     tcl::chan::null]
[manpage modules/virtchannel_base/nullzero.man tcl::chan::nullzero]
3203
3204
3205
3206
3207
3208
3209

3210
3211
3212
3213
3214
3215
3216
[manpage modules/transfer/transmitter.man transfer::transmitter]
[key TMML]
[manpage modules/doctools/doctools.man      doctools]
[manpage modules/doctools2idx/container.man doctools::idx]
[manpage modules/doctools/docidx.man        doctools::idx]
[manpage modules/doctools2toc/container.man doctools::toc]
[manpage modules/doctools/doctoc.man        doctools::toc]

[manpage apps/dtplite.man                   dtplite]
[manpage modules/doctools/mpexpand.man      mpexpand]
[key toc]
[manpage modules/doctools/doctoc_intro.man         doctoc_intro]
[manpage modules/doctools/doctoc_plugin_apiref.man doctoc_plugin_apiref]
[manpage modules/doctools/doctoc.man               doctools::toc]
[manpage modules/doctools2toc/export_doctoc.man    doctools::toc::export::doctoc]







>







3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
[manpage modules/transfer/transmitter.man transfer::transmitter]
[key TMML]
[manpage modules/doctools/doctools.man      doctools]
[manpage modules/doctools2idx/container.man doctools::idx]
[manpage modules/doctools/docidx.man        doctools::idx]
[manpage modules/doctools2toc/container.man doctools::toc]
[manpage modules/doctools/doctoc.man        doctools::toc]
[manpage modules/dtplite/dtplite.man        dtplite]
[manpage apps/dtplite.man                   dtplite]
[manpage modules/doctools/mpexpand.man      mpexpand]
[key toc]
[manpage modules/doctools/doctoc_intro.man         doctoc_intro]
[manpage modules/doctools/doctoc_plugin_apiref.man doctoc_plugin_apiref]
[manpage modules/doctools/doctoc.man               doctools::toc]
[manpage modules/doctools2toc/export_doctoc.man    doctools::toc::export::doctoc]

Changes to support/devel/sak/doc/manpages.txt.

105
106
107
108
109
110
111

112
113
114
115
116
117
118
modules/doctools2toc/introduction.man
modules/doctools2toc/msgcat_c.man
modules/doctools2toc/msgcat_de.man
modules/doctools2toc/msgcat_en.man
modules/doctools2toc/msgcat_fr.man
modules/doctools2toc/parse.man
modules/doctools2toc/structure.man

modules/exif/exif.man
modules/fileutil/fileutil.man
modules/fileutil/multi.man
modules/fileutil/multiop.man
modules/fileutil/traverse.man
modules/ftp/ftp.man
modules/ftp/ftp_geturl.man







>







105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
modules/doctools2toc/introduction.man
modules/doctools2toc/msgcat_c.man
modules/doctools2toc/msgcat_de.man
modules/doctools2toc/msgcat_en.man
modules/doctools2toc/msgcat_fr.man
modules/doctools2toc/parse.man
modules/doctools2toc/structure.man
modules/dtplite/dtplite.man
modules/exif/exif.man
modules/fileutil/fileutil.man
modules/fileutil/multi.man
modules/fileutil/multiop.man
modules/fileutil/traverse.man
modules/ftp/ftp.man
modules/ftp/ftp_geturl.man

Changes to support/devel/sak/doc/toc.txt.

122
123
124
125
126
127
128

129
130
131
132
133
134
135
[item modules/doctools2toc/structure.man          doctools::toc::structure    {Doctoc serialization utilities}]
[item modules/doctools/doctools_intro.man         doctools_intro              {doctools introduction}]
[item modules/doctools/doctools_lang_cmdref.man   doctools_lang_cmdref        {doctools language command reference}]
[item modules/doctools/doctools_lang_faq.man      doctools_lang_faq           {doctools language faq}]
[item modules/doctools/doctools_lang_intro.man    doctools_lang_intro         {doctools language introduction}]
[item modules/doctools/doctools_lang_syntax.man   doctools_lang_syntax        {doctools language syntax}]
[item modules/doctools/doctools_plugin_apiref.man doctools_plugin_apiref      {doctools plugin API reference}]

[item apps/dtplite.man                            dtplite                     {Lightweight DocTools Markup Processor}]
[item modules/doctools/mpexpand.man               mpexpand                    {Markup processor}]
[item apps/tcldocstrip.man                        tcldocstrip                 {Tcl-based Docstrip Processor}]
[item modules/textutil/expander.man               textutil::expander          {Procedures to process templates and expand text.}]
[division_end]
[division_start {File formats}]
[item modules/exif/exif.man exif {Tcl EXIF extracts and parses EXIF fields from digital images}]







>







122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
[item modules/doctools2toc/structure.man          doctools::toc::structure    {Doctoc serialization utilities}]
[item modules/doctools/doctools_intro.man         doctools_intro              {doctools introduction}]
[item modules/doctools/doctools_lang_cmdref.man   doctools_lang_cmdref        {doctools language command reference}]
[item modules/doctools/doctools_lang_faq.man      doctools_lang_faq           {doctools language faq}]
[item modules/doctools/doctools_lang_intro.man    doctools_lang_intro         {doctools language introduction}]
[item modules/doctools/doctools_lang_syntax.man   doctools_lang_syntax        {doctools language syntax}]
[item modules/doctools/doctools_plugin_apiref.man doctools_plugin_apiref      {doctools plugin API reference}]
[item modules/dtplite/dtplite.man                 dtplite                     {Lightweight DocTools Markup Processor}]
[item apps/dtplite.man                            dtplite                     {Lightweight DocTools Markup Processor}]
[item modules/doctools/mpexpand.man               mpexpand                    {Markup processor}]
[item apps/tcldocstrip.man                        tcldocstrip                 {Tcl-based Docstrip Processor}]
[item modules/textutil/expander.man               textutil::expander          {Procedures to process templates and expand text.}]
[division_end]
[division_start {File formats}]
[item modules/exif/exif.man exif {Tcl EXIF extracts and parses EXIF fields from digital images}]
599
600
601
602
603
604
605



606
607
608
609
610
611
612
[item modules/doctools2toc/export_wiki.man   doctools::toc::export::wiki   {wiki export plugin}]
[item modules/doctools2toc/import.man        doctools::toc::import         {Importing keyword indices}]
[item modules/doctools2toc/import_doctoc.man doctools::toc::import::doctoc {doctoc import plugin}]
[item modules/doctools2toc/import_json.man   doctools::toc::import::json   {JSON import plugin}]
[item modules/doctools2toc/parse.man         doctools::toc::parse          {Parsing text in doctoc format}]
[item modules/doctools2toc/structure.man     doctools::toc::structure      {Doctoc serialization utilities}]
[division_end]



[division_start exif]
[item modules/exif/exif.man exif {Tcl EXIF extracts and parses EXIF fields from digital images}]
[division_end]
[division_start fileutil]
[item modules/fileutil/fileutil.man fileutil            {Procedures implementing some file utilities}]
[item modules/fileutil/multi.man    fileutil::multi     {Multi-file operation, scatter/gather, standard object}]
[item modules/fileutil/multiop.man  fileutil::multi::op {Multi-file operation, scatter/gather}]







>
>
>







600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
[item modules/doctools2toc/export_wiki.man   doctools::toc::export::wiki   {wiki export plugin}]
[item modules/doctools2toc/import.man        doctools::toc::import         {Importing keyword indices}]
[item modules/doctools2toc/import_doctoc.man doctools::toc::import::doctoc {doctoc import plugin}]
[item modules/doctools2toc/import_json.man   doctools::toc::import::json   {JSON import plugin}]
[item modules/doctools2toc/parse.man         doctools::toc::parse          {Parsing text in doctoc format}]
[item modules/doctools2toc/structure.man     doctools::toc::structure      {Doctoc serialization utilities}]
[division_end]
[division_start dtplite]
[item modules/dtplite/dtplite.man dtplite {Lightweight DocTools Markup Processor}]
[division_end]
[division_start exif]
[item modules/exif/exif.man exif {Tcl EXIF extracts and parses EXIF fields from digital images}]
[division_end]
[division_start fileutil]
[item modules/fileutil/fileutil.man fileutil            {Procedures implementing some file utilities}]
[item modules/fileutil/multi.man    fileutil::multi     {Multi-file operation, scatter/gather, standard object}]
[item modules/fileutil/multiop.man  fileutil::multi::op {Multi-file operation, scatter/gather}]

Added support/devel/sak/doc/toc_apps.txt.





















>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
[toc_begin {Table Of Contents} {}]
[division_start Applications]
[item apps/dtplite.man     dtplite     {Lightweight DocTools Markup Processor}]
[item apps/nns.man         nns         {Name service facility, Commandline Client Application}]
[item apps/nnsd.man        nnsd        {Name service facility, Commandline Server Application}]
[item apps/nnslog.man      nnslog      {Name service facility, Commandline Logging Client Application}]
[item apps/page.man        page        {Parser Generator}]
[item apps/tcldocstrip.man tcldocstrip {Tcl-based Docstrip Processor}]
[division_end]
[toc_end]

Added support/devel/sak/doc/toc_cats.txt.





















































































































































































































































































































































































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
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
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
[toc_begin {Table Of Contents} {}]
[division_start {By Categories}]
[division_start {Argument entry form, mega widget}]
[item modules/tepam/tepam_argument_dialogbox.man tepam::argument_dialogbox {TEPAM argument_dialogbox, reference manual}]
[division_end]
[division_start {Benchmark tools}]
[item modules/bench/bench.man            bench            {bench - Processing benchmark suites}]
[item modules/bench/bench_read.man       bench::in        {bench::in - Reading benchmark results}]
[item modules/bench/bench_wcsv.man       bench::out::csv  {bench::out::csv - Formatting benchmark results as CSV}]
[item modules/bench/bench_wtext.man      bench::out::text {bench::out::text - Formatting benchmark results as human readable text}]
[item modules/bench/bench_intro.man      bench_intro      {bench introduction}]
[item modules/bench/bench_lang_intro.man bench_lang_intro {bench language introduction}]
[item modules/bench/bench_lang_spec.man  bench_lang_spec  {bench language specification}]
[division_end]
[division_start {CGI programming}]
[item modules/html/html.man             html        {Procedures to generate HTML structures}]
[item modules/javascript/javascript.man javascript  {Procedures to generate HTML and Java Script structures.}]
[item modules/json/json.man             json        {JSON parser}]
[item modules/json/json_write.man       json::write {JSON generation}]
[item modules/ncgi/ncgi.man             ncgi        {Procedures to manipulate CGI values.}]
[division_end]
[division_start Channels]
[item modules/virtchannel_base/cat.man            tcl::chan::cat            {Concatenation channel}]
[item modules/virtchannel_core/core.man           tcl::chan::core           {Basic reflected/virtual channel support}]
[item modules/virtchannel_core/events.man         tcl::chan::events         {Event support for reflected/virtual channels}]
[item modules/virtchannel_base/facade.man         tcl::chan::facade         {Facade channel}]
[item modules/virtchannel_base/fifo.man           tcl::chan::fifo           {In-memory fifo channel}]
[item modules/virtchannel_base/fifo2.man          tcl::chan::fifo2          {In-memory interconnected fifo channels}]
[item modules/virtchannel_base/halfpipe.man       tcl::chan::halfpipe       {In-memory channel, half of a fifo2}]
[item modules/virtchannel_base/memchan.man        tcl::chan::memchan        {In-memory channel}]
[item modules/virtchannel_base/null.man           tcl::chan::null           {Null channel}]
[item modules/virtchannel_base/nullzero.man       tcl::chan::nullzero       {Null/Zero channel combination}]
[item modules/virtchannel_base/random.man         tcl::chan::random         {Random channel}]
[item modules/virtchannel_base/randseed.man       tcl::chan::randseed       {Utilities for random channels}]
[item modules/virtchannel_base/std.man            tcl::chan::std            {Standard I/O, unification of stdin and stdout}]
[item modules/virtchannel_base/string.man         tcl::chan::string         {Read-only in-memory channel}]
[item modules/virtchannel_base/textwindow.man     tcl::chan::textwindow     {Textwindow channel}]
[item modules/virtchannel_base/variable.man       tcl::chan::variable       {In-memory channel using variable for storage}]
[item modules/virtchannel_base/zero.man           tcl::chan::zero           {Zero channel}]
[item modules/virtchannel_transform/adler32.man   tcl::transform::adler32   {Adler32 transformation}]
[item modules/virtchannel_transform/base64.man    tcl::transform::base64    {Base64 encoding transformation}]
[item modules/virtchannel_core/transformcore.man  tcl::transform::core      {Basic reflected/virtual channel transform support}]
[item modules/virtchannel_transform/counter.man   tcl::transform::counter   {Counter transformation}]
[item modules/virtchannel_transform/crc32.man     tcl::transform::crc32     {Crc32 transformation}]
[item modules/virtchannel_transform/hex.man       tcl::transform::hex       {Hexadecimal encoding transformation}]
[item modules/virtchannel_transform/identity.man  tcl::transform::identity  {Identity transformation}]
[item modules/virtchannel_transform/limitsize.man tcl::transform::limitsize {limiting input}]
[item modules/virtchannel_transform/observe.man   tcl::transform::observe   {Observer transformation, stream copy}]
[item modules/virtchannel_transform/otp.man       tcl::transform::otp       {Encryption via one-time pad}]
[item modules/virtchannel_transform/rot.man       tcl::transform::rot       rot-encryption]
[item modules/virtchannel_transform/spacer.man    tcl::transform::spacer    {Space insertation and removal}]
[item modules/virtchannel_transform/zlib.man      tcl::transform::zlib      {zlib (de)compression}]
[division_end]
[division_start Coroutine]
[item modules/coroutine/coroutine.man coroutine       {Coroutine based event and IO handling}]
[item modules/coroutine/coro_auto.man coroutine::auto {Automatic event and IO coroutine awareness}]
[division_end]
[division_start {Data structures}]
[item modules/counter/counter.man     counter             {Procedures for counters and histograms}]
[item modules/report/report.man       report              {Create and manipulate report objects}]
[item modules/struct/disjointset.man  struct::disjointset {Disjoint set data structure}]
[item modules/struct/graph.man        struct::graph       {Create and manipulate directed graph objects}]
[item modules/struct/graphops.man     struct::graph::op   {Operation for (un)directed graph objects}]
[item modules/struct/graph1.man       struct::graph_v1    {Create and manipulate directed graph objects}]
[item modules/struct/struct_list.man  struct::list        {Procedures for manipulating lists}]
[item modules/struct/matrix.man       struct::matrix      {Create and manipulate matrix objects}]
[item modules/struct/matrix1.man      struct::matrix_v1   {Create and manipulate matrix objects}]
[item modules/struct/pool.man         struct::pool        {Create and manipulate pool objects (of discrete items)}]
[item modules/struct/prioqueue.man    struct::prioqueue   {Create and manipulate prioqueue objects}]
[item modules/struct/queue.man        struct::queue       {Create and manipulate queue objects}]
[item modules/struct/record.man       struct::record      {Define and create records (similar to 'C' structures)}]
[item modules/struct/struct_set.man   struct::set         {Procedures for manipulating sets}]
[item modules/struct/skiplist.man     struct::skiplist    {Create and manipulate skiplists}]
[item modules/struct/stack.man        struct::stack       {Create and manipulate stack objects}]
[item modules/struct/struct_tree.man  struct::tree        {Create and manipulate tree objects}]
[item modules/struct/struct_tree1.man struct::tree_v1     {Create and manipulate tree objects}]
[item modules/treeql/treeql.man       treeql              {Query tree objects}]
[division_end]
[division_start {Documentation tools}]
[item modules/doctools/docidx_intro.man           docidx_intro                {docidx introduction}]
[item modules/doctools/docidx_lang_cmdref.man     docidx_lang_cmdref          {docidx language command reference}]
[item modules/doctools/docidx_lang_faq.man        docidx_lang_faq             {docidx language faq}]
[item modules/doctools/docidx_lang_intro.man      docidx_lang_intro           {docidx language introduction}]
[item modules/doctools/docidx_lang_syntax.man     docidx_lang_syntax          {docidx language syntax}]
[item modules/doctools/docidx_plugin_apiref.man   docidx_plugin_apiref        {docidx plugin API reference}]
[item modules/docstrip/docstrip.man               docstrip                    {Docstrip style source code extraction}]
[item modules/docstrip/docstrip_util.man          docstrip_util               {Docstrip-related utilities}]
[item modules/doctools/doctoc_intro.man           doctoc_intro                {doctoc introduction}]
[item modules/doctools/doctoc_lang_cmdref.man     doctoc_lang_cmdref          {doctoc language command reference}]
[item modules/doctools/doctoc_lang_faq.man        doctoc_lang_faq             {doctoc language faq}]
[item modules/doctools/doctoc_lang_intro.man      doctoc_lang_intro           {doctoc language introduction}]
[item modules/doctools/doctoc_lang_syntax.man     doctoc_lang_syntax          {doctoc language syntax}]
[item modules/doctools/doctoc_plugin_apiref.man   doctoc_plugin_apiref        {doctoc plugin API reference}]
[item modules/doctools/doctools.man               doctools                    {doctools - Processing documents}]
[item modules/doctools2idx/introduction.man       doctools2idx_introduction   {DocTools - Keyword indices}]
[item modules/doctools2toc/introduction.man       doctools2toc_introduction   {DocTools - Tables of Contents}]
[item modules/doctools/changelog.man              doctools::changelog         {Processing text in Emacs ChangeLog format}]
[item modules/doctools/cvs.man                    doctools::cvs               {Processing text in 'cvs log' format}]
[item modules/doctools2base/html_cssdefaults.man  doctools::html::cssdefaults {Default CSS style for HTML export plugins}]
[item modules/doctools2idx/container.man          doctools::idx               {Holding keyword indices}]
[item modules/doctools/docidx.man                 doctools::idx               {docidx - Processing indices}]
[item modules/doctools2idx/export.man             doctools::idx::export       {Exporting keyword indices}]
[item modules/doctools2idx/import.man             doctools::idx::import       {Importing keyword indices}]
[item modules/doctools2idx/parse.man              doctools::idx::parse        {Parsing text in docidx format}]
[item modules/doctools2idx/structure.man          doctools::idx::structure    {Docidx serialization utilities}]
[item modules/doctools2base/tcllib_msgcat.man     doctools::msgcat            {Message catalog management for the various document parsers}]
[item modules/doctools2idx/msgcat_c.man           doctools::msgcat::idx::c    {Message catalog for the docidx parser (C)}]
[item modules/doctools2idx/msgcat_de.man          doctools::msgcat::idx::de   {Message catalog for the docidx parser (DE)}]
[item modules/doctools2idx/msgcat_en.man          doctools::msgcat::idx::en   {Message catalog for the docidx parser (EN)}]
[item modules/doctools2idx/msgcat_fr.man          doctools::msgcat::idx::fr   {Message catalog for the docidx parser (FR)}]
[item modules/doctools2toc/msgcat_c.man           doctools::msgcat::toc::c    {Message catalog for the doctoc parser (C)}]
[item modules/doctools2toc/msgcat_de.man          doctools::msgcat::toc::de   {Message catalog for the doctoc parser (DE)}]
[item modules/doctools2toc/msgcat_en.man          doctools::msgcat::toc::en   {Message catalog for the doctoc parser (EN)}]
[item modules/doctools2toc/msgcat_fr.man          doctools::msgcat::toc::fr   {Message catalog for the doctoc parser (FR)}]
[item modules/doctools2base/nroff_manmacros.man   doctools::nroff::man_macros {Default CSS style for NROFF export plugins}]
[item modules/doctools2base/tcl_parse.man         doctools::tcl::parse        {Processing text in 'subst -novariables' format}]
[item modules/doctools2toc/container.man          doctools::toc               {Holding tables of contents}]
[item modules/doctools/doctoc.man                 doctools::toc               {doctoc - Processing tables of contents}]
[item modules/doctools2toc/export.man             doctools::toc::export       {Exporting tables of contents}]
[item modules/doctools2toc/import.man             doctools::toc::import       {Importing keyword indices}]
[item modules/doctools2toc/parse.man              doctools::toc::parse        {Parsing text in doctoc format}]
[item modules/doctools2toc/structure.man          doctools::toc::structure    {Doctoc serialization utilities}]
[item modules/doctools/doctools_intro.man         doctools_intro              {doctools introduction}]
[item modules/doctools/doctools_lang_cmdref.man   doctools_lang_cmdref        {doctools language command reference}]
[item modules/doctools/doctools_lang_faq.man      doctools_lang_faq           {doctools language faq}]
[item modules/doctools/doctools_lang_intro.man    doctools_lang_intro         {doctools language introduction}]
[item modules/doctools/doctools_lang_syntax.man   doctools_lang_syntax        {doctools language syntax}]
[item modules/doctools/doctools_plugin_apiref.man doctools_plugin_apiref      {doctools plugin API reference}]
[item modules/dtplite/dtplite.man                 dtplite                     {Lightweight DocTools Markup Processor}]
[item apps/dtplite.man                            dtplite                     {Lightweight DocTools Markup Processor}]
[item modules/doctools/mpexpand.man               mpexpand                    {Markup processor}]
[item apps/tcldocstrip.man                        tcldocstrip                 {Tcl-based Docstrip Processor}]
[item modules/textutil/expander.man               textutil::expander          {Procedures to process templates and expand text.}]
[division_end]
[division_start {File formats}]
[item modules/exif/exif.man exif {Tcl EXIF extracts and parses EXIF fields from digital images}]
[item modules/gpx/gpx.man   gpx  {Extracts waypoints, tracks and routes from GPX files}]
[item modules/jpeg/jpeg.man jpeg {JPEG querying and manipulation of meta data}]
[item modules/png/png.man   png  {PNG querying and manipulation of meta data}]
[item modules/tar/tar.man   tar  {Tar file creation, extraction & manipulation}]
[item modules/tiff/tiff.man tiff {TIFF reading, writing, and querying and manipulation of meta data}]
[division_end]
[division_start {Grammars and finite automata}]
[item modules/grammar_aycock/aycock.man  grammar::aycock        {Aycock-Horspool-Earley parser generator for Tcl}]
[item modules/grammar_fa/fa.man          grammar::fa            {Create and manipulate finite automatons}]
[item modules/grammar_fa/dacceptor.man   grammar::fa::dacceptor {Create and use deterministic acceptors}]
[item modules/grammar_fa/dexec.man       grammar::fa::dexec     {Execute deterministic finite automatons}]
[item modules/grammar_fa/faop.man        grammar::fa::op        {Operations on finite automatons}]
[item modules/grammar_me/me_cpu.man      grammar::me::cpu       {Virtual machine implementation II for parsing token streams}]
[item modules/grammar_me/me_cpucore.man  grammar::me::cpu::core {ME virtual machine state manipulation}]
[item modules/grammar_me/gasm.man        grammar::me::cpu::gasm {ME assembler}]
[item modules/grammar_me/me_tcl.man      grammar::me::tcl       {Virtual machine implementation I for parsing token streams}]
[item modules/grammar_me/me_util.man     grammar::me::util      {AST utilities}]
[item modules/grammar_me/me_ast.man      grammar::me_ast        {Various representations of ASTs}]
[item modules/grammar_me/me_intro.man    grammar::me_intro      {Introduction to virtual machines for parsing token streams}]
[item modules/grammar_me/me_vm.man       grammar::me_vm         {Virtual machine for parsing token streams}]
[item modules/grammar_peg/peg.man        grammar::peg           {Create and manipulate parsing expression grammars}]
[item modules/grammar_peg/peg_interp.man grammar::peg::interp   {Interpreter for parsing expression grammars}]
[division_end]
[division_start {Hashes, checksums, and encryption}]
[item modules/aes/aes.man           aes       {Implementation of the AES block cipher}]
[item modules/blowfish/blowfish.man blowfish  {Implementation of the Blowfish block cipher}]
[item modules/crc/cksum.man         cksum     {Calculate a cksum(1) compatible checksum}]
[item modules/crc/crc16.man         crc16     {Perform a 16bit Cyclic Redundancy Check}]
[item modules/crc/crc32.man         crc32     {Perform a 32bit Cyclic Redundancy Check}]
[item modules/des/des.man           des       {Implementation of the DES and triple-DES ciphers}]
[item modules/md4/md4.man           md4       {MD4 Message-Digest Algorithm}]
[item modules/md5/md5.man           md5       {MD5 Message-Digest Algorithm}]
[item modules/md5crypt/md5crypt.man md5crypt  {MD5-based password encryption}]
[item modules/otp/otp.man           otp       {One-Time Passwords}]
[item modules/pki/pki.man           pki       {Implementation of the public key cipher}]
[item modules/rc4/rc4.man           rc4       {Implementation of the RC4 stream cipher}]
[item modules/ripemd/ripemd128.man  ripemd128 {RIPEMD-128 Message-Digest Algorithm}]
[item modules/ripemd/ripemd160.man  ripemd160 {RIPEMD-160 Message-Digest Algorithm}]
[item modules/sha1/sha1.man         sha1      {SHA1 Message-Digest Algorithm}]
[item modules/sha1/sha256.man       sha256    {SHA256 Message-Digest Algorithm}]
[item modules/soundex/soundex.man   soundex   Soundex]
[item modules/crc/sum.man           sum       {Calculate a sum(1) compatible checksum}]
[item modules/uuid/uuid.man         uuid      {UUID generation and comparison}]
[division_end]
[division_start Mathematics]
[item modules/math/math.man                    math                    {Tcl Math Library}]
[item modules/math/bigfloat.man                math::bigfloat          {Arbitrary precision floating-point numbers}]
[item modules/math/bignum.man                  math::bignum            {Arbitrary precision integer numbers}]
[item modules/math/calculus.man                math::calculus          {Integration and ordinary differential equations}]
[item modules/math/romberg.man                 math::calculus::romberg {Romberg integration}]
[item modules/math/combinatorics.man           math::combinatorics     {Combinatorial functions in the Tcl Math Library}]
[item modules/math/qcomplex.man                math::complexnumbers    {Straightforward complex number package}]
[item modules/math/constants.man               math::constants         {Mathematical and numerical constants}]
[item modules/math/decimal.man                 math::decimal           {General decimal arithmetic}]
[item modules/math/fourier.man                 math::fourier           {Discrete and fast fourier transforms}]
[item modules/math/fuzzy.man                   math::fuzzy             {Fuzzy comparison of floating-point numbers}]
[item modules/math/math_geometry.man           math::geometry          {Geometrical computations}]
[item modules/math/interpolate.man             math::interpolate       {Interpolation routines}]
[item modules/math/linalg.man                  math::linearalgebra     {Linear Algebra}]
[item modules/math/numtheory.man               math::numtheory         {Number Theory}]
[item modules/math/optimize.man                math::optimize          {Optimisation routines}]
[item modules/math/polynomials.man             math::polynomials       {Polynomial functions}]
[item modules/math/rational_funcs.man          math::rationalfunctions {Polynomial functions}]
[item modules/math/roman.man                   math::roman             {Tools for creating and manipulating roman numerals}]
[item modules/math/special.man                 math::special           {Special mathematical functions}]
[item modules/math/statistics.man              math::statistics        {Basic statistical functions and procedures}]
[item modules/simulation/annealing.man         simulation::annealing   {Simulated annealing}]
[item modules/simulation/montecarlo.man        simulation::montecarlo  {Monte Carlo simulations}]
[item modules/simulation/simulation_random.man simulation::random      {Pseudo-random number generators}]
[division_end]
[division_start Networking]
[item modules/asn/asn.man          asn                {ASN.1 BER encoder/decoder}]
[item modules/http/autoproxy.man   autoproxy          {Automatic HTTP proxy usage and authentication}]
[item modules/bee/bee.man          bee                {BitTorrent Serialization Format Encoder/Decoder}]
[item modules/dns/tcllib_dns.man   dns                {Tcl Domain Name Service Client}]
[item modules/ftp/ftp.man          ftp                {Client-side tcl implementation of the ftp protocol}]
[item modules/ftp/ftp_geturl.man   ftp::geturl        {Uri handler for ftp urls}]
[item modules/ftpd/ftpd.man        ftpd               {Tcl FTP server implementation}]
[item modules/ident/ident.man      ident              {Ident protocol client}]
[item modules/irc/irc.man          irc                {Create IRC connection and interface.}]
[item modules/ldap/ldap.man        ldap               {LDAP client}]
[item modules/ldap/ldapx.man       ldapx              {LDAP extended object interface}]
[item modules/nns/nns_client.man   nameserv           {Name service facility, Client}]
[item modules/nns/nns_auto.man     nameserv::auto     {Name service facility, Client Extension}]
[item modules/nns/nns_common.man   nameserv::common   {Name service facility, shared definitions}]
[item modules/nns/nns_protocol.man nameserv::protocol {Name service facility, client/server protocol}]
[item modules/nns/nns_server.man   nameserv::server   {Name service facility, Server}]
[item modules/nmea/nmea.man        nmea               {Process NMEA data}]
[item apps/nns.man                 nns                {Name service facility, Commandline Client Application}]
[item modules/nns/nns_intro.man    nns_intro          {Name service facility, introduction}]
[item apps/nnsd.man                nnsd               {Name service facility, Commandline Server Application}]
[item apps/nnslog.man              nnslog             {Name service facility, Commandline Logging Client Application}]
[item modules/nntp/nntp.man        nntp               {Tcl client for the NNTP protocol}]
[item modules/ntp/ntp_time.man     ntp_time           {Tcl Time Service Client}]
[item modules/irc/picoirc.man      picoirc            {Small and simple embeddable IRC client.}]
[item modules/pop3/pop3.man        pop3               {Tcl client for POP3 email protocol}]
[item modules/pop3d/pop3d.man      pop3d              {Tcl POP3 server implementation}]
[item modules/pop3d/pop3d_dbox.man pop3d::dbox        {Simple mailbox database for pop3d}]
[item modules/pop3d/pop3d_udb.man  pop3d::udb         {Simple user database for pop3d}]
[item modules/amazon-s3/S3.man     S3                 {Amazon S3 Web Service Interface}]
[item modules/sasl/sasl.man        SASL               {Implementation of SASL mechanisms for Tcl}]
[item modules/mime/smtp.man        smtp               {Client-side tcl implementation of the smtp protocol}]
[item modules/smtpd/smtpd.man      smtpd              {Tcl SMTP server implementation}]
[item modules/dns/tcllib_ip.man    tcllib_ip          {IPv4 and IPv6 address manipulation}]
[item modules/uri/uri.man          uri                {URI utilities}]
[item modules/uri/urn-scheme.man   uri_urn            {URI utilities, URN scheme}]
[division_end]
[division_start {Page Parser Generator}]
[item apps/page.man                         page                 {Parser Generator}]
[item modules/page/page_intro.man           page_intro           {page introduction}]
[item modules/page/page_pluginmgr.man       page_pluginmgr       {page plugin manager}]
[item modules/page/page_util_flow.man       page_util_flow       {page dataflow/treewalker utility}]
[item modules/page/page_util_norm_lemon.man page_util_norm_lemon {page AST normalization, LEMON}]
[item modules/page/page_util_norm_peg.man   page_util_norm_peg   {page AST normalization, PEG}]
[item modules/page/page_util_peg.man        page_util_peg        {page PEG transformation utilities}]
[item modules/page/page_util_quote.man      page_util_quote      {page character quoting utilities}]
[division_end]
[division_start {Parsing and Grammars}]
[item modules/pt/pt.man                       pt                                 {Parser Tools Application}]
[item modules/pt/pt_astree.man                pt::ast                            {Abstract Syntax Tree Serialization}]
[item modules/pt/pt_cparam_config_critcl.man  pt::cparam::configuration::critcl  {C/PARAM, Canned configuration, Critcl}]
[item modules/pt/pt_json_language.man         pt::json_language                  {The JSON Grammar Exchange Format}]
[item modules/pt/pt_param.man                 pt::param                          {PackRat Machine Specification}]
[item modules/pt/pt_pexpression.man           pt::pe                             {Parsing Expression Serialization}]
[item modules/pt/pt_pexpr_op.man              pt::pe::op                         {Parsing Expression Utilities}]
[item modules/pt/pt_pegrammar.man             pt::peg                            {Parsing Expression Grammar Serialization}]
[item modules/pt/pt_peg_container.man         pt::peg::container                 {PEG Storage}]
[item modules/pt/pt_peg_container_peg.man     pt::peg::container::peg            {PEG Storage. Canned PEG grammar specification}]
[item modules/pt/pt_peg_export.man            pt::peg::export                    {PEG Export}]
[item modules/pt/pt_peg_export_container.man  pt::peg::export::container         {PEG Export Plugin. Write CONTAINER format}]
[item modules/pt/pt_peg_export_json.man       pt::peg::export::json              {PEG Export Plugin. Write JSON format}]
[item modules/pt/pt_peg_export_peg.man        pt::peg::export::peg               {PEG Export Plugin. Write PEG format}]
[item modules/pt/pt_peg_from_container.man    pt::peg::from::container           {PEG Conversion. From CONTAINER format}]
[item modules/pt/pt_peg_from_json.man         pt::peg::from::json                {PEG Conversion. Read JSON format}]
[item modules/pt/pt_peg_from_peg.man          pt::peg::from::peg                 {PEG Conversion. Read PEG format}]
[item modules/pt/pt_peg_import.man            pt::peg::import                    {PEG Import}]
[item modules/pt/pt_peg_import_container.man  pt::peg::import::container         {PEG Import Plugin. From CONTAINER format}]
[item modules/pt/pt_peg_import_json.man       pt::peg::import::json              {PEG Import Plugin. Read JSON format}]
[item modules/pt/pt_peg_import_peg.man        pt::peg::import::peg               {PEG Import Plugin. Read PEG format}]
[item modules/pt/pt_peg_interp.man            pt::peg::interp                    {Interpreter for parsing expression grammars}]
[item modules/pt/pt_peg_to_container.man      pt::peg::to::container             {PEG Conversion. Write CONTAINER format}]
[item modules/pt/pt_peg_to_cparam.man         pt::peg::to::cparam                {PEG Conversion. Write CPARAM format}]
[item modules/pt/pt_peg_to_json.man           pt::peg::to::json                  {PEG Conversion. Write JSON format}]
[item modules/pt/pt_peg_to_param.man          pt::peg::to::param                 {PEG Conversion. Write PARAM format}]
[item modules/pt/pt_peg_to_peg.man            pt::peg::to::peg                   {PEG Conversion. Write PEG format}]
[item modules/pt/pt_peg_to_tclparam.man       pt::peg::to::tclparam              {PEG Conversion. Write TCLPARAM format}]
[item modules/pt/pt_peg_language.man          pt::peg_language                   {PEG Language Tutorial}]
[item modules/pt/pt_peg_introduction.man      pt::pegrammar                      {Introduction to Parsing Expression Grammars}]
[item modules/pt/pt_pgen.man                  pt::pgen                           {Parser Generator}]
[item modules/pt/pt_rdengine.man              pt::rde                            {Parsing Runtime Support, PARAM based}]
[item modules/pt/pt_tclparam_config_snit.man  pt::tclparam::configuration::snit  {Tcl/PARAM, Canned configuration, Snit}]
[item modules/pt/pt_tclparam_config_tcloo.man pt::tclparam::configuration::tcloo {Tcl/PARAM, Canned configuration, Tcloo}]
[item modules/pt/pt_to_api.man                pt_export_api                      {Parser Tools Export API}]
[item modules/pt/pt_from_api.man              pt_import_api                      {Parser Tools Import API}]
[item modules/pt/pt_introduction.man          pt_introduction                    {Introduction to Parser Tools}]
[item modules/pt/pt_parser_api.man            pt_parser_api                      {Parser API}]
[division_end]
[division_start {Procedures, arguments, parameters, options}]
[item modules/tepam/tepam_introduction.man tepam            {An introduction into TEPAM, Tcl's Enhanced Procedure and Argument Manager}]
[item modules/tepam/tepam_procedure.man    tepam::procedure {TEPAM procedure, reference manual}]
[division_end]
[division_start {Programming tools}]
[item modules/cmdline/cmdline.man         cmdline                   {Procedures to process command lines and options.}]
[item modules/comm/comm.man               comm                      {A remote communication facility for Tcl (8.3 and later)}]
[item modules/comm/comm_wire.man          comm_wire                 {The comm wire protocol}]
[item modules/control/control.man         control                   {Procedures for control flow structures.}]
[item modules/interp/deleg_method.man     deleg_method              {Creation of comm delegates (snit methods)}]
[item modules/interp/deleg_proc.man       deleg_proc                {Creation of comm delegates (procedures)}]
[item modules/fileutil/fileutil.man       fileutil                  {Procedures implementing some file utilities}]
[item modules/fumagic/cfront.man          fileutil::magic::cfront   {Generator core for compiler of magic(5) files}]
[item modules/fumagic/cgen.man            fileutil::magic::cgen     {Generator core for compiler of magic(5) files}]
[item modules/fumagic/filetypes.man       fileutil::magic::filetype {Procedures implementing file-type recognition}]
[item modules/fumagic/mimetypes.man       fileutil::magic::mimetype {Procedures implementing mime-type recognition}]
[item modules/fumagic/rtcore.man          fileutil::magic::rt       {Runtime core for file type recognition engines written in pure Tcl}]
[item modules/fileutil/multi.man          fileutil::multi           {Multi-file operation, scatter/gather, standard object}]
[item modules/fileutil/multiop.man        fileutil::multi::op       {Multi-file operation, scatter/gather}]
[item modules/fileutil/traverse.man       fileutil_traverse         {Iterative directory traversal}]
[item modules/hook/hook.man               hook                      Hooks]
[item modules/interp/tcllib_interp.man    interp                    {Interp creation and aliasing}]
[item modules/log/log.man                 log                       {Procedures to log messages of libraries and applications.}]
[item modules/log/logger.man              logger                    {System to control logging of events.}]
[item modules/log/loggerAppender.man      logger::appender          {Collection of predefined appenders for logger}]
[item modules/log/loggerUtils.man         logger::utils             {Utilities for logger}]
[item modules/multiplexer/multiplexer.man multiplexer               {One-to-many communication with sockets.}]
[item modules/pluginmgr/pluginmgr.man     pluginmgr                 {Manage a plugin}]
[item modules/profiler/profiler.man       profiler                  {Tcl source code profiler}]
[item modules/snit/snit.man               snit                      {Snit's Not Incr Tcl}]
[item modules/snit/snitfaq.man            snitfaq                   {Snit Frequently Asked Questions}]
[item modules/stooop/stooop.man           stooop                    {Object oriented extension.}]
[item modules/tie/tie.man                 tie                       {Array persistence}]
[item modules/tie/tie_std.man             tie                       {Array persistence, standard data sources}]
[item modules/uev/uevent.man              uevent                    {User events}]
[item modules/wip/wip.man                 wip                       {Word Interpreter}]
[division_end]
[division_start {Terminal control}]
[item modules/term/term.man         term                     {General terminal control}]
[item modules/term/ansi_code.man    term::ansi::code         {Helper for control sequences}]
[item modules/term/ansi_cattr.man   term::ansi::code::attr   {ANSI attribute sequences}]
[item modules/term/ansi_cctrl.man   term::ansi::code::ctrl   {ANSI control sequences}]
[item modules/term/ansi_cmacros.man term::ansi::code::macros {Macro sequences}]
[item modules/term/ansi_ctrlu.man   term::ansi::ctrl::unix   {Control operations and queries}]
[item modules/term/ansi_send.man    term::ansi::send         {Output of ANSI control sequences to terminals}]
[item modules/term/imenu.man        term::interact::menu     {Terminal widget, menu}]
[item modules/term/ipager.man       term::interact::pager    {Terminal widget, paging}]
[item modules/term/receive.man      term::receive            {General input from terminals}]
[item modules/term/term_bind.man    term::receive::bind      {Keyboard dispatch from terminals}]
[item modules/term/term_send.man    term::send               {General output to terminals}]
[division_end]
[division_start {Text formatter plugin}]
[item modules/doctools2idx/export_docidx.man doctools::idx::export::docidx {docidx export plugin}]
[item modules/doctools2idx/export_html.man   doctools::idx::export::html   {HTML export plugin}]
[item modules/doctools2idx/export_json.man   doctools::idx::export::json   {JSON export plugin}]
[item modules/doctools2idx/export_nroff.man  doctools::idx::export::nroff  {nroff export plugin}]
[item modules/doctools2idx/export_text.man   doctools::idx::export::text   {plain text export plugin}]
[item modules/doctools2idx/export_wiki.man   doctools::idx::export::wiki   {wiki export plugin}]
[item modules/doctools2idx/import_docidx.man doctools::idx::import::docidx {docidx import plugin}]
[item modules/doctools2idx/import_json.man   doctools::idx::import::json   {JSON import plugin}]
[item modules/doctools2toc/export_doctoc.man doctools::toc::export::doctoc {doctoc export plugin}]
[item modules/doctools2toc/export_html.man   doctools::toc::export::html   {HTML export plugin}]
[item modules/doctools2toc/export_json.man   doctools::toc::export::json   {JSON export plugin}]
[item modules/doctools2toc/export_nroff.man  doctools::toc::export::nroff  {nroff export plugin}]
[item modules/doctools2toc/export_text.man   doctools::toc::export::text   {plain text export plugin}]
[item modules/doctools2toc/export_wiki.man   doctools::toc::export::wiki   {wiki export plugin}]
[item modules/doctools2toc/import_doctoc.man doctools::toc::import::doctoc {doctoc import plugin}]
[item modules/doctools2toc/import_json.man   doctools::toc::import::json   {JSON import plugin}]
[division_end]
[division_start {Text processing}]
[item modules/base64/ascii85.man           ascii85              {ascii85-encode/decode binary data}]
[item modules/base32/base32.man            base32               {base32 standard encoding}]
[item modules/base32/base32core.man        base32::core         {Expanding basic base32 maps}]
[item modules/base32/base32hex.man         base32::hex          {base32 extended hex encoding}]
[item modules/base64/base64.man            base64               {base64-encode/decode binary data}]
[item modules/bibtex/bibtex.man            bibtex               {Parse bibtex files}]
[item modules/clock/iso8601.man            clock_iso8601        {Parsing ISO 8601 dates/times}]
[item modules/clock/rfc2822.man            clock_rfc2822        {Parsing ISO 8601 dates/times}]
[item modules/csv/csv.man                  csv                  {Procedures to handle CSV data.}]
[item modules/htmlparse/htmlparse.man      htmlparse            {Procedures to parse HTML strings}]
[item modules/inifile/ini.man              inifile              {Parsing of Windows INI files}]
[item modules/mime/mime.man                mime                 {Manipulation of MIME body parts}]
[item modules/rcs/rcs.man                  rcs                  {RCS low level utilities}]
[item modules/string/token.man             string::token        {Regex based iterative lexing}]
[item modules/string/token_shell.man       string::token::shell {Parsing of shell command line}]
[item modules/textutil/textutil.man        textutil             {Procedures to manipulate texts and strings.}]
[item modules/textutil/adjust.man          textutil::adjust     {Procedures to adjust, indent, and undent paragraphs}]
[item modules/textutil/repeat.man          textutil::repeat     {Procedures to repeat strings.}]
[item modules/textutil/textutil_split.man  textutil::split      {Procedures to split texts}]
[item modules/textutil/textutil_string.man textutil::string     {Procedures to manipulate texts and strings.}]
[item modules/textutil/tabify.man          textutil::tabify     {Procedures to (un)tabify strings}]
[item modules/textutil/trim.man            textutil::trim       {Procedures to trim strings}]
[item modules/base64/uuencode.man          uuencode             {UU-encode/decode binary data}]
[item modules/amazon-s3/xsxp.man           xsxp                 {eXtremely Simple Xml Parser}]
[item modules/base64/yencode.man           yencode              {Y-encode/decode binary data}]
[division_end]
[division_start {Transfer module}]
[item modules/transfer/connect.man     transfer::connect           {Connection setup}]
[item modules/transfer/copyops.man     transfer::copy              {Data transfer foundation}]
[item modules/transfer/tqueue.man      transfer::copy::queue       {Queued transfers}]
[item modules/transfer/ddest.man       transfer::data::destination {Data destination}]
[item modules/transfer/dsource.man     transfer::data::source      {Data source}]
[item modules/transfer/receiver.man    transfer::receiver          {Data source}]
[item modules/transfer/transmitter.man transfer::transmitter       {Data source}]
[division_end]
[division_start Unfiled]
[item modules/cache/async.man                cache::async             {Asynchronous in-memory cache}]
[item modules/generator/generator.man        generator                {Procedures for creating and using generators.}]
[item modules/yaml/huddle.man                huddle                   {Create and manipulate huddle object}]
[item modules/imap4/imap4.man                imap4                    {imap client-side tcl implementation of imap protocol}]
[item modules/map/map_geocode_nominatim.man  map::geocode::nominatim  {Resolving geographical names with a Nominatim service}]
[item modules/map/map_slippy.man             map::slippy              {Common code for slippy based map packages}]
[item modules/map/map_slippy_cache.man       map::slippy::cache       {Management of a tile cache in the local filesystem}]
[item modules/map/map_slippy_fetcher.man     map::slippy::fetcher     {Accessing a server providing tiles for slippy-based maps}]
[item modules/mapproj/mapproj.man            mapproj                  {Map projection routines}]
[item modules/math/symdiff.man               math::calculus::symdiff  {Symbolic differentiation for Tcl}]
[item modules/namespacex/namespacex.man      namespacex               {Namespace utility commands}]
[item modules/rest/rest.man                  rest                     {define REST web APIs and call them inline or asychronously}]
[item modules/stringprep/stringprep.man      stringprep               {Implementation of stringprep}]
[item modules/stringprep/stringprep_data.man stringprep::data         {stringprep data tables, generated, internal}]
[item modules/math/machineparameters.man     tclrep/machineparameters {Compute double precision machine parameters.}]
[item modules/uev/uevent_onidle.man          uevent::onidle           {Request merging and deferal to idle time}]
[item modules/stringprep/unicode.man         unicode                  {Implementation of Unicode normalization}]
[item modules/stringprep/unicode_data.man    unicode::data            {unicode data tables, generated, internal}]
[item modules/units/units.man                units                    {unit conversion}]
[item modules/yaml/yaml.man                  yaml                     {YAML Format Encoder/Decoder}]
[division_end]
[division_start Utility]
[item modules/lambda/lambda.man  lambda   {Utility commands for anonymous procedures}]
[item modules/ooutil/ooutil.man  oo::util {Utility commands for TclOO}]
[item modules/try/tcllib_try.man try      {try - Trap and process errors and exceptions}]
[division_end]
[division_start {Validation, Type checking}]
[item modules/valtype/valtype_common.man valtype::common                 {Validation, common code}]
[item modules/valtype/cc_amex.man        valtype::creditcard::amex       {Validation for AMEX creditcard number}]
[item modules/valtype/cc_discover.man    valtype::creditcard::discover   {Validation for Discover creditcard number}]
[item modules/valtype/cc_mastercard.man  valtype::creditcard::mastercard {Validation for Mastercard creditcard number}]
[item modules/valtype/cc_visa.man        valtype::creditcard::visa       {Validation for VISA creditcard number}]
[item modules/valtype/ean13.man          valtype::gs1::ean13             {Validation for EAN13}]
[item modules/valtype/iban.man           valtype::iban                   {Validation for IBAN}]
[item modules/valtype/imei.man           valtype::imei                   {Validation for IMEI}]
[item modules/valtype/isbn.man           valtype::isbn                   {Validation for ISBN}]
[item modules/valtype/luhn.man           valtype::luhn                   {Validation for plain number with a LUHN checkdigit}]
[item modules/valtype/luhn5.man          valtype::luhn5                  {Validation for plain number with a LUHN5 checkdigit}]
[item modules/valtype/usnpi.man          valtype::usnpi                  {Validation for USNPI}]
[item modules/valtype/verhoeff.man       valtype::verhoeff               {Validation for plain number with a VERHOEFF checkdigit}]
[division_end]
[division_end]
[toc_end]

Added support/devel/sak/doc/toc_mods.txt.





































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
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
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
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
[toc_begin {Table Of Contents} {}]
[division_start Modules]
[division_start aes]
[item modules/aes/aes.man aes {Implementation of the AES block cipher}]
[division_end]
[division_start amazon-s3]
[item modules/amazon-s3/S3.man   S3   {Amazon S3 Web Service Interface}]
[item modules/amazon-s3/xsxp.man xsxp {eXtremely Simple Xml Parser}]
[division_end]
[division_start asn]
[item modules/asn/asn.man asn {ASN.1 BER encoder/decoder}]
[division_end]
[division_start base32]
[item modules/base32/base32.man     base32       {base32 standard encoding}]
[item modules/base32/base32core.man base32::core {Expanding basic base32 maps}]
[item modules/base32/base32hex.man  base32::hex  {base32 extended hex encoding}]
[division_end]
[division_start base64]
[item modules/base64/ascii85.man  ascii85  {ascii85-encode/decode binary data}]
[item modules/base64/base64.man   base64   {base64-encode/decode binary data}]
[item modules/base64/uuencode.man uuencode {UU-encode/decode binary data}]
[item modules/base64/yencode.man  yencode  {Y-encode/decode binary data}]
[division_end]
[division_start bee]
[item modules/bee/bee.man bee {BitTorrent Serialization Format Encoder/Decoder}]
[division_end]
[division_start bench]
[item modules/bench/bench.man            bench            {bench - Processing benchmark suites}]
[item modules/bench/bench_read.man       bench::in        {bench::in - Reading benchmark results}]
[item modules/bench/bench_wcsv.man       bench::out::csv  {bench::out::csv - Formatting benchmark results as CSV}]
[item modules/bench/bench_wtext.man      bench::out::text {bench::out::text - Formatting benchmark results as human readable text}]
[item modules/bench/bench_intro.man      bench_intro      {bench introduction}]
[item modules/bench/bench_lang_intro.man bench_lang_intro {bench language introduction}]
[item modules/bench/bench_lang_spec.man  bench_lang_spec  {bench language specification}]
[division_end]
[division_start bibtex]
[item modules/bibtex/bibtex.man bibtex {Parse bibtex files}]
[division_end]
[division_start blowfish]
[item modules/blowfish/blowfish.man blowfish {Implementation of the Blowfish block cipher}]
[division_end]
[division_start cache]
[item modules/cache/async.man cache::async {Asynchronous in-memory cache}]
[division_end]
[division_start clock]
[item modules/clock/iso8601.man clock_iso8601 {Parsing ISO 8601 dates/times}]
[item modules/clock/rfc2822.man clock_rfc2822 {Parsing ISO 8601 dates/times}]
[division_end]
[division_start cmdline]
[item modules/cmdline/cmdline.man cmdline {Procedures to process command lines and options.}]
[division_end]
[division_start comm]
[item modules/comm/comm.man      comm      {A remote communication facility for Tcl (8.3 and later)}]
[item modules/comm/comm_wire.man comm_wire {The comm wire protocol}]
[division_end]
[division_start control]
[item modules/control/control.man control {Procedures for control flow structures.}]
[division_end]
[division_start coroutine]
[item modules/coroutine/coroutine.man coroutine       {Coroutine based event and IO handling}]
[item modules/coroutine/coro_auto.man coroutine::auto {Automatic event and IO coroutine awareness}]
[division_end]
[division_start counter]
[item modules/counter/counter.man counter {Procedures for counters and histograms}]
[division_end]
[division_start crc]
[item modules/crc/cksum.man cksum {Calculate a cksum(1) compatible checksum}]
[item modules/crc/crc16.man crc16 {Perform a 16bit Cyclic Redundancy Check}]
[item modules/crc/crc32.man crc32 {Perform a 32bit Cyclic Redundancy Check}]
[item modules/crc/sum.man   sum   {Calculate a sum(1) compatible checksum}]
[division_end]
[division_start csv]
[item modules/csv/csv.man csv {Procedures to handle CSV data.}]
[division_end]
[division_start des]
[item modules/des/des.man des {Implementation of the DES and triple-DES ciphers}]
[division_end]
[division_start dns]
[item modules/dns/tcllib_dns.man dns       {Tcl Domain Name Service Client}]
[item modules/dns/tcllib_ip.man  tcllib_ip {IPv4 and IPv6 address manipulation}]
[division_end]
[division_start docstrip]
[item modules/docstrip/docstrip.man      docstrip      {Docstrip style source code extraction}]
[item modules/docstrip/docstrip_util.man docstrip_util {Docstrip-related utilities}]
[division_end]
[division_start doctools]
[item modules/doctools/docidx_intro.man           docidx_intro           {docidx introduction}]
[item modules/doctools/docidx_lang_cmdref.man     docidx_lang_cmdref     {docidx language command reference}]
[item modules/doctools/docidx_lang_faq.man        docidx_lang_faq        {docidx language faq}]
[item modules/doctools/docidx_lang_intro.man      docidx_lang_intro      {docidx language introduction}]
[item modules/doctools/docidx_lang_syntax.man     docidx_lang_syntax     {docidx language syntax}]
[item modules/doctools/docidx_plugin_apiref.man   docidx_plugin_apiref   {docidx plugin API reference}]
[item modules/doctools/doctoc_intro.man           doctoc_intro           {doctoc introduction}]
[item modules/doctools/doctoc_lang_cmdref.man     doctoc_lang_cmdref     {doctoc language command reference}]
[item modules/doctools/doctoc_lang_faq.man        doctoc_lang_faq        {doctoc language faq}]
[item modules/doctools/doctoc_lang_intro.man      doctoc_lang_intro      {doctoc language introduction}]
[item modules/doctools/doctoc_lang_syntax.man     doctoc_lang_syntax     {doctoc language syntax}]
[item modules/doctools/doctoc_plugin_apiref.man   doctoc_plugin_apiref   {doctoc plugin API reference}]
[item modules/doctools/doctools.man               doctools               {doctools - Processing documents}]
[item modules/doctools/changelog.man              doctools::changelog    {Processing text in Emacs ChangeLog format}]
[item modules/doctools/cvs.man                    doctools::cvs          {Processing text in 'cvs log' format}]
[item modules/doctools/docidx.man                 doctools::idx          {docidx - Processing indices}]
[item modules/doctools/doctoc.man                 doctools::toc          {doctoc - Processing tables of contents}]
[item modules/doctools/doctools_intro.man         doctools_intro         {doctools introduction}]
[item modules/doctools/doctools_lang_cmdref.man   doctools_lang_cmdref   {doctools language command reference}]
[item modules/doctools/doctools_lang_faq.man      doctools_lang_faq      {doctools language faq}]
[item modules/doctools/doctools_lang_intro.man    doctools_lang_intro    {doctools language introduction}]
[item modules/doctools/doctools_lang_syntax.man   doctools_lang_syntax   {doctools language syntax}]
[item modules/doctools/doctools_plugin_apiref.man doctools_plugin_apiref {doctools plugin API reference}]
[item modules/doctools/mpexpand.man               mpexpand               {Markup processor}]
[division_end]
[division_start doctools2base]
[item modules/doctools2base/html_cssdefaults.man doctools::html::cssdefaults {Default CSS style for HTML export plugins}]
[item modules/doctools2base/tcllib_msgcat.man    doctools::msgcat            {Message catalog management for the various document parsers}]
[item modules/doctools2base/nroff_manmacros.man  doctools::nroff::man_macros {Default CSS style for NROFF export plugins}]
[item modules/doctools2base/tcl_parse.man        doctools::tcl::parse        {Processing text in 'subst -novariables' format}]
[division_end]
[division_start doctools2idx]
[item modules/doctools2idx/introduction.man  doctools2idx_introduction     {DocTools - Keyword indices}]
[item modules/doctools2idx/container.man     doctools::idx                 {Holding keyword indices}]
[item modules/doctools2idx/export.man        doctools::idx::export         {Exporting keyword indices}]
[item modules/doctools2idx/export_docidx.man doctools::idx::export::docidx {docidx export plugin}]
[item modules/doctools2idx/export_html.man   doctools::idx::export::html   {HTML export plugin}]
[item modules/doctools2idx/export_json.man   doctools::idx::export::json   {JSON export plugin}]
[item modules/doctools2idx/export_nroff.man  doctools::idx::export::nroff  {nroff export plugin}]
[item modules/doctools2idx/export_text.man   doctools::idx::export::text   {plain text export plugin}]
[item modules/doctools2idx/export_wiki.man   doctools::idx::export::wiki   {wiki export plugin}]
[item modules/doctools2idx/import.man        doctools::idx::import         {Importing keyword indices}]
[item modules/doctools2idx/import_docidx.man doctools::idx::import::docidx {docidx import plugin}]
[item modules/doctools2idx/import_json.man   doctools::idx::import::json   {JSON import plugin}]
[item modules/doctools2idx/parse.man         doctools::idx::parse          {Parsing text in docidx format}]
[item modules/doctools2idx/structure.man     doctools::idx::structure      {Docidx serialization utilities}]
[item modules/doctools2idx/msgcat_c.man      doctools::msgcat::idx::c      {Message catalog for the docidx parser (C)}]
[item modules/doctools2idx/msgcat_de.man     doctools::msgcat::idx::de     {Message catalog for the docidx parser (DE)}]
[item modules/doctools2idx/msgcat_en.man     doctools::msgcat::idx::en     {Message catalog for the docidx parser (EN)}]
[item modules/doctools2idx/msgcat_fr.man     doctools::msgcat::idx::fr     {Message catalog for the docidx parser (FR)}]
[division_end]
[division_start doctools2toc]
[item modules/doctools2toc/introduction.man  doctools2toc_introduction     {DocTools - Tables of Contents}]
[item modules/doctools2toc/msgcat_c.man      doctools::msgcat::toc::c      {Message catalog for the doctoc parser (C)}]
[item modules/doctools2toc/msgcat_de.man     doctools::msgcat::toc::de     {Message catalog for the doctoc parser (DE)}]
[item modules/doctools2toc/msgcat_en.man     doctools::msgcat::toc::en     {Message catalog for the doctoc parser (EN)}]
[item modules/doctools2toc/msgcat_fr.man     doctools::msgcat::toc::fr     {Message catalog for the doctoc parser (FR)}]
[item modules/doctools2toc/container.man     doctools::toc                 {Holding tables of contents}]
[item modules/doctools2toc/export.man        doctools::toc::export         {Exporting tables of contents}]
[item modules/doctools2toc/export_doctoc.man doctools::toc::export::doctoc {doctoc export plugin}]
[item modules/doctools2toc/export_html.man   doctools::toc::export::html   {HTML export plugin}]
[item modules/doctools2toc/export_json.man   doctools::toc::export::json   {JSON export plugin}]
[item modules/doctools2toc/export_nroff.man  doctools::toc::export::nroff  {nroff export plugin}]
[item modules/doctools2toc/export_text.man   doctools::toc::export::text   {plain text export plugin}]
[item modules/doctools2toc/export_wiki.man   doctools::toc::export::wiki   {wiki export plugin}]
[item modules/doctools2toc/import.man        doctools::toc::import         {Importing keyword indices}]
[item modules/doctools2toc/import_doctoc.man doctools::toc::import::doctoc {doctoc import plugin}]
[item modules/doctools2toc/import_json.man   doctools::toc::import::json   {JSON import plugin}]
[item modules/doctools2toc/parse.man         doctools::toc::parse          {Parsing text in doctoc format}]
[item modules/doctools2toc/structure.man     doctools::toc::structure      {Doctoc serialization utilities}]
[division_end]
[division_start dtplite]
[item modules/dtplite/dtplite.man dtplite {Lightweight DocTools Markup Processor}]
[division_end]
[division_start exif]
[item modules/exif/exif.man exif {Tcl EXIF extracts and parses EXIF fields from digital images}]
[division_end]
[division_start fileutil]
[item modules/fileutil/fileutil.man fileutil            {Procedures implementing some file utilities}]
[item modules/fileutil/multi.man    fileutil::multi     {Multi-file operation, scatter/gather, standard object}]
[item modules/fileutil/multiop.man  fileutil::multi::op {Multi-file operation, scatter/gather}]
[item modules/fileutil/traverse.man fileutil_traverse   {Iterative directory traversal}]
[division_end]
[division_start ftp]
[item modules/ftp/ftp.man        ftp         {Client-side tcl implementation of the ftp protocol}]
[item modules/ftp/ftp_geturl.man ftp::geturl {Uri handler for ftp urls}]
[division_end]
[division_start ftpd]
[item modules/ftpd/ftpd.man ftpd {Tcl FTP server implementation}]
[division_end]
[division_start fumagic]
[item modules/fumagic/cfront.man    fileutil::magic::cfront   {Generator core for compiler of magic(5) files}]
[item modules/fumagic/cgen.man      fileutil::magic::cgen     {Generator core for compiler of magic(5) files}]
[item modules/fumagic/filetypes.man fileutil::magic::filetype {Procedures implementing file-type recognition}]
[item modules/fumagic/mimetypes.man fileutil::magic::mimetype {Procedures implementing mime-type recognition}]
[item modules/fumagic/rtcore.man    fileutil::magic::rt       {Runtime core for file type recognition engines written in pure Tcl}]
[division_end]
[division_start generator]
[item modules/generator/generator.man generator {Procedures for creating and using generators.}]
[division_end]
[division_start gpx]
[item modules/gpx/gpx.man gpx {Extracts waypoints, tracks and routes from GPX files}]
[division_end]
[division_start grammar_aycock]
[item modules/grammar_aycock/aycock.man grammar::aycock {Aycock-Horspool-Earley parser generator for Tcl}]
[division_end]
[division_start grammar_fa]
[item modules/grammar_fa/fa.man        grammar::fa            {Create and manipulate finite automatons}]
[item modules/grammar_fa/dacceptor.man grammar::fa::dacceptor {Create and use deterministic acceptors}]
[item modules/grammar_fa/dexec.man     grammar::fa::dexec     {Execute deterministic finite automatons}]
[item modules/grammar_fa/faop.man      grammar::fa::op        {Operations on finite automatons}]
[division_end]
[division_start grammar_me]
[item modules/grammar_me/me_cpu.man     grammar::me::cpu       {Virtual machine implementation II for parsing token streams}]
[item modules/grammar_me/me_cpucore.man grammar::me::cpu::core {ME virtual machine state manipulation}]
[item modules/grammar_me/gasm.man       grammar::me::cpu::gasm {ME assembler}]
[item modules/grammar_me/me_tcl.man     grammar::me::tcl       {Virtual machine implementation I for parsing token streams}]
[item modules/grammar_me/me_util.man    grammar::me::util      {AST utilities}]
[item modules/grammar_me/me_ast.man     grammar::me_ast        {Various representations of ASTs}]
[item modules/grammar_me/me_intro.man   grammar::me_intro      {Introduction to virtual machines for parsing token streams}]
[item modules/grammar_me/me_vm.man      grammar::me_vm         {Virtual machine for parsing token streams}]
[division_end]
[division_start grammar_peg]
[item modules/grammar_peg/peg.man        grammar::peg         {Create and manipulate parsing expression grammars}]
[item modules/grammar_peg/peg_interp.man grammar::peg::interp {Interpreter for parsing expression grammars}]
[division_end]
[division_start hook]
[item modules/hook/hook.man hook Hooks]
[division_end]
[division_start html]
[item modules/html/html.man html {Procedures to generate HTML structures}]
[division_end]
[division_start htmlparse]
[item modules/htmlparse/htmlparse.man htmlparse {Procedures to parse HTML strings}]
[division_end]
[division_start http]
[item modules/http/autoproxy.man autoproxy {Automatic HTTP proxy usage and authentication}]
[division_end]
[division_start ident]
[item modules/ident/ident.man ident {Ident protocol client}]
[division_end]
[division_start imap4]
[item modules/imap4/imap4.man imap4 {imap client-side tcl implementation of imap protocol}]
[division_end]
[division_start inifile]
[item modules/inifile/ini.man inifile {Parsing of Windows INI files}]
[division_end]
[division_start interp]
[item modules/interp/deleg_method.man  deleg_method {Creation of comm delegates (snit methods)}]
[item modules/interp/deleg_proc.man    deleg_proc   {Creation of comm delegates (procedures)}]
[item modules/interp/tcllib_interp.man interp       {Interp creation and aliasing}]
[division_end]
[division_start irc]
[item modules/irc/irc.man     irc     {Create IRC connection and interface.}]
[item modules/irc/picoirc.man picoirc {Small and simple embeddable IRC client.}]
[division_end]
[division_start javascript]
[item modules/javascript/javascript.man javascript {Procedures to generate HTML and Java Script structures.}]
[division_end]
[division_start jpeg]
[item modules/jpeg/jpeg.man jpeg {JPEG querying and manipulation of meta data}]
[division_end]
[division_start json]
[item modules/json/json.man       json        {JSON parser}]
[item modules/json/json_write.man json::write {JSON generation}]
[division_end]
[division_start lambda]
[item modules/lambda/lambda.man lambda {Utility commands for anonymous procedures}]
[division_end]
[division_start ldap]
[item modules/ldap/ldap.man  ldap  {LDAP client}]
[item modules/ldap/ldapx.man ldapx {LDAP extended object interface}]
[division_end]
[division_start log]
[item modules/log/log.man            log              {Procedures to log messages of libraries and applications.}]
[item modules/log/logger.man         logger           {System to control logging of events.}]
[item modules/log/loggerAppender.man logger::appender {Collection of predefined appenders for logger}]
[item modules/log/loggerUtils.man    logger::utils    {Utilities for logger}]
[division_end]
[division_start map]
[item modules/map/map_geocode_nominatim.man map::geocode::nominatim {Resolving geographical names with a Nominatim service}]
[item modules/map/map_slippy.man            map::slippy             {Common code for slippy based map packages}]
[item modules/map/map_slippy_cache.man      map::slippy::cache      {Management of a tile cache in the local filesystem}]
[item modules/map/map_slippy_fetcher.man    map::slippy::fetcher    {Accessing a server providing tiles for slippy-based maps}]
[division_end]
[division_start mapproj]
[item modules/mapproj/mapproj.man mapproj {Map projection routines}]
[division_end]
[division_start math]
[item modules/math/math.man              math                     {Tcl Math Library}]
[item modules/math/bigfloat.man          math::bigfloat           {Arbitrary precision floating-point numbers}]
[item modules/math/bignum.man            math::bignum             {Arbitrary precision integer numbers}]
[item modules/math/calculus.man          math::calculus           {Integration and ordinary differential equations}]
[item modules/math/romberg.man           math::calculus::romberg  {Romberg integration}]
[item modules/math/symdiff.man           math::calculus::symdiff  {Symbolic differentiation for Tcl}]
[item modules/math/combinatorics.man     math::combinatorics      {Combinatorial functions in the Tcl Math Library}]
[item modules/math/qcomplex.man          math::complexnumbers     {Straightforward complex number package}]
[item modules/math/constants.man         math::constants          {Mathematical and numerical constants}]
[item modules/math/decimal.man           math::decimal            {General decimal arithmetic}]
[item modules/math/fourier.man           math::fourier            {Discrete and fast fourier transforms}]
[item modules/math/fuzzy.man             math::fuzzy              {Fuzzy comparison of floating-point numbers}]
[item modules/math/math_geometry.man     math::geometry           {Geometrical computations}]
[item modules/math/interpolate.man       math::interpolate        {Interpolation routines}]
[item modules/math/linalg.man            math::linearalgebra      {Linear Algebra}]
[item modules/math/numtheory.man         math::numtheory          {Number Theory}]
[item modules/math/optimize.man          math::optimize           {Optimisation routines}]
[item modules/math/polynomials.man       math::polynomials        {Polynomial functions}]
[item modules/math/rational_funcs.man    math::rationalfunctions  {Polynomial functions}]
[item modules/math/roman.man             math::roman              {Tools for creating and manipulating roman numerals}]
[item modules/math/special.man           math::special            {Special mathematical functions}]
[item modules/math/statistics.man        math::statistics         {Basic statistical functions and procedures}]
[item modules/math/machineparameters.man tclrep/machineparameters {Compute double precision machine parameters.}]
[division_end]
[division_start md4]
[item modules/md4/md4.man md4 {MD4 Message-Digest Algorithm}]
[division_end]
[division_start md5]
[item modules/md5/md5.man md5 {MD5 Message-Digest Algorithm}]
[division_end]
[division_start md5crypt]
[item modules/md5crypt/md5crypt.man md5crypt {MD5-based password encryption}]
[division_end]
[division_start mime]
[item modules/mime/mime.man mime {Manipulation of MIME body parts}]
[item modules/mime/smtp.man smtp {Client-side tcl implementation of the smtp protocol}]
[division_end]
[division_start multiplexer]
[item modules/multiplexer/multiplexer.man multiplexer {One-to-many communication with sockets.}]
[division_end]
[division_start namespacex]
[item modules/namespacex/namespacex.man namespacex {Namespace utility commands}]
[division_end]
[division_start ncgi]
[item modules/ncgi/ncgi.man ncgi {Procedures to manipulate CGI values.}]
[division_end]
[division_start nmea]
[item modules/nmea/nmea.man nmea {Process NMEA data}]
[division_end]
[division_start nns]
[item modules/nns/nns_client.man   nameserv           {Name service facility, Client}]
[item modules/nns/nns_auto.man     nameserv::auto     {Name service facility, Client Extension}]
[item modules/nns/nns_common.man   nameserv::common   {Name service facility, shared definitions}]
[item modules/nns/nns_protocol.man nameserv::protocol {Name service facility, client/server protocol}]
[item modules/nns/nns_server.man   nameserv::server   {Name service facility, Server}]
[item modules/nns/nns_intro.man    nns_intro          {Name service facility, introduction}]
[division_end]
[division_start nntp]
[item modules/nntp/nntp.man nntp {Tcl client for the NNTP protocol}]
[division_end]
[division_start ntp]
[item modules/ntp/ntp_time.man ntp_time {Tcl Time Service Client}]
[division_end]
[division_start ooutil]
[item modules/ooutil/ooutil.man oo::util {Utility commands for TclOO}]
[division_end]
[division_start otp]
[item modules/otp/otp.man otp {One-Time Passwords}]
[division_end]
[division_start page]
[item modules/page/page_intro.man           page_intro           {page introduction}]
[item modules/page/page_pluginmgr.man       page_pluginmgr       {page plugin manager}]
[item modules/page/page_util_flow.man       page_util_flow       {page dataflow/treewalker utility}]
[item modules/page/page_util_norm_lemon.man page_util_norm_lemon {page AST normalization, LEMON}]
[item modules/page/page_util_norm_peg.man   page_util_norm_peg   {page AST normalization, PEG}]
[item modules/page/page_util_peg.man        page_util_peg        {page PEG transformation utilities}]
[item modules/page/page_util_quote.man      page_util_quote      {page character quoting utilities}]
[division_end]
[division_start pki]
[item modules/pki/pki.man pki {Implementation of the public key cipher}]
[division_end]
[division_start pluginmgr]
[item modules/pluginmgr/pluginmgr.man pluginmgr {Manage a plugin}]
[division_end]
[division_start png]
[item modules/png/png.man png {PNG querying and manipulation of meta data}]
[division_end]
[division_start pop3]
[item modules/pop3/pop3.man pop3 {Tcl client for POP3 email protocol}]
[division_end]
[division_start pop3d]
[item modules/pop3d/pop3d.man      pop3d       {Tcl POP3 server implementation}]
[item modules/pop3d/pop3d_dbox.man pop3d::dbox {Simple mailbox database for pop3d}]
[item modules/pop3d/pop3d_udb.man  pop3d::udb  {Simple user database for pop3d}]
[division_end]
[division_start profiler]
[item modules/profiler/profiler.man profiler {Tcl source code profiler}]
[division_end]
[division_start pt]
[item modules/pt/pt.man                       pt                                 {Parser Tools Application}]
[item modules/pt/pt_astree.man                pt::ast                            {Abstract Syntax Tree Serialization}]
[item modules/pt/pt_cparam_config_critcl.man  pt::cparam::configuration::critcl  {C/PARAM, Canned configuration, Critcl}]
[item modules/pt/pt_json_language.man         pt::json_language                  {The JSON Grammar Exchange Format}]
[item modules/pt/pt_param.man                 pt::param                          {PackRat Machine Specification}]
[item modules/pt/pt_pexpression.man           pt::pe                             {Parsing Expression Serialization}]
[item modules/pt/pt_pexpr_op.man              pt::pe::op                         {Parsing Expression Utilities}]
[item modules/pt/pt_pegrammar.man             pt::peg                            {Parsing Expression Grammar Serialization}]
[item modules/pt/pt_peg_container.man         pt::peg::container                 {PEG Storage}]
[item modules/pt/pt_peg_container_peg.man     pt::peg::container::peg            {PEG Storage. Canned PEG grammar specification}]
[item modules/pt/pt_peg_export.man            pt::peg::export                    {PEG Export}]
[item modules/pt/pt_peg_export_container.man  pt::peg::export::container         {PEG Export Plugin. Write CONTAINER format}]
[item modules/pt/pt_peg_export_json.man       pt::peg::export::json              {PEG Export Plugin. Write JSON format}]
[item modules/pt/pt_peg_export_peg.man        pt::peg::export::peg               {PEG Export Plugin. Write PEG format}]
[item modules/pt/pt_peg_from_container.man    pt::peg::from::container           {PEG Conversion. From CONTAINER format}]
[item modules/pt/pt_peg_from_json.man         pt::peg::from::json                {PEG Conversion. Read JSON format}]
[item modules/pt/pt_peg_from_peg.man          pt::peg::from::peg                 {PEG Conversion. Read PEG format}]
[item modules/pt/pt_peg_import.man            pt::peg::import                    {PEG Import}]
[item modules/pt/pt_peg_import_container.man  pt::peg::import::container         {PEG Import Plugin. From CONTAINER format}]
[item modules/pt/pt_peg_import_json.man       pt::peg::import::json              {PEG Import Plugin. Read JSON format}]
[item modules/pt/pt_peg_import_peg.man        pt::peg::import::peg               {PEG Import Plugin. Read PEG format}]
[item modules/pt/pt_peg_interp.man            pt::peg::interp                    {Interpreter for parsing expression grammars}]
[item modules/pt/pt_peg_to_container.man      pt::peg::to::container             {PEG Conversion. Write CONTAINER format}]
[item modules/pt/pt_peg_to_cparam.man         pt::peg::to::cparam                {PEG Conversion. Write CPARAM format}]
[item modules/pt/pt_peg_to_json.man           pt::peg::to::json                  {PEG Conversion. Write JSON format}]
[item modules/pt/pt_peg_to_param.man          pt::peg::to::param                 {PEG Conversion. Write PARAM format}]
[item modules/pt/pt_peg_to_peg.man            pt::peg::to::peg                   {PEG Conversion. Write PEG format}]
[item modules/pt/pt_peg_to_tclparam.man       pt::peg::to::tclparam              {PEG Conversion. Write TCLPARAM format}]
[item modules/pt/pt_peg_language.man          pt::peg_language                   {PEG Language Tutorial}]
[item modules/pt/pt_peg_introduction.man      pt::pegrammar                      {Introduction to Parsing Expression Grammars}]
[item modules/pt/pt_pgen.man                  pt::pgen                           {Parser Generator}]
[item modules/pt/pt_rdengine.man              pt::rde                            {Parsing Runtime Support, PARAM based}]
[item modules/pt/pt_tclparam_config_snit.man  pt::tclparam::configuration::snit  {Tcl/PARAM, Canned configuration, Snit}]
[item modules/pt/pt_tclparam_config_tcloo.man pt::tclparam::configuration::tcloo {Tcl/PARAM, Canned configuration, Tcloo}]
[item modules/pt/pt_to_api.man                pt_export_api                      {Parser Tools Export API}]
[item modules/pt/pt_from_api.man              pt_import_api                      {Parser Tools Import API}]
[item modules/pt/pt_introduction.man          pt_introduction                    {Introduction to Parser Tools}]
[item modules/pt/pt_parser_api.man            pt_parser_api                      {Parser API}]
[division_end]
[division_start rc4]
[item modules/rc4/rc4.man rc4 {Implementation of the RC4 stream cipher}]
[division_end]
[division_start rcs]
[item modules/rcs/rcs.man rcs {RCS low level utilities}]
[division_end]
[division_start report]
[item modules/report/report.man report {Create and manipulate report objects}]
[division_end]
[division_start rest]
[item modules/rest/rest.man rest {define REST web APIs and call them inline or asychronously}]
[division_end]
[division_start ripemd]
[item modules/ripemd/ripemd128.man ripemd128 {RIPEMD-128 Message-Digest Algorithm}]
[item modules/ripemd/ripemd160.man ripemd160 {RIPEMD-160 Message-Digest Algorithm}]
[division_end]
[division_start sasl]
[item modules/sasl/sasl.man SASL {Implementation of SASL mechanisms for Tcl}]
[division_end]
[division_start sha1]
[item modules/sha1/sha1.man   sha1   {SHA1 Message-Digest Algorithm}]
[item modules/sha1/sha256.man sha256 {SHA256 Message-Digest Algorithm}]
[division_end]
[division_start simulation]
[item modules/simulation/annealing.man         simulation::annealing  {Simulated annealing}]
[item modules/simulation/montecarlo.man        simulation::montecarlo {Monte Carlo simulations}]
[item modules/simulation/simulation_random.man simulation::random     {Pseudo-random number generators}]
[division_end]
[division_start smtpd]
[item modules/smtpd/smtpd.man smtpd {Tcl SMTP server implementation}]
[division_end]
[division_start snit]
[item modules/snit/snit.man    snit    {Snit's Not Incr Tcl}]
[item modules/snit/snitfaq.man snitfaq {Snit Frequently Asked Questions}]
[division_end]
[division_start soundex]
[item modules/soundex/soundex.man soundex Soundex]
[division_end]
[division_start stooop]
[item modules/stooop/stooop.man stooop {Object oriented extension.}]
[division_end]
[division_start string]
[item modules/string/token.man       string::token        {Regex based iterative lexing}]
[item modules/string/token_shell.man string::token::shell {Parsing of shell command line}]
[division_end]
[division_start stringprep]
[item modules/stringprep/stringprep.man      stringprep       {Implementation of stringprep}]
[item modules/stringprep/stringprep_data.man stringprep::data {stringprep data tables, generated, internal}]
[item modules/stringprep/unicode.man         unicode          {Implementation of Unicode normalization}]
[item modules/stringprep/unicode_data.man    unicode::data    {unicode data tables, generated, internal}]
[division_end]
[division_start struct]
[item modules/struct/disjointset.man  struct::disjointset {Disjoint set data structure}]
[item modules/struct/graph.man        struct::graph       {Create and manipulate directed graph objects}]
[item modules/struct/graphops.man     struct::graph::op   {Operation for (un)directed graph objects}]
[item modules/struct/graph1.man       struct::graph_v1    {Create and manipulate directed graph objects}]
[item modules/struct/struct_list.man  struct::list        {Procedures for manipulating lists}]
[item modules/struct/matrix.man       struct::matrix      {Create and manipulate matrix objects}]
[item modules/struct/matrix1.man      struct::matrix_v1   {Create and manipulate matrix objects}]
[item modules/struct/pool.man         struct::pool        {Create and manipulate pool objects (of discrete items)}]
[item modules/struct/prioqueue.man    struct::prioqueue   {Create and manipulate prioqueue objects}]
[item modules/struct/queue.man        struct::queue       {Create and manipulate queue objects}]
[item modules/struct/record.man       struct::record      {Define and create records (similar to 'C' structures)}]
[item modules/struct/struct_set.man   struct::set         {Procedures for manipulating sets}]
[item modules/struct/skiplist.man     struct::skiplist    {Create and manipulate skiplists}]
[item modules/struct/stack.man        struct::stack       {Create and manipulate stack objects}]
[item modules/struct/struct_tree.man  struct::tree        {Create and manipulate tree objects}]
[item modules/struct/struct_tree1.man struct::tree_v1     {Create and manipulate tree objects}]
[division_end]
[division_start tar]
[item modules/tar/tar.man tar {Tar file creation, extraction & manipulation}]
[division_end]
[division_start tepam]
[item modules/tepam/tepam_introduction.man       tepam                     {An introduction into TEPAM, Tcl's Enhanced Procedure and Argument Manager}]
[item modules/tepam/tepam_argument_dialogbox.man tepam::argument_dialogbox {TEPAM argument_dialogbox, reference manual}]
[item modules/tepam/tepam_procedure.man          tepam::procedure          {TEPAM procedure, reference manual}]
[division_end]
[division_start term]
[item modules/term/term.man         term                     {General terminal control}]
[item modules/term/ansi_code.man    term::ansi::code         {Helper for control sequences}]
[item modules/term/ansi_cattr.man   term::ansi::code::attr   {ANSI attribute sequences}]
[item modules/term/ansi_cctrl.man   term::ansi::code::ctrl   {ANSI control sequences}]
[item modules/term/ansi_cmacros.man term::ansi::code::macros {Macro sequences}]
[item modules/term/ansi_ctrlu.man   term::ansi::ctrl::unix   {Control operations and queries}]
[item modules/term/ansi_send.man    term::ansi::send         {Output of ANSI control sequences to terminals}]
[item modules/term/imenu.man        term::interact::menu     {Terminal widget, menu}]
[item modules/term/ipager.man       term::interact::pager    {Terminal widget, paging}]
[item modules/term/receive.man      term::receive            {General input from terminals}]
[item modules/term/term_bind.man    term::receive::bind      {Keyboard dispatch from terminals}]
[item modules/term/term_send.man    term::send               {General output to terminals}]
[division_end]
[division_start textutil]
[item modules/textutil/textutil.man        textutil           {Procedures to manipulate texts and strings.}]
[item modules/textutil/adjust.man          textutil::adjust   {Procedures to adjust, indent, and undent paragraphs}]
[item modules/textutil/expander.man        textutil::expander {Procedures to process templates and expand text.}]
[item modules/textutil/repeat.man          textutil::repeat   {Procedures to repeat strings.}]
[item modules/textutil/textutil_split.man  textutil::split    {Procedures to split texts}]
[item modules/textutil/textutil_string.man textutil::string   {Procedures to manipulate texts and strings.}]
[item modules/textutil/tabify.man          textutil::tabify   {Procedures to (un)tabify strings}]
[item modules/textutil/trim.man            textutil::trim     {Procedures to trim strings}]
[division_end]
[division_start tie]
[item modules/tie/tie.man     tie {Array persistence}]
[item modules/tie/tie_std.man tie {Array persistence, standard data sources}]
[division_end]
[division_start tiff]
[item modules/tiff/tiff.man tiff {TIFF reading, writing, and querying and manipulation of meta data}]
[division_end]
[division_start transfer]
[item modules/transfer/connect.man     transfer::connect           {Connection setup}]
[item modules/transfer/copyops.man     transfer::copy              {Data transfer foundation}]
[item modules/transfer/tqueue.man      transfer::copy::queue       {Queued transfers}]
[item modules/transfer/ddest.man       transfer::data::destination {Data destination}]
[item modules/transfer/dsource.man     transfer::data::source      {Data source}]
[item modules/transfer/receiver.man    transfer::receiver          {Data source}]
[item modules/transfer/transmitter.man transfer::transmitter       {Data source}]
[division_end]
[division_start treeql]
[item modules/treeql/treeql.man treeql {Query tree objects}]
[division_end]
[division_start try]
[item modules/try/tcllib_try.man try {try - Trap and process errors and exceptions}]
[division_end]
[division_start uev]
[item modules/uev/uevent.man        uevent         {User events}]
[item modules/uev/uevent_onidle.man uevent::onidle {Request merging and deferal to idle time}]
[division_end]
[division_start units]
[item modules/units/units.man units {unit conversion}]
[division_end]
[division_start uri]
[item modules/uri/uri.man        uri     {URI utilities}]
[item modules/uri/urn-scheme.man uri_urn {URI utilities, URN scheme}]
[division_end]
[division_start uuid]
[item modules/uuid/uuid.man uuid {UUID generation and comparison}]
[division_end]
[division_start valtype]
[item modules/valtype/valtype_common.man valtype::common                 {Validation, common code}]
[item modules/valtype/cc_amex.man        valtype::creditcard::amex       {Validation for AMEX creditcard number}]
[item modules/valtype/cc_discover.man    valtype::creditcard::discover   {Validation for Discover creditcard number}]
[item modules/valtype/cc_mastercard.man  valtype::creditcard::mastercard {Validation for Mastercard creditcard number}]
[item modules/valtype/cc_visa.man        valtype::creditcard::visa       {Validation for VISA creditcard number}]
[item modules/valtype/ean13.man          valtype::gs1::ean13             {Validation for EAN13}]
[item modules/valtype/iban.man           valtype::iban                   {Validation for IBAN}]
[item modules/valtype/imei.man           valtype::imei                   {Validation for IMEI}]
[item modules/valtype/isbn.man           valtype::isbn                   {Validation for ISBN}]
[item modules/valtype/luhn.man           valtype::luhn                   {Validation for plain number with a LUHN checkdigit}]
[item modules/valtype/luhn5.man          valtype::luhn5                  {Validation for plain number with a LUHN5 checkdigit}]
[item modules/valtype/usnpi.man          valtype::usnpi                  {Validation for USNPI}]
[item modules/valtype/verhoeff.man       valtype::verhoeff               {Validation for plain number with a VERHOEFF checkdigit}]
[division_end]
[division_start virtchannel_base]
[item modules/virtchannel_base/cat.man        tcl::chan::cat        {Concatenation channel}]
[item modules/virtchannel_base/facade.man     tcl::chan::facade     {Facade channel}]
[item modules/virtchannel_base/fifo.man       tcl::chan::fifo       {In-memory fifo channel}]
[item modules/virtchannel_base/fifo2.man      tcl::chan::fifo2      {In-memory interconnected fifo channels}]
[item modules/virtchannel_base/halfpipe.man   tcl::chan::halfpipe   {In-memory channel, half of a fifo2}]
[item modules/virtchannel_base/memchan.man    tcl::chan::memchan    {In-memory channel}]
[item modules/virtchannel_base/null.man       tcl::chan::null       {Null channel}]
[item modules/virtchannel_base/nullzero.man   tcl::chan::nullzero   {Null/Zero channel combination}]
[item modules/virtchannel_base/random.man     tcl::chan::random     {Random channel}]
[item modules/virtchannel_base/randseed.man   tcl::chan::randseed   {Utilities for random channels}]
[item modules/virtchannel_base/std.man        tcl::chan::std        {Standard I/O, unification of stdin and stdout}]
[item modules/virtchannel_base/string.man     tcl::chan::string     {Read-only in-memory channel}]
[item modules/virtchannel_base/textwindow.man tcl::chan::textwindow {Textwindow channel}]
[item modules/virtchannel_base/variable.man   tcl::chan::variable   {In-memory channel using variable for storage}]
[item modules/virtchannel_base/zero.man       tcl::chan::zero       {Zero channel}]
[division_end]
[division_start virtchannel_core]
[item modules/virtchannel_core/core.man          tcl::chan::core      {Basic reflected/virtual channel support}]
[item modules/virtchannel_core/events.man        tcl::chan::events    {Event support for reflected/virtual channels}]
[item modules/virtchannel_core/transformcore.man tcl::transform::core {Basic reflected/virtual channel transform support}]
[division_end]
[division_start virtchannel_transform]
[item modules/virtchannel_transform/adler32.man   tcl::transform::adler32   {Adler32 transformation}]
[item modules/virtchannel_transform/base64.man    tcl::transform::base64    {Base64 encoding transformation}]
[item modules/virtchannel_transform/counter.man   tcl::transform::counter   {Counter transformation}]
[item modules/virtchannel_transform/crc32.man     tcl::transform::crc32     {Crc32 transformation}]
[item modules/virtchannel_transform/hex.man       tcl::transform::hex       {Hexadecimal encoding transformation}]
[item modules/virtchannel_transform/identity.man  tcl::transform::identity  {Identity transformation}]
[item modules/virtchannel_transform/limitsize.man tcl::transform::limitsize {limiting input}]
[item modules/virtchannel_transform/observe.man   tcl::transform::observe   {Observer transformation, stream copy}]
[item modules/virtchannel_transform/otp.man       tcl::transform::otp       {Encryption via one-time pad}]
[item modules/virtchannel_transform/rot.man       tcl::transform::rot       rot-encryption]
[item modules/virtchannel_transform/spacer.man    tcl::transform::spacer    {Space insertation and removal}]
[item modules/virtchannel_transform/zlib.man      tcl::transform::zlib      {zlib (de)compression}]
[division_end]
[division_start wip]
[item modules/wip/wip.man wip {Word Interpreter}]
[division_end]
[division_start yaml]
[item modules/yaml/huddle.man huddle {Create and manipulate huddle object}]
[item modules/yaml/yaml.man   yaml   {YAML Format Encoder/Decoder}]
[division_end]
[division_end]
[toc_end]

Changes to support/devel/sak/localdoc/localdoc.tcl.

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
proc ::sak::localdoc::usage {} {
    package require sak::help
    puts stdout \n[sak::help::on localdoc]
    exit 1
}

proc ::sak::localdoc::run {} {
    set noe [info nameofexecutable]

    # Relative path is necessary to handle possibility of fossil
    # repository and website as child of a larger website. Absolute
    # adressing may not point to our root, but the outer site.
    #set nav /home


    # NOTE: This may not work for the deeper nested manpages.
    # doc/tip/embedded/www/tcoc.html
    #set nav ../../../../../home

    # Indeed, not working for the nested pages.
    # Use absolute, for main location.
    set nav /tcllib



    puts "Removing old documentation..."
    file delete -force embedded
    file mkdir embedded/man
    file mkdir embedded/www

    puts "Reindex the documentation..."
    sak::doc::imake __dummy__
    sak::doc::index __dummy__

    puts "Generating manpages..."
    exec 2>@ stderr >@ stdout $noe apps/dtplite \

	-exclude {*/doctools/tests/*} \
	-exclude {*/support/*} \
	-ext n \
	-o embedded/man \
	nroff .

    # Note: Might be better to run them separately.
    # Note @: Or we shuffle the results a bit more in the post processing stage.

    set toc [string map {
	.man     .html
	modules/ tcllib/files/modules/



    } [fileutil::cat support/devel/sak/doc/toc.txt]]




    puts "Generating HTML... Pass 1, draft..."
    exec 2>@ stderr >@ stdout $noe apps/dtplite \

	-toc $toc \
	-nav Home $nav \



	-exclude {*/doctools/tests/*} \
	-exclude {*/support/*} \
	-merge \
	-o embedded/www \
	html .

    puts "Generating HTML... Pass 2, resolving cross-references..."
    exec 2>@ stderr >@ stdout $noe apps/dtplite \

	-toc $toc \
	-nav Home $nav \



	-exclude {*/doctools/tests/*} \
	-exclude {*/support/*} \
	-merge \
	-o embedded/www \
	html .

    return
}

# ### ### ### ######### ######### #########

package provide sak::localdoc 1.0







|
|
|
|
|
|
>

<
<
|

<
|
<
>
>






<
<
<
<

|
>
|
|
|
|
|




|


>
>
>
|
>
>
>


|
>
|
|
>
>
>
|
|
|
|
|


|
>
|
|
>
>
>
|
|
|
|
|







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
proc ::sak::localdoc::usage {} {
    package require sak::help
    puts stdout \n[sak::help::on localdoc]
    exit 1
}

proc ::sak::localdoc::run {} {
    getpackage cmdline          cmdline/cmdline.tcl
    getpackage fileutil         fileutil/fileutil.tcl
    getpackage textutil::repeat textutil/repeat.tcl
    getpackage doctools         doctools/doctools.tcl
    getpackage doctools::toc    doctools/doctoc.tcl
    getpackage doctools::idx    doctools/docidx.tcl
    getpackage dtplite          dtplite/dtplite.tcl



    set nav ../../../../home


    puts "Reindex the documentation..."

    sak::doc::imake __dummy__
    sak::doc::index __dummy__

    puts "Removing old documentation..."
    file delete -force embedded
    file mkdir embedded/man
    file mkdir embedded/www





    puts "Generating manpages..."
    dtplite::do \
	[list \
	     -exclude {*/doctools/tests/*} \
	     -exclude {*/support/*} \
	     -ext n \
	     -o embedded/man \
	     nroff .]

    # Note: Might be better to run them separately.
    # Note @: Or we shuffle the results a bit more in the post processing stage.

    set map  {
	.man     .html
	modules/ tcllib/files/modules/
	apps/    tcllib/files/apps/
    }

    set toc  [string map $map [fileutil::cat support/devel/sak/doc/toc.txt]]
    set apps [string map $map [fileutil::cat support/devel/sak/doc/toc_apps.txt]]
    set mods [string map $map [fileutil::cat support/devel/sak/doc/toc_mods.txt]]
    set cats [string map $map [fileutil::cat support/devel/sak/doc/toc_cats.txt]]

    puts "Generating HTML... Pass 1, draft..."
    dtplite::do \
	[list \
	     -toc $toc \
	     -nav {Tcllib Home} $nav \
	     -post+toc Categories $cats \
	     -post+toc Modules $mods \
	     -post+toc Applications $apps \
	     -exclude {*/doctools/tests/*} \
	     -exclude {*/support/*} \
	     -merge \
	     -o embedded/www \
	     html .]

    puts "Generating HTML... Pass 2, resolving cross-references..."
    dtplite::do \
	[list \
	     -toc $toc \
	     -nav {Tcllib Home} $nav \
	     -post+toc Categories $cats \
	     -post+toc Modules $mods \
	     -post+toc Applications $apps \
	     -exclude {*/doctools/tests/*} \
	     -exclude {*/support/*} \
	     -merge \
	     -o embedded/www \
	     html .]

    return
}

# ### ### ### ######### ######### #########

package provide sak::localdoc 1.0

Changes to support/installation/modules.tcl.

56
57
58
59
60
61
62

63
64
65
66
67
68
69
Module  des         _tcl  _man  _null
Module  dns          _msg _man _exa
Module  docstrip    _tcl  _man  _null
Module  doctools     _doc _man _exa
Module  doctools2base _tcl _man _null
Module  doctools2idx  _tcl _man _null
Module  doctools2toc  _tcl _man _null

Module  exif        _tcl  _man  _null
Module  fileutil    _tcl  _man  _null
Module  ftp         _tcl  _man _exa
Module  ftpd        _tcl  _man _exa
Module  fumagic     _tcl  _man  _null
Module  generator   _tcl  _man  _null
Module  gpx         _tcl _null  _null







>







56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Module  des         _tcl  _man  _null
Module  dns          _msg _man _exa
Module  docstrip    _tcl  _man  _null
Module  doctools     _doc _man _exa
Module  doctools2base _tcl _man _null
Module  doctools2idx  _tcl _man _null
Module  doctools2toc  _tcl _man _null
Module  dtplite       _tcl _man _null
Module  exif        _tcl  _man  _null
Module  fileutil    _tcl  _man  _null
Module  ftp         _tcl  _man _exa
Module  ftpd        _tcl  _man _exa
Module  fumagic     _tcl  _man  _null
Module  generator   _tcl  _man  _null
Module  gpx         _tcl _null  _null