| BEGIN { |
| print "/* Machine generated. Do not edit. */" |
| print "" |
| lines = 0 |
| } |
| { |
| split($0, array, FS) |
| |
| if (NF > 0 && length(array[1]) > 0) { |
| lines++ |
| |
| # save the first word (or '&' separated list of words) in the names array |
| if (array[2] == "&") { |
| if (array[4] == "&") { |
| names[lines] = array[1] " " array[2] " " array[3] " " array[4] " " array[5] |
| start = 6 |
| } else { |
| names[lines] = array[1] " " array[2] " " array[3] |
| start = 4 |
| } |
| } else { |
| names[lines] = array[1] |
| start = 2 |
| } |
| |
| # create the WCHAR version of the name |
| printf "static const WCHAR name%dW[] = { ", lines |
| i = 1 |
| len = length(names[lines]) + 1 |
| while (i < len) { |
| printf "'%s',", substr(names[lines],i,1) |
| i++ |
| } |
| print "0 };" |
| |
| # create the CHAR version of the description |
| printf "static const CHAR description%dA[] = \"", lines |
| word = start |
| while (word < (NF + 1)) { |
| printf "%s", array[word] |
| if (word < NF ) |
| printf " " |
| word++ |
| } |
| print "\";" |
| |
| # create the WCHAR version of the description |
| printf "static const WCHAR description%dW[] = { ", lines |
| word = start |
| while (word < (NF + 1)) { |
| i = 1 |
| len = length(array[word]) + 1 |
| while (i < len) { |
| if (substr(array[word],i,1) == "'") |
| printf "'\\''," |
| else |
| printf "'%s',", substr(array[word],i,1) |
| i++ |
| } |
| if (word < NF ) |
| printf "' '," |
| word++ |
| } |
| print "0 };" |
| } |
| } |
| END { |
| print "" |
| print "static const error_info info[] = {" |
| |
| i = 1 |
| while ( i <= lines) { |
| split(names[i], words, FS) |
| printf " { %s, \"%s\", name%dW, description%dA, description%dW },\n", |
| words[1], names[i], i, i,i |
| i++ |
| } |
| |
| print "};" |
| } |