tracesrv/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/source/SourceLocationBase.java
changeset 56 aa2539c91954
parent 41 838cdffd57ce
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tracesrv/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/source/SourceLocationBase.java	Fri Oct 08 14:56:39 2010 +0300
@@ -0,0 +1,215 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+* Base class for locations
+*
+*/
+package com.nokia.tracecompiler.source;
+
+/**
+ * Base class for locations
+ * 
+ */
+public class SourceLocationBase {
+
+	/**
+	 * Source parser
+	 */
+	private SourceParser parser;
+
+	/**
+	 * Position abstraction
+	 */
+	private SourceLocationInterface position;
+
+	/**
+	 * Line number is cached and updated when changes occur
+	 */
+	private int currentLine = -1;
+
+	/**
+	 * Constructor
+	 * 
+	 * @param parser
+	 *            the source parser
+	 * @param offset
+	 *            the offset to the location
+	 */
+	protected SourceLocationBase(SourceParser parser, int offset) {
+		this.parser = parser;
+		position = parser.getDocumentFramework()
+				.createLocation(this, offset, 0);
+	}
+
+	/**
+	 * Constructor
+	 * 
+	 * @param parser
+	 *            the source parser
+	 * @param offset
+	 *            the offset to the location
+	 * @param length
+	 *            the location length
+	 */
+	protected SourceLocationBase(SourceParser parser, int offset, int length) {
+		this.parser = parser;
+		position = parser.getDocumentFramework().createLocation(this, offset,
+				length);
+	}
+
+	/**
+	 * Gets the offset
+	 * 
+	 * @return offset
+	 */
+	public final int getOffset() {
+		return position.getOffset();
+	}
+
+	/**
+	 * Sets the offset
+	 * 
+	 * @param offset
+	 *            new offset
+	 */
+	public final void setOffset(int offset) {
+		position.setOffset(offset);
+	}
+
+	/**
+	 * Gets the length
+	 * 
+	 * @return length
+	 */
+	public final int getLength() {
+		return position.getLength();
+	}
+
+	/**
+	 * Sets the length
+	 * 
+	 * @param length
+	 *            the length
+	 */
+	public final void setLength(int length) {
+		position.setLength(length);
+	}
+
+	/**
+	 * Returns deleted flag
+	 * 
+	 * @return the flag
+	 */
+	public final boolean isDeleted() {
+		return position.isDeleted();
+	}
+
+	/**
+	 * Sets the deleted flag
+	 */
+	public final void delete() {
+		position.delete();
+	}
+
+	/**
+	 * Gets the location interface
+	 * 
+	 * @return the location interface
+	 */
+	final SourceLocationInterface getLocation() {
+		return position;
+	}
+
+	/**
+	 * Gets the source parser
+	 * 
+	 * @return the parser
+	 */
+	public SourceParser getParser() {
+		return parser;
+	}
+
+	/**
+	 * Resets the source parser
+	 */
+	protected void resetParser() {
+		parser = null;
+	}
+
+	/**
+	 * Gets the line number of this location
+	 * 
+	 * @return line number
+	 */
+	public int getLineNumber() {
+		// Line number is set to -1 when notifyUpdate is called
+		if (parser != null) {
+			if (currentLine == -1) {
+				currentLine = parser.getLineNumber(getOffset());
+			}
+		} else {
+			currentLine = -1;
+		}
+		return currentLine;
+	}
+
+	/**
+	 * Resets the line number
+	 */
+	protected void resetLineNumber() {
+		currentLine = -1;
+	}
+
+	/**
+	 * Gets the source file name
+	 * 
+	 * @return the file name
+	 */
+	public String getFileName() {
+		String retval = null;
+		if (parser != null) {
+			SourceDocumentInterface owner = parser.getSource();
+			if (owner != null) {
+				SourcePropertyProvider propertyProvider = owner
+						.getPropertyProvider();
+				if (propertyProvider != null) {
+					retval = propertyProvider.getFileName();
+				}
+			}
+		}
+		return retval;
+	}
+
+	/**
+	 * Gets the source file path
+	 * 
+	 * @return the path
+	 */
+	public String getFilePath() {
+		String retval = null;
+		if (parser != null) {
+			SourceDocumentInterface owner = parser.getSource();
+			if (owner != null) {
+				SourcePropertyProvider propertyProvider = owner
+						.getPropertyProvider();
+				if (propertyProvider != null) {
+					retval = propertyProvider.getFilePath();
+				}
+			}
+		}
+		return retval;
+	}
+
+}