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)
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)
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
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);
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);
}
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();
}
+
--- /dev/null
+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);
+}
--- /dev/null
+package jmate.lang;
+
+import jmate.io.*;
+
+public class System {
+ public static jmate.io.PrintStream out = new jmate.io.PrintStream();
+}