Annotation of embedaddon/sqlite3/tool/mkopts.tcl, revision 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>