paul@74 | 1 | #!/usr/bin/env python |
paul@74 | 2 | |
paul@88 | 3 | class InputStream(object): |
paul@88 | 4 | def __init__(self, stream): |
paul@88 | 5 | # NOTE: Python-only method. |
paul@88 | 6 | self.stream = stream |
paul@88 | 7 | def read___(self): |
paul@88 | 8 | s = self.stream.read(1) |
paul@88 | 9 | if s != "": |
paul@88 | 10 | return -1 |
paul@88 | 11 | else: |
paul@88 | 12 | return ord(s) |
paul@88 | 13 | def read____B__array_(self, b, off=0, length=None): |
paul@88 | 14 | if b is None: |
paul@88 | 15 | import java.lang |
paul@88 | 16 | raise java.lang.NullPointerException |
paul@88 | 17 | if len(b) == 0: |
paul@88 | 18 | return 0 |
paul@88 | 19 | if length is None: |
paul@88 | 20 | length = len(b) |
paul@88 | 21 | elif length + off > len(b): |
paul@88 | 22 | import java.lang |
paul@88 | 23 | raise java.lang.IndexOutOfBoundsException |
paul@88 | 24 | s = self.stream.read(length) |
paul@88 | 25 | if s == "": |
paul@88 | 26 | return -1 |
paul@88 | 27 | for i in range(0, length): |
paul@88 | 28 | b[i + off] = s[i] |
paul@88 | 29 | return len(s) |
paul@88 | 30 | read____B__array_____I_____I_ = read____B__array_ |
paul@88 | 31 | def skip(self, n): |
paul@88 | 32 | number = 0 |
paul@88 | 33 | for i in range(0, n): |
paul@88 | 34 | s = self.stream.read(1) |
paul@88 | 35 | if s == "": |
paul@88 | 36 | break |
paul@88 | 37 | number += 1 |
paul@88 | 38 | return number |
paul@88 | 39 | skip____L_ = skip |
paul@88 | 40 | def available(self): |
paul@88 | 41 | raise NotImplementedError, "available" |
paul@88 | 42 | available___ = available |
paul@88 | 43 | def close(self): |
paul@88 | 44 | self.stream.close() |
paul@88 | 45 | close___ = close |
paul@88 | 46 | def mark(self, readlimit): |
paul@88 | 47 | raise NotImplementedError, "mark" |
paul@88 | 48 | mark___ = mark |
paul@88 | 49 | def reset(self): |
paul@88 | 50 | raise NotImplementedError, "reset" |
paul@88 | 51 | reset___ = reset |
paul@88 | 52 | def markSupported(self): |
paul@88 | 53 | raise NotImplementedError, "markSupported" |
paul@88 | 54 | markSupported___ = markSupported |
paul@88 | 55 | |
paul@88 | 56 | class IOException(Exception): |
paul@88 | 57 | def __init__(self, *args): |
paul@88 | 58 | self.args = args |
paul@88 | 59 | |
paul@88 | 60 | setattr(IOException, "__init_____", IOException.__init__) |
paul@88 | 61 | setattr(IOException, "__init_____java__lang__String", IOException.__init__) |
paul@88 | 62 | |
paul@88 | 63 | class OutputStream(object): |
paul@88 | 64 | def write(self, b, *args): |
paul@88 | 65 | raise NotImplementedError, "write" |
paul@88 | 66 | write___java__lang__String = write |
paul@88 | 67 | def flush(self): |
paul@88 | 68 | raise NotImplementedError, "flush" |
paul@88 | 69 | flush___ = flush |
paul@88 | 70 | def close(self): |
paul@88 | 71 | raise NotImplementedError, "close" |
paul@88 | 72 | close___ = close |
paul@88 | 73 | |
paul@88 | 74 | class FilterOutputStream(OutputStream): |
paul@74 | 75 | def __init__(self, out): |
paul@74 | 76 | self.out = out |
paul@74 | 77 | def write(self, value, *args): |
paul@74 | 78 | if args: |
paul@74 | 79 | start, length = args |
paul@74 | 80 | self.out.write(value[start:start+length]) |
paul@74 | 81 | else: |
paul@74 | 82 | self.out.write(value) |
paul@80 | 83 | write___java__lang__String = write |
paul@80 | 84 | write___java__lang__String____I_____I_ = write |
paul@74 | 85 | def flush(self): |
paul@74 | 86 | self.out.flush() |
paul@80 | 87 | flush___ = flush |
paul@74 | 88 | def close(self): |
paul@74 | 89 | self.out.close() |
paul@80 | 90 | close___ = close |
paul@74 | 91 | |
paul@88 | 92 | setattr(FilterOutputStream, "__init_____java__io__OutputStream", FilterOutputStream.__init__) |
paul@88 | 93 | |
paul@88 | 94 | class PrintStream(FilterOutputStream): |
paul@88 | 95 | def init__out(self, out): |
paul@88 | 96 | FilterOutputStream.__init__(self, out) |
paul@88 | 97 | def init__out_autoFlush(self, out, autoFlush): |
paul@88 | 98 | FilterOutputStream.__init__(self, out) |
paul@88 | 99 | self.autoFlush = autoFlush |
paul@88 | 100 | def checkError(self): |
paul@88 | 101 | # NOTE: Implement properly. |
paul@88 | 102 | self.flush() |
paul@88 | 103 | checkError___ = checkError |
paul@74 | 104 | def close(self): |
paul@88 | 105 | self.flush() |
paul@88 | 106 | FilterOutputStream.close(self) |
paul@80 | 107 | close___ = close |
paul@88 | 108 | def flush(self): |
paul@88 | 109 | FilterOutputStream.flush(self) |
paul@88 | 110 | flush___ = flush |
paul@88 | 111 | def print_(self, obj): |
paul@88 | 112 | # NOTE: Check for arrays. |
paul@88 | 113 | if isinstance(obj, list): |
paul@88 | 114 | for i in obj: |
paul@88 | 115 | self.print_(i) |
paul@88 | 116 | else: |
paul@88 | 117 | # NOTE: Using Python string conversion. |
paul@88 | 118 | FilterOutputStream.write(self, unicode(obj)) |
paul@88 | 119 | print____Z_ = print_ |
paul@88 | 120 | print____C_ = print_ |
paul@88 | 121 | print____C__array_ = print_ |
paul@88 | 122 | print____D_ = print_ |
paul@88 | 123 | print____F_ = print_ |
paul@88 | 124 | print____I_ = print_ |
paul@88 | 125 | print____L_ = print_ |
paul@88 | 126 | print___java__lang__Object = print_ |
paul@88 | 127 | print___java__lang__String = print_ |
paul@74 | 128 | |
paul@88 | 129 | # NOTE: To be completed. |
paul@88 | 130 | |
paul@88 | 131 | setattr(PrintStream, "__init_____java__io__OutputStream", PrintStream.init__out) |
paul@88 | 132 | setattr(PrintStream, "__init_____java__io__OutputStream____Z_", PrintStream.init__out_autoFlush) |
paul@74 | 133 | |
paul@74 | 134 | # vim: tabstop=4 expandtab shiftwidth=4 |