Changeset 4096


Ignore:
Timestamp:
09/28/03 14:16:05 (19 years ago)
Author:
piso
Message:

New implementation.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/StringInputStream.java

    r4085 r4096  
    33 *
    44 * Copyright (C) 2003 Peter Graves
    5  * $Id: StringInputStream.java,v 1.2 2003-09-27 19:23:56 piso Exp $
     5 * $Id: StringInputStream.java,v 1.3 2003-09-28 14:16:05 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    2424public final class StringInputStream extends CharacterInputStream
    2525{
     26    final String s;
     27    final int start;
     28    final int end;
     29
    2630    public StringInputStream(String s)
    2731    {
    28         super(s);
     32        this(s, 0, s.length());
     33    }
     34
     35    public StringInputStream(String s, int start)
     36    {
     37        this(s, start, s.length());
     38    }
     39
     40    public StringInputStream(String s, int start, int end)
     41    {
     42        this.s = s;
     43        this.start = start;
     44        this.end = end;
     45    }
     46
     47    protected int read()
     48    {
     49        if (offset >= end)
     50            return -1;
     51        int n = s.charAt(offset);
     52        ++offset;
     53        if (n == '\n')
     54            ++lineNumber;
     55        return n;
     56    }
     57
     58    protected void unread(int n)
     59    {
     60        if (offset > start) {
     61            --offset;
     62            if (n == '\n')
     63                --lineNumber;
     64        }
     65    }
     66
     67    protected boolean ready()
     68    {
     69        return true;
    2970    }
    3071
Note: See TracChangeset for help on using the changeset viewer.