File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / sqlite3 / tool / mkopts.tcl
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 17:04:17 2012 UTC (12 years, 4 months ago) by misho
Branches: sqlite3, MAIN
CVS tags: v3_7_10, HEAD
sqlite3

    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;"
   52: 

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