| /******************************************************************************* |
| * Copyright (c) 2000, 2005 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.jdt.internal.ui.refactoring.nls.search; |
| |
| import java.io.BufferedReader; |
| import java.io.IOException; |
| import java.io.InputStream; |
| import java.io.InputStreamReader; |
| import java.io.Reader; |
| |
| |
| class LineReader extends Object { |
| protected static final int LF= '\n'; |
| protected static final int CR= '\r'; |
| |
| private BufferedReader fReader; |
| |
| protected int fPushbackChar; |
| protected boolean fPushback; |
| |
| public LineReader(InputStream in, String encoding) throws IOException { |
| this(new InputStreamReader(in, encoding)); |
| } |
| |
| public LineReader(Reader reader) { |
| fPushback= false; |
| fReader= new BufferedReader(reader); |
| } |
| |
| public int readLine(StringBuffer sb) throws IOException { |
| int ch= -1; |
| sb.setLength(0); |
| if (fPushback) { |
| ch= fPushbackChar; |
| fPushback= false; |
| } else |
| ch= fReader.read(); |
| while (ch >= 0) { |
| if (ch == LF) |
| return 1; |
| if (ch == CR) { |
| ch= fReader.read(); |
| if (ch == LF) |
| return 2; |
| else { |
| fPushbackChar= ch; |
| fPushback= true; |
| return 1; |
| } |
| } |
| sb.append((char) ch); |
| ch= fReader.read(); |
| } |
| return -1; |
| } |
| |
| public void close() throws IOException { |
| fReader.close(); |
| } |
| } |