Index: third_party/sqlite/src/mkopcodec.awk |
diff --git a/third_party/sqlite/src/mkopcodec.awk b/third_party/sqlite/src/mkopcodec.awk |
index ec80953009ee1133634f1900be2d8b90ae1709af..de19068c2000790e3591837597f3129c0812bcf1 100644 |
--- a/third_party/sqlite/src/mkopcodec.awk |
+++ b/third_party/sqlite/src/mkopcodec.awk |
@@ -12,18 +12,37 @@ 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 "#if defined(SQLITE_ENABLE_EXPLAIN_COMMENTS) || defined(SQLITE_DEBUG)" |
+ print "# define OpHelp(X) \"\\0\" X" |
+ print "#else" |
+ print "# define OpHelp(X)" |
+ print "#endif" |
print "const char *sqlite3OpcodeName(int i){" |
print " static const char *const azName[] = { \"?\"," |
+ mx = 0 |
} |
-/define OP_/ { |
+/^.define OP_/ { |
sub("OP_","",$2) |
- i++ |
- printf " /* %3d */ \"%s\",\n", $3, $2 |
+ i = $3+0 |
+ label[i] = $2 |
+ if( mx<i ) mx = i |
+ for(j=5; j<NF; j++) if( $j=="synopsis:" ) break |
+ if( j<NF ){ |
+ j++ |
+ x = $j |
+ for(j=j+1; j<NF; j++) x = x " " $j |
+ synopsis[i] = x |
+ }else{ |
+ synopsis[i] = "" |
+ } |
} |
END { |
+ for(i=1; i<=mx; i++){ |
+ printf " /* %3d */ %-18s OpHelp(\"%s\"),\n", i, \ |
+ "\"" label[i] "\"", synopsis[i] |
+ } |
print " };" |
print " return azName[i];" |
print "}" |