tracesrv/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/source/SourceLocationBase.java
--- /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;
+ }
+
+}