Enhance the command-line completion extension to return the names of
[sqlite.git] / tool / mkopts.tcl
blob88f645bbe3016391c1b9323c39433fdf1a357abe
1 #!/usr/bin/tclsh
3 # This script is used to generate the array of strings and the enum
4 # that appear at the beginning of the C code implementation of a
5 # a TCL command and that define the available subcommands for that
6 # TCL command.
8 set prefix {}
9 while {![eof stdin]} {
10 set line [gets stdin]
11 if {$line==""} continue
12 regsub -all "\[ \t\n,\]+" [string trim $line] { } line
13 foreach token [split $line { }] {
14 if {![regexp {(([a-zA-Z]+)_)?([_a-zA-Z0-9]+)} $token all px p2 name]} continue
15 lappend namelist [string tolower $name]
16 if {$px!=""} {set prefix $p2}
20 puts " static const char *${prefix}_strs\[\] = \173"
21 set col 0
22 proc put_item x {
23 global col
24 if {$col==0} {puts -nonewline " "}
25 if {$col<2} {
26 puts -nonewline [format " %-25s" $x]
27 incr col
28 } else {
29 puts $x
30 set col 0
33 proc finalize {} {
34 global col
35 if {$col>0} {puts {}}
36 set col 0
39 foreach name [lsort $namelist] {
40 put_item \"$name\",
42 put_item 0
43 finalize
44 puts " \175;"
45 puts " enum ${prefix}_enum \173"
46 foreach name [lsort $namelist] {
47 regsub -all {@} $name {} name
48 put_item ${prefix}_[string toupper $name],
50 finalize
51 puts " \175;"