From 6e6629e8116619ad3c996b88067bb4df835ddaaf Mon Sep 17 00:00:00 2001 From: Bernhard Urban Date: Tue, 19 Jun 2012 22:11:17 +0200 Subject: [PATCH] add package jmate avoid name clashes when using GNU classpath. should be useful for debugging classpath code. at the end of the day, we should remove `java/' and maybe `jmate/' --- Makefile | 6 ++++-- ffi/native.c | 12 ++++++------ java/io/PrintStream.java | 30 +++++------------------------- java/lang/System.java | 5 ++--- jmate/io/PrintStream.java | 35 +++++++++++++++++++++++++++++++++++ jmate/lang/System.java | 7 +++++++ 6 files changed, 59 insertions(+), 36 deletions(-) create mode 100644 jmate/io/PrintStream.java create mode 100644 jmate/lang/System.java diff --git a/Makefile b/Makefile index 41d3ee5..10e80bb 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ SHELL := bash JAVAC := javac -JAVA_FILES := $(wildcard java/lang/*.java java/io/*.java) +JAVA_FILES := $(wildcard jmate/lang/*.java jmate/io/*.java java/lang/*.java java/io/*.java) CLASS_FILES := $(JAVA_FILES:.java=.class) TEST_JAVA_FILES := $(wildcard tests/*.java) TEST_CLASS_FILES := $(TEST_JAVA_FILES:.java=.test) @@ -60,7 +60,9 @@ mate.dbg: Mate.hs ffi/trap.c $(HS_FILES) $(HS_BOOT) ffi/native.o ghc --make $(DEBUGFLAGS) $(GHC_OPT) Mate.hs build/debug/ffi/trap.o -o $@ $(GHC_LD) -outputdir build/debug clean: - rm -rf build mate mate.dbg ffi/native.o tests/*.class Mate/*_stub.* + rm -rf build mate mate.dbg ffi/native.o tests/*.class Mate/*_stub.* \ + jmate/lang/*.class jmate/io/*.class java/io/*.class \ + java/lang/{Integer,Character,String,System}.class ghci: mate ghci $(PACKAGES) $(O_FILES) Mate.hs $(GHC_LD) diff --git a/ffi/native.c b/ffi/native.c index d143914..7374405 100644 --- a/ffi/native.c +++ b/ffi/native.c @@ -61,13 +61,13 @@ struct chararray { char str; }; -void java_io_PrintStream__printf_0___Ljava_lang_String__V +void jmate_io_PrintStream__printf_0___Ljava_lang_String__V (struct string *fmt) { printf("%s", &fmt->value->str); } -void java_io_PrintStream__printf_1___Ljava_lang_String_Ljava_lang_Object__V +void jmate_io_PrintStream__printf_1___Ljava_lang_String_Ljava_lang_Object__V (struct integer *a1, struct string *fmt) { #if 0 @@ -80,26 +80,26 @@ void java_io_PrintStream__printf_1___Ljava_lang_String_Ljava_lang_Object__V printf(&fmt->value->str, a1->value); } -void java_io_PrintStream__printf_2___Ljava_lang_String_Ljava_lang_Object_Ljava_lang_Object__V +void jmate_io_PrintStream__printf_2___Ljava_lang_String_Ljava_lang_Object_Ljava_lang_Object__V (struct integer *a2, struct integer *a1, struct string *fmt) { printf(&fmt->value->str, a1->value, a2->value); } void -java_io_PrintStream__printf_3___Ljava_lang_String_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object__V +jmate_io_PrintStream__printf_3___Ljava_lang_String_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object__V (struct integer *a3, struct integer *a2, struct integer *a1, struct string *fmt) { printf(&fmt->value->str, a1->value, a2->value, a3->value); } -void java_io_PrintStream__printf_4___Ljava_lang_String_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object__V +void jmate_io_PrintStream__printf_4___Ljava_lang_String_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object__V (struct integer *a4, struct integer *a3, struct integer *a2, struct integer *a1, struct string *fmt) { printf(&fmt->value->str, a1->value, a2->value, a3->value, a4->value); } -void java_io_PrintStream__printf_5___Ljava_lang_String_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object__V +void jmate_io_PrintStream__printf_5___Ljava_lang_String_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object__V (struct integer *a5, struct integer *a4, struct integer *a3, struct integer *a2, struct integer *a1, struct string *fmt) { printf(&fmt->value->str, a1->value, a2->value, a3->value, a4->value, a5->value); diff --git a/java/io/PrintStream.java b/java/io/PrintStream.java index ff36089..25398ef 100644 --- a/java/io/PrintStream.java +++ b/java/io/PrintStream.java @@ -1,35 +1,15 @@ package java.io; +import jmate.io.*; + public class PrintStream { public void println(String a) { - // TODO: `a + "\n"' when StringBuilder is available - printf(a); - printf("\n"); + new jmate.io.PrintStream().println(a); } public PrintStream printf(String format, Object... args) { - /* temporary workaround ;-) */ - int len = args.length; - if (len == 0) { - this.printf_0(format); - } else if (len == 1) { - this.printf_1(format, args[0]); - } else if (len == 2) { - this.printf_2(format, args[0], args[1]); - } else if (len == 3) { - this.printf_3(format, args[0], args[1], args[2]); - } else if (len == 4) { - this.printf_4(format, args[0], args[1], args[2], args[3]); - } else if (len == 5) { - this.printf_5(format, args[0], args[1], args[2], args[3], args[4]); - } + /* TODO ... */ + new jmate.io.PrintStream().printf(format, args); return this; } - - public native void printf_0(String a); - public native void printf_1(String a, Object b); - public native void printf_2(String a, Object b, Object c); - public native void printf_3(String a, Object b, Object c, Object d); - public native void printf_4(String a, Object b, Object c, Object d, Object e); - public native void printf_5(String a, Object b, Object c, Object d, Object e, Object f); } diff --git a/java/lang/System.java b/java/lang/System.java index 38b62dd..8971f48 100644 --- a/java/lang/System.java +++ b/java/lang/System.java @@ -1,7 +1,6 @@ package java.lang; -import java.io.*; - public class System { - public static PrintStream out = new PrintStream(); + public static java.io.PrintStream out = new java.io.PrintStream(); } + diff --git a/jmate/io/PrintStream.java b/jmate/io/PrintStream.java new file mode 100644 index 0000000..25c6d4f --- /dev/null +++ b/jmate/io/PrintStream.java @@ -0,0 +1,35 @@ +package jmate.io; + +public class PrintStream { + public void println(String a) { + // TODO: `a + "\n"' when StringBuilder is available + printf(a); + printf("\n"); + } + + public PrintStream printf(String format, Object... args) { + /* temporary workaround ;-) */ + int len = args.length; + if (len == 0) { + this.printf_0(format); + } else if (len == 1) { + this.printf_1(format, args[0]); + } else if (len == 2) { + this.printf_2(format, args[0], args[1]); + } else if (len == 3) { + this.printf_3(format, args[0], args[1], args[2]); + } else if (len == 4) { + this.printf_4(format, args[0], args[1], args[2], args[3]); + } else if (len == 5) { + this.printf_5(format, args[0], args[1], args[2], args[3], args[4]); + } + return this; + } + + public native void printf_0(String a); + public native void printf_1(String a, Object b); + public native void printf_2(String a, Object b, Object c); + public native void printf_3(String a, Object b, Object c, Object d); + public native void printf_4(String a, Object b, Object c, Object d, Object e); + public native void printf_5(String a, Object b, Object c, Object d, Object e, Object f); +} diff --git a/jmate/lang/System.java b/jmate/lang/System.java new file mode 100644 index 0000000..2ca58da --- /dev/null +++ b/jmate/lang/System.java @@ -0,0 +1,7 @@ +package jmate.lang; + +import jmate.io.*; + +public class System { + public static jmate.io.PrintStream out = new jmate.io.PrintStream(); +} -- 2.25.1