| /******************************************************************************* |
| * Copyright (c) 2001, 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 |
| * Jens Lukowski/Innoopract - initial renaming/restructuring |
| * |
| *******************************************************************************/ |
| package org.eclipse.wst.sse.core.internal.provisional.text; |
| |
| /** |
| * A ITextRegionCollection is a collection of ITextRegions. It is a structural |
| * unit, but a minimal one. For example, in might consist of a "start tag" but |
| * not a whole XML element. |
| */ |
| public interface IStructuredDocumentRegion extends ITextRegionCollection { |
| |
| /** |
| * Adds a text region to the end of the collection of regions contained by |
| * this region. It is the parsers responsibility to make sure its a |
| * correct region (that is, its start offset is one greater than previous |
| * regions end offset) |
| * |
| * For use by parsers and reparsers only. |
| */ |
| void addRegion(ITextRegion aRegion); |
| |
| /** |
| * Returns the structured document region that follows this one or null if |
| * at end of document. |
| * |
| * @return the structured document region that follows this one. |
| * |
| * ISSUE: for thread safety, this should be more restrictive. |
| */ |
| IStructuredDocumentRegion getNext(); |
| |
| /** |
| * Returns this regions parent document. |
| * |
| * @return this regions parent document. |
| */ |
| IStructuredDocument getParentDocument(); |
| |
| /** |
| * Returns the structured document region that preceeds this one or null |
| * if at beginning of document. |
| * |
| * @return the structured document region that follows this one. |
| * |
| * ISSUE: for thread safety, this should be more restrictive. |
| */ |
| IStructuredDocumentRegion getPrevious(); |
| |
| /** |
| * Returns true if this document has been deleted, and is no longer part |
| * of the actual structured document. This field can be used in |
| * multi-threaded operations, which may retrieve a long list of regions |
| * and be iterating through them at the same time the document is |
| * modified, and regions deleted. |
| * |
| * @return true if this region is no longer part of document. |
| */ |
| boolean isDeleted(); |
| |
| /** |
| * Returns true if this structured document region was ended "naturally" |
| * by syntactic rules, or if simply assumed to end so another could be |
| * started. |
| * |
| * @return true if region has syntactic end. |
| */ |
| boolean isEnded(); |
| |
| /** |
| * Tests is region is equal to this one, ignoring position offsets of |
| * shift. |
| * |
| * For use by parsers and reparsers only. |
| * |
| * @param region |
| * @param shift |
| * @return |
| */ |
| boolean sameAs(IStructuredDocumentRegion region, int shift); |
| |
| /** |
| * Tests if <code>oldRegion</code> is same as <code>newRegion</code>, |
| * ignoring position offsets of <code>shift</code>. |
| * |
| * ISSUE: which document region are old and new in? |
| * |
| * For use by parsers and reparsers only. |
| * |
| * @param oldRegion |
| * @param documentRegion |
| * @param newRegion |
| * @param shift |
| * @return |
| */ |
| boolean sameAs(ITextRegion oldRegion, IStructuredDocumentRegion documentRegion, ITextRegion newRegion, int shift); |
| |
| /** |
| * Set to true if/when this region is removed from a document, during the |
| * process of re-parsing. |
| * |
| * For use by parsers and reparsers only. |
| * |
| * @param deleted |
| */ |
| void setDeleted(boolean deleted); |
| |
| /** |
| * Set to true by parser/reparser if region deemed to end syntactically. |
| * |
| * For use by parsers and reparsers only. |
| * |
| * @param hasEnd |
| */ |
| void setEnded(boolean hasEnd); |
| |
| /** |
| * Sets length of region. |
| * |
| * For use by parsers and reparsers only. |
| */ |
| void setLength(int newLength); |
| |
| /** |
| * Assigns pointer to next region, or null if last region. |
| * |
| * For use by parsers and reparsers only. |
| */ |
| void setNext(IStructuredDocumentRegion newNext); |
| |
| /** |
| * Assigns parent documnet. |
| * |
| * For use by parsers and reparsers only. |
| */ |
| void setParentDocument(IStructuredDocument document); |
| |
| /** |
| * Assigns pointer to previous region, or null if first region. |
| * |
| * For use by parsers and reparsers only. |
| */ |
| void setPrevious(IStructuredDocumentRegion newPrevious); |
| |
| /** |
| * Sets start offset of region, relative to beginning of document. |
| * |
| * For use by parsers and reparsers only. |
| */ |
| void setStart(int newStart); |
| |
| |
| |
| } |