summaryrefslogtreecommitdiffstats
path: root/tools/sed-enums
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2011-10-21 11:18:11 +0200
committerJérémy Zurcher <jeremy@asynk.ch>2011-10-21 11:18:11 +0200
commit961dd6b19e860f3a47c4435f359f7c372cb03084 (patch)
treeeb744dedc67c8acf6d5e135c115b7428e8b49da6 /tools/sed-enums
parent3a9ae6b9d5f30898ec06819897145efc475a5625 (diff)
downloadffi-efl-961dd6b19e860f3a47c4435f359f7c372cb03084.zip
ffi-efl-961dd6b19e860f3a47c4435f359f7c372cb03084.tar.gz
add comment to sed scripts, fix sed-enum
Diffstat (limited to 'tools/sed-enums')
-rw-r--r--tools/sed-enums17
1 files changed, 16 insertions, 1 deletions
diff --git a/tools/sed-enums b/tools/sed-enums
index ffc193b..14738ac 100644
--- a/tools/sed-enums
+++ b/tools/sed-enums
@@ -1,17 +1,32 @@
-s/^\s*(typedef)?\s+(enum(\s+\w+)?).*$/typedef \2 { /
+# drop if don't start with (typedef)? enum
+/^\s*(typedef\s)?\s*enum/ ! b
+#
+s/^\s*(typedef\s)?\s*(enum(\s+\w+)?).*$/typedef \2 { /
+# drop if substitution fail, copy pattern to hold space
T;h
:attrs;n
+# read again if {
+/^\s*\{/ b attrs
+# append each item
s/^\s*([A-Z0-9_]+)(\s*=\s*-?[0-9]+)?.*$/\1\2, /
+# goto next if subsitution fails, append pattern, loop
T next;H;b attrs
:next
+# try again if } not found
/^\s*\}/ ! b attrs
+# read enumeration name
s/^\s*}\s*(\w+).*$/ } \1;/
t finish
:close
+# read the enum typedef
s/^\s*typedef\s+enum\s+\w+\s+(\w+)\s*;/ } \1/
+# leave if substitution works, or read next line and retry
t finish;n;b close
:finish
+# append pattern, exchange hold space and pattern space
H;x
+# remove \n
s/\n//g
+# replace multi spaces with one
s/ {2,}/ /g
s/, }/ }/p