Annotation of embedaddon/sqlite3/tool/mkopts.tcl, revision 1.1.1.1

1.1       misho       1: #!/usr/bin/tclsh
                      2: #
                      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.
                      7: 
                      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-Z]+)} $token all px p2 name]} continue
                     15:     lappend namelist [string tolower $name]
                     16:     if {$px!=""} {set prefix $p2}
                     17:   }
                     18: }
                     19: 
                     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 " %-21s" $x]
                     27:     incr col
                     28:   } else {
                     29:     puts $x
                     30:     set col 0
                     31:   }
                     32: }
                     33: proc finalize {} {
                     34:   global col
                     35:   if {$col>0} {puts {}}
                     36:   set col 0
                     37: }
                     38: 
                     39: foreach name [lsort $namelist] {
                     40:   put_item \"$name\",
                     41: }
                     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],
                     49: }
                     50: finalize
                     51: puts "  \175;"

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>