1 package gnu.jemacs.swing; 2 import gnu.jemacs.buffer.*; 3 import gnu.mapping.*; 4 import java.io.*; 5 import gnu.lists.CharBuffer; 6 7 public class MarkerReader extends InPort 8 { 9 Marker marker; 10 CharBuffer content; 11 12 public MarkerReader(Buffer buffer) 13 { 14 this(buffer, buffer.pointMarker); 15 } 16 17 public MarkerReader(Marker marker) 18 { 19 this(marker.getBuffer(), marker); 20 } 21 22 MarkerReader(Buffer buffer, Marker marker) 23 { 24 super(gnu.text.NullReader.nullReader, buffer.getName()); 25 this.marker = marker; 26 content = ((gnu.jemacs.swing.SwingBuffer) buffer).content.buffer; 27 this.buffer = content.getArray(); 28 } 29 30 public int read() 31 { 32 int offset = marker.getOffset(); 33 buffer = content.getArray(); 34 if (offset >= content.gapStart) 35 offset += content.gapEnd - content.gapStart; 36 int length = buffer.length; 37 pos = offset; 38 if (offset >= length) 39 { 40 limit = offset; 41 return -1; 42 } 43 else 44 { 45 int ch = buffer[pos]; 46 pos++; 47 limit = pos; 48 return ch; 49 } 50 } 51 52 public int getLineNumber () 53 { 54 throw new Error ("MarkerReader. getLineNumber - not implemented"); 55 } 56 57 public int getColumnNumber () 58 { 59 throw new Error ("MarkerReader,getColumnNumber - not implemented"); 60 } 61 62 public void reset () throws IOException 63 { 64 throw new Error ("MarkerReader.reset - not implemented"); 65 } 66 67 } 68 69 | Popular Tags |