summaryrefslogtreecommitdiffstats
path: root/tools/sed-enums
diff options
context:
space:
mode:
Diffstat (limited to 'tools/sed-enums')
-rw-r--r--tools/sed-enums24
1 files changed, 24 insertions, 0 deletions
diff --git a/tools/sed-enums b/tools/sed-enums
new file mode 100644
index 0000000..13ce112
--- /dev/null
+++ b/tools/sed-enums
@@ -0,0 +1,24 @@
+s/.*(enum\s+[a-zA-Z0-9_]+).*$/typedef \1 { /
+T
+h
+:attrs
+n
+s/^\s*([A-Z0-9_]+).*$/\1, /
+T next;H;b attrs
+:next
+/^\s*\}/ ! b attrs
+s/^\s*}\s*([a-zA-Z0-9_]+).*$/ } \1;/
+t end
+# TODO fix above !!
+/^\s*\}\s*;.*$/ {
+ :loop2
+ n
+ /typedef/ ! b loop2
+ s/^\s*typedef\s+enum\s+[a-zA-Z0-9_]+\s+([a-zA-Z0-9_]+)/ } \1/
+ t end
+}
+:end
+H;x
+s/\n//g
+s/ {2,}/ /g
+s/, }/ }/p