/******************************************************************************* * Copyright (c) 2008 xored software, Inc. * * 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: * xored software, Inc. - initial API and Implementation (Alex Panchenko) *******************************************************************************/ package org.eclipse.dltk.core.builder; import org.eclipse.dltk.core.ISourceRange; import org.eclipse.dltk.core.SourceRange; public interface ISourceLineTracker { public static final ISourceRange NULL_RANGE = new SourceRange(0, 0); public static final int WRONG_OFFSET = 0; int getLength(); /** * Returns the line delimiter of the specified line. Returns * <code>null</code> if the line is not closed with a line delimiter. * * If the line number is invalid in this tracker's line structure then * <code>null</code> is returned * * @param line * the line whose line delimiter is queried * @return the line's delimiter or <code>null</code> if line does not have a * delimiter */ String getLineDelimiter(int line); /** * Returns the number of lines. * * @return the number of lines in this tracker's line structure */ int getNumberOfLines(); /** * Returns the position of the first character of the specified line. * * if the line is unknown to this tracker then <code>0</code> is returned * * @param line * the line of interest * @return offset of the first character of the line */ int getLineOffset(int line); /** * Returns length of the specified line including the line's delimiter. * * If line is unknown to this tracker <code>0</code> is returned * * @param line * the line of interest * @return the length of the line */ int getLineLength(int line); /** * Returns the line number the character at the given offset belongs to. * * if the offset is invalid in this tracker 0 is returned. * * @param offset * the offset whose line number to be determined * @return the number of the line the offset is on */ int getLineNumberOfOffset(int offset); /** * Returns a line description of the line at the given offset. The * description contains the start offset and the length of the line * excluding the line's delimiter. * * if offset is invalid in this tracker {@link #NULL_RANGE} is returned * * @param offset * the offset whose line should be described * @return a region describing the line */ ISourceRange getLineInformationOfOffset(int offset); /** * Returns a line description of the given line. The description contains * the start offset and the length of the line excluding the line's * delimiter. * * if line is unknown to this tracker {@link #NULL_RANGE} is returned * * @param line * the line that should be described * @return a region describing the line */ ISourceRange getLineInformation(int line); int[] getLineOffsets(); String[] getDelimeters(); }