+## Copyright (C) 1996-2021 The Squid Software Foundation and contributors
+##
+## Squid software is distributed under GPLv2+ license and includes
+## contributions from numerous individuals and organizations.
+## Please see the COPYING and CONTRIBUTORS files for details.
+##
+
# tested with gawk, mawk, and nawk.
-# drop-in replacement for mk-string-arrays.pl.
# creates "enum.c" (on stdout) from "enum.h".
-# invoke similarly: perl -f mk-string-arrays.pl enum.h
-# --> awk -f mk-string-arrays.awk enum.h
+# when invoked: awk -f mk-string-arrays.awk enum.h
#
# 2006 by Christopher Kerr.
#
# Skip all lines outside of typedef {}
/^typedef/ { codeSkip = 0; next }
+/^enum class / {
+ codeSkip = 0
+ type = $3
+ next;
+}
+/^enum / {
+ codeSkip = 0
+ type = $2
+ next;
+}
codeSkip == 1 { next }
/^[ \t]*[A-Z]/ {
next
}
+/};/ {
+ codeSkip = 1;
+}
+
/^} / {
split($2, t, ";") # remove ;
- type = t[1]
- codeSkip = 1
+ if (!type)
+ type = t[1]
+ codeSkip = 1
+ next
+}
- if (sbuf) print "#include \"SBuf.h\""
- print "#include \"" nspath type ".h\""
+END {
+ if (sbuf) print "#include \"sbuf/SBuf.h\""
+ if (ifile != "") print "#include \"" ifile "\""
+ else print "#include \"" nspath type ".h\""
- # if namesapce is not empty ??
+ # if namespace is not empty ??
if (namespace) print "namespace " namespace
if (namespace) print "{"
print "\t" Element[i]
print "};"
if (namespace) print "}; // namespace " namespace
- next
}