Changeset 15707


Ignore:
Timestamp:
06/06/23 06:39:04 (6 months ago)
Author:
Mark Evenson
Message:

Gray Streams now work much better

Implemented Java-side proxy in GrayStream?.java for a GRAY-STREAM
object which forwards various methods of Stream.java into the correct
CLOS code. Signal Lisp-side errors for any unimplemented
interfaces.

gray-streams: implement Stream._writeChars()

gray-streams: getCharPos() --> STREAM-LINE-COLUMN

Mark GrayStreams?.getOffset() as unimplemented.

gray-streams: fix _readChar() to use character value

gray-streams: fix _unreadChar() to return character value

gray-streams: implement _charReady() stub _byteReady()

gray-streams: wire getElementType() --> STREAM-ELEMENT-TYPE

gray-streams: rename from CLOS Proxy to Gray Stream

gray-streams: move the Gray Stream Java proxies to their own package

gray-streams: tweak compilation order for gray-streams-java

gray-streams: restore Lisp.getStandardOutput() check

gray-stream: restore checkCharacterOutputStream() in CaseFrobStream?

gray-streams: fix CaseFrobStream?()

Location:
trunk/abcl/src/org/armedbear/lisp
Files:
2 added
1 deleted
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/src/org/armedbear/lisp/BroadcastStream.java

    r15692 r15707  
    242242                if (s instanceof Stream) {
    243243                    if (s.isOutputStream()
    244                         || (s instanceof CLOSProxyStream)) {
     244                        || (s instanceof GrayStream)) {
    245245                        streams[i] = s;
    246246                        continue;
  • trunk/abcl/src/org/armedbear/lisp/CaseFrobStream.java

    r13440 r15707  
    4444    {
    4545        super(Symbol.CASE_FROB_STREAM);
    46         Debug.assertTrue(target.isCharacterOutputStream());
    4746        this.target = target;
    4847    }
  • trunk/abcl/src/org/armedbear/lisp/ConcatenatedStream.java

    r15692 r15707  
    257257                if (s instanceof Stream) {
    258258                    if (s.isInputStream()
    259                         || (s instanceof CLOSProxyStream)) {
     259                        || (s instanceof GrayStream)) {
    260260                            streams = new Cons(s, streams);
    261261                            continue;
  • trunk/abcl/src/org/armedbear/lisp/Lisp.java

    r15706 r15707  
    9090  public static final Package PACKAGE_SEQUENCE =
    9191    Packages.createPackage("SEQUENCE", 128); // EH 10-10-2010: Actual number 62
    92 
     92  public static final Package PACKAGE_GRAY_STREAMS_JAVA =
     93    Packages.createPackage("GRAY-STREAMS/JAVA");
    9394
    9495  @DocString(name="nil")
     
    138139    PACKAGE_PRECOMPILER.usePackage(PACKAGE_SYS);
    139140    PACKAGE_SEQUENCE.usePackage(PACKAGE_CL);
     141    PACKAGE_GRAY_STREAMS_JAVA.usePackage(PACKAGE_CL);
    140142  }
    141143
     
    17601762    }
    17611763    if (obj.typep(Symbol.STREAM).equal(T)) {
    1762       Stream result = new CLOSProxyStream(obj);
     1764      Stream result = GrayStream.findOrCreate(obj);
    17631765      return result;
    17641766    }
     
    18051807          if (obj instanceof Stream)
    18061808            return (Stream) obj;
     1809          if (obj instanceof StandardObject)
     1810            return checkStream(obj);
    18071811          if (obj == T)
    18081812            return checkCharacterOutputStream(Symbol.TERMINAL_IO.symbolValue());
     
    18181822    if (obj instanceof Stream)
    18191823      return (Stream) obj;
     1824    if (obj instanceof StandardObject)
     1825      return checkStream(obj);
    18201826    if (obj == T)
    18211827      return checkCharacterInputStream(Symbol.TERMINAL_IO.symbolValue());
     
    23762382    value = SynonymStream.OUT_SYNONYM_OF.execute(value);
    23772383    Stream result = checkStream(value);
    2378     if (!(result instanceof CLOSProxyStream)) {
    2379       return checkCharacterOutputStream(result);
    2380     }
    2381     return result;
     2384    return checkCharacterOutputStream(result);
    23822385  }
    23832386
  • trunk/abcl/src/org/armedbear/lisp/Stream.java

    r15702 r15707  
    441441
    442442    // Character input.
    443     public final int getLineNumber() {
     443    public int getLineNumber() {
    444444        return lineNumber;
    445445    }
     
    16991699    }
    17001700
     1701    /**
     1702     Emit a newline unless at character position zero
     1703     
     1704     Return T if newline was emitted, NIL otherwise
     1705    */
    17011706    public LispObject freshLine() {
    17021707        if (charPos == 0)
  • trunk/abcl/src/org/armedbear/lisp/TwoWayStream.java

    r15692 r15707  
    231231            final Stream out = checkStream(second);
    232232            if (!in.isInputStream()
    233                 && !(in instanceof CLOSProxyStream)) {
     233                && !(in instanceof GrayStream)) {
    234234                 return type_error(in, list(Symbol.SATISFIES,
    235235                                            Symbol.INPUT_STREAM_P));
    236236            }
    237237            if (!out.isOutputStream()
    238                 && !(out instanceof CLOSProxyStream)) {
     238                && !(out instanceof GrayStream)) {
    239239                return type_error(out, list(Symbol.SATISFIES,
    240240                                                  Symbol.OUTPUT_STREAM_P));
  • trunk/abcl/src/org/armedbear/lisp/autoloads.lisp

    r14126 r15707  
    4343
    4444
    45 
    46 
    4745(in-package "SYSTEM")
    48 
    4946
    5047;; This one must be last, or at least past print-object and clos:
  • trunk/abcl/src/org/armedbear/lisp/compile-system.lisp

    r15636 r15707  
    319319      (load (do-compile "destructuring-bind.lisp"))
    320320      (load (do-compile "featurep.lisp"))
     321      (load (do-compile "gray-streams.lisp"))
     322      (load (do-compile "gray-streams-java.lisp"))
    321323
    322324      ;; But not for these.
     
    376378                           "get-pid.lisp"
    377379                           "gentemp.lisp"
    378                            "gray-streams.lisp"
    379380                           "gui.lisp"
    380381                           "inline.lisp"
  • trunk/abcl/src/org/armedbear/lisp/gray-streams.lisp

    r15701 r15707  
    151151   "STREAM-WRITE-SEQUENCE"
    152152   "STREAM-FILE-POSITION"
     153   "STREAM-ELEMENT-TYPE"
    153154   "FUNDAMENTAL-BINARY-INPUT-STREAM"
    154155   "FUNDAMENTAL-BINARY-OUTPUT-STREAM"))
Note: See TracChangeset for help on using the changeset viewer.