blob: e62695168374b60fc2a8e3cd29fe225ef04ab7da [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2003 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jface.text.source;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IRegion;
/**
* A character pair matcher finds to a character at a certain document offset the matching peer character.
* It is the matchers responsibility to define the concepts of "matching" and "peer". The matching process
* starts at a given offset. Starting of this offset, the matcher chooses a character close to this offset. The
* anchor defines whether the chosen character is left or right of the initial offset. The matcher then searches
* for the matching peer character of the chosen character and if it finds one, delivers the minimal region of
* the document that contains both characters.
*
* @since 2.1
*/
public interface ICharacterPairMatcher {
/**
* Indicates the anchor value "right".
*/
int RIGHT= 0;
/**
* Indicates the anchor value "left".
*/
int LEFT= 1;
/**
* Disposes this pair matcher.
*/
void dispose();
/**
* Clears this pair matcher. I.e. the matcher throws away all state it might
* remember and prepares itself for a new call of the <code>match</code>
* method.
*/
void clear();
/**
* Starting at the given offset, the matcher chooses a character close to this offset.
* The matcher then searches for the matching peer character of the chosen character
* and if it finds one, returns the minimal region of the document that contains both characters.
* It returns <code>null</code> if there is no peer character.
*
* @param iDocument the document to work on
* @param i the start offset
* @return the minimal region containg the peer characters
*/
IRegion match(IDocument iDocument, int i);
/**
* Returns the anchor for the region of the matching peer characters. The anchor
* says whether the character that has been chosen to search for its peer character
* has been left or right of the initial offset.
*
* @return <code>RIGHT</code> or <code>LEFT</code>
*/
int getAnchor();
}