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#
11BEGIN {
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}
26END {
27  print "  };"
28  print "  return azName[i];"
29  print "}"
30  print "#endif"
31}
32