Home | History | Annotate | Download | only in src
      1 #!/usr/bin/awk -f
      2 #
      3 # This AWK script scans the opcodes.h file (which is itself generated by
      4 # another awk script) and uses the information gleaned to create the
      5 # opcodes.c source file.
      6 #
      7 # Opcodes.c contains strings which are the symbolic names for the various
      8 # opcodes used by the VDBE.  These strings are used when disassembling a
      9 # VDBE program during tracing or as a result of the EXPLAIN keyword.
     10 #
     11 BEGIN {
     12   print "/* Automatically generated.  Do not edit */"
     13   print "/* See the mkopcodec.awk script for details. */"
     14   printf "#if !defined(SQLITE_OMIT_EXPLAIN)"
     15   printf    " || !defined(NDEBUG)"
     16   printf    " || defined(VDBE_PROFILE)"
     17   print     " || defined(SQLITE_DEBUG)"
     18   print "const char *sqlite3OpcodeName(int i){"
     19   print " static const char *const azName[] = { \"?\","
     20 }
     21 /define OP_/ {
     22   sub("OP_","",$2)
     23   i++
     24   printf "     /* %3d */ \"%s\",\n", $3, $2
     25 }
     26 END {
     27   print "  };"
     28   print "  return azName[i];"
     29   print "}"
     30   print "#endif"
     31 }
     32