javaclass

Changeset

88:6837caf38a99
2004-12-14 Paul Boddie raw files shortlog changelog graph Added some real behaviour to InputStream and added stream classes of use for java.lang.System.
java/io.py (file)
     1.1 --- a/java/io.py	Fri Dec 10 01:27:38 2004 +0100
     1.2 +++ b/java/io.py	Tue Dec 14 01:34:44 2004 +0100
     1.3 @@ -1,6 +1,77 @@
     1.4  #!/usr/bin/env python
     1.5  
     1.6 -class FilterOutputStream:
     1.7 +class InputStream(object):
     1.8 +    def __init__(self, stream):
     1.9 +        # NOTE: Python-only method.
    1.10 +        self.stream = stream
    1.11 +    def read___(self):
    1.12 +        s = self.stream.read(1)
    1.13 +        if s != "":
    1.14 +            return -1
    1.15 +        else:
    1.16 +            return ord(s)
    1.17 +    def read____B__array_(self, b, off=0, length=None):
    1.18 +        if b is None:
    1.19 +            import java.lang
    1.20 +            raise java.lang.NullPointerException
    1.21 +        if len(b) == 0:
    1.22 +            return 0
    1.23 +        if length is None:
    1.24 +            length = len(b)
    1.25 +        elif length + off > len(b):
    1.26 +            import java.lang
    1.27 +            raise java.lang.IndexOutOfBoundsException
    1.28 +        s = self.stream.read(length)
    1.29 +        if s == "":
    1.30 +            return -1
    1.31 +        for i in range(0, length):
    1.32 +            b[i + off] = s[i]
    1.33 +        return len(s)
    1.34 +    read____B__array_____I_____I_ = read____B__array_ 
    1.35 +    def skip(self, n):
    1.36 +        number = 0
    1.37 +        for i in range(0, n):
    1.38 +            s = self.stream.read(1)
    1.39 +            if s == "":
    1.40 +                break
    1.41 +            number += 1
    1.42 +        return number
    1.43 +    skip____L_ = skip
    1.44 +    def available(self):
    1.45 +        raise NotImplementedError, "available"
    1.46 +    available___ = available
    1.47 +    def close(self):
    1.48 +        self.stream.close()
    1.49 +    close___ = close
    1.50 +    def mark(self, readlimit):
    1.51 +        raise NotImplementedError, "mark"
    1.52 +    mark___ = mark
    1.53 +    def reset(self):
    1.54 +        raise NotImplementedError, "reset"
    1.55 +    reset___ = reset
    1.56 +    def markSupported(self):
    1.57 +        raise NotImplementedError, "markSupported"
    1.58 +    markSupported___ = markSupported
    1.59 +
    1.60 +class IOException(Exception):
    1.61 +    def __init__(self, *args):
    1.62 +        self.args = args
    1.63 +
    1.64 +setattr(IOException, "__init_____", IOException.__init__)
    1.65 +setattr(IOException, "__init_____java__lang__String", IOException.__init__)
    1.66 +
    1.67 +class OutputStream(object):
    1.68 +    def write(self, b, *args):
    1.69 +        raise NotImplementedError, "write"
    1.70 +    write___java__lang__String = write
    1.71 +    def flush(self):
    1.72 +        raise NotImplementedError, "flush"
    1.73 +    flush___ = flush
    1.74 +    def close(self):
    1.75 +        raise NotImplementedError, "close"
    1.76 +    close___ = close
    1.77 +
    1.78 +class FilterOutputStream(OutputStream):
    1.79      def __init__(self, out):
    1.80          self.out = out
    1.81      def write(self, value, *args):
    1.82 @@ -18,38 +89,46 @@
    1.83          self.out.close()
    1.84      close___ = close
    1.85  
    1.86 -class InputStream:
    1.87 -    def read(self, *args):
    1.88 -        raise NotImplementedError, "read"
    1.89 -    read___ = read
    1.90 -    def skip(self, n):
    1.91 -        raise NotImplementedError, "skip"
    1.92 -    skip___int = skip
    1.93 -    def available(self):
    1.94 -        raise NotImplementedError, "available"
    1.95 -    available___ = available
    1.96 +setattr(FilterOutputStream, "__init_____java__io__OutputStream", FilterOutputStream.__init__)
    1.97 +
    1.98 +class PrintStream(FilterOutputStream):
    1.99 +    def init__out(self, out):
   1.100 +        FilterOutputStream.__init__(self, out)
   1.101 +    def init__out_autoFlush(self, out, autoFlush):
   1.102 +        FilterOutputStream.__init__(self, out)
   1.103 +        self.autoFlush = autoFlush
   1.104 +    def checkError(self):
   1.105 +        # NOTE: Implement properly.
   1.106 +        self.flush()
   1.107 +    checkError___ = checkError
   1.108      def close(self):
   1.109 -        raise NotImplementedError, "close"
   1.110 +        self.flush()
   1.111 +        FilterOutputStream.close(self)
   1.112      close___ = close
   1.113 -    def mark(self, readlimit):
   1.114 -        raise NotImplementedError, "mark"
   1.115 -    mark___ = mark
   1.116 -    def reset(self):
   1.117 -        raise NotImplementedError, "reset"
   1.118 -    reset___ = reset
   1.119 -    def markSupported(self):
   1.120 -        raise NotImplementedError, "markSupported"
   1.121 -    markSupported___ = markSupported
   1.122 +    def flush(self):
   1.123 +        FilterOutputStream.flush(self)
   1.124 +    flush___ = flush
   1.125 +    def print_(self, obj):
   1.126 +        # NOTE: Check for arrays.
   1.127 +        if isinstance(obj, list):
   1.128 +            for i in obj:
   1.129 +                self.print_(i)
   1.130 +        else:
   1.131 +            # NOTE: Using Python string conversion.
   1.132 +            FilterOutputStream.write(self, unicode(obj))
   1.133 +    print____Z_ = print_
   1.134 +    print____C_ = print_
   1.135 +    print____C__array_ = print_
   1.136 +    print____D_ = print_
   1.137 +    print____F_ = print_
   1.138 +    print____I_ = print_
   1.139 +    print____L_ = print_
   1.140 +    print___java__lang__Object = print_
   1.141 +    print___java__lang__String = print_
   1.142  
   1.143 -class OutputStream:
   1.144 -    def write(self, b, *args):
   1.145 -        raise NotImplementedError, "write"
   1.146 -    write___java__lang__String = write
   1.147 -    def flush(self):
   1.148 -        raise NotImplementedError, "flush"
   1.149 -    flush___ = flush
   1.150 -    def close(self):
   1.151 -        raise NotImplementedError, "close"
   1.152 -    close___ = close
   1.153 +    # NOTE: To be completed.
   1.154 +
   1.155 +setattr(PrintStream, "__init_____java__io__OutputStream", PrintStream.init__out)
   1.156 +setattr(PrintStream, "__init_____java__io__OutputStream____Z_", PrintStream.init__out_autoFlush)
   1.157  
   1.158  # vim: tabstop=4 expandtab shiftwidth=4