cmdr
Check-in [9223d03cfb]
Not logged in

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

Overview
Comment:Updated embedded documentation
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:9223d03cfbfca22630cdf2a26f91e7be1c3a9328
User & Date: aku 2013-11-15 00:31:46
Context
2013-11-15
00:51
Split the large DSL document into several smaller pieces: introduction, officer, private, parameter check-in: daa000e429 user: andreask tags: trunk
00:31
Updated embedded documentation check-in: 9223d03cfb user: aku tags: trunk
2013-11-14
23:37
DSL docs mostly complete. Still possible to split into multiple documents. Still to do related docs on execution flow. check-in: df9e5b0c47 user: andreask tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to embedded/man/files/cmdr.n.

235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
...
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr" n 0 doc "<<unknown>>"
.BS
.SH NAME
cmdr \- Cmdr - Main package and API
.SH SYNOPSIS
package require \fBcmdr::util \fR
.sp
\fB::cmdr\fR \fBnew\fR \fIname\fR \fIspecification\fR
................................................................................
.TP
string \fIname\fR
The user-visible name of the command (hierarchy)\&.
.TP
script \fIactions\fR
The specification of the subordinate commands\&. On the command line
these are the toplevel commands of the application using the
hierarchy\&.
Please read \fICmdr - Specification Language\fR, section --TODO-- for the details\&.
.RE
.TP
\fB::cmdr\fR \fBinteractive\fR ?\fIenable\fR?
This command globally (de)activates the interactive parts of the
framework, as per the value of \fIenable\fR\&.
.sp
By default (initial state) the framework allows interaction\&.







|







 







|
|







235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
...
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
.BS
.SH NAME
cmdr \- Cmdr - Main package and API
.SH SYNOPSIS
package require \fBcmdr::util \fR
.sp
\fB::cmdr\fR \fBnew\fR \fIname\fR \fIspecification\fR
................................................................................
.TP
string \fIname\fR
The user-visible name of the command (hierarchy)\&.
.TP
script \fIactions\fR
The specification of the subordinate commands\&. On the command line
these are the toplevel commands of the application using the
hierarchy\&. Please read \fICmdr - Specification Language\fR, (section "Officers")
for the details\&.
.RE
.TP
\fB::cmdr\fR \fBinteractive\fR ?\fIenable\fR?
This command globally (de)activates the interactive parts of the
framework, as per the value of \fIenable\fR\&.
.sp
By default (initial state) the framework allows interaction\&.

Changes to embedded/man/files/cmdr_actor.n.

235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_actor" n 0 doc "<<unknown>>"
.BS
.SH NAME
cmdr_actor \- Cmdr - Base class for officers and privates - Internal
.SH SYNOPSIS
package require \fBcmdr::util \fR
.sp
\fB::cmdr::actor\fR \fBnew\fR







|







235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_actor" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
.BS
.SH NAME
cmdr_actor \- Cmdr - Base class for officers and privates - Internal
.SH SYNOPSIS
package require \fBcmdr::util \fR
.sp
\fB::cmdr::actor\fR \fBnew\fR

Changes to embedded/man/files/cmdr_changes.n.

235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_changes" n 0 doc "<<unknown>>"
.BS
.SH NAME
cmdr_changes \- Cmdr - Log of Changes
.SH DESCRIPTION
.PP
Welcome to the Cmdr project, written by Andreas Kupries\&.
.PP







|







235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_changes" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
.BS
.SH NAME
cmdr_changes \- Cmdr - Log of Changes
.SH DESCRIPTION
.PP
Welcome to the Cmdr project, written by Andreas Kupries\&.
.PP

Changes to embedded/man/files/cmdr_config.n.

235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
...
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_config" n 0 doc "<<unknown>>"
.BS
.SH NAME
cmdr_config \- Cmdr - Collection of parameters for privates
.SH SYNOPSIS
package require \fBcmdr::util \fR
.sp
\fB::cmdr::config\fR \fBnew\fR \fIcontext\fR \fIspec\fR
................................................................................
.TP
cmdr::config \fIcontext\fR
The instance command of the \fBcmdr::private\fR instance the configuration
will belong to\&.
.TP
script \fIspec\fR
Tcl-script specifying the parameters in detail\&. Please read
\fICmdr - Specification Language\fR, section --TODO-- for the details\&.
.RE
.TP
\fB::cmdr::config\fR \fBinteractive\fR ?\fIenable\fR?
Class method to change the global interaction default for the
mini-shell of privates\&. The default is to disable this mini-shell
for all privates, and enable it on a per-private basis, through
the specification\&.







|







 







|







235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
...
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_config" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
.BS
.SH NAME
cmdr_config \- Cmdr - Collection of parameters for privates
.SH SYNOPSIS
package require \fBcmdr::util \fR
.sp
\fB::cmdr::config\fR \fBnew\fR \fIcontext\fR \fIspec\fR
................................................................................
.TP
cmdr::config \fIcontext\fR
The instance command of the \fBcmdr::private\fR instance the configuration
will belong to\&.
.TP
script \fIspec\fR
Tcl-script specifying the parameters in detail\&. Please read
\fICmdr - Specification Language\fR (section "Parameters") for the details\&.
.RE
.TP
\fB::cmdr::config\fR \fBinteractive\fR ?\fIenable\fR?
Class method to change the global interaction default for the
mini-shell of privates\&. The default is to disable this mini-shell
for all privates, and enable it on a per-private basis, through
the specification\&.

Added embedded/man/files/cmdr_dsl.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
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
'\"
'\" Generated from file 'cmdr_dsl\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2013 Andreas Kupries
'\" Copyright (c) 2013 Documentation, Andreas Kupries
'\"
'\" 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
.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 "cmdr_dsl" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
.BS
.SH NAME
cmdr_dsl \- Cmdr - Specification Language
.SH DESCRIPTION
.PP
Welcome to the Cmdr project, written by Andreas Kupries\&.
.PP
For availability please read \fICmdr - How To Get The Sources\fR\&.
.PP
This document is for users of the cmdr framework\&. It describes the
domain-specific language for the specification of command hierarchies
with commands and their parameters (options, and inputs)\&.
.SH "INTRODUCTORY EXAMPLES"
Instead of immediately diving into the full syntax of the
specification language first a few examples to demonstrate the general
look and feel, plus basic features\&.
.SS "BASIC SETUP, PRIVATE WITH INPUTS"
.PP
This example specifies a command line providing 3 commands for
the management of command aliases\&.
This is actually a slice of \fBstackato\fR's interface, reduced and
modified to fit here\&.
While it does not have the necessary backend procedures required to
actually run the commands, it is enough to demonstrate basic features,
namely the declaration of "privates" with "input" parameters\&.
.PP
"privates" are the actual commands, the leaves at the bottom of
the hierarchy\&. Their "inputs" are positional parameters, i\&.e\&. the
association of argument words on a command line to parameter is done
in order of occurence (on command line, and in the specification)\&.
.CS


# -*- tcl -*
package require Tcl 8\&.5
package require cmdr
package require foo-backend

cmdr create ::foo foo {
    private alias+ {
	description {
	    Create a shortcut for a command (prefix)\&.
	}
	input name {
	    The name of the new shortcut\&.
	} {
	    validate ::foo::backend::vt::notacommand
	}
	input command {
	    The command (prefix) the name will map to\&.
	} {
	    list
	}
    } ::foo::backend::alias::add

    private alias- {
	description {
	    Remove a shortcut by name\&.
	}
	input name {
	    The name of the shortcut to remove\&.
	} {
	    validate ::foo::backend::vt::aliasname
	}
    } ::foo::backend::alias::remove

    private alias? {
	description {
	    List the known aliases (shortcuts)\&.
	}
    } ::foo::backend::alias::list
}

foo do {*}$argv
exit

.CE
.PP
At the bottom of the example, just above we can also see the
very simple Tcl command which invokes the command line processing for
a list of words, here coming from \fB$argv\fR, i\&.e\&. the application's
command line\&.
.SS "BASIC SETUP, COMMAND NESTING"
.PP
The decoupling of command names from their implementations seen
in the previous example makes it easy to re-arrange and re-label the
user visible commands without having to touch any other part of the
code\&.
.PP
This is demonstrated in the example below, moving the 3
"privates" into an "officer" and renaming them, without changing the
actions\&. Note that the parameter specifications were removed for
clarity, as they were not changed compared to the original example\&.
.PP
"officers" are named inner nodes in the command hierarchy\&. They
aggregate related commands, which may not only be "privates" as seen
here, but sub-officers as well\&.
.CS


\&.\&.\&.
cmdr create ::foo foo {
    officer alias {
	description {
	    A collection of commands to manage
	    user-specific shortcuts for command
	    entry
	}

	private add {
	    \&.\&.\&.
	} ::foo::backend::alias::add

	private remove {
	    \&.\&.\&.
	} ::foo::backend::alias::remove

	private list {
	    \&.\&.\&.
	} ::foo::backend::alias::list
    }
}
\&.\&.\&.

.CE
.SH "LANGUAGE REFERENCE"
With the examples behind us we can now go and specify the entire
specification language\&. If you have skipped here on first reading,
ignoring the examples, please go back and read them first\&.
.SS GENERAL
.PP
The conceptual model underneath the command hierarchy is that
of a tree\&.
.PP
The inner nodes of the tree represent command ensembles, here
called "officer"s\&. Each officer knows one or more commands, and
delegates actual execution to their respective specification, which
may be another officer, or a private\&.
.PP
The leaf nodes of the tree represent the individual commands,
here called "private"s\&. Each private is responsible for a single
action, and knows how to perform it and the parameters used to
configure that action at runtime\&.
.PP
The same model is graphically presented in the
Entity-Relationship-Diagram below\&.
.PS
.nf
      is-a         is-a
    /-1:1-> actor <-1:1-\\
   /                     \\
officer ---1:(0-n)--> private --1:1-> config --1:(0-n)-> parameter
 |  ^      has                  has            has
 |  |
 \\--/
 1:(0-n)
 has

.fi
.PE
.PP
The "Actor" in that diagram is the common base class for the
ensembles and commands and not directly relevant to users\&.
.PP
The "Config" on the other hand is the second interface seen by
the user, as the sole argument to the action command prefix of
\fBprivate\fR (See section \fBOfficer\fR)\&.
This container holds all the declared parameters of the command the
action is invoked for, and provides easy access to them through its
methods (see package \fBcmdr::config\fR) at the time of execution\&.
.SS OFFICERS
.CS


alias <name> = <name'>\&.\&.\&.            Declare an alternate name for a command path\&.
alias <name>                         Declare an alternate name for the previous command\&.
common <name> <script>               Declare a named shared code block\&.
default                              Set last command as default\&.
description <text>                   Set help text for the current ensemble\&.
ehandler <cmdprefix>                 Execution Interposition\&.
officer <name> <script>              Declare a nested ensemble = sub-officer
private <name> <script> <cmdprefix>  Declare a simple command  = private
undocumented                         Hide ensemble from help\&.

.CE
.TP
\fBalias\fR \fIname\fR \fB=\fR \fIname'\fR\&.\&.\&.
.TP
\fBalias\fR \fIname\fR
This is a structuring command, for the command hierarchy\&. Its main
uses are the creation of alternate command names, and of shortcuts
through the command hierarchy\&.
.sp
For example, stackato's command specification for alias management is
more like \fBBasic setup, command nesting\fR and uses shortcuts
similar to what is shown in
--TODO--(example ls-alias2)-- to provide the look of a flat namespace\&.
.sp
In the first form the \fIname\fR is given the explicit path to
the command it is an alias for\&. In the second form it implicitly
refers to the immediately preceding officer or private\&.
Note that "immediately" is interpreted at the current level\&. The
system is \fInot\fR looking into a nested specification for its last
command\&.
.TP
\fBcommon\fR \fIname\fR \fItext\fR
This is another structuring command, for structuring the specification
itself instead of the command tree it declares\&.
.sp
It creates named values, usually code blocks, which can be
shared between specifications\&. Note that while each block is visible
in the current officer and its subordinates, parents and siblings have
no access\&.
.sp
An example of such a block would be
.CS


common *all* {
    option debug {
	Activate client internal tracing\&.
    } {
	undocumented
	list
	when-complete [lambda {p tags} {
	    foreach t $tags { debug on $t }
	}]
    }
}

.CE
.IP
This example defines an option to access the subsystem for debug
narative (See package \fBTcllib\fR)\&.
The example is actually special, as the block named \fB*all*\fR is
reserved by the framework\&. This block, if defined, is automatically
included at the front of all "private" specifications, i\&.e\&. shared
across all the specified commands underneath this officer\&. A very
important trait for the option in the example, as it makes the debug
setup available to all commands without having to explicitly include
the block, and possibly forgetting such\&.
.sp
Generally speaking, the framework reserves all blocks whose
name begins with a star, i\&.e \fB*\fR, for its own use\&.
.TP
\fBdefault\fR
This command sets up a special kind of alias\&. The last "private" or
"officer" is set as the default command to use at runtime\&.
This means that if during "Dispatch" the currently processed word does
not match any of the commands known to this officer this default is
used\&. If no default is specified an error will be thrown instead\&.
.TP
\fBdescription\fR \fItext\fR
This command declares the help text of the officer\&.
.TP
\fBehandler\fR \fIcmdprefix\fR
This is an advanced command which should normally only be specified at
the top of the whole hierarchy (from which its value will
automatically propagate to all subordinates)\&.
.sp
At runtime the framework will call the specified command prefix
with a single argument, a script whose execution is equivalent to the
phases "Parsing", "Completion", and "Execution" of the framework, as
described in section --TODO--(sectref:flow/phases)--\&. The handler \fImust\fR
call this script, and can perform any application-specific actions
before and after\&.
.sp
This handler's main uses are two-fold:
.RS
.IP [1]
Capture and hande application-specific errors which should not
abort the application, or shown as Tcl stacktrace\&.
.IP [2]
Cleanup of application-specific transient settings the
parameter callbacks and/or command implementations may have set during
their execution\&. This is especially important if the interactive
command line shells of the framework are active\&. Without such a
handler and its bespoke cleanup code transient settings will leak
between multiple commands run from such a shell, something which is
definitely not wanted\&.
.RE
.TP
\fBofficer\fR \fIname\fR \fIscript\fR
This command creates a named subordinate officer with its
specification \fIscript\fR of officer commands as described here\&.
.TP
\fBprivate\fR \fIname\fR \fIscript\fR \fIcmdprefix\fR
This command creates a named subordinate private with its
specification \fIscript\fR of private commands as described in the
following section, and a command prefix to invoke when it is chosen\&.
.sp
This command prefix is called with a single argument, the
\fBcmdr::config\fR instance holding the parameters of the private\&.
--TODO--(ref:backend-example-code)--
.TP
\fBundocumented\fR
Use of this command influences the generation of help, excluding all
officers having this marker (and their subordinates) from the
help\&. Note that subordinates reachable through aliases may be
included, under the alias name, if not explicitly excluded themselves\&.
.PP
.SS PRIVATES
.PP
The specification of simple commands, i\&.e\&. "privates" is quite
easy, with only seven commands (see the table below)\&. The important
parts are found in the parameter specifications, explained in the next
section\&.
.CS


description <text>             Set help text for command\&.
input <name> <help> <script>   Declare a positional parameter\&.
interactive                    Allow interactive shell\&.
option <name> <help> <script>  Declare a named parameter\&.
state <name> <help> <script>   Declare a hidden parameter\&.
undocumented                   Hide command from help\&.
use <name>                     Execute the named "common" block here\&.

.CE
.TP
\fBdescription\fR \fItext\fR
Like the equivalent command for \fBOfficers\fR this command
declares the help text for the private\&.
.TP
\fBinput\fR \fIname\fR \fIhelp\fR \fIscript\fR
This command adds an "input" (positional) parameter to the "private",
with description \fIhelp\fR and its specification \fIscript\fR of
parameter commands as described in the following section\&.
.TP
\fBinteractive\fR
This command influences the runtime\&. By default the only interactive
command line shells are associated with the officers\&. Setting this
marker activates such a shell for the private, to be invoked when
required parameters do not have a value\&.
.sp
The global command \fBcmdr::config interactive\fR in package
\fBcmdr::config\fR can be used to globally activate this type of
shell for all "privates"\&.
.TP
\fBoption\fR \fIname\fR \fIhelp\fR \fIscript\fR
This command adds an "option" (named) parameter to the "private", with
description \fIhelp\fR and its specification \fIscript\fR of parameter
commands as described in the following section\&.
.TP
\fBstate\fR \fIname\fR \fIhelp\fR \fIscript\fR
This command adds a "state" (hidden) parameter to the "private", with
description \fIhelp\fR and its specification \fIscript\fR of parameter
commands as described in the following section\&.
.TP
\fBundocumented\fR
Like the equivalent command for \fBOfficers\fR use of this command
influences the generation of help, excluding all privates having this
marker from it\&.
.TP
\fBuse\fR \fIname\fR
This command is the counterpart to \fBcommon\fR of \fBOfficers\fR\&.
It inserts the named block into the specification, executing it\&. As
such it expects the contents to be a script of private commands as
described in this section\&.
.PP
.SS PARAMETERS
.PP
The parameters of private commands are the heart of the system,
providing the space needed to transfer the command arguments to the
implementations, and having the most attributes controlling their
behaviour\&.
.PP
This complexity is mitigated strongly by the use of sensible
defaults for each of the three possible kinds of parameter, i\&.e\&.
positional "inputs", named "options", and "state" hidden from the
command line\&.
.PP
Each kind has its own construction command in the DSL for
\fBPrivates\fR which specifies the common information which cannot
have defaults, i\&.e\&.
.IP [1]
the name identifying it to the system,
.IP [2]
the help text describing it in informal speech, and, of course,
.IP [3]
the parameter specification itself, using the commands of this section\&.
.PP
.CS


alias <name>              N  Declare alternate flag for an option\&.
default <value>            R Set constant default value\&.
defered                    R  Defer calculation of the internal representation until demanded\&.
generate <cmdprefix>       R  Set callback returning the default value\&.
immediate                  R  Complement of defered\&.
interact ?<prompt>?        R  Enable the interactive entry of the string value\&.
label <text>              N  Name to use in the help, and as primary flag (for an option)\&.
list                       R Declare as list-valued\&.
optional                  G  Declare input as optional\&.
presence                   V Declare as boolean option without argument\&.
test                      G  Control the matching of words to optional inputs\&.
undocumented              G  Declare as hidden from help\&.
validate <cmdprefix>       V Declare validation type\&.
when-complete <cmdprefix> C  Set callback executed when the value becomes known\&.
when-set <cmdprefix>      C  Set callback executed when the string value becomes known\&.

.CE
.PP
\fINaming\fR
.PP
We have two commands to influence the visible naming of all
parameters\&.
.PP
As background, all parameters are named for proper
identification within the framework and other Tcl code, i\&.e\&. the
various callbacks, including a "private"s action\&. This "system name"
has to be unique within the "private" a parameter belongs to\&. Beyond
that however the visible parameters have to be identified within help
texts, and, in case of "options", for detection during "Parsing"\&. That
is the visible naming, seen by a user of any application whose command
line processing is based on the Cmdr framework\&.
.TP
\fBlabel\fR \fItext\fR
This command declares the visible name, if different from the system
name used as the default\&. Note that in most cases this default is good
enough, obviating the need for this command\&.
.sp
The only use case seen so far is when two semantically
equivalent input and option parameters clash, requiring different
internal names due to the requirement for uniqueness, yet also the
same visible name and flag within the help to highlight their
connection and equivalence\&.
.TP
\fBalias\fR \fIname\fR
For option parameters the "label" command and its default specifies
the name of the primary flag recognized during parsing\&. If that is not
enough for a specific option this command allows the specification of
any number additional flags to be recognized\&.
.sp
Note however that the framework automatically recognizes not
only the specified flags, but also all unique prefixes, obviating the
need for this command in many cases\&.
.PP
.PP
\fIGeneral control\fR
.PP
The general handling of a parameter is influenced by three
commands\&.
.TP
\fBoptional\fR
This command marks the parameter as optional, i\&.e\&. as something the
user may skip on the command line, and the application supplying
sensible defaults\&. --TODO--(sectref:para/vtype)--
During parsing the framework will then expend some effort to determine
whether an argument word should be assigned to the parameter, or not\&.
.sp
This setting is only applicable to "inputs", as "options" are
optional by definition, and "state" is hidden\&.
.TP
\fBtest\fR
This command is related to the above, switching from the standard
regime for acceptance based on counting and thresholds to a different
one based on validation\&. The details are explained in section
--TODO--(sectref:flow/parsing, flow/optional)--\&.
.TP
\fBundocumented\fR
Like "officers" and "privates" parameters can be hidden from the
generated help\&. This is the command for doing so, the same as for the
first two\&.
.sp
The main use case is the hiding of options giving an
application developer access to the internals of their application,
something a regular user has no need of, and doesn't have to know
about\&.
.PP
.PP
\fIRepresentations\fR
.PP
An important concept of parameters is something taken up from
Tcl itself\&.
The differentation between string and internal representations\&.
Where Tcl uses internal representations to speed up its execution here
this separation is that of between the information delivered to the
application by a user, and the application-specific data structures
behind them\&.
.PP
All parameters will have an internal representation\&.
This is usually derived from the string representation provided by the
user\&.
The details of that process are explained in section
--TODO--(sectref:para/vtype)--
about validation types\&.
However we have cases where the user cannot specify a string
representation ("states"), or is allowed to choose not to (optional
"inputs", "options")\&.
For these cases three specification commands are made available
enabling us to programmatically choose the internal representation\&.
.TP
\fBdefault\fR \fIvalue\fR
This command provides a constant value for the internal
representation\&.
.TP
\fBgenerate\fR \fIcmdprefix\fR
This command provides a callback to compute the internal
representation at runtime\&. This is useful if the default is something
which cannot be captured as a fixed value, for example a handle to
some resource, or a dynamically created object\&.
.sp
The command prefix is invoked with a single argument, the
\fBcmdr::parameter\fR instance for which to generate the internal
representation\&.
.PP
.PP
The commands "default" and "generate" exclude each other,
i\&.e\&. only of them can be specified\&.
If neither are specified, and we need a default (see the cases
above) a default is chosen per the two rules below:
.IP [1]
Use the empty string for a "list" parameter\&.
.IP [2]
Use the default value supplied by the chosen validation type
(See section --TODO--(sectref:para/vtype)--)\&.
.PP
.TP
\fBinteract\fR ?\fIprompt\fR?
This command actually does not specify an internal representation, but
activates another method for the user to specify a string value for
the parameter, outside of the command line\&.
As such it has priority over either "default" and "generate," and can
be specified with either\&. A parameter marked with it will
interactively ask the user for a value if none was specified on the
command line\&.
.sp
The default \fIprompt\fR is derived from the system name\&.
.PP
.PP
To recapitulate:
.IP [1]
A string representation specified on the command line has the
highest priority and goes through the chosen validation type to
get the associated internal representation\&.
.IP [2]
If activated via "interact" a small shell is run asking the
user for a value (or more, as per "list", see below)\&. The
result goes through the chosen validation type to get the
associated internal representation\&.
.IP [3]
After that the internal representation is either the declared
"default," or the result of invoking the "generate"
callback\&. As internal representations they are \fInot\fR run
through the chosen validation type\&.
.PP
.TP
\fBlist\fR
This command is used to mark parameters whose string and thus internal
value should be treated as a list\&. By default all parameters are scalar\&.
.sp
This affects the handling of the parameter during parsing, by
"interact" above, and the use of the validation type\&. The last two ask
for multiple values, and feed the elements of the string value
separately through validation instead of just the string value in one\&.
During parsing treatment of "options" changes from keeping only the
last assigned value to accumulation of all values\&. Similarly a
list-"input" takes all remaining words on the command line for itself
instead of just the current word\&. Because of this list-"inputs" are
only allowed as the last parameter of a "private\&."
.PP
.PP
The last two specification commands dealing with the
representations control when the internal representation is created\&.
.TP
\fBdefered\fR
This command marks a parameter as defered, with the internal
representation computed on first access to its value\&. This is the
default for "state" parameters\&.
.TP
\fBimmediate\fR
This command marks a parameter as immediate, with the internal
representation computed in the "Completion" phase\&. This is the default
for "input" and "option" parameters\&.
.PP
.PP
\fIValidation\fR
.PP
The answer to the necessity of moving between the string and
internal representations described in the previous section are the
validation types\&. Given a string representation they either return the
associated internal representation or raise an error, signaling that
the input was illegal\&. This part of their work, the verification of
the legality of the input string gave them their name\&.
.PP
The general concept of validation types was taken from
\fBsnit\fR, and modified to suit Cmdr\&. Where snit's types
expect only a single method to validate the input Cmdr
expects all types to support an ensemble of \fIfour\fR methods, one
for the basic validation and transformation of the input, another for
the release of any internal representation so generated, plus delivery
of a default representation and support for command line completion\&.
.TP
\fBvalidate\fR \fIcmdprefix\fR
This command specifies a validation type for the parameter, in the
form of a command prefix\&.
The set of methods this callback has to support, their signatures,
etc\&. are all explained in \fICmdr - Writing custom validation types\fR\&. This document
contains the implementation of the standard boolean validation type as
an example as well\&.
.sp
Because of the same necessity all parameters must have a
validation type assigned to them, and the system will choose which, if
the user did not\&. This choice is made per the six rules below and
always returns one of the standard types implemented in package
\fBcmdr::validate\fR\&.
.RS
.IP [1]
Use "identity" if a "generate" callback is specified\&.
.IP [2]
Use "boolean"  if no "default" is specified and the parameter is an option\&.
.IP [3]
Use "identity" if no "default" is specified and the parameter is an input\&.
.IP [4]
Use "boolean"  if the specified "default" value is a Tcl boolean\&.
.IP [5]
Use "integer"  if the specified "default" value is a Tcl integer\&.
.IP [6]
Use "identity" as fallback of last resort\&.
.RE
.TP
\fBpresence\fR
This command is best discussed as part of the wider area of "boolean"
options, i\&.e\&. options with validation type "boolean" assigned to
them\&. These have associated special behaviours, both in the handling
of the specification, and during parsing\&.
.sp
First, normal boolean options\&. They have automatic aliases
declared for them, derived from their primary flag\&. An option named
"foo" will have an alias of "no-foo", and the reverse\&. During parsing
the "foo" and "no-foo" flags have inverse semantics, and both are
allowed to occur without option argument following the flag\&. This is
in contrast to all other options which must have such an argument\&. The
parser essentially uses the validation type to decide if the word
after the flag is a proper boolean value, or not, i\&.e\&. an argument to
assign to the parameter, or not\&.
.sp
Now "presence" declares a variant of the above, a boolean
option without the automatic aliases, and \fInever\fR taking an
argument during parsing\&. Its mere \fIpresence\fR on the command line
will set its parameter\&. Their default value is consequently fixed to
\fBfalse\fR as well\&.
.PP
.PP
\fISignaling\fR
Of the four callbacks supported by parameters the first two,
"generate" and "validate" have been described already, in the sections
--TODO--\\ref{para/reps} about representations and
--TODO--\\ref{para/vtype} about validation types, respectively\&.
.PP
This section explains the commonalities between the callbacks
in general, and the last two, for notifications about state changes in
detail\&.
.PP
All callbacks are treated as command prefixes, not
scripts\&.
There are no placeholder substitutions, only arguments added to each
command prefix on invokation\&. This does not harm the generality of the
system, as complex scripts can be used via procedures or equivalents
(i\&.e\&. \fBapply\fR)\&.
.PP
The two callbacks not yet described are the state-change
callbacks through which the framework can actively drive parts of the
application while processing the command line, whereas normally the
application drives access to parameters through their methods\&.
.TP
\fBwhen-complete\fR \fIcmdprefix\fR
This command declares the state-change callback to invoke when the
internal representation of the parameter is generated from the string
representation, or the various ways of getting a default\&.
.sp
The callback is invoked with two arguments, the
\fBcmdr::parameter\fR instance of the parameter which changed, and
its internal representation, in this order\&.
.TP
\fBwhen-set\fR \fIcmdprefix\fR
This command declares the state-change callback to invoke when the
string representation of the parameter is set during command line
parsing\&.
.sp
The callback is invoked with two arguments, the
\fBcmdr::parameter\fR instance of the parameter which changed, and
its string representation, in this order\&.
.PP
Due to their nature these callbacks are invoked at runtime during
either parsing, completion," or execution\&. The details are shown in
the table below\&. The specification commands influencing the timing,
i\&.e\&. forcing the use in a specific phase are shown in the intersection
of callback and phase\&.
.CS


                    | Dispatch | Parsing | Completion  | Execution
--------------------+----------+---------+-------------+-----------
validate (default)  | *        |         |             |
--------------------+----------+---------+-------------+-----------
validate (complete) |          | *       | immediate   | defered
when-set            |          | *       |             |
--------------------+----------+---------+-------------+-----------
generate            |          |         | immediate   | defered
validate (validate) |          | test    | immediate   | defered
validate (release)  |          | test    | immediate   | defered
--------------------+----------+---------+-------------+-----------
when-complete       |          |         | immediate   | defered
--------------------+----------+---------+-------------+-----------

.CE
.SH "RELATED DOCUMENTS"
.IP [1]
\fICmdr - Introduction to the project\fR
.IP [2]
\fICmdr - License\fR
.IP [3]
\fICmdr - Log of Changes\fR
.IP [4]
\fICmdr - How To Get The Sources\fR
.IP [5]
\fICmdr - The Installer's Guide\fR
.IP [6]
\fICmdr - The Developer's Guide\fR
.PP
.SH "BUGS, IDEAS, FEEDBACK"
Both the package(s) and this documentation will undoubtedly contain
bugs and other problems\&.
Please report such at
\fICmdr Tickets\fR [https:/core\&.tcl\&.tk/akupries/cmdr]\&.
.PP
Please also report any ideas you may have for enhancements of
either package(s) and/or documentation\&.
.SH KEYWORDS
arguments, command hierarchy, command line completion, command line handling, command tree, editing command line, help for command line, hierarchy of commands, interactive command shell, optional arguments, options, parameters, processing command line, tree of commands
.SH COPYRIGHT
.nf
Copyright (c) 2013 Andreas Kupries
Copyright (c) 2013 Documentation, Andreas Kupries

.fi

Changes to embedded/man/files/cmdr_help.n.

235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_help" n 0 doc "<<unknown>>"
.BS
.SH NAME
cmdr_help \- Cmdr - Utilities for help text formatting and setup - Internal
.SH SYNOPSIS
package require \fBcmdr::help \fR
.sp
\fB::cmdr::help\fR \fBauto\fR \fIactor\fR







|







235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_help" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
.BS
.SH NAME
cmdr_help \- Cmdr - Utilities for help text formatting and setup - Internal
.SH SYNOPSIS
package require \fBcmdr::help \fR
.sp
\fB::cmdr::help\fR \fBauto\fR \fIactor\fR

Changes to embedded/man/files/cmdr_help_json.n.

235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_help_json" n 0 doc "<<unknown>>"
.BS
.SH NAME
cmdr_help_json \- Cmdr - Formatting help as JSON object
.SH SYNOPSIS
package require \fBcmdr::help::json \fR
.sp
.BE







|







235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_help_json" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
.BS
.SH NAME
cmdr_help_json \- Cmdr - Formatting help as JSON object
.SH SYNOPSIS
package require \fBcmdr::help::json \fR
.sp
.BE

Changes to embedded/man/files/cmdr_help_sql.n.

235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_help_sql" n 0 doc "<<unknown>>"
.BS
.SH NAME
cmdr_help_sql \- Cmdr - Formatting help as series of SQL commands
.SH SYNOPSIS
package require \fBcmdr::help::sql \fR
.sp
.BE







|







235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_help_sql" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
.BS
.SH NAME
cmdr_help_sql \- Cmdr - Formatting help as series of SQL commands
.SH SYNOPSIS
package require \fBcmdr::help::sql \fR
.sp
.BE

Changes to embedded/man/files/cmdr_howto_development.n.

235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_development" n 0 doc "<<unknown>>"
.BS
.SH NAME
cmdr_development \- Cmdr - The Developer's Guide
.SH DESCRIPTION
.PP
Welcome to the Cmdr project, written by Andreas Kupries\&.
.PP







|







235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_development" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
.BS
.SH NAME
cmdr_development \- Cmdr - The Developer's Guide
.SH DESCRIPTION
.PP
Welcome to the Cmdr project, written by Andreas Kupries\&.
.PP

Changes to embedded/man/files/cmdr_howto_get_sources.n.

235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_howto_get_sources" n 0 doc "<<unknown>>"
.BS
.SH NAME
cmdr_howto_get_sources \- Cmdr - How To Get The Sources
.SH DESCRIPTION
.PP
Welcome to the Cmdr project, written by Andreas Kupries\&.
.PP







|







235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_howto_get_sources" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
.BS
.SH NAME
cmdr_howto_get_sources \- Cmdr - How To Get The Sources
.SH DESCRIPTION
.PP
Welcome to the Cmdr project, written by Andreas Kupries\&.
.PP

Changes to embedded/man/files/cmdr_howto_installation.n.

235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_installation" n 0 doc "<<unknown>>"
.BS
.SH NAME
cmdr_installation \- Cmdr - The Installer's Guide
.SH DESCRIPTION
.PP
Welcome to the Cmdr project, written by Andreas Kupries\&.
.PP







|







235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_installation" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
.BS
.SH NAME
cmdr_installation \- Cmdr - The Installer's Guide
.SH DESCRIPTION
.PP
Welcome to the Cmdr project, written by Andreas Kupries\&.
.PP

Changes to embedded/man/files/cmdr_introduction.n.

235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251












252
253
254
255
256
257
258
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_introduction" n 0 doc "<<unknown>>"
.BS
.SH NAME
cmdr_introduction \- Cmdr - Introduction to the project
.SH DESCRIPTION
.PP
Welcome to the Cmdr project, written by Andreas Kupries\&.
.PP
For availability please read \fICmdr - How To Get The Sources\fR\&.
.PP












.SH "SYSTEM ARCHITECTURE"
.SH "RELATED DOCUMENTS"
.IP [1]
\fICmdr - Introduction to the project\fR
.IP [2]
\fICmdr - License\fR
.IP [3]







|









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







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
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_introduction" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
.BS
.SH NAME
cmdr_introduction \- Cmdr - Introduction to the project
.SH DESCRIPTION
.PP
Welcome to the Cmdr project, written by Andreas Kupries\&.
.PP
For availability please read \fICmdr - How To Get The Sources\fR\&.
.PP
The cmdr framework is a set of 12 related Tcl packages for the easy
specification of the interfaces of command line applications\&.
This means the declaration of the set of commands to be provided by an
application, and their parameters, be they options or positional
inputs\&.
At runtime the internals of the framework, guided by the chosen
specification, handle the bulk of processing \fB$::argv\fR\&. This
covers determining the requested command, mapping argument words to
command parameters, and validating them\&.
Additional features of the runtime are an integrated help system and
interactive command line shells with basic command and argument
completion\&.
.SH "SYSTEM ARCHITECTURE"
.SH "RELATED DOCUMENTS"
.IP [1]
\fICmdr - Introduction to the project\fR
.IP [2]
\fICmdr - License\fR
.IP [3]

Changes to embedded/man/files/cmdr_license.n.

235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_license" n 0 doc "<<unknown>>"
.BS
.SH NAME
cmdr_license \- Cmdr - License
.SH DESCRIPTION
.PP
Welcome to the Cmdr project, written by Andreas Kupries\&.
.PP







|







235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_license" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
.BS
.SH NAME
cmdr_license \- Cmdr - License
.SH DESCRIPTION
.PP
Welcome to the Cmdr project, written by Andreas Kupries\&.
.PP

Changes to embedded/man/files/cmdr_officer.n.

235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
...
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
...
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
...
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_officer" n 0 doc "<<unknown>>"
.BS
.SH NAME
cmdr_officer \- Cmdr - Aggregation of multiple commands for dispatch\&.
.SH SYNOPSIS
package require \fBcmdr::util \fR
.sp
\fB::cmdr::officer\fR \fBnew\fR \fIsuper\fR \fIname\fR \fIactions\fR
................................................................................
The instance command of the actor (officer actually) which contains the new officer\&.
.TP
string \fIname\fR
The user-visible name of the command\&.
.TP
script \fIactions\fR
The specification of the officer's subordinates\&.
Please read \fICmdr - Specification Language\fR, section --TODO-- for the details\&.
.RE
.PP
.SH "INSTANCE API"
The instance API is not public\&. It is used internally by the framework
during the parsing of a command hierarchy specification to configure
the officer instances, and when processing a command line at runtime
to manage navigation of the hierarchy, word-completion, etc\&.
................................................................................
script \fIpath\fR
The list of names specifying the route from this officer to the new
private\&. The last element is the name of the private command, while
the preceding names specify the intermediate officers\&.
.TP
script \fIarguments\fR
The specification of the private's parameters\&.
Please read \fICmdr - Specification Language\fR, section --TODO-- for the details\&.
.TP
cmd-prefix \fIaction\fR
The command prefix to invoke when this private is selected for
execution\&.  It takes a single argument, the instance command of the
hidden \fBcmdr::config\fR container holding the private's
parameters\&. The result of the action, if there is any, is ignored by
the framework\&.
................................................................................
the set of subordinates known to this officer\&. This is the same type
of script as used during construction, except here we dynamically
extend the officer\&.
.RS
.TP
script \fIactions\fR
The specification of the officer's additional subordinates\&.
Please read \fICmdr - Specification Language\fR, section --TODO-- for the details\&.
.RE
.TP
\fB<officer>\fR \fBlookup\fR \fIname\fR
This method returns the instance command of the sub-ordinate with the
given \fIname\fR\&. An error is thrown if such a sub-ordinate does not
exist\&. See also method \fBhas\fR\&.
.RS







|







 







|







 







|







 







|







235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
...
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
...
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
...
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_officer" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
.BS
.SH NAME
cmdr_officer \- Cmdr - Aggregation of multiple commands for dispatch\&.
.SH SYNOPSIS
package require \fBcmdr::util \fR
.sp
\fB::cmdr::officer\fR \fBnew\fR \fIsuper\fR \fIname\fR \fIactions\fR
................................................................................
The instance command of the actor (officer actually) which contains the new officer\&.
.TP
string \fIname\fR
The user-visible name of the command\&.
.TP
script \fIactions\fR
The specification of the officer's subordinates\&.
Please read \fICmdr - Specification Language\fR (section "Officers") for the details\&.
.RE
.PP
.SH "INSTANCE API"
The instance API is not public\&. It is used internally by the framework
during the parsing of a command hierarchy specification to configure
the officer instances, and when processing a command line at runtime
to manage navigation of the hierarchy, word-completion, etc\&.
................................................................................
script \fIpath\fR
The list of names specifying the route from this officer to the new
private\&. The last element is the name of the private command, while
the preceding names specify the intermediate officers\&.
.TP
script \fIarguments\fR
The specification of the private's parameters\&.
Please read \fICmdr - Specification Language\fR (section "Parameters") for the details\&.
.TP
cmd-prefix \fIaction\fR
The command prefix to invoke when this private is selected for
execution\&.  It takes a single argument, the instance command of the
hidden \fBcmdr::config\fR container holding the private's
parameters\&. The result of the action, if there is any, is ignored by
the framework\&.
................................................................................
the set of subordinates known to this officer\&. This is the same type
of script as used during construction, except here we dynamically
extend the officer\&.
.RS
.TP
script \fIactions\fR
The specification of the officer's additional subordinates\&.
Please read \fICmdr - Specification Language\fR (section "Officers") for the details\&.
.RE
.TP
\fB<officer>\fR \fBlookup\fR \fIname\fR
This method returns the instance command of the sub-ordinate with the
given \fIname\fR\&. An error is thrown if such a sub-ordinate does not
exist\&. See also method \fBhas\fR\&.
.RS

Changes to embedded/man/files/cmdr_parameter.n.

235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
...
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_parameter" n 0 doc "<<unknown>>"
.BS
.SH NAME
cmdr_parameter \- Cmdr - Command parameters
.SH SYNOPSIS
package require \fBcmdr::util \fR
.sp
\fB::cmdr::parameter\fR \fBnew\fR \fIconfig\fR \fIorder\fR \fIcmdline\fR \fIrequired\fR \fIdefered\fR \fIname\fR \fIdescription\fR \fIspec\fR
................................................................................
(in \fIspec\fR)\&.
.TP
string \fIdescription\fR
Human-readable help text for the parameter\&.
.TP
script \fIspec\fR
Tcl-script specifying the parameter in detail\&. Please read
\fICmdr - Specification Language\fR, section --TODO-- for the details\&.
.RE
.PP
.SH "INSTANCE API"
Most of the instance API is not public\&.
.PP
It is described here for use by developers maintaining,
modifying and extending the framework itself\&. A user of the framework







|







 







|







235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
...
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_parameter" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
.BS
.SH NAME
cmdr_parameter \- Cmdr - Command parameters
.SH SYNOPSIS
package require \fBcmdr::util \fR
.sp
\fB::cmdr::parameter\fR \fBnew\fR \fIconfig\fR \fIorder\fR \fIcmdline\fR \fIrequired\fR \fIdefered\fR \fIname\fR \fIdescription\fR \fIspec\fR
................................................................................
(in \fIspec\fR)\&.
.TP
string \fIdescription\fR
Human-readable help text for the parameter\&.
.TP
script \fIspec\fR
Tcl-script specifying the parameter in detail\&. Please read
\fICmdr - Specification Language\fR (section "Parameters") for the details\&.
.RE
.PP
.SH "INSTANCE API"
Most of the instance API is not public\&.
.PP
It is described here for use by developers maintaining,
modifying and extending the framework itself\&. A user of the framework

Changes to embedded/man/files/cmdr_private.n.

235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
...
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_private" n 0 doc "<<unknown>>"
.BS
.SH NAME
cmdr_private \- Cmdr - Single command handling, options, and arguments
.SH SYNOPSIS
package require \fBcmdr::util \fR
.sp
\fB::cmdr::private\fR \fBnew\fR \fIsuper\fR \fIname\fR \fIarguments\fR \fIaction\fR
................................................................................
The instance command of the actor (officer actually) which contains the new private\&.
.TP
string \fIname\fR
The user-visible name of the command\&.
.TP
script \fIarguments\fR
The specification of the private's parameters\&.
Please read \fICmdr - Specification Language\fR, section --TODO-- for the details\&.
.TP
cmd-prefix \fIaction\fR
The command prefix to invoke when this private is selected for
execution\&.  It takes a single argument, the instance command of the
hidden \fBcmdr::config\fR container holding the private's
parameters\&. The result of the action, if there is any, is ignored by
the framework\&.







|







 







|







235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
...
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_private" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
.BS
.SH NAME
cmdr_private \- Cmdr - Single command handling, options, and arguments
.SH SYNOPSIS
package require \fBcmdr::util \fR
.sp
\fB::cmdr::private\fR \fBnew\fR \fIsuper\fR \fIname\fR \fIarguments\fR \fIaction\fR
................................................................................
The instance command of the actor (officer actually) which contains the new private\&.
.TP
string \fIname\fR
The user-visible name of the command\&.
.TP
script \fIarguments\fR
The specification of the private's parameters\&.
Please read \fICmdr - Specification Language\fR (section "Privates") for the details\&.
.TP
cmd-prefix \fIaction\fR
The command prefix to invoke when this private is selected for
execution\&.  It takes a single argument, the instance command of the
hidden \fBcmdr::config\fR container holding the private's
parameters\&. The result of the action, if there is any, is ignored by
the framework\&.

Changes to embedded/man/files/cmdr_util.n.

235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_util" n 0 doc "<<unknown>>"
.BS
.SH NAME
cmdr_util \- Cmdr - General Utilities - Internal
.SH SYNOPSIS
package require \fBcmdr::util \fR
.sp
\fB::cmdr::util\fR \fBpadr\fR \fIlist\fR







|







235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_util" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
.BS
.SH NAME
cmdr_util \- Cmdr - General Utilities - Internal
.SH SYNOPSIS
package require \fBcmdr::util \fR
.sp
\fB::cmdr::util\fR \fBpadr\fR \fIlist\fR

Changes to embedded/man/files/cmdr_validate.n.

235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_validate" n 0 doc "<<unknown>>"
.BS
.SH NAME
cmdr_validate \- Cmdr - Standard validation types for parameters
.SH SYNOPSIS
package require \fBcmdr::validate \fR
.sp
.BE







|







235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_validate" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
.BS
.SH NAME
cmdr_validate \- Cmdr - Standard validation types for parameters
.SH SYNOPSIS
package require \fBcmdr::validate \fR
.sp
.BE

Changes to embedded/man/files/cmdr_vcommon.n.

235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_validate_common" n 0 doc "<<unknown>>"
.BS
.SH NAME
cmdr_validate_common \- Cmdr - Utilities for Validation Types
.SH SYNOPSIS
package require \fBcmdr::validate::common \fR
.sp
\fB::cmdr::validate::common\fR \fBfail\fR \fIp\fR \fIcode\fR \fItype\fR \fIx\fR







|







235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_validate_common" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
.BS
.SH NAME
cmdr_validate_common \- Cmdr - Utilities for Validation Types
.SH SYNOPSIS
package require \fBcmdr::validate::common \fR
.sp
\fB::cmdr::validate::common\fR \fBfail\fR \fIp\fR \fIcode\fR \fItype\fR \fIx\fR

Changes to embedded/man/files/cmdr_vtypes.n.

235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_vtypes" n 0 doc "<<unknown>>"
.BS
.SH NAME
cmdr_vtypes \- Cmdr - Writing custom validation types
.SH SYNOPSIS
package require \fBcmdr::validate \fR
.sp
\fBcmd\fR \fBcomplete\fR \fIp\fR \fIx\fR







|







235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
.de CE
.fi
.RE
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_vtypes" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
.BS
.SH NAME
cmdr_vtypes \- Cmdr - Writing custom validation types
.SH SYNOPSIS
package require \fBcmdr::validate \fR
.sp
\fBcmd\fR \fBcomplete\fR \fIp\fR \fIx\fR

Changes to embedded/man/index.n.

254
255
256
257
258
259
260



261
262
263
264
265
266
267
...
314
315
316
317
318
319
320



321
322
323
324
325
326
327
...
374
375
376
377
378
379
380



381
382
383
384
385
386
387
...
434
435
436
437
438
439
440



441
442
443
444
445
446
447
...
494
495
496
497
498
499
500



501
502
503
504
505
506
507
...
554
555
556
557
558
559
560



561
562
563
564
565
566
567
...
614
615
616
617
618
619
620



621
622
623
624
625
626
627
...
674
675
676
677
678
679
680



681
682
683
684
685
686
687
...
734
735
736
737
738
739
740



741
742
743
744
745
746
747
...
794
795
796
797
798
799
800



801
802
803
804
805
806
807
...
854
855
856
857
858
859
860



861
862
863
864
865
866
867
...
914
915
916
917
918
919
920



921
922
923
924
925
926
927
...
974
975
976
977
978
979
980



981
982
983
984
985
986
987
....
1034
1035
1036
1037
1038
1039
1040



1041
1042
1043
1044
1045
1046
1047
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development



.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development



.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development



.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development



.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development



.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development



.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development



.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development



.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development



.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development



.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development



.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development



.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development



.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development



.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
...
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
...
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
...
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
...
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
...
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
...
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
...
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
...
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
...
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
...
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
...
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
....
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
....
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr_dsl
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr_dsl
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr_dsl
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr_dsl
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr_dsl
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr_dsl
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr_dsl
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr_dsl
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr_dsl
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr_dsl
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr_dsl
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr_dsl
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr_dsl
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP
................................................................................
cmdr_changes
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr_config
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr_dsl
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr_help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr_help_json
.TP

Changes to embedded/man/toc.n.

253
254
255
256
257
258
259



260
261
262
263
264
265
266
.TP
\fBcmdr_config\fR
\fIfiles/cmdr_config\&.n\fR: Cmdr - Collection of parameters for privates
.TP
\fBcmdr_development\fR
\fIfiles/cmdr_howto_development\&.n\fR: Cmdr - The Developer's Guide
.TP



\fBcmdr_help\fR
\fIfiles/cmdr_help\&.n\fR: Cmdr - Utilities for help text formatting and setup - Internal
.TP
\fBcmdr_help_json\fR
\fIfiles/cmdr_help_json\&.n\fR: Cmdr - Formatting help as JSON object
.TP
\fBcmdr_help_sql\fR







>
>
>







253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
.TP
\fBcmdr_config\fR
\fIfiles/cmdr_config\&.n\fR: Cmdr - Collection of parameters for privates
.TP
\fBcmdr_development\fR
\fIfiles/cmdr_howto_development\&.n\fR: Cmdr - The Developer's Guide
.TP
\fBcmdr_dsl\fR
\fIfiles/cmdr_dsl\&.n\fR: Cmdr - Specification Language
.TP
\fBcmdr_help\fR
\fIfiles/cmdr_help\&.n\fR: Cmdr - Utilities for help text formatting and setup - Internal
.TP
\fBcmdr_help_json\fR
\fIfiles/cmdr_help_json\&.n\fR: Cmdr - Formatting help as JSON object
.TP
\fBcmdr_help_sql\fR

Changes to embedded/www/doc/files/cmdr.html.

1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
...
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169

<html><head>
<title>cmdr - &lt;&lt;unknown&gt;&gt;</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr - Cmdr - Main package and 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>
<li class="section"><a href="#synopsis">Synopsis</a></li>
................................................................................
<p>The result of the command is the new instance command.</p>
<dl class="arguments">
<dt>string <i class="arg">name</i></dt>
<dd><p>The user-visible name of the command (hierarchy).</p></dd>
<dt>script <i class="arg">actions</i></dt>
<dd><p>The specification of the subordinate commands. On the command line
these are the toplevel commands of the application using the
hierarchy.
Please read <i class="term">Cmdr - Specification Language</i>, section --TODO-- for the details.</p></dd>
</dl></dd>
<dt><a name="3"><b class="cmd">::cmdr</b> <b class="method">interactive</b> <span class="opt">?<i class="arg">enable</i>?</span></a></dt>
<dd><p>This command globally (de)activates the interactive parts of the
framework, as per the value of <i class="arg">enable</i>.</p>
<p>By default (initial state) the framework allows interaction.</p>
<dl class="arguments">
<dt>boolean <i class="arg">enable</i></dt>


|







 







|







 







|
|







1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
...
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169

<html><head>
<title>cmdr - Cmdr, a framework for command line parsing and dispatch</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr - Cmdr - Main package and 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>
<li class="section"><a href="#synopsis">Synopsis</a></li>
................................................................................
<p>The result of the command is the new instance command.</p>
<dl class="arguments">
<dt>string <i class="arg">name</i></dt>
<dd><p>The user-visible name of the command (hierarchy).</p></dd>
<dt>script <i class="arg">actions</i></dt>
<dd><p>The specification of the subordinate commands. On the command line
these are the toplevel commands of the application using the
hierarchy. Please read <i class="term"><a href="cmdr_dsl.html">Cmdr - Specification Language</a></i>, (section &quot;Officers&quot;)
for the details.</p></dd>
</dl></dd>
<dt><a name="3"><b class="cmd">::cmdr</b> <b class="method">interactive</b> <span class="opt">?<i class="arg">enable</i>?</span></a></dt>
<dd><p>This command globally (de)activates the interactive parts of the
framework, as per the value of <i class="arg">enable</i>.</p>
<p>By default (initial state) the framework allows interaction.</p>
<dl class="arguments">
<dt>boolean <i class="arg">enable</i></dt>

Changes to embedded/www/doc/files/cmdr_actor.html.

1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_actor - &lt;&lt;unknown&gt;&gt;</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_actor(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_actor - Cmdr - Base class for officers and privates - Internal</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>


|







 







|







1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_actor - Cmdr, a framework for command line parsing and dispatch</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_actor(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_actor - Cmdr - Base class for officers and privates - Internal</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>

Changes to embedded/www/doc/files/cmdr_changes.html.

1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_changes - &lt;&lt;unknown&gt;&gt;</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_changes(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_changes - Cmdr - Log of Changes</p>
</div>
<div id="toc" class="section"><h2><a name="toc">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>


|







 







|







1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_changes - Cmdr, a framework for command line parsing and dispatch</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_changes(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_changes - Cmdr - Log of Changes</p>
</div>
<div id="toc" class="section"><h2><a name="toc">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>

Changes to embedded/www/doc/files/cmdr_config.html.

1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
...
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206

<html><head>
<title>cmdr_config - &lt;&lt;unknown&gt;&gt;</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_config(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_config - Cmdr - Collection of parameters for privates</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
................................................................................
<dt>string <i class="arg">obj</i></dt>
<dd><p>The (command) name of the new config instance.</p></dd>
<dt>cmdr::config <i class="arg">context</i></dt>
<dd><p>The instance command of the <b class="package">cmdr::private</b> instance the configuration
will belong to.</p></dd>
<dt>script <i class="arg">spec</i></dt>
<dd><p>Tcl-script specifying the parameters in detail. Please read
<i class="term">Cmdr - Specification Language</i>, section --TODO-- for the details.</p></dd>
</dl></dd>
<dt><a name="3"><b class="cmd">::cmdr::config</b> <b class="method">interactive</b> <span class="opt">?<i class="arg">enable</i>?</span></a></dt>
<dd><p>Class method to change the global interaction default for the
mini-shell of privates. The default is to disable this mini-shell
for all privates, and enable it on a per-private basis, through
the specification.</p>
<dl class="arguments">


|







 







|







 







|







1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
...
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206

<html><head>
<title>cmdr_config - Cmdr, a framework for command line parsing and dispatch</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_config(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_config - Cmdr - Collection of parameters for privates</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
................................................................................
<dt>string <i class="arg">obj</i></dt>
<dd><p>The (command) name of the new config instance.</p></dd>
<dt>cmdr::config <i class="arg">context</i></dt>
<dd><p>The instance command of the <b class="package">cmdr::private</b> instance the configuration
will belong to.</p></dd>
<dt>script <i class="arg">spec</i></dt>
<dd><p>Tcl-script specifying the parameters in detail. Please read
<i class="term"><a href="cmdr_dsl.html">Cmdr - Specification Language</a></i> (section &quot;Parameters&quot;) for the details.</p></dd>
</dl></dd>
<dt><a name="3"><b class="cmd">::cmdr::config</b> <b class="method">interactive</b> <span class="opt">?<i class="arg">enable</i>?</span></a></dt>
<dd><p>Class method to change the global interaction default for the
mini-shell of privates. The default is to disable this mini-shell
for all privates, and enable it on a per-private basis, through
the specification.</p>
<dl class="arguments">

Added embedded/www/doc/files/cmdr_dsl.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

<html><head>
<title>cmdr_dsl - Cmdr, a framework for command line parsing and dispatch</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 'cmdr_dsl.man' by tcllib/doctools with format 'html'
   -->
<! -- Copyright &copy; 2013 Andreas Kupries   -- Copyright &copy; 2013 Documentation, Andreas Kupries
   -->
<! -- CVS: $Id$ cmdr_dsl.n
   -->
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_dsl(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_dsl - Cmdr - Specification Language</p>
</div>
<div id="toc" class="section"><h2><a name="toc">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">Introductory examples</a>
<ul>
<li class="subsection"><a href="#subsection1">Basic setup, private with inputs</a></li>
<li class="subsection"><a href="#subsection2">Basic setup, command nesting</a></li>
</ul>
</li>
<li class="section"><a href="#section3">Language Reference</a>
<ul>
<li class="subsection"><a href="#subsection3">General</a></li>
<li class="subsection"><a href="#subsection4">Officers</a></li>
<li class="subsection"><a href="#subsection5">Privates</a></li>
<li class="subsection"><a href="#subsection6">Parameters</a></li>
</ul>
</li>
<li class="section"><a href="#section4">Related Documents</a></li>
<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>Welcome to the Cmdr project, written by Andreas Kupries.</p>
<p>For availability please read <i class="term"><a href="cmdr_howto_get_sources.html">Cmdr - How To Get The Sources</a></i>.</p>
<p>This document is for users of the cmdr framework. It describes the
domain-specific language for the specification of command hierarchies
with commands and their parameters (options, and inputs).</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Introductory examples</a></h2>
<p>Instead of immediately diving into the full syntax of the
specification language first a few examples to demonstrate the general
look and feel, plus basic features.</p>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Basic setup, private with inputs</a></h3>
<p>This example specifies a command line providing 3 commands for
the management of command aliases.
This is actually a slice of <b class="syscmd">stackato</b>'s interface, reduced and
modified to fit here.
While it does not have the necessary backend procedures required to
actually run the commands, it is enough to demonstrate basic features,
namely the declaration of &quot;privates&quot; with &quot;input&quot; parameters.</p>
<p>&quot;privates&quot; are the actual commands, the leaves at the bottom of
the hierarchy. Their &quot;inputs&quot; are positional parameters, i.e. the
association of argument words on a command line to parameter is done
in order of occurence (on command line, and in the specification).</p>
<pre class="example">
# -*- tcl -*
package require Tcl 8.5
package require cmdr
package require foo-backend
cmdr create ::foo foo {
    private alias+ {
	description {
	    Create a shortcut for a command (prefix).
	}
	input name {
	    The name of the new shortcut.
	} {
	    validate ::foo::backend::vt::notacommand
	}
	input command {
	    The command (prefix) the name will map to.
	} {
	    list
	}
    } ::foo::backend::alias::add
    private alias- {
	description {
	    Remove a shortcut by name.
	}
	input name {
	    The name of the shortcut to remove.
	} {
	    validate ::foo::backend::vt::aliasname
	}
    } ::foo::backend::alias::remove
    private alias? {
	description {
	    List the known aliases (shortcuts).
	}
    } ::foo::backend::alias::list
}
foo do {*}$argv
exit
</pre>
<p>At the bottom of the example, just above we can also see the
very simple Tcl command which invokes the command line processing for
a list of words, here coming from <b class="variable">$argv</b>, i.e. the application's
command line.</p>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Basic setup, command nesting</a></h3>
<p>The decoupling of command names from their implementations seen
in the previous example makes it easy to re-arrange and re-label the
user visible commands without having to touch any other part of the
code.</p>
<p>This is demonstrated in the example below, moving the 3
&quot;privates&quot; into an &quot;officer&quot; and renaming them, without changing the
actions. Note that the parameter specifications were removed for
clarity, as they were not changed compared to the original example.</p>
<p>&quot;officers&quot; are named inner nodes in the command hierarchy. They
aggregate related commands, which may not only be &quot;privates&quot; as seen
here, but sub-officers as well.</p>
<pre class="example">
...
cmdr create ::foo foo {
    officer alias {
	description {
	    A collection of commands to manage
	    user-specific shortcuts for command
	    entry
	}
	private add {
	    ...
	} ::foo::backend::alias::add
	private remove {
	    ...
	} ::foo::backend::alias::remove
	private list {
	    ...
	} ::foo::backend::alias::list
    }
}
...
</pre>
</div>
</div>
<div id="section3" class="section"><h2><a name="section3">Language Reference</a></h2>
<p>With the examples behind us we can now go and specify the entire
specification language. If you have skipped here on first reading,
ignoring the examples, please go back and read them first.</p>
<div id="subsection3" class="subsection"><h3><a name="subsection3">General</a></h3>
<p>The conceptual model underneath the command hierarchy is that
of a tree.</p>
<p>The inner nodes of the tree represent command ensembles, here
called &quot;officer&quot;s. Each officer knows one or more commands, and
delegates actual execution to their respective specification, which
may be another officer, or a private.</p>
<p>The leaf nodes of the tree represent the individual commands,
here called &quot;private&quot;s. Each private is responsible for a single
action, and knows how to perform it and the parameters used to
configure that action at runtime.</p>
<p>The same model is graphically presented in the
Entity-Relationship-Diagram below.
<img alt="erd" src="../../image/erd.png"></p>
<p>The &quot;Actor&quot; in that diagram is the common base class for the
ensembles and commands and not directly relevant to users.</p>
<p>The &quot;Config&quot; on the other hand is the second interface seen by
the user, as the sole argument to the action command prefix of
<b class="cmd">private</b> (See section <b class="sectref">Officer</b>).
This container holds all the declared parameters of the command the
action is invoked for, and provides easy access to them through its
methods (see package <b class="package">cmdr::config</b>) at the time of execution.</p>
</div>
<div id="subsection4" class="subsection"><h3><a name="subsection4">Officers</a></h3>
<pre class="example">
alias &lt;name&gt; = &lt;name'&gt;...            Declare an alternate name for a command path.
alias &lt;name&gt;                         Declare an alternate name for the previous command.
common &lt;name&gt; &lt;script&gt;               Declare a named shared code block.
default                              Set last command as default.
description &lt;text&gt;                   Set help text for the current ensemble.
ehandler &lt;cmdprefix&gt;                 Execution Interposition.
officer &lt;name&gt; &lt;script&gt;              Declare a nested ensemble = sub-officer
private &lt;name&gt; &lt;script&gt; &lt;cmdprefix&gt;  Declare a simple command  = private
undocumented                         Hide ensemble from help.
</pre>
<dl class="definitions">
<dt><b class="cmd">alias</b> <i class="arg">name</i> <b class="const">=</b> <i class="arg">name'</i>...</dt>
<dd></dd>
<dt><b class="cmd">alias</b> <i class="arg">name</i></dt>
<dd><p>This is a structuring command, for the command hierarchy. Its main
uses are the creation of alternate command names, and of shortcuts
through the command hierarchy.</p>
<p>For example, stackato's command specification for alias management is
more like <span class="sectref"><a href="#subsection2">Basic setup, command nesting</a></span> and uses shortcuts
similar to what is shown in
--TODO--(example ls-alias2)-- to provide the look of a flat namespace.</p>
<p>In the first form the <i class="arg">name</i> is given the explicit path to
the command it is an alias for. In the second form it implicitly
refers to the immediately preceding officer or private.
Note that &quot;immediately&quot; is interpreted at the current level. The
system is <em>not</em> looking into a nested specification for its last
command.</p></dd>
<dt><b class="cmd">common</b> <i class="arg">name</i> <i class="arg">text</i></dt>
<dd><p>This is another structuring command, for structuring the specification
itself instead of the command tree it declares.</p>
<p>It creates named values, usually code blocks, which can be
shared between specifications. Note that while each block is visible
in the current officer and its subordinates, parents and siblings have
no access.</p>
<p>An example of such a block would be</p>
<pre class="example">
common *all* {
    option debug {
	Activate client internal tracing.
    } {
	undocumented
	list
	when-complete [lambda {p tags} {
	    foreach t $tags { debug on $t }
	}]
    }
}
</pre>
<p>This example defines an option to access the subsystem for debug
narative (See package <b class="package">Tcllib</b>). 
The example is actually special, as the block named <b class="const">*all*</b> is
reserved by the framework. This block, if defined, is automatically
included at the front of all &quot;private&quot; specifications, i.e. shared
across all the specified commands underneath this officer. A very
important trait for the option in the example, as it makes the debug
setup available to all commands without having to explicitly include
the block, and possibly forgetting such.</p>
<p>Generally speaking, the framework reserves all blocks whose
name begins with a star, i.e <b class="const">*</b>, for its own use.</p></dd>
<dt><b class="cmd">default</b></dt>
<dd><p>This command sets up a special kind of alias. The last &quot;private&quot; or
&quot;officer&quot; is set as the default command to use at runtime.
This means that if during &quot;Dispatch&quot; the currently processed word does
not match any of the commands known to this officer this default is
used. If no default is specified an error will be thrown instead.</p></dd>
<dt><b class="cmd">description</b> <i class="arg">text</i></dt>
<dd><p>This command declares the help text of the officer.</p></dd>
<dt><b class="cmd">ehandler</b> <i class="arg">cmdprefix</i></dt>
<dd><p>This is an advanced command which should normally only be specified at
the top of the whole hierarchy (from which its value will
automatically propagate to all subordinates).</p>
<p>At runtime the framework will call the specified command prefix
with a single argument, a script whose execution is equivalent to the
phases &quot;Parsing&quot;, &quot;Completion&quot;, and &quot;Execution&quot; of the framework, as
described in section --TODO--(sectref:flow/phases)--. The handler <em>must</em>
call this script, and can perform any application-specific actions
before and after.</p>
<p>This handler's main uses are two-fold:</p>
<ol class="enumerated">
<li><p>Capture and hande application-specific errors which should not
abort the application, or shown as Tcl stacktrace.</p></li>
<li><p>Cleanup of application-specific transient settings the
parameter callbacks and/or command implementations may have set during
their execution. This is especially important if the interactive
command line shells of the framework are active. Without such a
handler and its bespoke cleanup code transient settings will leak
between multiple commands run from such a shell, something which is
definitely not wanted.</p></li>
</ol></dd>
<dt><b class="cmd">officer</b> <i class="arg">name</i> <i class="arg">script</i></dt>
<dd><p>This command creates a named subordinate officer with its
specification <i class="arg">script</i> of officer commands as described here.</p></dd>
<dt><b class="cmd">private</b> <i class="arg">name</i> <i class="arg">script</i> <i class="arg">cmdprefix</i></dt>
<dd><p>This command creates a named subordinate private with its
specification <i class="arg">script</i> of private commands as described in the
following section, and a command prefix to invoke when it is chosen.</p>
<p>This command prefix is called with a single argument, the
<b class="package">cmdr::config</b> instance holding the parameters of the private.
--TODO--(ref:backend-example-code)--</p></dd>
<dt><b class="cmd">undocumented</b></dt>
<dd><p>Use of this command influences the generation of help, excluding all
officers having this marker (and their subordinates) from the
help. Note that subordinates reachable through aliases may be
included, under the alias name, if not explicitly excluded themselves.</p></dd>
</dl>
</div>
<div id="subsection5" class="subsection"><h3><a name="subsection5">Privates</a></h3>
<p>The specification of simple commands, i.e. &quot;privates&quot; is quite
easy, with only seven commands (see the table below). The important
parts are found in the parameter specifications, explained in the next
section.</p>
<pre class="example">
description &lt;text&gt;             Set help text for command.
input &lt;name&gt; &lt;help&gt; &lt;script&gt;   Declare a positional parameter.
interactive                    Allow interactive shell.
option &lt;name&gt; &lt;help&gt; &lt;script&gt;  Declare a named parameter.
state &lt;name&gt; &lt;help&gt; &lt;script&gt;   Declare a hidden parameter.
undocumented                   Hide command from help.
use &lt;name&gt;                     Execute the named &quot;common&quot; block here.
</pre>
<dl class="definitions">
<dt><b class="cmd">description</b> <i class="arg">text</i></dt>
<dd><p>Like the equivalent command for <span class="sectref"><a href="#subsection4">Officers</a></span> this command
declares the help text for the private.</p></dd>
<dt><b class="cmd">input</b> <i class="arg">name</i> <i class="arg">help</i> <i class="arg">script</i></dt>
<dd><p>This command adds an &quot;input&quot; (positional) parameter to the &quot;private&quot;,
with description <i class="arg">help</i> and its specification <i class="arg">script</i> of
parameter commands as described in the following section.</p></dd>
<dt><b class="cmd">interactive</b></dt>
<dd><p>This command influences the runtime. By default the only interactive
command line shells are associated with the officers. Setting this
marker activates such a shell for the private, to be invoked when
required parameters do not have a value.</p>
<p>The global command <b class="cmd">cmdr::config interactive</b> in package
<b class="package">cmdr::config</b> can be used to globally activate this type of
shell for all &quot;privates&quot;.</p></dd>
<dt><b class="cmd">option</b> <i class="arg">name</i> <i class="arg">help</i> <i class="arg">script</i></dt>
<dd><p>This command adds an &quot;option&quot; (named) parameter to the &quot;private&quot;, with
description <i class="arg">help</i> and its specification <i class="arg">script</i> of parameter
commands as described in the following section.</p></dd>
<dt><b class="cmd">state</b> <i class="arg">name</i> <i class="arg">help</i> <i class="arg">script</i></dt>
<dd><p>This command adds a &quot;state&quot; (hidden) parameter to the &quot;private&quot;, with
description <i class="arg">help</i> and its specification <i class="arg">script</i> of parameter
commands as described in the following section.</p></dd>
<dt><b class="cmd">undocumented</b></dt>
<dd><p>Like the equivalent command for <span class="sectref"><a href="#subsection4">Officers</a></span> use of this command
influences the generation of help, excluding all privates having this
marker from it.</p></dd>
<dt><b class="cmd">use</b> <i class="arg">name</i></dt>
<dd><p>This command is the counterpart to <b class="cmd">common</b> of <span class="sectref"><a href="#subsection4">Officers</a></span>.
It inserts the named block into the specification, executing it. As
such it expects the contents to be a script of private commands as
described in this section.</p></dd>
</dl>
</div>
<div id="subsection6" class="subsection"><h3><a name="subsection6">Parameters</a></h3>
<p>The parameters of private commands are the heart of the system,
providing the space needed to transfer the command arguments to the
implementations, and having the most attributes controlling their
behaviour.</p>
<p>This complexity is mitigated strongly by the use of sensible
defaults for each of the three possible kinds of parameter, i.e.
positional &quot;inputs&quot;, named &quot;options&quot;, and &quot;state&quot; hidden from the
command line.</p>
<p>Each kind has its own construction command in the DSL for
<span class="sectref"><a href="#subsection5">Privates</a></span> which specifies the common information which cannot
have defaults, i.e.</p>
<ol class="enumerated">
<li><p>the name identifying it to the system,</p></li>
<li><p>the help text describing it in informal speech, and, of course,</p></li>
<li><p>the parameter specification itself, using the commands of this section.</p></li>
</ol>
<pre class="example">
alias &lt;name&gt;              N  Declare alternate flag for an option.
default &lt;value&gt;            R Set constant default value.
defered                    R  Defer calculation of the internal representation until demanded.
generate &lt;cmdprefix&gt;       R  Set callback returning the default value.
immediate                  R  Complement of defered.
interact ?&lt;prompt&gt;?        R  Enable the interactive entry of the string value.
label &lt;text&gt;              N  Name to use in the help, and as primary flag (for an option).
list                       R Declare as list-valued.
optional                  G  Declare input as optional.
presence                   V Declare as boolean option without argument.
test                      G  Control the matching of words to optional inputs.
undocumented              G  Declare as hidden from help.
validate &lt;cmdprefix&gt;       V Declare validation type.
when-complete &lt;cmdprefix&gt; C  Set callback executed when the value becomes known.
when-set &lt;cmdprefix&gt;      C  Set callback executed when the string value becomes known.
</pre>
<p><em>Naming</em></p>
<p>We have two commands to influence the visible naming of all
parameters.</p>
<p>As background, all parameters are named for proper
identification within the framework and other Tcl code, i.e. the
various callbacks, including a &quot;private&quot;s action. This &quot;system name&quot;
has to be unique within the &quot;private&quot; a parameter belongs to. Beyond
that however the visible parameters have to be identified within help
texts, and, in case of &quot;options&quot;, for detection during &quot;Parsing&quot;. That
is the visible naming, seen by a user of any application whose command
line processing is based on the Cmdr framework.</p>
<dl class="definitions">
<dt><b class="cmd">label</b> <i class="arg">text</i></dt>
<dd><p>This command declares the visible name, if different from the system
name used as the default. Note that in most cases this default is good
enough, obviating the need for this command.</p>
<p>The only use case seen so far is when two semantically
equivalent input and option parameters clash, requiring different
internal names due to the requirement for uniqueness, yet also the
same visible name and flag within the help to highlight their
connection and equivalence.</p></dd>
<dt><b class="cmd">alias</b> <i class="arg">name</i></dt>
<dd><p>For option parameters the &quot;label&quot; command and its default specifies
the name of the primary flag recognized during parsing. If that is not
enough for a specific option this command allows the specification of
any number additional flags to be recognized.</p>
<p>Note however that the framework automatically recognizes not
only the specified flags, but also all unique prefixes, obviating the
need for this command in many cases.</p></dd>
</dl>
<p><em>General control</em></p>
<p>The general handling of a parameter is influenced by three
commands.</p>
<dl class="definitions">
<dt><b class="cmd">optional</b></dt>
<dd><p>This command marks the parameter as optional, i.e. as something the
user may skip on the command line, and the application supplying
sensible defaults. --TODO--(sectref:para/vtype)--
During parsing the framework will then expend some effort to determine
whether an argument word should be assigned to the parameter, or not.</p>
<p>This setting is only applicable to &quot;inputs&quot;, as &quot;options&quot; are
optional by definition, and &quot;state&quot; is hidden.</p></dd>
<dt><b class="cmd">test</b></dt>
<dd><p>This command is related to the above, switching from the standard
regime for acceptance based on counting and thresholds to a different
one based on validation. The details are explained in section
--TODO--(sectref:flow/parsing, flow/optional)--.</p></dd>
<dt><b class="cmd">undocumented</b></dt>
<dd><p>Like &quot;officers&quot; and &quot;privates&quot; parameters can be hidden from the
generated help. This is the command for doing so, the same as for the
first two.</p>
<p>The main use case is the hiding of options giving an
application developer access to the internals of their application,
something a regular user has no need of, and doesn't have to know
about.</p></dd>
</dl>
<p><em>Representations</em></p>
<p>An important concept of parameters is something taken up from
Tcl itself.
The differentation between string and internal representations.
Where Tcl uses internal representations to speed up its execution here
this separation is that of between the information delivered to the
application by a user, and the application-specific data structures
behind them.</p>
<p>All parameters will have an internal representation.
This is usually derived from the string representation provided by the
user.
The details of that process are explained in section
--TODO--(sectref:para/vtype)--
about validation types.
However we have cases where the user cannot specify a string
representation (&quot;states&quot;), or is allowed to choose not to (optional
&quot;inputs&quot;, &quot;options&quot;).
For these cases three specification commands are made available
enabling us to programmatically choose the internal representation.</p>
<dl class="definitions">
<dt><b class="cmd">default</b> <i class="arg">value</i></dt>
<dd><p>This command provides a constant value for the internal
representation.</p></dd>
<dt><b class="cmd">generate</b> <i class="arg">cmdprefix</i></dt>
<dd><p>This command provides a callback to compute the internal
representation at runtime. This is useful if the default is something
which cannot be captured as a fixed value, for example a handle to
some resource, or a dynamically created object.</p>
<p>The command prefix is invoked with a single argument, the
<b class="package">cmdr::parameter</b> instance for which to generate the internal
representation.</p></dd>
</dl>
<p>The commands &quot;default&quot; and &quot;generate&quot; exclude each other,
i.e. only of them can be specified.
If neither are specified, and we need a default (see the cases
above) a default is chosen per the two rules below:</p>
<ol class="enumerated">
<li><p>Use the empty string for a &quot;list&quot; parameter.</p></li>
<li><p>Use the default value supplied by the chosen validation type
       (See section --TODO--(sectref:para/vtype)--).</p></li>
</ol>
<dl class="definitions">
<dt><b class="cmd">interact</b> <span class="opt">?<i class="arg">prompt</i>?</span></dt>
<dd><p>This command actually does not specify an internal representation, but
activates another method for the user to specify a string value for
the parameter, outside of the command line. 
As such it has priority over either &quot;default&quot; and &quot;generate,&quot; and can
be specified with either. A parameter marked with it will
interactively ask the user for a value if none was specified on the
command line.</p>
<p>The default <i class="arg">prompt</i> is derived from the system name.</p></dd>
</dl>
<p>To recapitulate:</p>
<ol class="enumerated">
<li><p>A string representation specified on the command line has the
       highest priority and goes through the chosen validation type to
       get the associated internal representation.</p></li>
<li><p>If activated via &quot;interact&quot; a small shell is run asking the
       user for a value (or more, as per &quot;list&quot;, see below). The
       result goes through the chosen validation type to get the
       associated internal representation.</p></li>
<li><p>After that the internal representation is either the declared
       &quot;default,&quot; or the result of invoking the &quot;generate&quot;
       callback. As internal representations they are <em>not</em> run
       through the chosen validation type.</p></li>
</ol>
<dl class="definitions">
<dt><b class="cmd">list</b></dt>
<dd><p>This command is used to mark parameters whose string and thus internal
value should be treated as a list. By default all parameters are scalar.</p>
<p>This affects the handling of the parameter during parsing, by
&quot;interact&quot; above, and the use of the validation type. The last two ask
for multiple values, and feed the elements of the string value
separately through validation instead of just the string value in one.
During parsing treatment of &quot;options&quot; changes from keeping only the
last assigned value to accumulation of all values. Similarly a
list-&quot;input&quot; takes all remaining words on the command line for itself
instead of just the current word. Because of this list-&quot;inputs&quot; are
only allowed as the last parameter of a &quot;private.&quot;</p></dd>
</dl>
<p>The last two specification commands dealing with the
representations control when the internal representation is created.</p>
<dl class="definitions">
<dt><b class="cmd">defered</b></dt>
<dd><p>This command marks a parameter as defered, with the internal
representation computed on first access to its value. This is the
default for &quot;state&quot; parameters.</p></dd>
<dt><b class="cmd">immediate</b></dt>
<dd><p>This command marks a parameter as immediate, with the internal
representation computed in the &quot;Completion&quot; phase. This is the default
for &quot;input&quot; and &quot;option&quot; parameters.</p></dd>
</dl>
<p><em>Validation</em></p>
<p>The answer to the necessity of moving between the string and
internal representations described in the previous section are the
validation types. Given a string representation they either return the
associated internal representation or raise an error, signaling that
the input was illegal. This part of their work, the verification of
the legality of the input string gave them their name.</p>
<p>The general concept of validation types was taken from
<b class="package">snit</b>, and modified to suit Cmdr. Where snit's types
expect only a single method to validate the input Cmdr
expects all types to support an ensemble of <em>four</em> methods, one
for the basic validation and transformation of the input, another for
the release of any internal representation so generated, plus delivery
of a default representation and support for command line completion.</p>
<dl class="definitions">
<dt><b class="cmd">validate</b> <i class="arg">cmdprefix</i></dt>
<dd><p>This command specifies a validation type for the parameter, in the
form of a command prefix.
The set of methods this callback has to support, their signatures,
etc. are all explained in <i class="term"><a href="cmdr_vtypes.html">Cmdr - Writing custom validation types</a></i>. This document
contains the implementation of the standard boolean validation type as
an example as well.</p>
<p>Because of the same necessity all parameters must have a
validation type assigned to them, and the system will choose which, if
the user did not. This choice is made per the six rules below and
always returns one of the standard types implemented in package
<b class="package">cmdr::validate</b>.</p>
<ol class="enumerated">
<li><p>Use &quot;identity&quot; if a &quot;generate&quot; callback is specified.</p></li>
<li><p>Use &quot;boolean&quot;  if no &quot;default&quot; is specified and the parameter is an option.</p></li>
<li><p>Use &quot;identity&quot; if no &quot;default&quot; is specified and the parameter is an input.</p></li>
<li><p>Use &quot;boolean&quot;  if the specified &quot;default&quot; value is a Tcl boolean.</p></li>
<li><p>Use &quot;integer&quot;  if the specified &quot;default&quot; value is a Tcl integer.</p></li>
<li><p>Use &quot;identity&quot; as fallback of last resort.</p></li>
</ol></dd>
<dt><b class="cmd">presence</b></dt>
<dd><p>This command is best discussed as part of the wider area of &quot;boolean&quot;
options, i.e. options with validation type &quot;boolean&quot; assigned to
them. These have associated special behaviours, both in the handling
of the specification, and during parsing.</p>
<p>First, normal boolean options. They have automatic aliases
declared for them, derived from their primary flag. An option named
&quot;foo&quot; will have an alias of &quot;no-foo&quot;, and the reverse. During parsing
the &quot;foo&quot; and &quot;no-foo&quot; flags have inverse semantics, and both are
allowed to occur without option argument following the flag. This is
in contrast to all other options which must have such an argument. The
parser essentially uses the validation type to decide if the word
after the flag is a proper boolean value, or not, i.e. an argument to
assign to the parameter, or not.</p>
<p>Now &quot;presence&quot; declares a variant of the above, a boolean
option without the automatic aliases, and <em>never</em> taking an
argument during parsing. Its mere <em>presence</em> on the command line
will set its parameter. Their default value is consequently fixed to
<b class="const">false</b> as well.</p></dd>
</dl>
<p><em>Signaling</em>         
Of the four callbacks supported by parameters the first two,
&quot;generate&quot; and &quot;validate&quot; have been described already, in the sections
--TODO--\ref{para/reps} about representations and
--TODO--\ref{para/vtype} about validation types, respectively.</p>
<p>This section explains the commonalities between the callbacks
in general, and the last two, for notifications about state changes in
detail.</p>
<p>All callbacks are treated as command prefixes, not
scripts.
There are no placeholder substitutions, only arguments added to each
command prefix on invokation. This does not harm the generality of the
system, as complex scripts can be used via procedures or equivalents
(i.e. <b class="cmd">apply</b>).</p>
<p>The two callbacks not yet described are the state-change
callbacks through which the framework can actively drive parts of the
application while processing the command line, whereas normally the
application drives access to parameters through their methods.</p>
<dl class="definitions">
<dt><b class="cmd">when-complete</b> <i class="arg">cmdprefix</i></dt>
<dd><p>This command declares the state-change callback to invoke when the
internal representation of the parameter is generated from the string
representation, or the various ways of getting a default.</p>
<p>The callback is invoked with two arguments, the
<b class="package">cmdr::parameter</b> instance of the parameter which changed, and
its internal representation, in this order.</p></dd>
<dt><b class="cmd">when-set</b> <i class="arg">cmdprefix</i></dt>
<dd><p>This command declares the state-change callback to invoke when the
string representation of the parameter is set during command line
parsing.</p>
<p>The callback is invoked with two arguments, the
<b class="package">cmdr::parameter</b> instance of the parameter which changed, and
its string representation, in this order.</p></dd>
</dl>
<p>Due to their nature these callbacks are invoked at runtime during
either parsing, completion,&quot; or execution. The details are shown in
the table below. The specification commands influencing the timing,
i.e. forcing the use in a specific phase are shown in the intersection
of callback and phase.</p>
<pre class="example">
                    | Dispatch | Parsing | Completion  | Execution
--------------------+----------+---------+-------------+-----------
validate (default)  | *        |         |             |          
--------------------+----------+---------+-------------+-----------
validate (complete) |          | *       | immediate   | defered
when-set            |          | *       |             |          
--------------------+----------+---------+-------------+-----------
generate            |          |         | immediate   | defered
validate (validate) |          | test    | immediate   | defered
validate (release)  |          | test    | immediate   | defered
--------------------+----------+---------+-------------+-----------
when-complete       |          |         | immediate   | defered
--------------------+----------+---------+-------------+-----------
</pre>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">Related Documents</a></h2>
<ol class="enumerated">
<li><p><i class="term"><a href="cmdr_introduction.html">Cmdr - Introduction to the project</a></i></p></li>
<li><p><i class="term"><a href="cmdr_license.html">Cmdr - License</a></i></p></li>
<li><p><i class="term"><a href="cmdr_changes.html">Cmdr - Log of Changes</a></i></p></li>
<li><p><i class="term"><a href="cmdr_howto_get_sources.html">Cmdr - How To Get The Sources</a></i></p></li>
<li><p><i class="term"><a href="cmdr_howto_installation.html">Cmdr - The Installer's Guide</a></i></p></li>
<li><p><i class="term"><a href="cmdr_howto_development.html">Cmdr - The Developer's Guide</a></i></p></li>
</ol>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>Both the package(s) and this documentation will undoubtedly contain
bugs and other problems.
Please report such at
<a href="https:/core.tcl.tk/akupries/cmdr">Cmdr Tickets</a>.</p>
<p>Please also report any ideas you may have for enhancements of
either package(s) and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../index.html#key4">arguments</a>, <a href="../../index.html#key5">command hierarchy</a>, <a href="../../index.html#key9">command line completion</a>, <a href="../../index.html#key11">command line handling</a>, <a href="../../index.html#key13">command tree</a>, <a href="../../index.html#key0">editing command line</a>, <a href="../../index.html#key8">help for command line</a>, <a href="../../index.html#key6">hierarchy of commands</a>, <a href="../../index.html#key3">interactive command shell</a>, <a href="../../index.html#key1">optional arguments</a>, <a href="../../index.html#key2">options</a>, <a href="../../index.html#key12">parameters</a>, <a href="../../index.html#key10">processing command line</a>, <a href="../../index.html#key7">tree of commands</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2013 Andreas Kupries<br>
Copyright &copy; 2013 Documentation, Andreas Kupries</p>
</div>
</div></body></html>

Changes to embedded/www/doc/files/cmdr_help.html.

1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_help - &lt;&lt;unknown&gt;&gt;</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_help(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_help - Cmdr - Utilities for help text formatting and setup - Internal</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>


|







 







|







1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_help - Cmdr, a framework for command line parsing and dispatch</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_help(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_help - Cmdr - Utilities for help text formatting and setup - Internal</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>

Changes to embedded/www/doc/files/cmdr_help_json.html.

1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_help_json - &lt;&lt;unknown&gt;&gt;</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_help_json(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_help_json - Cmdr - Formatting help as JSON 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>
<li class="section"><a href="#synopsis">Synopsis</a></li>


|







 







|







1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_help_json - Cmdr, a framework for command line parsing and dispatch</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_help_json(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_help_json - Cmdr - Formatting help as JSON 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>
<li class="section"><a href="#synopsis">Synopsis</a></li>

Changes to embedded/www/doc/files/cmdr_help_sql.html.

1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_help_sql - &lt;&lt;unknown&gt;&gt;</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_help_sql(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_help_sql - Cmdr - Formatting help as series of SQL 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>
<li class="section"><a href="#synopsis">Synopsis</a></li>


|







 







|







1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_help_sql - Cmdr, a framework for command line parsing and dispatch</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_help_sql(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_help_sql - Cmdr - Formatting help as series of SQL 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>
<li class="section"><a href="#synopsis">Synopsis</a></li>

Changes to embedded/www/doc/files/cmdr_howto_development.html.

1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_development - &lt;&lt;unknown&gt;&gt;</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_development(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_development - Cmdr - The Developer's Guide</p>
</div>
<div id="toc" class="section"><h2><a name="toc">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>


|







 







|







1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_development - Cmdr, a framework for command line parsing and dispatch</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_development(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_development - Cmdr - The Developer's Guide</p>
</div>
<div id="toc" class="section"><h2><a name="toc">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>

Changes to embedded/www/doc/files/cmdr_howto_get_sources.html.

1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_howto_get_sources - &lt;&lt;unknown&gt;&gt;</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_howto_get_sources(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_howto_get_sources - Cmdr - How To Get The Sources</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>


|







 







|







1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_howto_get_sources - Cmdr, a framework for command line parsing and dispatch</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_howto_get_sources(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_howto_get_sources - Cmdr - How To Get The Sources</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>

Changes to embedded/www/doc/files/cmdr_howto_installation.html.

1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_installation - &lt;&lt;unknown&gt;&gt;</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_installation(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_installation - Cmdr - The Installer's Guide</p>
</div>
<div id="toc" class="section"><h2><a name="toc">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>


|







 







|







1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_installation - Cmdr, a framework for command line parsing and dispatch</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_installation(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_installation - Cmdr - The Installer's Guide</p>
</div>
<div id="toc" class="section"><h2><a name="toc">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>

Changes to embedded/www/doc/files/cmdr_introduction.html.

1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
...
119
120
121
122
123
124
125












126
127
128
129
130
131
132

<html><head>
<title>cmdr_introduction - &lt;&lt;unknown&gt;&gt;</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_introduction(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_introduction - Cmdr - Introduction to the project</p>
</div>
<div id="toc" class="section"><h2><a name="toc">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="#keywords">Keywords</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>Welcome to the Cmdr project, written by Andreas Kupries.</p>
<p>For availability please read <i class="term"><a href="cmdr_howto_get_sources.html">Cmdr - How To Get The Sources</a></i>.</p>












</div>
<div id="section2" class="section"><h2><a name="section2">System Architecture</a></h2>
</div>
<div id="section3" class="section"><h2><a name="section3">Related Documents</a></h2>
<ol class="enumerated">
<li><p><i class="term">Cmdr - Introduction to the project</i></p></li>
<li><p><i class="term"><a href="cmdr_license.html">Cmdr - License</a></i></p></li>


|







 







|







 







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







1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
...
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

<html><head>
<title>cmdr_introduction - Cmdr, a framework for command line parsing and dispatch</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_introduction(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_introduction - Cmdr - Introduction to the project</p>
</div>
<div id="toc" class="section"><h2><a name="toc">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="#keywords">Keywords</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>Welcome to the Cmdr project, written by Andreas Kupries.</p>
<p>For availability please read <i class="term"><a href="cmdr_howto_get_sources.html">Cmdr - How To Get The Sources</a></i>.</p>
<p>The cmdr framework is a set of 12 related Tcl packages for the easy
specification of the interfaces of command line applications.
This means the declaration of the set of commands to be provided by an
application, and their parameters, be they options or positional
inputs.
At runtime the internals of the framework, guided by the chosen
specification, handle the bulk of processing <b class="variable">$::argv</b>. This
covers determining the requested command, mapping argument words to
command parameters, and validating them.
Additional features of the runtime are an integrated help system and
interactive command line shells with basic command and argument
completion.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">System Architecture</a></h2>
</div>
<div id="section3" class="section"><h2><a name="section3">Related Documents</a></h2>
<ol class="enumerated">
<li><p><i class="term">Cmdr - Introduction to the project</i></p></li>
<li><p><i class="term"><a href="cmdr_license.html">Cmdr - License</a></i></p></li>

Changes to embedded/www/doc/files/cmdr_license.html.

1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_license - &lt;&lt;unknown&gt;&gt;</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_license(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_license - Cmdr - License</p>
</div>
<div id="toc" class="section"><h2><a name="toc">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>


|







 







|







1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_license - Cmdr, a framework for command line parsing and dispatch</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_license(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_license - Cmdr - License</p>
</div>
<div id="toc" class="section"><h2><a name="toc">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>

Changes to embedded/www/doc/files/cmdr_officer.html.

1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
...
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
...
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
...
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331

<html><head>
<title>cmdr_officer - &lt;&lt;unknown&gt;&gt;</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_officer(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_officer - Cmdr - Aggregation of multiple commands for dispatch.</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
................................................................................
<dl class="arguments">
<dt>object <i class="arg">super</i></dt>
<dd><p>The instance command of the actor (officer actually) which contains the new officer.</p></dd>
<dt>string <i class="arg">name</i></dt>
<dd><p>The user-visible name of the command.</p></dd>
<dt>script <i class="arg">actions</i></dt>
<dd><p>The specification of the officer's subordinates.
Please read <i class="term">Cmdr - Specification Language</i>, section --TODO-- for the details.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Instance API</a></h2>
<p>The instance API is not public. It is used internally by the framework
during the parsing of a command hierarchy specification to configure
the officer instances, and when processing a command line at runtime
................................................................................
<dl class="arguments">
<dt>script <i class="arg">path</i></dt>
<dd><p>The list of names specifying the route from this officer to the new
private. The last element is the name of the private command, while
the preceding names specify the intermediate officers.</p></dd>
<dt>script <i class="arg">arguments</i></dt>
<dd><p>The specification of the private's parameters.
Please read <i class="term">Cmdr - Specification Language</i>, section --TODO-- for the details.</p></dd>
<dt>cmd-prefix <i class="arg">action</i></dt>
<dd><p>The command prefix to invoke when this private is selected for
execution.  It takes a single argument, the instance command of the
hidden <b class="package">cmdr::config</b> container holding the private's
parameters. The result of the action, if there is any, is ignored by
the framework.</p></dd>
</dl></dd>
................................................................................
<dd><p>This method takes a regular specification script and uses it to extend
the set of subordinates known to this officer. This is the same type
of script as used during construction, except here we dynamically
extend the officer.</p>
<dl class="arguments">
<dt>script <i class="arg">actions</i></dt>
<dd><p>The specification of the officer's additional subordinates.
Please read <i class="term">Cmdr - Specification Language</i>, section --TODO-- for the details.</p></dd>
</dl></dd>
<dt><a name="18"><b class="cmd">&lt;officer&gt;</b> <b class="method">lookup</b> <i class="arg">name</i></a></dt>
<dd><p>This method returns the instance command of the sub-ordinate with the
given <i class="arg">name</i>. An error is thrown if such a sub-ordinate does not
exist. See also method <b class="method">has</b>.</p>
<dl class="arguments">
<dt>string <i class="arg">name</i></dt>


|







 







|







 







|







 







|







 







|







1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
...
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
...
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
...
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331

<html><head>
<title>cmdr_officer - Cmdr, a framework for command line parsing and dispatch</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_officer(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_officer - Cmdr - Aggregation of multiple commands for dispatch.</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
................................................................................
<dl class="arguments">
<dt>object <i class="arg">super</i></dt>
<dd><p>The instance command of the actor (officer actually) which contains the new officer.</p></dd>
<dt>string <i class="arg">name</i></dt>
<dd><p>The user-visible name of the command.</p></dd>
<dt>script <i class="arg">actions</i></dt>
<dd><p>The specification of the officer's subordinates.
Please read <i class="term"><a href="cmdr_dsl.html">Cmdr - Specification Language</a></i> (section &quot;Officers&quot;) for the details.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Instance API</a></h2>
<p>The instance API is not public. It is used internally by the framework
during the parsing of a command hierarchy specification to configure
the officer instances, and when processing a command line at runtime
................................................................................
<dl class="arguments">
<dt>script <i class="arg">path</i></dt>
<dd><p>The list of names specifying the route from this officer to the new
private. The last element is the name of the private command, while
the preceding names specify the intermediate officers.</p></dd>
<dt>script <i class="arg">arguments</i></dt>
<dd><p>The specification of the private's parameters.
Please read <i class="term"><a href="cmdr_dsl.html">Cmdr - Specification Language</a></i> (section &quot;Parameters&quot;) for the details.</p></dd>
<dt>cmd-prefix <i class="arg">action</i></dt>
<dd><p>The command prefix to invoke when this private is selected for
execution.  It takes a single argument, the instance command of the
hidden <b class="package">cmdr::config</b> container holding the private's
parameters. The result of the action, if there is any, is ignored by
the framework.</p></dd>
</dl></dd>
................................................................................
<dd><p>This method takes a regular specification script and uses it to extend
the set of subordinates known to this officer. This is the same type
of script as used during construction, except here we dynamically
extend the officer.</p>
<dl class="arguments">
<dt>script <i class="arg">actions</i></dt>
<dd><p>The specification of the officer's additional subordinates.
Please read <i class="term"><a href="cmdr_dsl.html">Cmdr - Specification Language</a></i> (section &quot;Officers&quot;) for the details.</p></dd>
</dl></dd>
<dt><a name="18"><b class="cmd">&lt;officer&gt;</b> <b class="method">lookup</b> <i class="arg">name</i></a></dt>
<dd><p>This method returns the instance command of the sub-ordinate with the
given <i class="arg">name</i>. An error is thrown if such a sub-ordinate does not
exist. See also method <b class="method">has</b>.</p>
<dl class="arguments">
<dt>string <i class="arg">name</i></dt>

Changes to embedded/www/doc/files/cmdr_parameter.html.

1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
...
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235

<html><head>
<title>cmdr_parameter - &lt;&lt;unknown&gt;&gt;</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_parameter(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_parameter - Cmdr - Command 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>
<li class="section"><a href="#synopsis">Synopsis</a></li>
................................................................................
<dd><p>Internal name of the parameter. Also the name used in the
help, if not overridden by a <b class="cmd">label</b> declaration
(in <i class="arg">spec</i>).</p></dd>
<dt>string <i class="arg">description</i></dt>
<dd><p>Human-readable help text for the parameter.</p></dd>
<dt>script <i class="arg">spec</i></dt>
<dd><p>Tcl-script specifying the parameter in detail. Please read
<i class="term">Cmdr - Specification Language</i>, section --TODO-- for the details.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Instance API</a></h2>
<p>Most of the instance API is not public.</p>
<p>It is described here for use by developers maintaining,
modifying and extending the framework itself. A user of the framework


|







 







|







 







|







1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
...
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235

<html><head>
<title>cmdr_parameter - Cmdr, a framework for command line parsing and dispatch</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_parameter(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_parameter - Cmdr - Command 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>
<li class="section"><a href="#synopsis">Synopsis</a></li>
................................................................................
<dd><p>Internal name of the parameter. Also the name used in the
help, if not overridden by a <b class="cmd">label</b> declaration
(in <i class="arg">spec</i>).</p></dd>
<dt>string <i class="arg">description</i></dt>
<dd><p>Human-readable help text for the parameter.</p></dd>
<dt>script <i class="arg">spec</i></dt>
<dd><p>Tcl-script specifying the parameter in detail. Please read
<i class="term"><a href="cmdr_dsl.html">Cmdr - Specification Language</a></i> (section &quot;Parameters&quot;) for the details.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Instance API</a></h2>
<p>Most of the instance API is not public.</p>
<p>It is described here for use by developers maintaining,
modifying and extending the framework itself. A user of the framework

Changes to embedded/www/doc/files/cmdr_private.html.

1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
...
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178

<html><head>
<title>cmdr_private - &lt;&lt;unknown&gt;&gt;</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_private(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_private - Cmdr - Single command handling, options, and arguments</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
................................................................................
<dl class="arguments">
<dt>object <i class="arg">super</i></dt>
<dd><p>The instance command of the actor (officer actually) which contains the new private.</p></dd>
<dt>string <i class="arg">name</i></dt>
<dd><p>The user-visible name of the command.</p></dd>
<dt>script <i class="arg">arguments</i></dt>
<dd><p>The specification of the private's parameters.
Please read <i class="term">Cmdr - Specification Language</i>, section --TODO-- for the details.</p></dd>
<dt>cmd-prefix <i class="arg">action</i></dt>
<dd><p>The command prefix to invoke when this private is selected for
execution.  It takes a single argument, the instance command of the
hidden <b class="package">cmdr::config</b> container holding the private's
parameters. The result of the action, if there is any, is ignored by
the framework.</p></dd>
</dl></dd>


|







 







|







 







|







1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
...
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178

<html><head>
<title>cmdr_private - Cmdr, a framework for command line parsing and dispatch</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_private(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_private - Cmdr - Single command handling, options, and arguments</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
................................................................................
<dl class="arguments">
<dt>object <i class="arg">super</i></dt>
<dd><p>The instance command of the actor (officer actually) which contains the new private.</p></dd>
<dt>string <i class="arg">name</i></dt>
<dd><p>The user-visible name of the command.</p></dd>
<dt>script <i class="arg">arguments</i></dt>
<dd><p>The specification of the private's parameters.
Please read <i class="term"><a href="cmdr_dsl.html">Cmdr - Specification Language</a></i> (section &quot;Privates&quot;) for the details.</p></dd>
<dt>cmd-prefix <i class="arg">action</i></dt>
<dd><p>The command prefix to invoke when this private is selected for
execution.  It takes a single argument, the instance command of the
hidden <b class="package">cmdr::config</b> container holding the private's
parameters. The result of the action, if there is any, is ignored by
the framework.</p></dd>
</dl></dd>

Changes to embedded/www/doc/files/cmdr_util.html.

1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_util - &lt;&lt;unknown&gt;&gt;</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_util(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_util - Cmdr - General Utilities - Internal</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>


|







 







|







1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_util - Cmdr, a framework for command line parsing and dispatch</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_util(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_util - Cmdr - General Utilities - Internal</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>

Changes to embedded/www/doc/files/cmdr_validate.html.

1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_validate - &lt;&lt;unknown&gt;&gt;</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_validate(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_validate - Cmdr - Standard validation types for 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>
<li class="section"><a href="#synopsis">Synopsis</a></li>


|







 







|







1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_validate - Cmdr, a framework for command line parsing and dispatch</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_validate(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_validate - Cmdr - Standard validation types for 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>
<li class="section"><a href="#synopsis">Synopsis</a></li>

Changes to embedded/www/doc/files/cmdr_vcommon.html.

1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_validate_common - &lt;&lt;unknown&gt;&gt;</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_validate_common(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_validate_common - Cmdr - Utilities for Validation Types</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>


|







 







|







1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_validate_common - Cmdr, a framework for command line parsing and dispatch</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_validate_common(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_validate_common - Cmdr - Utilities for Validation Types</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>

Changes to embedded/www/doc/files/cmdr_vtypes.html.

1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_vtypes - &lt;&lt;unknown&gt;&gt;</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_vtypes(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_vtypes - Cmdr - Writing custom validation types</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>


|







 







|







1
2
3
4
5
6
7
8
9
10
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<html><head>
<title>cmdr_vtypes - Cmdr, a framework for command line parsing and dispatch</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
................................................................................
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr_vtypes(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr_vtypes - Cmdr - Writing custom validation types</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>

Changes to embedded/www/doc/toc.html.

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
<td class="#tocright">Cmdr - Collection of parameters for privates</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_howto_development.html">cmdr_development</a></td>
<td class="#tocright">Cmdr - The Developer's Guide</td>
</tr>
<tr class="#tocodd"  >




<td class="#tocleft" ><a href="files/cmdr_help.html">cmdr_help</a></td>
<td class="#tocright">Cmdr - Utilities for help text formatting and setup - Internal</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_help_json.html">cmdr_help_json</a></td>
<td class="#tocright">Cmdr - Formatting help as JSON object</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_help_sql.html">cmdr_help_sql</a></td>
<td class="#tocright">Cmdr - Formatting help as series of SQL commands</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_howto_get_sources.html">cmdr_howto_get_sources</a></td>
<td class="#tocright">Cmdr - How To Get The Sources</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_howto_installation.html">cmdr_installation</a></td>
<td class="#tocright">Cmdr - The Installer's Guide</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_introduction.html">cmdr_introduction</a></td>
<td class="#tocright">Cmdr - Introduction to the project</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_license.html">cmdr_license</a></td>
<td class="#tocright">Cmdr - License</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_officer.html">cmdr_officer</a></td>
<td class="#tocright">Cmdr - Aggregation of multiple commands for dispatch.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_parameter.html">cmdr_parameter</a></td>
<td class="#tocright">Cmdr - Command parameters</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_private.html">cmdr_private</a></td>
<td class="#tocright">Cmdr - Single command handling, options, and arguments</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_util.html">cmdr_util</a></td>
<td class="#tocright">Cmdr - General Utilities - Internal</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_validate.html">cmdr_validate</a></td>
<td class="#tocright">Cmdr - Standard validation types for parameters</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_vcommon.html">cmdr_validate_common</a></td>
<td class="#tocright">Cmdr - Utilities for Validation Types</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_vtypes.html">cmdr_vtypes</a></td>
<td class="#tocright">Cmdr - Writing custom validation types</td>
</tr>
</table>
</dl><hr></body></html>







>
>
>
>



|



|



|



|



|



|



|



|



|



|



|



|



|





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
<td class="#tocright">Cmdr - Collection of parameters for privates</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_howto_development.html">cmdr_development</a></td>
<td class="#tocright">Cmdr - The Developer's Guide</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_dsl.html">cmdr_dsl</a></td>
<td class="#tocright">Cmdr - Specification Language</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_help.html">cmdr_help</a></td>
<td class="#tocright">Cmdr - Utilities for help text formatting and setup - Internal</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_help_json.html">cmdr_help_json</a></td>
<td class="#tocright">Cmdr - Formatting help as JSON object</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_help_sql.html">cmdr_help_sql</a></td>
<td class="#tocright">Cmdr - Formatting help as series of SQL commands</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_howto_get_sources.html">cmdr_howto_get_sources</a></td>
<td class="#tocright">Cmdr - How To Get The Sources</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_howto_installation.html">cmdr_installation</a></td>
<td class="#tocright">Cmdr - The Installer's Guide</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_introduction.html">cmdr_introduction</a></td>
<td class="#tocright">Cmdr - Introduction to the project</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_license.html">cmdr_license</a></td>
<td class="#tocright">Cmdr - License</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_officer.html">cmdr_officer</a></td>
<td class="#tocright">Cmdr - Aggregation of multiple commands for dispatch.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_parameter.html">cmdr_parameter</a></td>
<td class="#tocright">Cmdr - Command parameters</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_private.html">cmdr_private</a></td>
<td class="#tocright">Cmdr - Single command handling, options, and arguments</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_util.html">cmdr_util</a></td>
<td class="#tocright">Cmdr - General Utilities - Internal</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_validate.html">cmdr_validate</a></td>
<td class="#tocright">Cmdr - Standard validation types for parameters</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_vcommon.html">cmdr_validate_common</a></td>
<td class="#tocright">Cmdr - Utilities for Validation Types</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_vtypes.html">cmdr_vtypes</a></td>
<td class="#tocright">Cmdr - Writing custom validation types</td>
</tr>
</table>
</dl><hr></body></html>

Added embedded/www/image/erd.png.

cannot compute difference between binary files

Changes to embedded/www/index.html.

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
<hr><table class="#idx" width="100%">
<tr class="#idxheader"><th colspan="2">
<a name="c1">Keywords: A</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key4"> arguments </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c2">Keywords: C</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key5"> command hierarchy </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key9"> command line completion </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key11"> command line handling </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key13"> command tree </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c3">Keywords: E</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key0"> editing command line </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c4">Keywords: H</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key8"> help for command line </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key6"> hierarchy of commands </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c5">Keywords: I</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key3"> interactive command shell </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c6">Keywords: O</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key1"> optional arguments </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key2"> options </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c7">Keywords: P</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key12"> parameters </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key10"> processing command line </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c8">Keywords: T</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key7"> tree of commands </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
</table>
</body></html>







|







|




|




|




|







|







|




|







|







|




|







|




|







|



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
<hr><table class="#idx" width="100%">
<tr class="#idxheader"><th colspan="2">
<a name="c1">Keywords: A</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key4"> arguments </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c2">Keywords: C</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key5"> command hierarchy </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key9"> command line completion </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key11"> command line handling </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key13"> command tree </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c3">Keywords: E</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key0"> editing command line </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c4">Keywords: H</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key8"> help for command line </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key6"> hierarchy of commands </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c5">Keywords: I</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key3"> interactive command shell </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c6">Keywords: O</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key1"> optional arguments </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key2"> options </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c7">Keywords: P</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key12"> parameters </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key10"> processing command line </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c8">Keywords: T</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key7"> tree of commands </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
</td></tr>
</table>
</body></html>

Changes to embedded/www/toc.html.

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
<td class="#tocright">Cmdr - Collection of parameters for privates</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_howto_development.html">cmdr_development</a></td>
<td class="#tocright">Cmdr - The Developer's Guide</td>
</tr>
<tr class="#tocodd"  >




<td class="#tocleft" ><a href="doc/files/cmdr_help.html">cmdr_help</a></td>
<td class="#tocright">Cmdr - Utilities for help text formatting and setup - Internal</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_help_json.html">cmdr_help_json</a></td>
<td class="#tocright">Cmdr - Formatting help as JSON object</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_help_sql.html">cmdr_help_sql</a></td>
<td class="#tocright">Cmdr - Formatting help as series of SQL commands</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_howto_get_sources.html">cmdr_howto_get_sources</a></td>
<td class="#tocright">Cmdr - How To Get The Sources</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_howto_installation.html">cmdr_installation</a></td>
<td class="#tocright">Cmdr - The Installer's Guide</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_introduction.html">cmdr_introduction</a></td>
<td class="#tocright">Cmdr - Introduction to the project</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_license.html">cmdr_license</a></td>
<td class="#tocright">Cmdr - License</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_officer.html">cmdr_officer</a></td>
<td class="#tocright">Cmdr - Aggregation of multiple commands for dispatch.</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_parameter.html">cmdr_parameter</a></td>
<td class="#tocright">Cmdr - Command parameters</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_private.html">cmdr_private</a></td>
<td class="#tocright">Cmdr - Single command handling, options, and arguments</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_util.html">cmdr_util</a></td>
<td class="#tocright">Cmdr - General Utilities - Internal</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_validate.html">cmdr_validate</a></td>
<td class="#tocright">Cmdr - Standard validation types for parameters</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_vcommon.html">cmdr_validate_common</a></td>
<td class="#tocright">Cmdr - Utilities for Validation Types</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_vtypes.html">cmdr_vtypes</a></td>
<td class="#tocright">Cmdr - Writing custom validation types</td>
</tr>
</table>
</dl><hr></body></html>







>
>
>
>



|



|



|



|



|



|



|



|



|



|



|



|



|





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
<td class="#tocright">Cmdr - Collection of parameters for privates</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_howto_development.html">cmdr_development</a></td>
<td class="#tocright">Cmdr - The Developer's Guide</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_dsl.html">cmdr_dsl</a></td>
<td class="#tocright">Cmdr - Specification Language</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_help.html">cmdr_help</a></td>
<td class="#tocright">Cmdr - Utilities for help text formatting and setup - Internal</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_help_json.html">cmdr_help_json</a></td>
<td class="#tocright">Cmdr - Formatting help as JSON object</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_help_sql.html">cmdr_help_sql</a></td>
<td class="#tocright">Cmdr - Formatting help as series of SQL commands</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_howto_get_sources.html">cmdr_howto_get_sources</a></td>
<td class="#tocright">Cmdr - How To Get The Sources</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_howto_installation.html">cmdr_installation</a></td>
<td class="#tocright">Cmdr - The Installer's Guide</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_introduction.html">cmdr_introduction</a></td>
<td class="#tocright">Cmdr - Introduction to the project</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_license.html">cmdr_license</a></td>
<td class="#tocright">Cmdr - License</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_officer.html">cmdr_officer</a></td>
<td class="#tocright">Cmdr - Aggregation of multiple commands for dispatch.</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_parameter.html">cmdr_parameter</a></td>
<td class="#tocright">Cmdr - Command parameters</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_private.html">cmdr_private</a></td>
<td class="#tocright">Cmdr - Single command handling, options, and arguments</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_util.html">cmdr_util</a></td>
<td class="#tocright">Cmdr - General Utilities - Internal</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_validate.html">cmdr_validate</a></td>
<td class="#tocright">Cmdr - Standard validation types for parameters</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_vcommon.html">cmdr_validate_common</a></td>
<td class="#tocright">Cmdr - Utilities for Validation Types</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_vtypes.html">cmdr_vtypes</a></td>
<td class="#tocright">Cmdr - Writing custom validation types</td>
</tr>
</table>
</dl><hr></body></html>