summaryrefslogtreecommitdiffstats
path: root/src/dom/ImplGen.java
diff options
context:
space:
mode:
authorMenTaLguY <mental@rydia.net>2006-01-16 02:36:01 +0000
committermental <mental@users.sourceforge.net>2006-01-16 02:36:01 +0000
commit179fa413b047bede6e32109e2ce82437c5fb8d34 (patch)
treea5a6ac2c1708bd02288fbd8edb2ff500ff2e0916 /src/dom/ImplGen.java
downloadinkscape-179fa413b047bede6e32109e2ce82437c5fb8d34.tar.gz
inkscape-179fa413b047bede6e32109e2ce82437c5fb8d34.zip
moving trunk for module inkscape
(bzr r1)
Diffstat (limited to 'src/dom/ImplGen.java')
-rwxr-xr-xsrc/dom/ImplGen.java180
1 files changed, 180 insertions, 0 deletions
diff --git a/src/dom/ImplGen.java b/src/dom/ImplGen.java
new file mode 100755
index 000000000..b79f70725
--- /dev/null
+++ b/src/dom/ImplGen.java
@@ -0,0 +1,180 @@
+
+
+import java.io.*;
+import java.util.StringTokenizer;
+
+
+
+public class ImplGen
+{
+BufferedWriter out;
+String className;
+String defaultReturn;
+
+void trace(String msg)
+{
+ System.out.println(msg);
+}
+
+void err(String msg)
+{
+ System.out.print("error:");
+ System.out.println(msg);
+}
+
+void p(String s)
+{
+ try
+ {
+ out.write(s);
+ }
+ catch (IOException e)
+ {
+ }
+}
+
+void sp(int count)
+{
+ for (int i=0 ; i<count ; i++)
+ p(" ");
+}
+
+
+
+void process(String s)
+{
+
+ if (s.startsWith("## "))
+ {
+ className = s.substring(3);
+ }
+
+ if (s.startsWith("DOMString"))
+ {
+ defaultReturn = "DOMString(\"\")";
+ }
+ else if (s.startsWith("bool"))
+ {
+ defaultReturn = "false";
+ }
+ else if (s.startsWith("void"))
+ {
+ defaultReturn = "";
+ }
+ else if (s.startsWith("unsigned long") || s.startsWith("long"))
+ {
+ defaultReturn = "0L";
+ }
+ else if (s.startsWith("unsigned short") || s.startsWith("short"))
+ {
+ defaultReturn = "0";
+ }
+ else if (s.startsWith("float") || s.startsWith("double"))
+ {
+ defaultReturn = "0.0";
+ }
+ else if (s.length()>0 && Character.isLetter(s.charAt(0)))
+ {
+ defaultReturn = "NULL";
+ }
+ else if (s.startsWith("~"))
+ {
+ defaultReturn = "";
+ }
+
+ int pos = s.indexOf("(");
+ if (!s.startsWith("~") && pos > 0 &&
+ Character.isLetterOrDigit(s.charAt(pos-1)))
+ {
+ while (Character.isLetterOrDigit(s.charAt(pos-1)))
+ pos--;
+ String news = s.substring(0, pos) +
+ className + "::" +
+ s.substring(pos);
+ s = news;
+ }
+
+ if (s.startsWith("~"))
+ {
+ p(className); p("::");
+ p(s); p("\n");
+ }
+ else if (s.startsWith("}") && defaultReturn.length()>0)
+ {
+ p(" return "); p(defaultReturn); p(";"); p("\n");
+ p(s); p("\n");
+ }
+ else
+ {
+ p(s); p("\n");
+ }
+
+
+
+}
+
+
+
+
+
+void doIt(String inName)
+{
+ String cppName = inName + ".cpp";
+ try
+ {
+ BufferedReader in = new BufferedReader(new FileReader(inName));
+ out = new BufferedWriter(new FileWriter(cppName));
+ while (true)
+ {
+ String s = in.readLine();
+ if (s == null)
+ break;
+ process(s);
+ }
+
+ in.close();
+ out.close();
+ }
+ catch (Exception e)
+ {
+ }
+
+}
+
+
+public ImplGen()
+{
+}
+
+
+public static void main(String argv[])
+{
+ if (argv.length != 1)
+ {
+ System.out.println("usage: ImplGen <source .h file>");
+ return;
+ }
+ ImplGen ig = new ImplGen();
+ ig.doIt(argv[0]);
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}