cmdr
Check-in [f244dccfb4]
Not logged in

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

Overview
Comment:Image tweak, regenerated embedded.
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: f244dccfb46adb722aeb015348d1dc320a024d89
User & Date: aku 2013-11-29 06:41:15.874
Context
2013-11-29
19:36
Added early mention and reference to custom validation types and help formats to the main intro check-in: 1a9bcfb664 user: andreask tags: trunk
06:41
Image tweak, regenerated embedded. check-in: f244dccfb4 user: aku tags: trunk
2013-11-28
23:59
Link from intro to dsl intro, starting the chain through dsl and flow. check-in: 4e1cb948ac user: andreask tags: trunk
Changes
Unified Diff Ignore Whitespace Patch
Changes to doc/parts/dsl_general.inc.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Each [term private] is responsible for a single action and knows how
to perform it, and the set of [term parameter]s used to configure that
action at runtime.

[para] The same model is graphically presented in the
Entity-Relationship-Diagram below.

[image erd]

[para] The [term actor] in that diagram is the common base class for the
ensembles and commands and not directly relevant to users.

[para] The [term config] on the other hand is the second interface
seen by the user, as the sole argument to the action command prefix of
[cmd private]. See [term [vset TITLE_DSL_OFFICER]] for the details.







|







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Each [term private] is responsible for a single action and knows how
to perform it, and the set of [term parameter]s used to configure that
action at runtime.

[para] The same model is graphically presented in the
Entity-Relationship-Diagram below.

[para] [image erd]

[para] The [term actor] in that diagram is the common base class for the
ensembles and commands and not directly relevant to users.

[para] The [term config] on the other hand is the second interface
seen by the user, as the sole argument to the action command prefix of
[cmd private]. See [term [vset TITLE_DSL_OFFICER]] for the details.
Added embedded/man/files/cmdr_dev_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
'\"
'\" Generated from file 'cmdr_dev_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_dev~dsl" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
.BS
.SH NAME
cmdr_dev~dsl \- Cmdr - Internals of DSL handling
.SH SYNOPSIS
package require \fBcmdr \fR
.sp
.BE
.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 internal document provides an overview on how the framework
implements the specification languages for officers, privates,
and parameters\&.
.PP
For more information about other internals of the framework
please read \fICmdr - The Developer's Guide\fR\&.
.SH "OFFICER DSL"
.PP
The officer DSL is implemented in \fBcmdr::officer\fR\&.
.PP
While the specification is supplied with the instance
constructor it is not processed immediately, but saved for when it is
actually needed\&.
.PP
The internal instance method \fBSetup\fR is called at all
places requiring access to the specification and processes it (once,
on first call) to provide the necessary in-memory structures\&.
.PP
The DSL commands map to instance methods as shown below:
.TP
\fBalias\fR
\fBAlias\fR
.TP
\fBcommon\fR
\fBcmdr::actor\fR \fBset\fR
.TP
\fBdefault\fR
\fBDefault\fR
.TP
\fBdescription\fR
\fBcmdr::actor\fR \fBdescription:\fR
.TP
\fBehandler\fR
\fBehandler\fR
.TP
\fBofficer\fR
\fBOfficer\fR, forward to \fBDefineAction\fR
.TP
\fBprivate\fR
\fBPrivate\fR, forward to \fBDefineAction\fR
.TP
\fBundocumented\fR
\fBcmdr::actor\fR \fBundocumented\fR
.PP
.SH "PRIVATE DSL"
.PP
The private DSL is only partially implemented in
\fBcmdr::private\fR\&.
Most of the implementation is in \fBcmdr::config\fR\&.
.PP
While the specification is supplied with the instance
constructor it is not processed immediately, but saved for when it is
actually needed\&.
.PP
The internal instance method \fBSetup\fR is called at all
places requiring access to the specification and processes it (once,
on first call) to provide the necessary in-memory structures\&. This
then delegates to the embedded config instance\&.
.PP
The DSL commands map to \fIconfig\fR instance methods as shown below:
.TP
\fBdescription\fR
\fBDescription\fR,  forward to \fBcmdr::actor\fR \fBdescription:\fR
.TP
\fBinput\fR
\fBInput\fR,  forward to \fBDefineParameter\fR)
.TP
\fBinteractive\fR
\fBInteractive\fR
.TP
\fBoption\fR
\fBOption\fR, forward to \fBDefineParameter\fR)
.TP
\fBsection\fR
\fBSection\fR
.TP
\fBstate\fR
\fBState\fR,  forward to \fBDefineParameter\fR)
.TP
\fBundocumented\fR
\fBUndocumented\fR, forward to \fBcmdr::actor\fR \fBundocumented\fR
.TP
\fBuse\fR
\fBUse\fR
.PP
.SH "PARAMETER DSL"
.PP
The parameter DSL is implemented in \fBcmdr::parameter\fR\&.
.PP
The specification is supplied with the instance constructor and
processed immediately\&. This is different from officers and privates
which defer processing until use\&. When a parameter is declared the
containing private is in use, and so is the parameter\&. Thus no delay\&.
.PP
The DSL commands map to instance methods as shown below:
.TP
\fBalias\fR
\fBAlias\fR
.TP
\fBdefault\fR
\fBDefault\fR
.TP
\fBdefered\fR
\fBDefered\fR
.TP
\fBgenerate\fR
\fBGenerate\fR
.TP
\fBimmediate\fR
\fBImmediate\fR
.TP
\fBinteract\fR
\fBInteract\fR
.TP
\fBlabel\fR
\fBLabel\fR
.TP
\fBlist\fR
\fBList\fR
.TP
\fBno-promotion\fR
\fBNoPromote\fR
.TP
\fBoptional\fR
\fBOptional\fR
.TP
\fBpresence\fR
\fBPresence\fR
.TP
\fBtest\fR
\fBTest\fR
.TP
\fBundocumented\fR
\fBUndocumented\fR
.TP
\fBvalidate\fR
\fBValidate\fR
.TP
\fBwhen-complete\fR
\fBWhenComplete\fR
.TP
\fBwhen-set\fR
\fBWhenSet\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_dsl.n.
258
259
260
261
262
263
264


265
266
267
268
269
270
271
\fICmdr - Introduction to the Specification Language\fR
.IP [2]
\fICmdr - Officer Specification Language\fR
.IP [3]
\fICmdr - Private Specification Language\fR
.IP [4]
\fICmdr - Parameter Specification Language\fR


.PP
.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 PRIVATE COMMANDS WITH INPUTS"
.PP







>
>







258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
\fICmdr - Introduction to the Specification Language\fR
.IP [2]
\fICmdr - Officer Specification Language\fR
.IP [3]
\fICmdr - Private Specification Language\fR
.IP [4]
\fICmdr - Parameter Specification Language\fR
.IP [5]
\fICmdr - Runtime Processing Flow\fR
.PP
.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 PRIVATE COMMANDS WITH INPUTS"
.PP
371
372
373
374
375
376
377









































































378
379
380
381
382
383
384
	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\&.
.PP
The conceptual model underneath the command hierarchy is that







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







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
	private list {
	    \&.\&.\&.
	} ::foo::backend::alias::list
    }
}
\&.\&.\&.

.CE
.SS "SIMPLE BACKEND"
.PP
This example shows a possible implementation of the backend for
the command hierarchies shown in the previous two sections\&.
It is important to note, I believe, that this backend works for both
command hierarchies, despite the changes to the command names (flat
versus nesting) they do\&.
.PP
Note further that while this example uses a
\fBnamespace ensemble\fR to organize the backend other methods are
possible too, i\&.e\&. all the various object systems for Tcl would be
suitable as well\&.
.PP
Lastly, for the sake of brevity this code is incomplete, not
showing any utility commands we may have importet from somewhere else,
nor the low-level workhorse procedures operating on the actual
alias database or whatnot\&.
.PP
.CS


# -*- tcl -*-
# # ## ### ##### ######## ############# #####################

namespace eval ::foo::backend::alias {
    namespace export list add remove
    namespace ensemble create
}

# # ## ### ##### ######## ############# #####################
## Command implementations\&.

proc ::foo::backend::alias::list {config} {
    set aliases [manager known]

    if {[$config @json]} {
	puts [jmap aliases $aliases]
	return
    }

    [table::do t {Alias Command} {
	foreach {name command} $aliases {
	    $t add $name $command
	}
    } show display]
    return
}

proc ::foo::backend::alias::add {config} {
    set name    [$config @name]
    set command [$config @command]

    manager add $name $command
    say [color green "Successfully aliased '$name' to '$command'"]
    return
}

proc ::foo::backend::alias::remove {config} {
    set name [$config @name]

    if {![manager has $name]} {
	err [color red "Unknown alias '$name'"]
    } else {
	manager remove $name
	say [color green "Successfully unaliased '$name'"]
    }
    return
}

# # ## ### ##### ######## ############# #####################
package provide foo::backend::alias 0

.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\&.
.PP
The conceptual model underneath the command hierarchy is that
393
394
395
396
397
398
399

400
401
402
403
404
405
406
here called \fIprivate\fRs\&.
Each \fIprivate\fR is responsible for a single action and knows how
to perform it, and the set of \fIparameter\fRs 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







>







468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
here called \fIprivate\fRs\&.
Each \fIprivate\fR is responsible for a single action and knows how
to perform it, and the set of \fIparameter\fRs used to configure that
action at runtime\&.
.PP
The same model is graphically presented in the
Entity-Relationship-Diagram below\&.
.PP
.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
Changes to embedded/man/files/cmdr_dsl_officer.n.
277
278
279
280
281
282
283


284
285
286
287
288
289
290
\fICmdr - Introduction to the Specification Language\fR
.IP [2]
\fICmdr - Officer Specification Language\fR
.IP [3]
\fICmdr - Private Specification Language\fR
.IP [4]
\fICmdr - Parameter Specification Language\fR


.PP
.SH "LANGUAGE REFERENCE"
.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







>
>







277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
\fICmdr - Introduction to the Specification Language\fR
.IP [2]
\fICmdr - Officer Specification Language\fR
.IP [3]
\fICmdr - Private Specification Language\fR
.IP [4]
\fICmdr - Parameter Specification Language\fR
.IP [5]
\fICmdr - Runtime Processing Flow\fR
.PP
.SH "LANGUAGE REFERENCE"
.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
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
\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 --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, nor shown as Tcl stacktrace\&.
.IP [2]







|
|
|
|







377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
\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 \fIParsing\fR, \fICompletion\fR, and \fIExecution\fR of the
framework, as described in \fICmdr - Runtime Processing Flow\fR\&.
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, nor shown as Tcl stacktrace\&.
.IP [2]
409
410
411
412
413
414
415



416
417
418
419
420
421
422
specification \fIscript\fR of private commands
(See \fICmdr - Private Specification Language\fR), 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 \fIparameter\fRs of the
private\&.



.TP
\fBundocumented\fR
This command excludes the \fIofficer\fR (and its subordinates) from
the generated help\&.
Note that subordinates reachable through aliases may be included,
under the alias name, if they are not explicitly excluded themselves\&.
.PP







>
>
>







411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
specification \fIscript\fR of private commands
(See \fICmdr - Private Specification Language\fR), 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 \fIparameter\fRs of the
private\&.
.sp
For an example see section \fISimple backend\fR
of \fICmdr - Introduction to the Specification Language\fR\&.
.TP
\fBundocumented\fR
This command excludes the \fIofficer\fR (and its subordinates) from
the generated help\&.
Note that subordinates reachable through aliases may be included,
under the alias name, if they are not explicitly excluded themselves\&.
.PP
Changes to embedded/man/files/cmdr_dsl_parameter.n.
291
292
293
294
295
296
297


298
299
300
301
302
303
304
\fICmdr - Introduction to the Specification Language\fR
.IP [2]
\fICmdr - Officer Specification Language\fR
.IP [3]
\fICmdr - Private Specification Language\fR
.IP [4]
\fICmdr - Parameter Specification Language\fR


.PP
.SH "LANGUAGE REFERENCE"
.PP
The \fIparameter\fRs of \fIprivate\fRs are the heart of the
system, providing the space needed to transfer command arguments to
their implementations, and having the most attributes controlling
their behaviour\&.







>
>







291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
\fICmdr - Introduction to the Specification Language\fR
.IP [2]
\fICmdr - Officer Specification Language\fR
.IP [3]
\fICmdr - Private Specification Language\fR
.IP [4]
\fICmdr - Parameter Specification Language\fR
.IP [5]
\fICmdr - Runtime Processing Flow\fR
.PP
.SH "LANGUAGE REFERENCE"
.PP
The \fIparameter\fRs of \fIprivate\fRs are the heart of the
system, providing the space needed to transfer command arguments to
their implementations, and having the most attributes controlling
their behaviour\&.
389
390
391
392
393
394
395

396

397
398
399
400
401
402
403
This setting is only applicable to \fIinput\fRs, as
\fIoption\fRs are optional by definition, and \fIstate\fR is hidden\&.
.TP
\fBtest\fR
This command is related to the above, switching the runtime from the
standard regime for acceptance (based on counting and thresholds) to a
different regime based on validation\&.

The details are explained in --TODO--(sectref:flow/parsing,flow/optional)--\&.

.TP
\fBundocumented\fR
This command excludes the \fIparameter\fR from the generated help\&.
.sp
Its main use case is the hiding of \fIoption\fRs 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







>
|
>







391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
This setting is only applicable to \fIinput\fRs, as
\fIoption\fRs are optional by definition, and \fIstate\fR is hidden\&.
.TP
\fBtest\fR
This command is related to the above, switching the runtime from the
standard regime for acceptance (based on counting and thresholds) to a
different regime based on validation\&.
.sp
More details are explained in section \fIParsing\fR of
\fICmdr - Runtime Processing Flow\fR\&.
.TP
\fBundocumented\fR
This command excludes the \fIparameter\fR from the generated help\&.
.sp
Its main use case is the hiding of \fIoption\fRs 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
659
660
661
662
663
664
665


666
667
668
669
670
671
672
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







>
>







663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
validate (validate) |          | test    | immediate   | defered
validate (release)  |          | test    | immediate   | defered
--------------------+----------+---------+-------------+-----------
when-complete       |          |         | immediate   | defered
--------------------+----------+---------+-------------+-----------

.CE
.PP
Please continue reading with \fICmdr - Runtime Processing Flow\fR\&.
.SH "RELATED DOCUMENTS"
.IP [1]
\fICmdr - Introduction to the project\fR
.IP [2]
\fICmdr - License\fR
.IP [3]
\fICmdr - Log of Changes\fR
Changes to embedded/man/files/cmdr_dsl_private.n.
274
275
276
277
278
279
280


281
282
283
284
285
286
287
\fICmdr - Introduction to the Specification Language\fR
.IP [2]
\fICmdr - Officer Specification Language\fR
.IP [3]
\fICmdr - Private Specification Language\fR
.IP [4]
\fICmdr - Parameter Specification Language\fR


.PP
.SH "LANGUAGE REFERENCE"
.PP
The specification of \fIprivate\fRs is quite easy, with only
seven commands\&. The important parts are found in the \fIparameter\fR
specifications, explained in \fICmdr - Parameter Specification Language\fR\&.
.TP







>
>







274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
\fICmdr - Introduction to the Specification Language\fR
.IP [2]
\fICmdr - Officer Specification Language\fR
.IP [3]
\fICmdr - Private Specification Language\fR
.IP [4]
\fICmdr - Parameter Specification Language\fR
.IP [5]
\fICmdr - Runtime Processing Flow\fR
.PP
.SH "LANGUAGE REFERENCE"
.PP
The specification of \fIprivate\fRs is quite easy, with only
seven commands\&. The important parts are found in the \fIparameter\fR
specifications, explained in \fICmdr - Parameter Specification Language\fR\&.
.TP
320
321
322
323
324
325
326




327
328
329
330
331
332
333
The section/category is specified as a list of words, each
denoting part of the path to the section\&. This means that the last
word is the section of the private, with the preceding words the
sections it is nested in\&.
.sp
Multiple calls are possible and accumulate\&. In other words,
the private can be placed in more than one section/category\&.




.TP
\fBstate\fR \fIname\fR \fIhelp\fR \fIscript\fR
This command adds a \fIstate\fR (i\&.e\&. hidden) \fIparameter\fR to the
\fIprivate\fR, with description \fIhelp\fR and its specification
\fIscript\fR of parameter commands as described in
\fICmdr - Parameter Specification Language\fR\&.
.TP







>
>
>
>







322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
The section/category is specified as a list of words, each
denoting part of the path to the section\&. This means that the last
word is the section of the private, with the preceding words the
sections it is nested in\&.
.sp
Multiple calls are possible and accumulate\&. In other words,
the private can be placed in more than one section/category\&.
.sp
Note further that \fIprivates\fR not put into any section are
automatically placed into a generated section named
\fBMiscellaneous\fR\&.
.TP
\fBstate\fR \fIname\fR \fIhelp\fR \fIscript\fR
This command adds a \fIstate\fR (i\&.e\&. hidden) \fIparameter\fR to the
\fIprivate\fR, with description \fIhelp\fR and its specification
\fIscript\fR of parameter commands as described in
\fICmdr - Parameter Specification Language\fR\&.
.TP
Added embedded/man/files/cmdr_flow.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
'\"
'\" Generated from file 'cmdr_flow\&.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-spec-flow" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
.BS
.SH NAME
cmdr-spec-flow \- Cmdr - Runtime Processing Flow
.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\&.
If you have not read \fICmdr - Introduction to the Specification Language\fR and the related documents
yet, please do so\&.
The explanations how the framework processes a command line at runtime
guided by a specified command hierarchy presuppose knowledge of
command-hierarchy specifications\&.
.PP
A command line is processed in four distinct phases, namely
\fBDispatch\fR, \fBParsing\fR, \fBCompletion\fR, and
\fBExecution\fR\&. Each is explained in more detail in the
referenced sections\&.
.SH "RELATED SPECIFICATION DOCUMENTS"
.IP [1]
\fICmdr - Introduction to the Specification Language\fR
.IP [2]
\fICmdr - Officer Specification Language\fR
.IP [3]
\fICmdr - Private Specification Language\fR
.IP [4]
\fICmdr - Parameter Specification Language\fR
.IP [5]
\fICmdr - Runtime Processing Flow\fR
.PP
.SH DISPATCH
.PP
The first phase determines the \fBcmdr::private\fR instance
to use\&.  To this end it processes words from the command line and uses
them to navigate the tree of \fBcmdr::officer\fR instances until a
\fIprivate\fR is reached\&.
.PP
Each word of the command line is treated as the name of the
\fBcmdr::officer\fR instance to descend into\&.
An error will be thrown when encountering a name for which there is no
known actor (officer or private), and the current \fIofficer\fR has
no \fIdefault\fR declared for it\&.
.PP
On the converse, when reaching the end of the command line but
not reaching a \fIprivate\fR the framework will not throw an
error\&. It will start an interactive command line shell instead\&. This
\fImain shell\fR provides access to exactly the commands of the
\fBcmdr::officer\fR instance which was reached, plus two
pseudo-commands to either exit this shell or gain help\&.
.PP
Execution of the command tree specification, i\&.e\&. the
generation of the in-memory command tree and the actor instances bound
in it, is intertwined with this descent through the command tree\&.
I\&.e\&. instead of processing the entire specification immediately in
full it is lazily unfolded on demand, ignoring all parts which are not
needed\&.
Note that the generated data structures are not destroyed after
\fBExecution\fR, but kept, avoiding the need to re-parse the parts
of the specification already used at least once when an interactive
command line shell is active\&.
.SH PARSING
.PP
This is the most complex phase internally, as it has to assign
the left-over words to the parameters of the chosen
\fBcmdr::private\fR instance, taking into account the kind of
parameters, their requiredness, listness, and other attributes\&.
.PP
Generally processing the words from left to right
\fIoptions\fR are detected in all positions, through their flags
(primary, aliases, and all unique prefixes), followed by their
(string) value to assign\&.
.PP
When a word cannot be the flag for an option the positional
\fIinputs\fR are considered, in order of their declarations\&.
For a mandatory \fIinput\fR the word is simply assigned as its string
value and processing continues with the next word, and the next
\fIinput\fR, if any\&.
Operation becomes more complex when the \fIinput\fR under
consideration is \fIoptional\fR\&.
Now it is necessary to truly decide if the word should be assigned to
this \fIinput\fR or the following\&.
.PP
The standard method for this decision is to count words and
compare to the count of mandatory \fIinputs\fR left\&.
If there are more words available than required to satisfy all
mandatory \fIinputs\fR, then we can and do assign the current word to
the optional input\&.
Otherwise the current \fIinput\fR is skipped and we consider the
next\&.
A set of condensed examples can be found in section
\fBExample for Handling optional Inputs by Threshold\fR\&.
They demonstrate how a various numbers of argument words are assigned
to a specific set of \fIinputs\fR, \fIoptional\fR and non\&.
This is called the \fIthreshold\fR algorithm\&.
.PP
The non-triviality in the above description is in the phrase to
\fIcount words\fR\&.
We cannot simply count all words left on the command line\&.
To get a proper count we have discard/ignore all words belonging to
options\&.
At this point the processor essentially works ahead, processing and
removing all flags/options and their arguments from the command line
before performing the comparison and making its decision\&.
.PP
The whole behaviour however can be changed via \fBtest\fR
(See section \fIGeneral control\fR of \fICmdr - Parameter Specification Language\fR)\&.
Instead of counting words the current word is run through the
validation type of the current \fIinput\fR\&.
On acceptance the value is assigned to it, otherwise that \fIinput\fR
is skipped and the next one put under consideration\&.
.PP
After all of the above the system will process any options
found after the last word assigned to the last \fIinput\fR to
consider\&.
.PP
Errors are thrown if we either find more words than
\fIinputs\fR to assign to, or encounter an unknown option flag\&.
Note that not having enough words for all required \fIinputs\fR is
not an error unless the framework is not allowed to start an
interactive shell\&.
In this \fImini shell\fR all parameters are mapped to shell
commands taking a single argument, the string value of parameter to
assign\&.
Additional five pseudo commands are available to either abort, or
commit to the action, or gain help (\fB\&.ok\fR, \fB\&.run\fR, \fB\&.exit\fR, \fB\&.cancel\fR, and \fB\&.help\fR)\&.
.PP
Parameters marked as \fIlist\fR-valued also trigger special
behaviours\&.
For \fIoptions\fR the assigned values get accumulated instead of each
new value overwriting the last\&.
For \fIinputs\fR only one such parameter can exist, and will be the
last of the \fIprivate\fR\&.
The processor now takes all remaining words and assign them to this
parameter\&.
If the list is also optional then options may be processed ahead or
not, depending on the chosen decision mode, as described for regular
inputs above\&.
.PP
Then are the \fIboolean\fR and \fIpresence\fR \fIoptions\fR
modifying the handling of flags and flag arguments\&.
The details of this were already explained in section
\fIValidation\fR of \fICmdr - Parameter Specification Language\fR\&.
.SS "EXAMPLE FOR HANDLING OPTIONAL INPUTS BY THRESHOLD"
The examples in this section demonstrate how the \fIthreshold\fR
algorithm assigns a various number of argument words to a specific set
of \fIinputs\fR, \fIoptional\fR and non\&.
.PP
.CS


 Parameter    | A? | B | C? | D? | E
 #Required    |   2|   |   1|   1|
--------------+----+---+----+----+----
 2 arguments: |    | a |    |    | b
 3 arguments: | a  | b |    |    | c
 4 arguments: | a  | b | c  |    | d
 5 arguments: | a  | b | c  | d  | e

.CE
.SH COMPLETION
.PP
This phase is reached when all words of the command line have
been processed and no error was thrown by the preceding phases\&.
At this point we know the \fBcmdr::private\fR instance to use, and
its parameters may have a string representation\&.
.PP
All \fIimmediate\fR-mode parameters are now given their
internal representation\&.
The parameters marked as \fIdefered\fR are ignored here and will get
theirs on first access by the backend\&.
.PP
This completion of parameters is done in their order of
declaration within the enclosing \fIprivate\fR command\&.
Note that when parameters have dependencies between them, i\&.e\&. the
calculation of their internal representation requires the internal
representation of another parameter, then this order may be violated
as the requesting parameter triggers completion in the requested one
on access\&.
If this is behaviour not wanted then it is the responsibility of the
user specifying the \fIprivate\fR to place the parameters into an
order where all parameters access only previously completed parameters
during their own completion\&.
.SH EXECUTION
.PP
The last phase is also the most simple\&.
.PP
It only invokes the Tcl command prefix associated with the
chosen \fBcmdr::private\fR instance, providing it with the
\fBcmdr::config\fR instance holding the parameter information
extracted from the command line as its single argument\&.
.PP
For an example of very simple action implementations see
section \fISimple backend\fR of \fICmdr - Introduction to the Specification Language\fR\&.
.PP
All parameters declared for a \fIprivate\fR are made
accessible through individual methods associated with each\&.
As example, a parameter with system name \fBP\fR is mapped to the
method \fB@P\fR, with all instance methods provided by the
\fBcmdr::parameter\fR class accessible as sub-methods\&.
This general access to all methods may be removed in the future,
restricting actions and callbacks to a safe subset\&.
.PP
Another place providing information to actions is the root and
other actors of the command hierarchy itself, via \fBcommon\fR blocks
whose value is managed by the system\&. Currently we have
.TP
\fB*in-shell*\fR
This block is read-only, and only found in the root actor\&.
Its value is managed by the framework\&.
It is a boolean flag indicating if an interactive shell is currently
active (\fBtrue\fR) or not (\fBfalse\fR)\&.
This can be used to modulate command messages and other
context-dependent things\&.
.sp
\fINote\fR that the block will not exist until after the first
shell was active\&. This means that a missing \fB*in-shell*\fR block
should be treated like \fBfalse\fR\&.
.TP
\fB*prefix*\fR
This block is read-only and found in the private actor for the
currently executing action command prefix, accessible through the
\fBcmdr::config\fR instance method \fBcontext\fR\&.
Its value is managed by the framework\&.
It is a list of the command names used to reach the \fIprivate\fR
instance\&.
This is not the logical path in the command hierarchy, but the actual
path taken, which may be through aliases\&.
.PP
.PP
Calling \fB@P\fR without arguments is a shorthand for
calling ``@P value'', i\&.e\&. the retrieval of the parameter's internal
representation\&. Which may calculate the value if the call is the first
access and the parameter specified as \fIdefered\fR\&.
.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.
291
292
293
294
295
296
297
298

















299
300
301
302
303
304
305
.RE
.PP
.SH "FORMAT NOTES"
The format \fBby-category\fR looks for and uses the block
\fB*category-order*\fR for when the user wishes to override the
natural (alphabetical) order of display for the toplevel sections\&.
.PP
This block has to be defined in the root of the command hierarchy\&.

















.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







|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







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
.RE
.PP
.SH "FORMAT NOTES"
The format \fBby-category\fR looks for and uses the block
\fB*category-order*\fR for when the user wishes to override the
natural (alphabetical) order of display for the toplevel sections\&.
.PP
This block has to be defined by the user, in the root of
the command hierarchy\&.
Its value has to be a dictionary mapping from the names of toplevel
sections/categories to an integer number\&. This is used to change
the order of displaying these sections in the generated text\&.
.PP
Sections with higher/larger numbers are shown first, and
lower/smaller numbers move towards the end\&. Negative numbers are
possible\&.
.PP
Sections not mentioned in the dictionary are assigned their
natural number\&. This is calculated by sorting all sections
alphabetically (\fB-dict\fR) ascending and assigning \fB0\fR
to the first section, \fB-10\fR to the next, and so on\&.
.PP
The generated section/category \fBMiscellaneous\fR is
given the number \fB-10000\fR to force it to the end (bottom)
of the help text, if it was generated\&.
.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
Changes to embedded/man/files/cmdr_howto_development.n.
476
477
478
479
480
481
482








































483
484
485
486
487
488
489
.SH "HELP FORMATS"
Everything said in the public document \fICmdr - Writing custom help formats\fR
applies to the standard help formats of the framework (as listed in
\fICmdr - (Internal) Utilities for help text formatting and setup\fR) as well\&.
.SH "COMMAND LINE COMPLETION"
The document \fICmdr - Internals of command line completion\fR describes the inner
workings of the command line completion provided by the framework\&.








































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







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







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
.SH "HELP FORMATS"
Everything said in the public document \fICmdr - Writing custom help formats\fR
applies to the standard help formats of the framework (as listed in
\fICmdr - (Internal) Utilities for help text formatting and setup\fR) as well\&.
.SH "COMMAND LINE COMPLETION"
The document \fICmdr - Internals of command line completion\fR describes the inner
workings of the command line completion provided by the framework\&.
.SH "COMMON BLOCKS"
The framework reserves all blocks whose name begins with a star, i\&.e
\fB*\fR, for its own use\&.
Currently the following names are in use:
.TP
\fB*all*\fR
Publicly documented for users, this block is expected to contain
parameter specification commands\&. These commands are automatically
added to all privates found in the command hierarchy containing the
block\&.
.sp
The details are explained by the description of command
\fBcommon\fR in \fICmdr - Officer Specification Language\fR\&.
.TP
\fB*category-order*\fR
Publicly documented for users, this block is expected to contain a
dictionary mapping from toplevel section/category names to an integer
number to override the natural order of displaying these sections in
the help\&.
.sp
The details are explained in section \fIFormat Notes\fR of
\fICmdr - (Internal) Utilities for help text formatting and setup\fR\&.
.TP
\fB*prefix*\fR
Publicly documented for users as read-only this block's value is
managed by the framework\&.
Set during the \fIDispatch\fR phase it provides to access to the
actual command name used to invoke a \fIprivate\fR\&.
.sp
See also section \fIExecution\fR of \fICmdr - Runtime Processing Flow\fR\&.
.TP
\fB*in-shell*\fR
Publicly documented for users as read-only this block's value is
managed by the framework\&. Not set until the first main- or mini-shell
was active its value is boolean flag indicating if an interactive
shell is currently active (\fBtrue\fR) or not (\fBfalse\fR, or not
existing)\&.
.sp
See also section \fIExecution\fR of \fICmdr - Runtime Processing Flow\fR\&.
.PP
.SH "RELATED DOCUMENTS"
.IP [1]
\fICmdr - Introduction to the project\fR
.IP [2]
\fICmdr - License\fR
.IP [3]
\fICmdr - Log of Changes\fR
Changes to embedded/man/files/cmdr_introduction.n.
318
319
320
321
322
323
324



325
326
327
328
329
330
331
straight-forward, following mostly directly out of the relationships
shown above, plus the few where the utilities are imported\&. To reduce
the complexity of the diagram below a few direct dependencies on
\fBcmdr::util\fR were omitted where indirectly present through
other dependencies (i\&.e\&. through \fBcmdr::help\fR):
.PP
IMAGE: pkg_dependencies



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







>
>
>







318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
straight-forward, following mostly directly out of the relationships
shown above, plus the few where the utilities are imported\&. To reduce
the complexity of the diagram below a few direct dependencies on
\fBcmdr::util\fR were omitted where indirectly present through
other dependencies (i\&.e\&. through \fBcmdr::help\fR):
.PP
IMAGE: pkg_dependencies
.SH "COMMAND HIERARCHY SPECIFICATIONS"
This is a bit large for this document, and can be found in the
separate \fICmdr - Introduction to the Specification Language\fR\&.
.SH "RELATED DOCUMENTS"
.IP [1]
\fICmdr - Introduction to the project\fR
.IP [2]
\fICmdr - License\fR
.IP [3]
\fICmdr - Log of Changes\fR
Changes to embedded/man/files/cmdr_parameter.n.
779
780
781
782
783
784
785











786






























787
788
789
790
791
792
793
parameter's string representation, "default" value, or
"generate" callback\&.
An error is thrown if the value could not be determined\&.
(See method \fBundefined!\fR)\&.
If the value is newly computed the action triggers the
execution of the "when-complete" callback\&.
.sp











--TODO-- describe generation rules and order\&.






























.TP
\fB<parameter>\fR \fBwhen-complete\fR
This method returns the "when-complete" command prefix callback,
if it was set, and an empty list otherwise\&.
.TP
\fB<parameter>\fR \fBwhen-set\fR
This method returns the "when-set" command prefix callback,







>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







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
parameter's string representation, "default" value, or
"generate" callback\&.
An error is thrown if the value could not be determined\&.
(See method \fBundefined!\fR)\&.
If the value is newly computed the action triggers the
execution of the "when-complete" callback\&.
.sp
.sp
A parameter asked for its internal representation goes through
the following steps to deliver the value:
.RS
.IP [1]
If the internal representation is already known, simply deliver
it as is\&. In other words, the result of the following steps is cached,
and the steps are run only once\&.
.IP [2]
If the internal representation has been declared as undefined
already, simply error out (again)\&. This is still part of caching the
result generated by the following steps\&.
.IP [3]
If the parameter has a string representation use the
parameter's \fIvalidation type\fR to convert it to the proper
internal representation, and return it\&.
.IP [4]
If interactive entry is possible (per the parameter's
specification) perform the interaction\&. This saves the entered data as
string representation which is then validated as per the previous
step\&. Aborting the interaction leaves the parameter as undefined
(which is thrown as error)\&.
.IP [5]
If a \fBgenerate\fR callback exists use it to obtain the
internal representation, and return it\&.
.IP [6]
If a \fBdefault\fR value exists make it the internal
representation, and return it\&.
.sp
Side note: As the parameter DSL only allows the
declaration of one of \fBdefault\fR or \fBgenerate\fR only one of
these steps can trigger\&.
.IP [7]
If the parameter is \fBoptional\fR use the empty string as the
internal representation and return it\&.
.sp
\fINote\fR that this rule should never trigger as the
parameter DSL enforces that \fIoptional\fR parameters always have one
of \fBdefault\fR or \fBgenerate\fR\&.
.IP [8]
Leave the parameter is undefined and fail (throw an error)\&.
.RE
.TP
\fB<parameter>\fR \fBwhen-complete\fR
This method returns the "when-complete" command prefix callback,
if it was set, and an empty list otherwise\&.
.TP
\fB<parameter>\fR \fBwhen-set\fR
This method returns the "when-set" command prefix callback,
Changes to embedded/man/index.n.
269
270
271
272
273
274
275























































































































































































































































































































































































































































































































































































































































































































































































276
277
278
279
280
281
282
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private























































































































































































































































































































































































































































































































































































































































































































































































.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP







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







269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP
\fBfiles/cmdr_flow\&.n\fR
cmdr-spec-flow
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP
\fBfiles/cmdr_actor\&.n\fR
cmdr::actor
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr::config
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr::help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr::help::json
.TP
\fBfiles/cmdr_help_sql\&.n\fR
cmdr::help::sql
.TP
\fBfiles/cmdr_officer\&.n\fR
cmdr::officer
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
\fBfiles/cmdr_validate\&.n\fR
cmdr::validate
.TP
\fBfiles/cmdr_vcommon\&.n\fR
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion
.TP
\fBfiles/cmdr_dev_dsl\&.n\fR
cmdr_dev~dsl
.RE
command hierarchy
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr-howto-get-sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr-installation
.TP
\fBfiles/cmdr_introduction\&.n\fR
cmdr-introduction
.TP
\fBfiles/cmdr_license\&.n\fR
cmdr-license
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr-spec-dsl
.TP
\fBfiles/cmdr_dsl_officer\&.n\fR
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP
\fBfiles/cmdr_flow\&.n\fR
cmdr-spec-flow
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP
\fBfiles/cmdr_actor\&.n\fR
cmdr::actor
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr::config
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr::help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr::help::json
.TP
\fBfiles/cmdr_help_sql\&.n\fR
cmdr::help::sql
.TP
\fBfiles/cmdr_officer\&.n\fR
cmdr::officer
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
\fBfiles/cmdr_validate\&.n\fR
cmdr::validate
.TP
\fBfiles/cmdr_vcommon\&.n\fR
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion
.TP
\fBfiles/cmdr_dev_dsl\&.n\fR
cmdr_dev~dsl
.RE
command line completion
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr-howto-get-sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr-installation
.TP
\fBfiles/cmdr_introduction\&.n\fR
cmdr-introduction
.TP
\fBfiles/cmdr_license\&.n\fR
cmdr-license
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr-spec-dsl
.TP
\fBfiles/cmdr_dsl_officer\&.n\fR
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP
\fBfiles/cmdr_flow\&.n\fR
cmdr-spec-flow
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP
\fBfiles/cmdr_actor\&.n\fR
cmdr::actor
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr::config
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr::help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr::help::json
.TP
\fBfiles/cmdr_help_sql\&.n\fR
cmdr::help::sql
.TP
\fBfiles/cmdr_officer\&.n\fR
cmdr::officer
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
\fBfiles/cmdr_validate\&.n\fR
cmdr::validate
.TP
\fBfiles/cmdr_vcommon\&.n\fR
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion
.TP
\fBfiles/cmdr_dev_dsl\&.n\fR
cmdr_dev~dsl
.RE
command line handling
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr-howto-get-sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr-installation
.TP
\fBfiles/cmdr_introduction\&.n\fR
cmdr-introduction
.TP
\fBfiles/cmdr_license\&.n\fR
cmdr-license
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr-spec-dsl
.TP
\fBfiles/cmdr_dsl_officer\&.n\fR
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP
\fBfiles/cmdr_flow\&.n\fR
cmdr-spec-flow
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP
\fBfiles/cmdr_actor\&.n\fR
cmdr::actor
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr::config
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr::help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr::help::json
.TP
\fBfiles/cmdr_help_sql\&.n\fR
cmdr::help::sql
.TP
\fBfiles/cmdr_officer\&.n\fR
cmdr::officer
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
\fBfiles/cmdr_validate\&.n\fR
cmdr::validate
.TP
\fBfiles/cmdr_vcommon\&.n\fR
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion
.TP
\fBfiles/cmdr_dev_dsl\&.n\fR
cmdr_dev~dsl
.RE
command tree
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr-howto-get-sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr-installation
.TP
\fBfiles/cmdr_introduction\&.n\fR
cmdr-introduction
.TP
\fBfiles/cmdr_license\&.n\fR
cmdr-license
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr-spec-dsl
.TP
\fBfiles/cmdr_dsl_officer\&.n\fR
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP
\fBfiles/cmdr_flow\&.n\fR
cmdr-spec-flow
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP
\fBfiles/cmdr_actor\&.n\fR
cmdr::actor
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr::config
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr::help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr::help::json
.TP
\fBfiles/cmdr_help_sql\&.n\fR
cmdr::help::sql
.TP
\fBfiles/cmdr_officer\&.n\fR
cmdr::officer
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
\fBfiles/cmdr_validate\&.n\fR
cmdr::validate
.TP
\fBfiles/cmdr_vcommon\&.n\fR
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion
.TP
\fBfiles/cmdr_dev_dsl\&.n\fR
cmdr_dev~dsl
.RE
editing command line
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr-howto-get-sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr-installation
.TP
\fBfiles/cmdr_introduction\&.n\fR
cmdr-introduction
.TP
\fBfiles/cmdr_license\&.n\fR
cmdr-license
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr-spec-dsl
.TP
\fBfiles/cmdr_dsl_officer\&.n\fR
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP
\fBfiles/cmdr_flow\&.n\fR
cmdr-spec-flow
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP
\fBfiles/cmdr_actor\&.n\fR
cmdr::actor
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr::config
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr::help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr::help::json
.TP
\fBfiles/cmdr_help_sql\&.n\fR
cmdr::help::sql
.TP
\fBfiles/cmdr_officer\&.n\fR
cmdr::officer
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
\fBfiles/cmdr_validate\&.n\fR
cmdr::validate
.TP
\fBfiles/cmdr_vcommon\&.n\fR
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion
.TP
\fBfiles/cmdr_dev_dsl\&.n\fR
cmdr_dev~dsl
.RE
help for command line
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr-howto-get-sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr-installation
.TP
\fBfiles/cmdr_introduction\&.n\fR
cmdr-introduction
.TP
\fBfiles/cmdr_license\&.n\fR
cmdr-license
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr-spec-dsl
.TP
\fBfiles/cmdr_dsl_officer\&.n\fR
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP
\fBfiles/cmdr_flow\&.n\fR
cmdr-spec-flow
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP
\fBfiles/cmdr_actor\&.n\fR
cmdr::actor
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr::config
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr::help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr::help::json
.TP
\fBfiles/cmdr_help_sql\&.n\fR
cmdr::help::sql
.TP
\fBfiles/cmdr_officer\&.n\fR
cmdr::officer
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
\fBfiles/cmdr_validate\&.n\fR
cmdr::validate
.TP
\fBfiles/cmdr_vcommon\&.n\fR
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion
.TP
\fBfiles/cmdr_dev_dsl\&.n\fR
cmdr_dev~dsl
.RE
hierarchy of commands
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr-howto-get-sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr-installation
.TP
\fBfiles/cmdr_introduction\&.n\fR
cmdr-introduction
.TP
\fBfiles/cmdr_license\&.n\fR
cmdr-license
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr-spec-dsl
.TP
\fBfiles/cmdr_dsl_officer\&.n\fR
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP
\fBfiles/cmdr_flow\&.n\fR
cmdr-spec-flow
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP
\fBfiles/cmdr_actor\&.n\fR
cmdr::actor
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr::config
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr::help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr::help::json
.TP
\fBfiles/cmdr_help_sql\&.n\fR
cmdr::help::sql
.TP
\fBfiles/cmdr_officer\&.n\fR
cmdr::officer
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
\fBfiles/cmdr_validate\&.n\fR
cmdr::validate
.TP
\fBfiles/cmdr_vcommon\&.n\fR
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion
.TP
\fBfiles/cmdr_dev_dsl\&.n\fR
cmdr_dev~dsl
.RE
interactive command shell
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr-howto-get-sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr-installation
.TP
\fBfiles/cmdr_introduction\&.n\fR
cmdr-introduction
.TP
\fBfiles/cmdr_license\&.n\fR
cmdr-license
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr-spec-dsl
.TP
\fBfiles/cmdr_dsl_officer\&.n\fR
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP
\fBfiles/cmdr_flow\&.n\fR
cmdr-spec-flow
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP
\fBfiles/cmdr_actor\&.n\fR
cmdr::actor
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr::config
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr::help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr::help::json
.TP
\fBfiles/cmdr_help_sql\&.n\fR
cmdr::help::sql
.TP
\fBfiles/cmdr_officer\&.n\fR
cmdr::officer
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
\fBfiles/cmdr_validate\&.n\fR
cmdr::validate
.TP
\fBfiles/cmdr_vcommon\&.n\fR
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion
.TP
\fBfiles/cmdr_dev_dsl\&.n\fR
cmdr_dev~dsl
.RE
optional arguments
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr-howto-get-sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr-installation
.TP
\fBfiles/cmdr_introduction\&.n\fR
cmdr-introduction
.TP
\fBfiles/cmdr_license\&.n\fR
cmdr-license
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr-spec-dsl
.TP
\fBfiles/cmdr_dsl_officer\&.n\fR
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP
\fBfiles/cmdr_flow\&.n\fR
cmdr-spec-flow
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP
314
315
316
317
318
319
320



321
322

323
324
325
326
327
328
329
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion



.RE
command hierarchy

.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes







>
>
>

<
>







1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083

1084
1085
1086
1087
1088
1089
1090
1091
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion
.TP
\fBfiles/cmdr_dev_dsl\&.n\fR
cmdr_dev~dsl
.RE

options
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes
347
348
349
350
351
352
353



354
355
356
357
358
359
360
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private



.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP







>
>
>







1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP
\fBfiles/cmdr_flow\&.n\fR
cmdr-spec-flow
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP
392
393
394
395
396
397
398



399
400
401
402
403
404
405
406
407
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion



.RE
command line completion
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes







>
>
>

|







1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion
.TP
\fBfiles/cmdr_dev_dsl\&.n\fR
cmdr_dev~dsl
.RE
parameters
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes
425
426
427
428
429
430
431



432
433
434
435
436
437
438
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private



.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP







>
>
>







1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP
\fBfiles/cmdr_flow\&.n\fR
cmdr-spec-flow
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP
470
471
472
473
474
475
476



477
478
479
480
481
482
483
484
485
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion



.RE
command line handling
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes







>
>
>

|







1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion
.TP
\fBfiles/cmdr_dev_dsl\&.n\fR
cmdr_dev~dsl
.RE
processing command line
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes
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
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP
\fBfiles/cmdr_actor\&.n\fR
cmdr::actor
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr::config
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr::help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr::help::json
.TP
\fBfiles/cmdr_help_sql\&.n\fR
cmdr::help::sql
.TP
\fBfiles/cmdr_officer\&.n\fR
cmdr::officer
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
\fBfiles/cmdr_validate\&.n\fR
cmdr::validate
.TP
\fBfiles/cmdr_vcommon\&.n\fR
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion
.RE
command tree
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr-howto-get-sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr-installation
.TP
\fBfiles/cmdr_introduction\&.n\fR
cmdr-introduction
.TP
\fBfiles/cmdr_license\&.n\fR
cmdr-license
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr-spec-dsl
.TP
\fBfiles/cmdr_dsl_officer\&.n\fR
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP







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







1278
1279
1280
1281
1282
1283
1284


































































1285



1286






1287
1288
1289
1290
1291
1292
1293
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP


































































\fBfiles/cmdr_flow\&.n\fR



cmdr-spec-flow






.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP
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
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion
.RE
editing command line
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr-howto-get-sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr-installation
.TP
\fBfiles/cmdr_introduction\&.n\fR
cmdr-introduction
.TP
\fBfiles/cmdr_license\&.n\fR
cmdr-license
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr-spec-dsl
.TP
\fBfiles/cmdr_dsl_officer\&.n\fR
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP
\fBfiles/cmdr_actor\&.n\fR
cmdr::actor
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr::config
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr::help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr::help::json
.TP
\fBfiles/cmdr_help_sql\&.n\fR
cmdr::help::sql
.TP
\fBfiles/cmdr_officer\&.n\fR
cmdr::officer
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
\fBfiles/cmdr_validate\&.n\fR
cmdr::validate
.TP
\fBfiles/cmdr_vcommon\&.n\fR
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion
.RE
help for command line
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes







<
<
<

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

|







1325
1326
1327
1328
1329
1330
1331



1332








































































1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion



.TP








































































\fBfiles/cmdr_dev_dsl\&.n\fR
cmdr_dev~dsl
.RE
tree of commands
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes
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
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP
\fBfiles/cmdr_actor\&.n\fR
cmdr::actor
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr::config
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr::help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr::help::json
.TP
\fBfiles/cmdr_help_sql\&.n\fR
cmdr::help::sql
.TP
\fBfiles/cmdr_officer\&.n\fR
cmdr::officer
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
\fBfiles/cmdr_validate\&.n\fR
cmdr::validate
.TP
\fBfiles/cmdr_vcommon\&.n\fR
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion
.RE
hierarchy of commands
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr-howto-get-sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr-installation
.TP
\fBfiles/cmdr_introduction\&.n\fR
cmdr-introduction
.TP
\fBfiles/cmdr_license\&.n\fR
cmdr-license
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr-spec-dsl
.TP
\fBfiles/cmdr_dsl_officer\&.n\fR
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP







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







1362
1363
1364
1365
1366
1367
1368


































































1369



1370






1371
1372
1373
1374
1375
1376
1377
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP


































































\fBfiles/cmdr_flow\&.n\fR



cmdr-spec-flow






.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion
.RE
interactive command shell
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr-howto-get-sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr-installation
.TP
\fBfiles/cmdr_introduction\&.n\fR
cmdr-introduction
.TP
\fBfiles/cmdr_license\&.n\fR
cmdr-license
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr-spec-dsl
.TP
\fBfiles/cmdr_dsl_officer\&.n\fR
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP
\fBfiles/cmdr_actor\&.n\fR
cmdr::actor
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr::config
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr::help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr::help::json
.TP
\fBfiles/cmdr_help_sql\&.n\fR
cmdr::help::sql
.TP
\fBfiles/cmdr_officer\&.n\fR
cmdr::officer
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
\fBfiles/cmdr_validate\&.n\fR
cmdr::validate
.TP
\fBfiles/cmdr_vcommon\&.n\fR
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion
.RE
optional arguments
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr-howto-get-sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr-installation
.TP
\fBfiles/cmdr_introduction\&.n\fR
cmdr-introduction
.TP
\fBfiles/cmdr_license\&.n\fR
cmdr-license
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr-spec-dsl
.TP
\fBfiles/cmdr_dsl_officer\&.n\fR
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP
\fBfiles/cmdr_actor\&.n\fR
cmdr::actor
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr::config
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr::help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr::help::json
.TP
\fBfiles/cmdr_help_sql\&.n\fR
cmdr::help::sql
.TP
\fBfiles/cmdr_officer\&.n\fR
cmdr::officer
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
\fBfiles/cmdr_validate\&.n\fR
cmdr::validate
.TP
\fBfiles/cmdr_vcommon\&.n\fR
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion
.RE
options
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr-howto-get-sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr-installation
.TP
\fBfiles/cmdr_introduction\&.n\fR
cmdr-introduction
.TP
\fBfiles/cmdr_license\&.n\fR
cmdr-license
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr-spec-dsl
.TP
\fBfiles/cmdr_dsl_officer\&.n\fR
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP
\fBfiles/cmdr_actor\&.n\fR
cmdr::actor
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr::config
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr::help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr::help::json
.TP
\fBfiles/cmdr_help_sql\&.n\fR
cmdr::help::sql
.TP
\fBfiles/cmdr_officer\&.n\fR
cmdr::officer
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
\fBfiles/cmdr_validate\&.n\fR
cmdr::validate
.TP
\fBfiles/cmdr_vcommon\&.n\fR
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion
.RE
parameters
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr-howto-get-sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr-installation
.TP
\fBfiles/cmdr_introduction\&.n\fR
cmdr-introduction
.TP
\fBfiles/cmdr_license\&.n\fR
cmdr-license
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr-spec-dsl
.TP
\fBfiles/cmdr_dsl_officer\&.n\fR
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP
\fBfiles/cmdr_actor\&.n\fR
cmdr::actor
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr::config
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr::help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr::help::json
.TP
\fBfiles/cmdr_help_sql\&.n\fR
cmdr::help::sql
.TP
\fBfiles/cmdr_officer\&.n\fR
cmdr::officer
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
\fBfiles/cmdr_validate\&.n\fR
cmdr::validate
.TP
\fBfiles/cmdr_vcommon\&.n\fR
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion
.RE
processing command line
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr-howto-get-sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr-installation
.TP
\fBfiles/cmdr_introduction\&.n\fR
cmdr-introduction
.TP
\fBfiles/cmdr_license\&.n\fR
cmdr-license
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr-spec-dsl
.TP
\fBfiles/cmdr_dsl_officer\&.n\fR
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP
\fBfiles/cmdr_actor\&.n\fR
cmdr::actor
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr::config
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr::help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr::help::json
.TP
\fBfiles/cmdr_help_sql\&.n\fR
cmdr::help::sql
.TP
\fBfiles/cmdr_officer\&.n\fR
cmdr::officer
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
\fBfiles/cmdr_validate\&.n\fR
cmdr::validate
.TP
\fBfiles/cmdr_vcommon\&.n\fR
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion
.RE
tree of commands
.RS
.TP
\fBfiles/cmdr\&.n\fR
cmdr
.TP
\fBfiles/cmdr_changes\&.n\fR
cmdr-changes
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr-howto-get-sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr-installation
.TP
\fBfiles/cmdr_introduction\&.n\fR
cmdr-introduction
.TP
\fBfiles/cmdr_license\&.n\fR
cmdr-license
.TP
\fBfiles/cmdr_dsl\&.n\fR
cmdr-spec-dsl
.TP
\fBfiles/cmdr_dsl_officer\&.n\fR
cmdr-spec-dsl-officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr-spec-dsl-parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr-spec-dsl-private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr-user-helpformats
.TP
\fBfiles/cmdr_vtypes\&.n\fR
cmdr-user-vtypes
.TP
\fBfiles/cmdr_actor\&.n\fR
cmdr::actor
.TP
\fBfiles/cmdr_config\&.n\fR
cmdr::config
.TP
\fBfiles/cmdr_help\&.n\fR
cmdr::help
.TP
\fBfiles/cmdr_help_json\&.n\fR
cmdr::help::json
.TP
\fBfiles/cmdr_help_sql\&.n\fR
cmdr::help::sql
.TP
\fBfiles/cmdr_officer\&.n\fR
cmdr::officer
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
\fBfiles/cmdr_validate\&.n\fR
cmdr::validate
.TP
\fBfiles/cmdr_vcommon\&.n\fR
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion
.RE







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

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

1409
1410
1411
1412
1413
1414
1415













































































































































































































































1416








































































1417
1418




























































































































































1419
cmdr::validate::common
.TP
\fBfiles/cmdr_howto_development\&.n\fR
cmdr_development
.TP
\fBfiles/cmdr_dev_completion\&.n\fR
cmdr_dev~completion













































































































































































































































.TP








































































\fBfiles/cmdr_dev_dsl\&.n\fR
cmdr_dev~dsl




























































































































































.RE
Changes to embedded/man/toc.n.
268
269
270
271
272
273
274



275
276
277
278
279
280
281
.TP
\fBcmdr-spec-dsl-parameter\fR
\fIfiles/cmdr_dsl_parameter\&.n\fR: Cmdr - Parameter Specification Language
.TP
\fBcmdr-spec-dsl-private\fR
\fIfiles/cmdr_dsl_private\&.n\fR: Cmdr - Private Specification Language
.TP



\fBcmdr-user-helpformats\fR
\fIfiles/cmdr_helpformats\&.n\fR: Cmdr - Writing custom help formats
.TP
\fBcmdr-user-vtypes\fR
\fIfiles/cmdr_vtypes\&.n\fR: Cmdr - Writing custom validation types
.TP
\fBcmdr::actor\fR







>
>
>







268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
.TP
\fBcmdr-spec-dsl-parameter\fR
\fIfiles/cmdr_dsl_parameter\&.n\fR: Cmdr - Parameter Specification Language
.TP
\fBcmdr-spec-dsl-private\fR
\fIfiles/cmdr_dsl_private\&.n\fR: Cmdr - Private Specification Language
.TP
\fBcmdr-spec-flow\fR
\fIfiles/cmdr_flow\&.n\fR: Cmdr - Runtime Processing Flow
.TP
\fBcmdr-user-helpformats\fR
\fIfiles/cmdr_helpformats\&.n\fR: Cmdr - Writing custom help formats
.TP
\fBcmdr-user-vtypes\fR
\fIfiles/cmdr_vtypes\&.n\fR: Cmdr - Writing custom validation types
.TP
\fBcmdr::actor\fR
312
313
314
315
316
317
318



\fIfiles/cmdr_vcommon\&.n\fR: Cmdr - Utilities for Validation Types
.TP
\fBcmdr_development\fR
\fIfiles/cmdr_howto_development\&.n\fR: Cmdr - The Developer's Guide
.TP
\fBcmdr_dev~completion\fR
\fIfiles/cmdr_dev_completion\&.n\fR: Cmdr - Internals of command line completion










>
>
>
315
316
317
318
319
320
321
322
323
324
\fIfiles/cmdr_vcommon\&.n\fR: Cmdr - Utilities for Validation Types
.TP
\fBcmdr_development\fR
\fIfiles/cmdr_howto_development\&.n\fR: Cmdr - The Developer's Guide
.TP
\fBcmdr_dev~completion\fR
\fIfiles/cmdr_dev_completion\&.n\fR: Cmdr - Internals of command line completion
.TP
\fBcmdr_dev~dsl\fR
\fIfiles/cmdr_dev_dsl\&.n\fR: Cmdr - Internals of DSL handling
Added embedded/www/doc/files/cmdr_dev_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

<html><head>
<title>cmdr_dev~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_dev_dsl.man' by tcllib/doctools with format 'html'
   -->
<! -- Copyright &copy; 2013 Andreas Kupries   -- Copyright &copy; 2013 Documentation, Andreas Kupries
   -->
<! -- CVS: $Id$ cmdr_dev~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_dev~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_dev~dsl - Cmdr - Internals of DSL handling</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Officer DSL</a></li>
<li class="section"><a href="#section3">Private DSL</a></li>
<li class="section"><a href="#section4">Parameter DSL</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="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">cmdr</b></li>
</ul>
</div>
</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 internal document provides an overview on how the framework
implements the specification languages for officers, privates,
and parameters.</p>
<p>For more information about other internals of the framework
please read <i class="term"><a href="cmdr_howto_development.html">Cmdr - The Developer's Guide</a></i>.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Officer DSL</a></h2>
<p>The officer DSL is implemented in <b class="package"><a href="cmdr_officer.html">cmdr::officer</a></b>.</p>
<p>While the specification is supplied with the instance
constructor it is not processed immediately, but saved for when it is
actually needed.</p>
<p>The internal instance method <b class="method">Setup</b> is called at all
places requiring access to the specification and processes it (once,
on first call) to provide the necessary in-memory structures.</p>
<p>The DSL commands map to instance methods as shown below:</p>
<dl class="definitions">
<dt><b class="cmd">alias</b></dt>
<dd><p><b class="method">Alias</b></p></dd>
<dt><b class="cmd">common</b></dt>
<dd><p><b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b> <b class="method">set</b></p></dd>
<dt><b class="cmd">default</b></dt>
<dd><p><b class="method">Default</b></p></dd>
<dt><b class="cmd">description</b></dt>
<dd><p><b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b> <b class="method">description:</b></p></dd>
<dt><b class="cmd">ehandler</b></dt>
<dd><p><b class="method">ehandler</b></p></dd>
<dt><b class="cmd">officer</b></dt>
<dd><p><b class="method">Officer</b>, forward to <b class="method">DefineAction</b></p></dd>
<dt><b class="cmd">private</b></dt>
<dd><p><b class="method">Private</b>, forward to <b class="method">DefineAction</b></p></dd>
<dt><b class="cmd">undocumented</b></dt>
<dd><p><b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b> <b class="method">undocumented</b></p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Private DSL</a></h2>
<p>The private DSL is only partially implemented in
<b class="package"><a href="cmdr_private.html">cmdr::private</a></b>.
Most of the implementation is in <b class="package"><a href="cmdr_config.html">cmdr::config</a></b>.</p>
<p>While the specification is supplied with the instance
constructor it is not processed immediately, but saved for when it is
actually needed.</p>
<p>The internal instance method <b class="method">Setup</b> is called at all
places requiring access to the specification and processes it (once,
on first call) to provide the necessary in-memory structures. This
then delegates to the embedded config instance.</p>
<p>The DSL commands map to <em>config</em> instance methods as shown below:</p>
<dl class="definitions">
<dt><b class="cmd">description</b></dt>
<dd><p><b class="method">Description</b>,  forward to <b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b> <b class="method">description:</b></p></dd>
<dt><b class="cmd">input</b></dt>
<dd><p><b class="method">Input</b>,  forward to <b class="method">DefineParameter</b>)</p></dd>
<dt><b class="cmd">interactive</b></dt>
<dd><p><b class="method">Interactive</b></p></dd>
<dt><b class="cmd">option</b></dt>
<dd><p><b class="method">Option</b>, forward to <b class="method">DefineParameter</b>)</p></dd>
<dt><b class="cmd">section</b></dt>
<dd><p><b class="method">Section</b></p></dd>
<dt><b class="cmd">state</b></dt>
<dd><p><b class="method">State</b>,  forward to <b class="method">DefineParameter</b>)</p></dd>
<dt><b class="cmd">undocumented</b></dt>
<dd><p><b class="method">Undocumented</b>, forward to <b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b> <b class="method">undocumented</b></p></dd>
<dt><b class="cmd">use</b></dt>
<dd><p><b class="method">Use</b></p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Parameter DSL</a></h2>
<p>The parameter DSL is implemented in <b class="package"><a href="cmdr_parameter.html">cmdr::parameter</a></b>.</p>
<p>The specification is supplied with the instance constructor and
processed immediately. This is different from officers and privates
which defer processing until use. When a parameter is declared the
containing private is in use, and so is the parameter. Thus no delay.</p>
<p>The DSL commands map to instance methods as shown below:</p>
<dl class="definitions">
<dt><b class="cmd">alias</b></dt>
<dd><p><b class="method">Alias</b></p></dd>
<dt><b class="cmd">default</b></dt>
<dd><p><b class="method">Default</b></p></dd>
<dt><b class="cmd">defered</b></dt>
<dd><p><b class="method">Defered</b></p></dd>
<dt><b class="cmd">generate</b></dt>
<dd><p><b class="method">Generate</b></p></dd>
<dt><b class="cmd">immediate</b></dt>
<dd><p><b class="method">Immediate</b></p></dd>
<dt><b class="cmd">interact</b></dt>
<dd><p><b class="method">Interact</b></p></dd>
<dt><b class="cmd">label</b></dt>
<dd><p><b class="method">Label</b></p></dd>
<dt><b class="cmd">list</b></dt>
<dd><p><b class="method">List</b></p></dd>
<dt><b class="cmd">no-promotion</b></dt>
<dd><p><b class="method">NoPromote</b></p></dd>
<dt><b class="cmd">optional</b></dt>
<dd><p><b class="method">Optional</b></p></dd>
<dt><b class="cmd">presence</b></dt>
<dd><p><b class="method">Presence</b></p></dd>
<dt><b class="cmd">test</b></dt>
<dd><p><b class="method">Test</b></p></dd>
<dt><b class="cmd">undocumented</b></dt>
<dd><p><b class="method">Undocumented</b></p></dd>
<dt><b class="cmd">validate</b></dt>
<dd><p><b class="method">Validate</b></p></dd>
<dt><b class="cmd">when-complete</b></dt>
<dd><p><b class="method">WhenComplete</b></p></dd>
<dt><b class="cmd">when-set</b></dt>
<dd><p><b class="method">WhenSet</b></p></dd>
</dl>
</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_dsl.html.
114
115
116
117
118
119
120

121
122
123
124
125
126
127
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Related Specification Documents</a></li>
<li class="section"><a href="#section3">Introductory examples</a>
<ul>
<li class="subsection"><a href="#subsection1">Basic private commands with inputs</a></li>
<li class="subsection"><a href="#subsection2">Simple command nesting</a></li>

</ul>
</li>
<li class="section"><a href="#section4">Language Reference</a></li>
<li class="section"><a href="#section5">Related Documents</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>







>







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Related Specification Documents</a></li>
<li class="section"><a href="#section3">Introductory examples</a>
<ul>
<li class="subsection"><a href="#subsection1">Basic private commands with inputs</a></li>
<li class="subsection"><a href="#subsection2">Simple command nesting</a></li>
<li class="subsection"><a href="#subsection3">Simple backend</a></li>
</ul>
</li>
<li class="section"><a href="#section4">Language Reference</a></li>
<li class="section"><a href="#section5">Related Documents</a></li>
<li class="section"><a href="#section6">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
137
138
139
140
141
142
143

144
145
146
147
148
149
150
</div>
<div id="section2" class="section"><h2><a name="section2">Related Specification Documents</a></h2>
<ol class="enumerated">
<li><p><i class="term">Cmdr - Introduction to the Specification Language</i></p></li>
<li><p><i class="term"><a href="cmdr_dsl_officer.html">Cmdr - Officer Specification Language</a></i></p></li>
<li><p><i class="term"><a href="cmdr_dsl_private.html">Cmdr - Private Specification Language</a></i></p></li>
<li><p><i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i></p></li>

</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">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 private commands with inputs</a></h3>







>







138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
</div>
<div id="section2" class="section"><h2><a name="section2">Related Specification Documents</a></h2>
<ol class="enumerated">
<li><p><i class="term">Cmdr - Introduction to the Specification Language</i></p></li>
<li><p><i class="term"><a href="cmdr_dsl_officer.html">Cmdr - Officer Specification Language</a></i></p></li>
<li><p><i class="term"><a href="cmdr_dsl_private.html">Cmdr - Private Specification Language</a></i></p></li>
<li><p><i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i></p></li>
<li><p><i class="term"><a href="cmdr_flow.html">Cmdr - Runtime Processing Flow</a></i></p></li>
</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">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 private commands with inputs</a></h3>
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
	    ...
	} ::foo::backend::alias::list
    }
}
...
</pre>
</div>

























































</div>
<div id="section4" class="section"><h2><a name="section4">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>
<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 <i class="term">officer</i>s. Each officer knows one or more commands to
perform, and delegates actual execution to their respective
specification, which may be another <i class="term">officer</i>, or a <i class="term">private</i>.</p>
<p>The leaf nodes of the tree represent the individual commands,
here called <i class="term">private</i>s.
Each <i class="term">private</i> is responsible for a single action and knows how
to perform it, and the set of <i class="term">parameter</i>s 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 <i class="term">actor</i> in that diagram is the common base class for the
ensembles and commands and not directly relevant to users.</p>
<p>The <i class="term">config</i> 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 <i class="term"><a href="cmdr_dsl_officer.html">Cmdr - Officer Specification Language</a></i> for the details.
This container, an instance of <b class="package"><a href="cmdr_config.html">cmdr::config</a></b>, holds all the
declared parameters of the command the action is invoked for, and







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

















|
|







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
	    ...
	} ::foo::backend::alias::list
    }
}
...
</pre>
</div>
<div id="subsection3" class="subsection"><h3><a name="subsection3">Simple backend</a></h3>
<p>This example shows a possible implementation of the backend for
the command hierarchies shown in the previous two sections.
It is important to note, I believe, that this backend works for both
command hierarchies, despite the changes to the command names (flat
versus nesting) they do.</p>
<p>Note further that while this example uses a
<b class="cmd">namespace ensemble</b> to organize the backend other methods are
possible too, i.e. all the various object systems for Tcl would be
suitable as well.</p>
<p>Lastly, for the sake of brevity this code is incomplete, not
showing any utility commands we may have importet from somewhere else,
nor the low-level workhorse procedures operating on the actual
alias database or whatnot.</p>
<pre class="example">
# -*- tcl -*-
# # ## ### ##### ######## ############# #####################
namespace eval ::foo::backend::alias {
    namespace export list add remove
    namespace ensemble create
}
# # ## ### ##### ######## ############# #####################
## Command implementations.
proc ::foo::backend::alias::list {config} {
    set aliases [manager known]
    if {[$config @json]} {
	puts [jmap aliases $aliases]
	return
    }
    [table::do t {Alias Command} {
	foreach {name command} $aliases {
	    $t add $name $command
	}
    } show display]
    return
}
proc ::foo::backend::alias::add {config} {
    set name    [$config @name]
    set command [$config @command]
    manager add $name $command
    say [color green &quot;Successfully aliased '$name' to '$command'&quot;]
    return
}
proc ::foo::backend::alias::remove {config} {
    set name [$config @name]
    if {![manager has $name]} {
	err [color red &quot;Unknown alias '$name'&quot;]
    } else {
	manager remove $name
	say [color green &quot;Successfully unaliased '$name'&quot;]
    }
    return
}
# # ## ### ##### ######## ############# #####################
package provide foo::backend::alias 0
</pre>
</div>
</div>
<div id="section4" class="section"><h2><a name="section4">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>
<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 <i class="term">officer</i>s. Each officer knows one or more commands to
perform, and delegates actual execution to their respective
specification, which may be another <i class="term">officer</i>, or a <i class="term">private</i>.</p>
<p>The leaf nodes of the tree represent the individual commands,
here called <i class="term">private</i>s.
Each <i class="term">private</i> is responsible for a single action and knows how
to perform it, and the set of <i class="term">parameter</i>s used to configure that
action at runtime.</p>
<p>The same model is graphically presented in the
Entity-Relationship-Diagram below.</p>
<p><img alt="erd" src="../../image/erd.png"></p>
<p>The <i class="term">actor</i> in that diagram is the common base class for the
ensembles and commands and not directly relevant to users.</p>
<p>The <i class="term">config</i> 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 <i class="term"><a href="cmdr_dsl_officer.html">Cmdr - Officer Specification Language</a></i> for the details.
This container, an instance of <b class="package"><a href="cmdr_config.html">cmdr::config</a></b>, holds all the
declared parameters of the command the action is invoked for, and
Changes to embedded/www/doc/files/cmdr_dsl_officer.html.
146
147
148
149
150
151
152

153
154
155
156
157
158
159
</div>
<div id="section2" class="section"><h2><a name="section2">Related Specification Documents</a></h2>
<ol class="enumerated">
<li><p><i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i></p></li>
<li><p><i class="term">Cmdr - Officer Specification Language</i></p></li>
<li><p><i class="term"><a href="cmdr_dsl_private.html">Cmdr - Private Specification Language</a></i></p></li>
<li><p><i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i></p></li>

</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">Language Reference</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">alias</b> <i class="arg">name</i> <b class="const">=</b> <i class="arg">name'</i>...</a></dt>
<dd></dd>
<dt><a name="2"><b class="cmd">alias</b> <i class="arg">name</i></a></dt>







>







146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
</div>
<div id="section2" class="section"><h2><a name="section2">Related Specification Documents</a></h2>
<ol class="enumerated">
<li><p><i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i></p></li>
<li><p><i class="term">Cmdr - Officer Specification Language</i></p></li>
<li><p><i class="term"><a href="cmdr_dsl_private.html">Cmdr - Private Specification Language</a></i></p></li>
<li><p><i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i></p></li>
<li><p><i class="term"><a href="cmdr_flow.html">Cmdr - Runtime Processing Flow</a></i></p></li>
</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">Language Reference</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">alias</b> <i class="arg">name</i> <b class="const">=</b> <i class="arg">name'</i>...</a></dt>
<dd></dd>
<dt><a name="2"><b class="cmd">alias</b> <i class="arg">name</i></a></dt>
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
<dd><p>This command declares the help text of the <i class="term">officer</i>.</p></dd>
<dt><a name="6"><b class="cmd">ehandler</b> <i class="arg">cmdprefix</i></a></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 --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, nor shown as Tcl stacktrace.</p></li>
<li><p>Cleanup of application-specific transient state the
<i class="term">parameter</i> callbacks (See <i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i>)
and/or actions may have set during their execution.







|
|
|
|







228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
<dd><p>This command declares the help text of the <i class="term">officer</i>.</p></dd>
<dt><a name="6"><b class="cmd">ehandler</b> <i class="arg">cmdprefix</i></a></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 <i class="term">Parsing</i>, <i class="term">Completion</i>, and <i class="term">Execution</i> of the
framework, as described in <i class="term"><a href="cmdr_flow.html">Cmdr - Runtime Processing Flow</a></i>.
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, nor shown as Tcl stacktrace.</p></li>
<li><p>Cleanup of application-specific transient state the
<i class="term">parameter</i> callbacks (See <i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i>)
and/or actions may have set during their execution.
254
255
256
257
258
259
260
261


262
263
264
265
266
267
268
<dt><a name="8"><b class="cmd">private</b> <i class="arg">name</i> <i class="arg">script</i> <i class="arg">cmdprefix</i></a></dt>
<dd><p>This command creates a named subordinate <i class="term">private</i> with its
specification <i class="arg">script</i> of private commands
(See <i class="term"><a href="cmdr_dsl_private.html">Cmdr - Private Specification Language</a></i>), 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"><a href="cmdr_config.html">cmdr::config</a></b> instance holding the <i class="term">parameter</i>s of the
private.</p></dd>


<dt><a name="9"><b class="cmd">undocumented</b></a></dt>
<dd><p>This command excludes the <i class="term">officer</i> (and its subordinates) from
the generated help.
Note that subordinates reachable through aliases may be included,
under the alias name, if they are not explicitly excluded themselves.</p></dd>
</dl>
<p>Please continue reading with <i class="term"><a href="cmdr_dsl_private.html">Cmdr - Private Specification Language</a></i>.</p>







|
>
>







255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
<dt><a name="8"><b class="cmd">private</b> <i class="arg">name</i> <i class="arg">script</i> <i class="arg">cmdprefix</i></a></dt>
<dd><p>This command creates a named subordinate <i class="term">private</i> with its
specification <i class="arg">script</i> of private commands
(See <i class="term"><a href="cmdr_dsl_private.html">Cmdr - Private Specification Language</a></i>), 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"><a href="cmdr_config.html">cmdr::config</a></b> instance holding the <i class="term">parameter</i>s of the
private.</p>
<p>For an example see section <i class="term">Simple backend</i>
of <i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i>.</p></dd>
<dt><a name="9"><b class="cmd">undocumented</b></a></dt>
<dd><p>This command excludes the <i class="term">officer</i> (and its subordinates) from
the generated help.
Note that subordinates reachable through aliases may be included,
under the alias name, if they are not explicitly excluded themselves.</p></dd>
</dl>
<p>Please continue reading with <i class="term"><a href="cmdr_dsl_private.html">Cmdr - Private Specification Language</a></i>.</p>
Changes to embedded/www/doc/files/cmdr_dsl_parameter.html.
161
162
163
164
165
166
167

168
169
170
171
172
173
174
</div>
<div id="section2" class="section"><h2><a name="section2">Related Specification Documents</a></h2>
<ol class="enumerated">
<li><p><i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i></p></li>
<li><p><i class="term"><a href="cmdr_dsl_officer.html">Cmdr - Officer Specification Language</a></i></p></li>
<li><p><i class="term"><a href="cmdr_dsl_private.html">Cmdr - Private Specification Language</a></i></p></li>
<li><p><i class="term">Cmdr - Parameter Specification Language</i></p></li>

</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">Language Reference</a></h2>
<p>The <i class="term">parameter</i>s of <i class="term">private</i>s are the heart of the
system, providing the space needed to transfer command arguments to
their implementations, and having the most attributes controlling
their behaviour.</p>







>







161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
</div>
<div id="section2" class="section"><h2><a name="section2">Related Specification Documents</a></h2>
<ol class="enumerated">
<li><p><i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i></p></li>
<li><p><i class="term"><a href="cmdr_dsl_officer.html">Cmdr - Officer Specification Language</a></i></p></li>
<li><p><i class="term"><a href="cmdr_dsl_private.html">Cmdr - Private Specification Language</a></i></p></li>
<li><p><i class="term">Cmdr - Parameter Specification Language</i></p></li>
<li><p><i class="term"><a href="cmdr_flow.html">Cmdr - Runtime Processing Flow</a></i></p></li>
</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">Language Reference</a></h2>
<p>The <i class="term">parameter</i>s of <i class="term">private</i>s are the heart of the
system, providing the space needed to transfer command arguments to
their implementations, and having the most attributes controlling
their behaviour.</p>
242
243
244
245
246
247
248
249
250

251
252
253
254
255
256
257
phase to determine whether an argument word should be assigned to the
parameter, or not.</p>
<p>This setting is only applicable to <i class="term">input</i>s, as
<i class="term">option</i>s are optional by definition, and <i class="term">state</i> is hidden.</p></dd>
<dt><a name="5"><b class="cmd">test</b></a></dt>
<dd><p>This command is related to the above, switching the runtime from the
standard regime for acceptance (based on counting and thresholds) to a
different regime based on validation.
The details are explained in --TODO--(sectref:flow/parsing,flow/optional)--.</p></dd>

<dt><a name="6"><b class="cmd">undocumented</b></a></dt>
<dd><p>This command excludes the <i class="term">parameter</i> from the generated help.</p>
<p>Its main use case is the hiding of <i class="term">option</i>s 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>







|
|
>







243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
phase to determine whether an argument word should be assigned to the
parameter, or not.</p>
<p>This setting is only applicable to <i class="term">input</i>s, as
<i class="term">option</i>s are optional by definition, and <i class="term">state</i> is hidden.</p></dd>
<dt><a name="5"><b class="cmd">test</b></a></dt>
<dd><p>This command is related to the above, switching the runtime from the
standard regime for acceptance (based on counting and thresholds) to a
different regime based on validation.</p>
<p>More details are explained in section <i class="term">Parsing</i> of
<i class="term"><a href="cmdr_flow.html">Cmdr - Runtime Processing Flow</a></i>.</p></dd>
<dt><a name="6"><b class="cmd">undocumented</b></a></dt>
<dd><p>This command excludes the <i class="term">parameter</i> from the generated help.</p>
<p>Its main use case is the hiding of <i class="term">option</i>s 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>
477
478
479
480
481
482
483

484
485
486
487
488
489
490
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>







>







479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
generate            |          |         | immediate   | defered
validate (validate) |          | test    | immediate   | defered
validate (release)  |          | test    | immediate   | defered
--------------------+----------+---------+-------------+-----------
when-complete       |          |         | immediate   | defered
--------------------+----------+---------+-------------+-----------
</pre>
<p>Please continue reading with <i class="term"><a href="cmdr_flow.html">Cmdr - Runtime Processing Flow</a></i>.</p>
</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>
Changes to embedded/www/doc/files/cmdr_dsl_private.html.
144
145
146
147
148
149
150

151
152
153
154
155
156
157
</div>
<div id="section2" class="section"><h2><a name="section2">Related Specification Documents</a></h2>
<ol class="enumerated">
<li><p><i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i></p></li>
<li><p><i class="term"><a href="cmdr_dsl_officer.html">Cmdr - Officer Specification Language</a></i></p></li>
<li><p><i class="term">Cmdr - Private Specification Language</i></p></li>
<li><p><i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i></p></li>

</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">Language Reference</a></h2>
<p>The specification of <i class="term">private</i>s is quite easy, with only
seven commands. The important parts are found in the <i class="term">parameter</i>
specifications, explained in <i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i>.</p>
<dl class="definitions">







>







144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
</div>
<div id="section2" class="section"><h2><a name="section2">Related Specification Documents</a></h2>
<ol class="enumerated">
<li><p><i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i></p></li>
<li><p><i class="term"><a href="cmdr_dsl_officer.html">Cmdr - Officer Specification Language</a></i></p></li>
<li><p><i class="term">Cmdr - Private Specification Language</i></p></li>
<li><p><i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i></p></li>
<li><p><i class="term"><a href="cmdr_flow.html">Cmdr - Runtime Processing Flow</a></i></p></li>
</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">Language Reference</a></h2>
<p>The specification of <i class="term">private</i>s is quite easy, with only
seven commands. The important parts are found in the <i class="term">parameter</i>
specifications, explained in <i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i>.</p>
<dl class="definitions">
181
182
183
184
185
186
187
188



189
190
191
192
193
194
195
for use by the standard help format <i class="term">by-category</i>
(See <i class="term"><a href="cmdr_help.html">Cmdr - (Internal) Utilities for help text formatting and setup</a></i>).</p>
<p>The section/category is specified as a list of words, each
denoting part of the path to the section. This means that the last
word is the section of the private, with the preceding words the
sections it is nested in.</p>
<p>Multiple calls are possible and accumulate. In other words,
the private can be placed in more than one section/category.</p></dd>



<dt><a name="6"><b class="cmd">state</b> <i class="arg">name</i> <i class="arg">help</i> <i class="arg">script</i></a></dt>
<dd><p>This command adds a <i class="term">state</i> (i.e. hidden) <i class="term">parameter</i> to the
<i class="term">private</i>, with description <i class="arg">help</i> and its specification
<i class="arg">script</i> of parameter commands as described in
<i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i>.</p></dd>
<dt><a name="7"><b class="cmd">undocumented</b></a></dt>
<dd><p>This command excludes the <i class="term">private</i> from the generated help.</p></dd>







|
>
>
>







182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
for use by the standard help format <i class="term">by-category</i>
(See <i class="term"><a href="cmdr_help.html">Cmdr - (Internal) Utilities for help text formatting and setup</a></i>).</p>
<p>The section/category is specified as a list of words, each
denoting part of the path to the section. This means that the last
word is the section of the private, with the preceding words the
sections it is nested in.</p>
<p>Multiple calls are possible and accumulate. In other words,
the private can be placed in more than one section/category.</p>
<p>Note further that <i class="term">privates</i> not put into any section are
automatically placed into a generated section named
<b class="const">Miscellaneous</b>.</p></dd>
<dt><a name="6"><b class="cmd">state</b> <i class="arg">name</i> <i class="arg">help</i> <i class="arg">script</i></a></dt>
<dd><p>This command adds a <i class="term">state</i> (i.e. hidden) <i class="term">parameter</i> to the
<i class="term">private</i>, with description <i class="arg">help</i> and its specification
<i class="arg">script</i> of parameter commands as described in
<i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i>.</p></dd>
<dt><a name="7"><b class="cmd">undocumented</b></a></dt>
<dd><p>This command excludes the <i class="term">private</i> from the generated help.</p></dd>
Added embedded/www/doc/files/cmdr_flow.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

<html><head>
<title>cmdr-spec-flow - 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_flow.man' by tcllib/doctools with format 'html'
   -->
<! -- Copyright &copy; 2013 Andreas Kupries   -- Copyright &copy; 2013 Documentation, Andreas Kupries
   -->
<! -- CVS: $Id$ cmdr-spec-flow.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-spec-flow(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-spec-flow - Cmdr - Runtime Processing Flow</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Related Specification Documents</a></li>
<li class="section"><a href="#section3">Dispatch</a></li>
<li class="section"><a href="#section4">Parsing</a>
<ul>
<li class="subsection"><a href="#subsection1">Example for Handling optional Inputs by Threshold</a></li>
</ul>
</li>
<li class="section"><a href="#section5">Completion</a></li>
<li class="section"><a href="#section6">Execution</a></li>
<li class="section"><a href="#section7">Related Documents</a></li>
<li class="section"><a href="#section8">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#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.
If you have not read <i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i> and the related documents
yet, please do so.
The explanations how the framework processes a command line at runtime
guided by a specified command hierarchy presuppose knowledge of
command-hierarchy specifications.</p>
<p>A command line is processed in four distinct phases, namely
<span class="sectref"><a href="#section3">Dispatch</a></span>, <span class="sectref"><a href="#section4">Parsing</a></span>, <span class="sectref"><a href="#section5">Completion</a></span>, and
<span class="sectref"><a href="#section6">Execution</a></span>. Each is explained in more detail in the
referenced sections.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Related Specification Documents</a></h2>
<ol class="enumerated">
<li><p><i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i></p></li>
<li><p><i class="term"><a href="cmdr_dsl_officer.html">Cmdr - Officer Specification Language</a></i></p></li>
<li><p><i class="term"><a href="cmdr_dsl_private.html">Cmdr - Private Specification Language</a></i></p></li>
<li><p><i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i></p></li>
<li><p><i class="term">Cmdr - Runtime Processing Flow</i></p></li>
</ol>
</div>
<div id="section3" class="section"><h2><a name="section3">Dispatch</a></h2>
<p>The first phase determines the <b class="package"><a href="cmdr_private.html">cmdr::private</a></b> instance
to use.  To this end it processes words from the command line and uses
them to navigate the tree of <b class="package"><a href="cmdr_officer.html">cmdr::officer</a></b> instances until a
<i class="term">private</i> is reached.</p>
<p>Each word of the command line is treated as the name of the
<b class="package"><a href="cmdr_officer.html">cmdr::officer</a></b> instance to descend into.
An error will be thrown when encountering a name for which there is no
known actor (officer or private), and the current <i class="term">officer</i> has
no <i class="term">default</i> declared for it.</p>
<p>On the converse, when reaching the end of the command line but
not reaching a <i class="term">private</i> the framework will not throw an
error. It will start an interactive command line shell instead. This
<i class="term">main shell</i> provides access to exactly the commands of the
<b class="package"><a href="cmdr_officer.html">cmdr::officer</a></b> instance which was reached, plus two
pseudo-commands to either exit this shell or gain help.</p>
<p>Execution of the command tree specification, i.e. the
generation of the in-memory command tree and the actor instances bound
in it, is intertwined with this descent through the command tree.
I.e. instead of processing the entire specification immediately in
full it is lazily unfolded on demand, ignoring all parts which are not
needed.
Note that the generated data structures are not destroyed after
<span class="sectref"><a href="#section6">Execution</a></span>, but kept, avoiding the need to re-parse the parts
of the specification already used at least once when an interactive
command line shell is active.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">Parsing</a></h2>
<p>This is the most complex phase internally, as it has to assign
the left-over words to the parameters of the chosen
<b class="package"><a href="cmdr_private.html">cmdr::private</a></b> instance, taking into account the kind of
parameters, their requiredness, listness, and other attributes.</p>
<p>Generally processing the words from left to right
<i class="term"><a href="../../index.html#key2">options</a></i> are detected in all positions, through their flags
(primary, aliases, and all unique prefixes), followed by their
(string) value to assign.</p>
<p>When a word cannot be the flag for an option the positional
<i class="term">inputs</i> are considered, in order of their declarations.
For a mandatory <i class="term">input</i> the word is simply assigned as its string
value and processing continues with the next word, and the next
<i class="term">input</i>, if any.
Operation becomes more complex when the <i class="term">input</i> under
consideration is <i class="term">optional</i>.
Now it is necessary to truly decide if the word should be assigned to
this <i class="term">input</i> or the following.</p>
<p>The standard method for this decision is to count words and
compare to the count of mandatory <i class="term">inputs</i> left.
If there are more words available than required to satisfy all
mandatory <i class="term">inputs</i>, then we can and do assign the current word to
the optional input.
Otherwise the current <i class="term">input</i> is skipped and we consider the
next.
A set of condensed examples can be found in section
<span class="sectref"><a href="#subsection1">Example for Handling optional Inputs by Threshold</a></span>.
They demonstrate how a various numbers of argument words are assigned
to a specific set of <i class="term">inputs</i>, <i class="term">optional</i> and non.
This is called the <i class="term">threshold</i> algorithm.</p>
<p>The non-triviality in the above description is in the phrase to
<i class="term">count words</i>.
We cannot simply count all words left on the command line.
To get a proper count we have discard/ignore all words belonging to
options.
At this point the processor essentially works ahead, processing and
removing all flags/options and their arguments from the command line
before performing the comparison and making its decision.</p>
<p>The whole behaviour however can be changed via <b class="cmd">test</b>
(See section <i class="term">General control</i> of <i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i>).
Instead of counting words the current word is run through the
validation type of the current <i class="term">input</i>.
On acceptance the value is assigned to it, otherwise that <i class="term">input</i>
is skipped and the next one put under consideration.</p>
<p>After all of the above the system will process any options
found after the last word assigned to the last <i class="term">input</i> to
consider.</p>
<p>Errors are thrown if we either find more words than
<i class="term">inputs</i> to assign to, or encounter an unknown option flag.
Note that not having enough words for all required <i class="term">inputs</i> is
not an error unless the framework is not allowed to start an
interactive shell.
In this <i class="term">mini shell</i> all parameters are mapped to shell
commands taking a single argument, the string value of parameter to
assign.
Additional five pseudo commands are available to either abort, or
commit to the action, or gain help (<b class="cmd">.ok</b>, <b class="cmd">.run</b>,
<b class="cmd">.exit</b>, <b class="cmd">.cancel</b>, and <b class="cmd">.help</b>).</p>
<p>Parameters marked as <i class="term">list</i>-valued also trigger special
behaviours.
For <i class="term"><a href="../../index.html#key2">options</a></i> the assigned values get accumulated instead of each
new value overwriting the last.
For <i class="term">inputs</i> only one such parameter can exist, and will be the
last of the <i class="term">private</i>.
The processor now takes all remaining words and assign them to this
parameter.
If the list is also optional then options may be processed ahead or
not, depending on the chosen decision mode, as described for regular
inputs above.</p>
<p>Then are the <i class="term">boolean</i> and <i class="term">presence</i> <i class="term"><a href="../../index.html#key2">options</a></i>
modifying the handling of flags and flag arguments.
The details of this were already explained in section
<i class="term">Validation</i> of <i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i>.</p>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Example for Handling optional Inputs by Threshold</a></h3>
<p>The examples in this section demonstrate how the <i class="term">threshold</i>
algorithm assigns a various number of argument words to a specific set
of <i class="term">inputs</i>, <i class="term">optional</i> and non.</p>
<pre class="example">
 Parameter    | A? | B | C? | D? | E
 #Required    |   2|   |   1|   1|
--------------+----+---+----+----+----
 2 arguments: |    | a |    |    | b
 3 arguments: | a  | b |    |    | c
 4 arguments: | a  | b | c  |    | d
 5 arguments: | a  | b | c  | d  | e
</pre>
</div>
</div>
<div id="section5" class="section"><h2><a name="section5">Completion</a></h2>
<p>This phase is reached when all words of the command line have
been processed and no error was thrown by the preceding phases.
At this point we know the <b class="package"><a href="cmdr_private.html">cmdr::private</a></b> instance to use, and
its parameters may have a string representation.</p>
<p>All <i class="term">immediate</i>-mode parameters are now given their
internal representation.
The parameters marked as <i class="term">defered</i> are ignored here and will get
theirs on first access by the backend.</p>
<p>This completion of parameters is done in their order of
declaration within the enclosing <i class="term">private</i> command.
Note that when parameters have dependencies between them, i.e. the
calculation of their internal representation requires the internal
representation of another parameter, then this order may be violated
as the requesting parameter triggers completion in the requested one
on access.
If this is behaviour not wanted then it is the responsibility of the
user specifying the <i class="term">private</i> to place the parameters into an
order where all parameters access only previously completed parameters
during their own completion.</p>
</div>
<div id="section6" class="section"><h2><a name="section6">Execution</a></h2>
<p>The last phase is also the most simple.</p>
<p>It only invokes the Tcl command prefix associated with the
chosen <b class="package"><a href="cmdr_private.html">cmdr::private</a></b> instance, providing it with the
<b class="package"><a href="cmdr_config.html">cmdr::config</a></b> instance holding the parameter information
extracted from the command line as its single argument.</p>
<p>For an example of very simple action implementations see
section <i class="term">Simple backend</i> of <i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i>.</p>
<p>All parameters declared for a <i class="term">private</i> are made
accessible through individual methods associated with each.
As example, a parameter with system name <b class="variable">P</b> is mapped to the
method <b class="method">@P</b>, with all instance methods provided by the
<b class="package"><a href="cmdr_parameter.html">cmdr::parameter</a></b> class accessible as sub-methods.
This general access to all methods may be removed in the future,
restricting actions and callbacks to a safe subset.</p>
<p>Another place providing information to actions is the root and
other actors of the command hierarchy itself, via <b class="cmd">common</b> blocks
whose value is managed by the system. Currently we have</p>
<dl class="definitions">
<dt><b class="const">*in-shell*</b></dt>
<dd><p>This block is read-only, and only found in the root actor.
Its value is managed by the framework.
It is a boolean flag indicating if an interactive shell is currently
active (<b class="const">true</b>) or not (<b class="const">false</b>).
This can be used to modulate command messages and other
context-dependent things.</p>
<p><em>Note</em> that the block will not exist until after the first
shell was active. This means that a missing <b class="const">*in-shell*</b> block
should be treated like <b class="const">false</b>.</p></dd>
<dt><b class="const">*prefix*</b></dt>
<dd><p>This block is read-only and found in the private actor for the
currently executing action command prefix, accessible through the
<b class="package"><a href="cmdr_config.html">cmdr::config</a></b> instance method <b class="method">context</b>.
Its value is managed by the framework.
It is a list of the command names used to reach the <i class="term">private</i>
instance.
This is not the logical path in the command hierarchy, but the actual
path taken, which may be through aliases.</p></dd>
</dl>
<p>Calling <b class="method">@P</b> without arguments is a shorthand for
calling ``@P value'', i.e. the retrieval of the parameter's internal
representation. Which may calculate the value if the call is the first
access and the parameter specified as <i class="term">defered</i>.</p>
</div>
<div id="section7" class="section"><h2><a name="section7">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="section8" class="section"><h2><a name="section8">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.
164
165
166
167
168
169
170
171














172
173
174
175
176
177
178
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Format Notes</a></h2>
<p>The format <b class="const">by-category</b> looks for and uses the block
<b class="const">*category-order*</b> for when the user wishes to override the
natural (alphabetical) order of display for the toplevel sections.</p>
<p>This block has to be defined in the root of the command hierarchy.</p>














</div>
<div id="section4" class="section"><h2><a name="section4">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







|
>
>
>
>
>
>
>
>
>
>
>
>
>
>







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
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Format Notes</a></h2>
<p>The format <b class="const">by-category</b> looks for and uses the block
<b class="const">*category-order*</b> for when the user wishes to override the
natural (alphabetical) order of display for the toplevel sections.</p>
<p>This block has to be defined by the user, in the root of
the command hierarchy.
Its value has to be a dictionary mapping from the names of toplevel
sections/categories to an integer number. This is used to change
the order of displaying these sections in the generated text.</p>
<p>Sections with higher/larger numbers are shown first, and
lower/smaller numbers move towards the end. Negative numbers are
possible.</p>
<p>Sections not mentioned in the dictionary are assigned their
natural number. This is calculated by sorting all sections
alphabetically (<b class="option">-dict</b>) ascending and assigning <b class="const">0</b>
to the first section, <b class="const">-10</b> to the next, and so on.</p>
<p>The generated section/category <b class="const">Miscellaneous</b> is
given the number <b class="const">-10000</b> to force it to the end (bottom)
of the help text, if it was generated.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">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
Changes to embedded/www/doc/files/cmdr_howto_development.html.
117
118
119
120
121
122
123
124
125

126
127
128
129
130
131
132
<li class="section"><a href="#section3">Demonstration/Example Applications</a></li>
<li class="section"><a href="#section4">Directory structure</a></li>
<li class="section"><a href="#section5">Extended Build Actions</a></li>
<li class="section"><a href="#section6">Architecture &amp; Concepts</a></li>
<li class="section"><a href="#section7">Validation Types</a></li>
<li class="section"><a href="#section8">Help Formats</a></li>
<li class="section"><a href="#section9">Command Line Completion</a></li>
<li class="section"><a href="#section10">Related Documents</a></li>
<li class="section"><a href="#section11">Bugs, Ideas, Feedback</a></li>

<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#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>







|
|
>







117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<li class="section"><a href="#section3">Demonstration/Example Applications</a></li>
<li class="section"><a href="#section4">Directory structure</a></li>
<li class="section"><a href="#section5">Extended Build Actions</a></li>
<li class="section"><a href="#section6">Architecture &amp; Concepts</a></li>
<li class="section"><a href="#section7">Validation Types</a></li>
<li class="section"><a href="#section8">Help Formats</a></li>
<li class="section"><a href="#section9">Command Line Completion</a></li>
<li class="section"><a href="#section10">Common Blocks</a></li>
<li class="section"><a href="#section11">Related Documents</a></li>
<li class="section"><a href="#section12">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>
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
applies to the standard help formats of the framework (as listed in
<i class="term"><a href="cmdr_help.html">Cmdr - (Internal) Utilities for help text formatting and setup</a></i>) as well.</p>
</div>
<div id="section9" class="section"><h2><a name="section9">Command Line Completion</a></h2>
<p>The document <i class="term"><a href="cmdr_dev_completion.html">Cmdr - Internals of command line completion</a></i> describes the inner
workings of the command line completion provided by the framework.</p>
</div>
<div id="section10" class="section"><h2><a name="section10">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">Cmdr - The Developer's Guide</i></p></li>
</ol>
</div>
<div id="section11" class="section"><h2><a name="section11">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>







|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>









|







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
applies to the standard help formats of the framework (as listed in
<i class="term"><a href="cmdr_help.html">Cmdr - (Internal) Utilities for help text formatting and setup</a></i>) as well.</p>
</div>
<div id="section9" class="section"><h2><a name="section9">Command Line Completion</a></h2>
<p>The document <i class="term"><a href="cmdr_dev_completion.html">Cmdr - Internals of command line completion</a></i> describes the inner
workings of the command line completion provided by the framework.</p>
</div>
<div id="section10" class="section"><h2><a name="section10">Common Blocks</a></h2>
<p>The framework reserves all blocks whose name begins with a star, i.e
<b class="const">*</b>, for its own use.
Currently the following names are in use:</p>
<dl class="definitions">
<dt><b class="const">*all*</b></dt>
<dd><p>Publicly documented for users, this block is expected to contain
parameter specification commands. These commands are automatically
added to all privates found in the command hierarchy containing the
block.</p>
<p>The details are explained by the description of command
<b class="cmd">common</b> in <i class="term"><a href="cmdr_dsl_officer.html">Cmdr - Officer Specification Language</a></i>.</p></dd>
<dt><b class="const">*category-order*</b></dt>
<dd><p>Publicly documented for users, this block is expected to contain a
dictionary mapping from toplevel section/category names to an integer
number to override the natural order of displaying these sections in
the help.</p>
<p>The details are explained in section <i class="term">Format Notes</i> of
<i class="term"><a href="cmdr_help.html">Cmdr - (Internal) Utilities for help text formatting and setup</a></i>.</p></dd>
<dt><b class="const">*prefix*</b></dt>
<dd><p>Publicly documented for users as read-only this block's value is
managed by the framework.
Set during the <i class="term">Dispatch</i> phase it provides to access to the
actual command name used to invoke a <i class="term">private</i>.</p>
<p>See also section <i class="term">Execution</i> of <i class="term"><a href="cmdr_flow.html">Cmdr - Runtime Processing Flow</a></i>.</p></dd>
<dt><b class="const">*in-shell*</b></dt>
<dd><p>Publicly documented for users as read-only this block's value is
managed by the framework. Not set until the first main- or mini-shell
was active its value is boolean flag indicating if an interactive
shell is currently active (<b class="const">true</b>) or not (<b class="const">false</b>, or not
existing).</p>
<p>See also section <i class="term">Execution</i> of <i class="term"><a href="cmdr_flow.html">Cmdr - Runtime Processing Flow</a></i>.</p></dd>
</dl>
</div>
<div id="section11" class="section"><h2><a name="section11">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">Cmdr - The Developer's Guide</i></p></li>
</ol>
</div>
<div id="section12" class="section"><h2><a name="section12">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>
Changes to embedded/www/doc/files/cmdr_introduction.html.
110
111
112
113
114
115
116
117
118

119
120
121
122
123
124
125
<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="#section2">System Architecture</a></li>
<li class="section"><a href="#section3">Related Documents</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>

<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="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>







|
|
>







110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<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="#section2">System Architecture</a></li>
<li class="section"><a href="#section3">Command Hierarchy Specifications</a></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>
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
straight-forward, following mostly directly out of the relationships
shown above, plus the few where the utilities are imported. To reduce
the complexity of the diagram below a few direct dependencies on
<b class="package"><a href="cmdr_util.html">cmdr::util</a></b> were omitted where indirectly present through
other dependencies (i.e. through <b class="package"><a href="cmdr_help.html">cmdr::help</a></b>):</p>
<p><img alt="pkg_dependencies" src="../../image/pkg_dependencies.png"></p>
</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>
<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="section4" class="section"><h2><a name="section4">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>







|
>
>
>
>









|







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
straight-forward, following mostly directly out of the relationships
shown above, plus the few where the utilities are imported. To reduce
the complexity of the diagram below a few direct dependencies on
<b class="package"><a href="cmdr_util.html">cmdr::util</a></b> were omitted where indirectly present through
other dependencies (i.e. through <b class="package"><a href="cmdr_help.html">cmdr::help</a></b>):</p>
<p><img alt="pkg_dependencies" src="../../image/pkg_dependencies.png"></p>
</div>
<div id="section3" class="section"><h2><a name="section3">Command Hierarchy Specifications</a></h2>
<p>This is a bit large for this document, and can be found in the
separate <i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i>.</p>
</div>
<div id="section4" class="section"><h2><a name="section4">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>
<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>
Changes to embedded/www/doc/files/cmdr_parameter.html.
540
541
542
543
544
545
546






























547
548
549
550
551
552
553
554
the parameter. If necessary the data is computed from the
parameter's string representation, &quot;default&quot; value, or
&quot;generate&quot; callback.
An error is thrown if the value could not be determined.
(See method <b class="method">undefined!</b>).
If the value is newly computed the action triggers the
execution of the &quot;when-complete&quot; callback.</p>






























<p>--TODO-- describe generation rules and order.</p></dd>
<dt><a name="47"><b class="cmd">&lt;parameter&gt;</b> <b class="method">when-complete</b></a></dt>
<dd><p>This method returns the &quot;when-complete&quot; command prefix callback,
if it was set, and an empty list otherwise.</p></dd>
<dt><a name="48"><b class="cmd">&lt;parameter&gt;</b> <b class="method">when-set</b></a></dt>
<dd><p>This method returns the &quot;when-set&quot; command prefix callback,
if it was set, and an empty list otherwise.</p></dd>
</dl>







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|







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
the parameter. If necessary the data is computed from the
parameter's string representation, &quot;default&quot; value, or
&quot;generate&quot; callback.
An error is thrown if the value could not be determined.
(See method <b class="method">undefined!</b>).
If the value is newly computed the action triggers the
execution of the &quot;when-complete&quot; callback.</p>
<p>A parameter asked for its internal representation goes through
the following steps to deliver the value:</p>
<ol class="enumerated">
<li><p>If the internal representation is already known, simply deliver
it as is. In other words, the result of the following steps is cached,
and the steps are run only once.</p></li>
<li><p>If the internal representation has been declared as undefined
already, simply error out (again). This is still part of caching the
result generated by the following steps.</p></li>
<li><p>If the parameter has a string representation use the
parameter's <i class="term">validation type</i> to convert it to the proper
internal representation, and return it.</p></li>
<li><p>If interactive entry is possible (per the parameter's
specification) perform the interaction. This saves the entered data as
string representation which is then validated as per the previous
step. Aborting the interaction leaves the parameter as undefined
(which is thrown as error).</p></li>
<li><p>If a <b class="cmd">generate</b> callback exists use it to obtain the
internal representation, and return it.</p></li>
<li><p>If a <b class="cmd">default</b> value exists make it the internal
representation, and return it.</p>
<p>Side note: As the parameter DSL only allows the
declaration of one of <b class="cmd">default</b> or <b class="cmd">generate</b> only one of
these steps can trigger.</p></li>
<li><p>If the parameter is <b class="cmd">optional</b> use the empty string as the
internal representation and return it.</p>
<p><em>Note</em> that this rule should never trigger as the
parameter DSL enforces that <i class="term">optional</i> parameters always have one
of <b class="cmd">default</b> or <b class="cmd">generate</b>.</p></li>
<li><p>Leave the parameter is undefined and fail (throw an error).</p></li>
</ol></dd>
<dt><a name="47"><b class="cmd">&lt;parameter&gt;</b> <b class="method">when-complete</b></a></dt>
<dd><p>This method returns the &quot;when-complete&quot; command prefix callback,
if it was set, and an empty list otherwise.</p></dd>
<dt><a name="48"><b class="cmd">&lt;parameter&gt;</b> <b class="method">when-set</b></a></dt>
<dd><p>This method returns the &quot;when-set&quot; command prefix callback,
if it was set, and an empty list otherwise.</p></dd>
</dl>
Changes to embedded/www/doc/toc.html.
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
<td class="#tocright">Cmdr - Parameter Specification Language</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_dsl_private.html">cmdr-spec-dsl-private</a></td>
<td class="#tocright">Cmdr - Private Specification Language</td>
</tr>
<tr class="#toceven" >




<td class="#tocleft" ><a href="files/cmdr_helpformats.html">cmdr-user-helpformats</a></td>
<td class="#tocright">Cmdr - Writing custom help formats</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_vtypes.html">cmdr-user-vtypes</a></td>
<td class="#tocright">Cmdr - Writing custom validation types</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_actor.html">cmdr::actor</a></td>
<td class="#tocright">Cmdr - (Internal) Base class for officers and privates</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_config.html">cmdr::config</a></td>
<td class="#tocright">Cmdr - (Partially internal) Collection of parameters for privates</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_help.html">cmdr::help</a></td>
<td class="#tocright">Cmdr - (Internal) Utilities for help text formatting and setup</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_officer.html">cmdr::officer</a></td>
<td class="#tocright">Cmdr - (Internal) 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 - (Partially internal) Command parameters</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_private.html">cmdr::private</a></td>
<td class="#tocright">Cmdr - (Internal) 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 - (Internal) General Utilities</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_howto_development.html">cmdr_development</a></td>
<td class="#tocright">Cmdr - The Developer's Guide</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_dev_completion.html">cmdr_dev~completion</a></td>
<td class="#tocright">Cmdr - Internals of command line completion</td>
</tr>




</table>
</dl><hr></body></html>







>
>
>
>



|



|



|



|



|



|



|



|



|



|



|



|



|



|



>
>
>
>


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
<td class="#tocright">Cmdr - Parameter Specification Language</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_dsl_private.html">cmdr-spec-dsl-private</a></td>
<td class="#tocright">Cmdr - Private Specification Language</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_flow.html">cmdr-spec-flow</a></td>
<td class="#tocright">Cmdr - Runtime Processing Flow</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_helpformats.html">cmdr-user-helpformats</a></td>
<td class="#tocright">Cmdr - Writing custom help formats</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_vtypes.html">cmdr-user-vtypes</a></td>
<td class="#tocright">Cmdr - Writing custom validation types</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_actor.html">cmdr::actor</a></td>
<td class="#tocright">Cmdr - (Internal) Base class for officers and privates</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_config.html">cmdr::config</a></td>
<td class="#tocright">Cmdr - (Partially internal) Collection of parameters for privates</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_help.html">cmdr::help</a></td>
<td class="#tocright">Cmdr - (Internal) Utilities for help text formatting and setup</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_officer.html">cmdr::officer</a></td>
<td class="#tocright">Cmdr - (Internal) 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 - (Partially internal) Command parameters</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_private.html">cmdr::private</a></td>
<td class="#tocright">Cmdr - (Internal) 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 - (Internal) General Utilities</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_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_dev_completion.html">cmdr_dev~completion</a></td>
<td class="#tocright">Cmdr - Internals of command line completion</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_dev_dsl.html">cmdr_dev~dsl</a></td>
<td class="#tocright">Cmdr - Internals of DSL handling</td>
</tr>
</table>
</dl><hr></body></html>
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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </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_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_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_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
</table>
</body></html>
Changes to embedded/www/toc.html.
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
<td class="#tocright">Cmdr - Parameter Specification Language</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_dsl_private.html">cmdr-spec-dsl-private</a></td>
<td class="#tocright">Cmdr - Private Specification Language</td>
</tr>
<tr class="#toceven" >




<td class="#tocleft" ><a href="doc/files/cmdr_helpformats.html">cmdr-user-helpformats</a></td>
<td class="#tocright">Cmdr - Writing custom help formats</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_vtypes.html">cmdr-user-vtypes</a></td>
<td class="#tocright">Cmdr - Writing custom validation types</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_actor.html">cmdr::actor</a></td>
<td class="#tocright">Cmdr - (Internal) Base class for officers and privates</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_config.html">cmdr::config</a></td>
<td class="#tocright">Cmdr - (Partially internal) Collection of parameters for privates</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_help.html">cmdr::help</a></td>
<td class="#tocright">Cmdr - (Internal) Utilities for help text formatting and setup</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_officer.html">cmdr::officer</a></td>
<td class="#tocright">Cmdr - (Internal) 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 - (Partially internal) 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 - (Internal) 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 - (Internal) General Utilities</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_howto_development.html">cmdr_development</a></td>
<td class="#tocright">Cmdr - The Developer's Guide</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_dev_completion.html">cmdr_dev~completion</a></td>
<td class="#tocright">Cmdr - Internals of command line completion</td>
</tr>




</table>
</dl><hr></body></html>







>
>
>
>



|



|



|



|



|



|



|



|



|



|



|



|



|



|



>
>
>
>


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
<td class="#tocright">Cmdr - Parameter Specification Language</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_dsl_private.html">cmdr-spec-dsl-private</a></td>
<td class="#tocright">Cmdr - Private Specification Language</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_flow.html">cmdr-spec-flow</a></td>
<td class="#tocright">Cmdr - Runtime Processing Flow</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_helpformats.html">cmdr-user-helpformats</a></td>
<td class="#tocright">Cmdr - Writing custom help formats</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_vtypes.html">cmdr-user-vtypes</a></td>
<td class="#tocright">Cmdr - Writing custom validation types</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_actor.html">cmdr::actor</a></td>
<td class="#tocright">Cmdr - (Internal) Base class for officers and privates</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_config.html">cmdr::config</a></td>
<td class="#tocright">Cmdr - (Partially internal) Collection of parameters for privates</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_help.html">cmdr::help</a></td>
<td class="#tocright">Cmdr - (Internal) Utilities for help text formatting and setup</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_officer.html">cmdr::officer</a></td>
<td class="#tocright">Cmdr - (Internal) 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 - (Partially internal) 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 - (Internal) 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 - (Internal) General Utilities</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_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_dev_completion.html">cmdr_dev~completion</a></td>
<td class="#tocright">Cmdr - Internals of command line completion</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_dev_dsl.html">cmdr_dev~dsl</a></td>
<td class="#tocright">Cmdr - Internals of DSL handling</td>
</tr>
</table>
</dl><hr></body></html>