Added add_saturated
[libfirm] / tools / remove_cpp_comands.perl
index 0e17c1a..f9a7c49 100644 (file)
@@ -44,6 +44,7 @@ print OUT "\n#include \"firm_typedefs.h\"\n\n";
 print TDF "#define INLINE\n";
 print TDF "#define FILE int *\n";
 print TDF "#ifndef MYTYPEDEFS\n#define MYTYPEDEFS\n";
+#print TDF "#undef __cplusplus\n";
 print TDF "typedef unsigned long size_t;\n";
 #print TDF "typedef enum { false = 0, true = 1 } bool;\n";  geht nicht, false und true JAVA Schluesselwoerter
 print TDF "typedef int bool;\n";
@@ -60,12 +61,35 @@ $guardedtypedef = 0;
 $scndlastline = "";
 $lastline = "";
 
+$eat = 0;
+$multiline = 0;
+
 foreach $line (@lines) {
 
-    if (($line =~ /^\#/)   ) {
+    if ($line =~ /\#ifdef __cplusplus/) {
+#       There is extern "C" in some header files guarded by #ifdef __cplusplus
+#       crecoder does not grok the extern "C", so remove thses three lines.
+       $eat = 2;
+    } elsif ($eat > 0) {
+       $eat = $eat -1;
+    } elsif ($line =~ /wchar_t/) {
+       # of course crecoder cannot handle wchar_t, what else?
+    } elsif ($multiline > 0) {
+        # this line connects a previous one, kill it
+        if ($line =~ /\\$/) {
+          $multiline = 1;
+        } else {
+          $multiline = 0;
+        }
+    } elsif ($line =~ /^\#/) {
        # eat the line
        $scndlastline = $lastline;
        $lastline = $line;
+        if ($line =~ /\\$/) {
+          $multiline = 1;
+        } else {
+          $multiline = 0;
+        }
     } elsif ($openbracket == 1) {
        print TDF "$line";
        if ((index($line, "}") > -1)) {