]> git.llucax.com Git - software/libev.git/blobdiff - update_ev_wrap
Add exceptions support to C++ interface.
[software/libev.git] / update_ev_wrap
index 30ebb4f4aa71eafef04f71e9135c02bc5a4cb097..adb083ab8c1fd499c5bbc157ab3711c978452926 100755 (executable)
@@ -1,10 +1,19 @@
 #!/bin/sh
 
 (
-   echo '#define VAR(name,decl) define name ((loop)->name)'
+   echo '#define VAR(name,decl) name'
    echo '#define EV_GENWRAP 1'
    cat ev_vars.h
-) | cc -E -o - - | sed -n -e 's/define/#define/p' | (
-   echo "/* DO NOT EDIT, automatically generated by update_ev_wrap */"
-   cat
-) | tee ev_wrap.h
+) | cc -E -o - - | perl -ne '
+   while (<>) {
+      push @syms, $1 if /(^\w+)/;
+   }
+   print "/* DO NOT EDIT, automatically generated by update_ev_wrap */\n",
+         "#ifndef EV_WRAP_H\n",
+         "#define EV_WRAP_H\n",
+         (map "#define $_ ((loop)->$_)\n", @syms),
+         "#else\n",
+         "#undef EV_WRAP_H\n",
+         (map "#undef $_\n", @syms),
+         "#endif\n";
+' >ev_wrap.h