| #!/usr/bin/awk -f | |
| # | |
| # This AWK script scans the opcodes.h file (which is itself generated by | |
| # another awk script) and uses the information gleaned to create the | |
| # opcodes.c source file. | |
| # | |
| # Opcodes.c contains strings which are the symbolic names for the various | |
| # opcodes used by the VDBE. These strings are used when disassembling a | |
| # VDBE program during tracing or as a result of the EXPLAIN keyword. | |
| # | |
| BEGIN { | |
| print "/* Automatically generated. Do not edit */" | |
| print "/* See the mkopcodec.awk script for details. */" | |
| printf "#if !defined(SQLITE_OMIT_EXPLAIN)" | |
| printf " || !defined(NDEBUG)" | |
| printf " || defined(VDBE_PROFILE)" | |
| print " || defined(SQLITE_DEBUG)" | |
| print "const char *sqlite3OpcodeName(int i){" | |
| print " static const char *const azName[] = { \"?\"," | |
| mx = 0 | |
| } | |
| /define OP_/ { | |
| sub("OP_","",$2) | |
| i = $3+0 | |
| label[i] = $2 | |
| if( mx<i ) mx = i | |
| } | |
| END { | |
| for(i=1; i<=mx; i++){ | |
| printf " /* %3d */ \"%s\",\n", i, label[i] | |
| } | |
| print " };" | |
| print " return azName[i];" | |
| print "}" | |
| print "#endif" | |
| } |