reformat benchmark source codes to meet the requirements of the annotation generation.
[IRC.git] / Robust / src / ClassLibrary / SSJavaInfer / FileOutputStream.java
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/FileOutputStream.java b/Robust/src/ClassLibrary/SSJavaInfer/FileOutputStream.java
new file mode 100644 (file)
index 0000000..d7ffa87
--- /dev/null
@@ -0,0 +1,67 @@
+//import java.io.FileDescriptor;
+
+public class FileOutputStream extends OutputStream {
+  private int fd;
+
+  public FileOutputStream(String pathname) {
+    fd = nativeOpen(pathname.getBytes());
+  }
+
+  public FileOutputStream(String pathname, boolean append) {
+    if (append)
+      fd = nativeAppend(pathname.getBytes());
+    else
+      fd = nativeOpen(pathname.getBytes());
+  }
+
+  public FileOutputStream(String pathname, int mode) {
+    if (mode == 0)
+      fd = nativeAppend(pathname.getBytes());
+    if (mode == 1)
+      fd = nativeOpen(pathname.getBytes());
+  }
+
+  public FileOutputStream(File path) {
+    fd = nativeOpen(path.getPath().getBytes());
+  }
+
+  public FileOutputStreamOpen(String pathname) {
+    fd = nativeOpen(pathname.getBytes());
+  }
+
+  public FileOutputStream(FileDescriptor fdObj) {
+    fd = nativeOpen(fdObj.channel.getBytes());
+  }
+
+  private static native int nativeOpen(byte[] filename);
+
+  private static native int nativeAppend(byte[] filename);
+
+  private static native void nativeWrite(int fd, byte[] array, int off, int len);
+
+  private static native void nativeClose(int fd);
+
+  private static native void nativeFlush(int fd);
+
+  public void write(int ch) {
+    byte b[] = new byte[1];
+    b[0] = (byte) ch;
+    write(b);
+  }
+
+  public void write(byte[] b) {
+    nativeWrite(fd, b, 0, b.length);
+  }
+
+  public void write(byte[] b, int index, int len) {
+    nativeWrite(fd, b, index, len);
+  }
+
+  public void flush() {
+    nativeFlush(fd);
+  }
+
+  public void close() {
+    nativeClose(fd);
+  }
+}