| OLD | NEW | 
 | (Empty) | 
|   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;" |  | 
| OLD | NEW |