X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=chiark-tcl.git;a=blobdiff_plain;f=base%2Ftcmdifgen;h=bd972454147bb0151f7aacd889f55cf14c458628;hp=d5e662234ddba0951fb59b300469b22a3e9821d3;hb=fad73e0340b64f1a7da862d8f511ce9094e14375;hpb=82f88c53ddb84e42c770c23feb9bb0ee18341188 diff --git a/base/tcmdifgen b/base/tcmdifgen index d5e6622..bd97245 100755 --- a/base/tcmdifgen +++ b/base/tcmdifgen @@ -56,7 +56,7 @@ # Arranges for generated .h files to #include the specified # file. C-INCLUDE-SPECIFIER should include the <..> or "..". # -# Table TABLENAME C-ENTRY-TYPE +# Table [*]TABLENAME C-ENTRY-TYPE # Starts a table of commands or subcommands. The generated .h # will contain a definition of C-ENTRY-TYPE containing # const char *name; @@ -66,7 +66,7 @@ # where C-ARRAY-NAME is TABLENAME, with `_entries' appended # and `cht_' prepended. The entries are indented one level (one # or more spaces) and look like this: -# ENTRYNAME +# ENTRYNAME [ C-EXTRA-ENTRY-VALUES ] # FORMALARGNAME TYPE # ... # [ => RESULT-TYPE ] @@ -89,13 +89,17 @@ # arguments, processes the command, and sets any result, as # applicable. # -# ExtraEntry C-ENTRY-TYPE +# `*' should be used if the table name is not useful for error +# messages. It suppresses `TABLENAME ' from the front of the +# autogenerated argument parsing error strings. +# +# EntryExtra C-ENTRY-TYPE # Introduces a section of additional C code which will be inserted # into the definition of C-ENTRY-TYPE by `Table'. The C # code, which follows on several indented lines, should be # structure member definitions. # -# When ExtraEntry is used, in the corresponding Table, each +# When EntryExtra is used, in the corresponding Table, each # ENTRYNAME should be followed on the same line by whitespace and # EXTRA-VALUES; the EXTRA-VALUES are used as initialisers for the # additional structure elements. @@ -178,11 +182,12 @@ sub parse ($$) { unshift @i, $this_indent; } - if (@i==0 && m/^Table\s+(\w+)\s+(\w+)$/) { + if (@i==0 && m/^Table\s+(\*?)(\w+)\s+(\w+)$/) { zilch(); - $c_table= $1; - $table_x{$c_table}{C}= $2; - $entrytype_x{$2}= '' unless exists $entrytype_x{$2}; + $c_table= $2; + $table_x{$c_table}{T}= $1; + $table_x{$c_table}{C}= $3; + $entrytype_x{$3}= '' unless exists $entrytype_x{$3}; } elsif (@i==0 && m/^Untabled$/) { zilch(); $c_table= ''; @@ -291,7 +296,8 @@ foreach $c_table (sort keys %tables) { $any_eerr= 0; $any_eargc= 0; $pa_hint= ''; - $pa_hint .= "$c_table " if length $c_table; + $pa_hint .= "$c_table " if length $c_table && + !length $table_x{$c_table}{T}; $pa_hint.= $c_entry; foreach $arg (@{ $r_entry->{A} }) { $n= $arg->{N};