diff options
author | Christopher Davis <loafier@gmail.com> | 2006-06-26 04:20:50 +0000 |
---|---|---|
committer | Christopher Davis <loafier@gmail.com> | 2006-06-26 04:20:50 +0000 |
commit | 96280edc8fda9cc591bc0833398e576bf680931d (patch) | |
tree | 53dad5721b3fa530a7a69b0169fe4d5d0b614a3e /sig2code.awk | |
parent | 3b04cf6a1210f97d8144ee1ba646186aca4912ef (diff) | |
download | irssi-python-96280edc8fda9cc591bc0833398e576bf680931d.tar.gz irssi-python-96280edc8fda9cc591bc0833398e576bf680931d.tar.xz irssi-python-96280edc8fda9cc591bc0833398e576bf680931d.zip |
working on new provision for constants and changed sig2code script
git-svn-id: http://svn.irssi.org/repos/irssi-python@4292 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'sig2code.awk')
-rw-r--r-- | sig2code.awk | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/sig2code.awk b/sig2code.awk new file mode 100644 index 0000000..d6bdb0d --- /dev/null +++ b/sig2code.awk @@ -0,0 +1,61 @@ +BEGIN { + FS = "[ \t]*->[ \t]*"; + + #read in codes + while (getline < "sig2code.txt") + { + sub(/^[ \t]*/, ""); + if (NF < 2) + continue; + + #print $1, $2 + sigmap[$2] = $1 + } + + close("sig2code.txt"); + + FS = "[ \t]*,[ \t]*"; + + print "/* Include in your C module */"; + print "static PY_SIGNAL_SPEC_REC py_sigmap[] = {"; +} + +function match_type(t) +{ + for (type in sigmap) + { + if (index(t, type) != 0) + return sigmap[type]; + } + + return "?"; +} + +$1 ~ /^[ \t]*"/ && $1 !~ /"script error"/ { + sub(/^[ \t]*/, ""); + + signal = $1 + if (signal ~ /.*<cmd>$/) + { + varsig = 1; + sub(/<cmd>/, "", signal); + } + else + varsig = 0; + + args = ""; + for (i = 2; i <= NF; i++) + { + args = args""match_type($i); + } + + printf(" {%s, \"%s\", 0, 0, %d},\n", signal, args, varsig); +} + +END { + print " {NULL}" ; + print "};"; + print ""; + print "#define py_sigmap_len() (sizeof(py_sigmap) / sizeof(py_sigmap[0]) - 1)"; +} + |