org.aspectj.asm.IElementHandleProvider Maven / Gradle / Ivy
/* *******************************************************************
* Copyright (c) 2003 Contributors.
* 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:
* Mik Kersten initial implementation
* ******************************************************************/
package org.aspectj.asm;
import java.io.File;
import org.aspectj.bridge.ISourceLocation;
/**
* Adapter used to uniquely identify program element handles. Can be implemented and overridden in @see{AsmManager} in order to
* provide IDE-specific mechanisms of identifying elements. For example, AJDT uses workspace-relative paths that are understood by
* its JavaCore class.
*
* @author Mik Kersten
*/
public interface IElementHandleProvider {
/**
* @return a String uniquely identifying this element
*/
public String createHandleIdentifier(ISourceLocation location);
/**
* @return a String uniquely identifying this element
*/
public String createHandleIdentifier(File sourceFile, int line, int column, int offset);
/**
* @return a String uniquely identifying this element
*/
public String createHandleIdentifier(IProgramElement ipe);
/**
* NOTE: this is necessary for the current implementation to look up nodes, but we may want to consider removing it.
*
* @return a String corresponding to the
*/
public String getFileForHandle(String handle);
/**
* NOTE: this is necessary for the current implementation to look up nodes, but we may want to consider removing it.
*
* @return the line number corresponding to this handel
*/
public int getLineNumberForHandle(String handle);
public int getOffSetForHandle(String handle);
/**
* Initializes handle provider state.
*
* The initializer is invoked when a new ASM is created on a full build.
*/
public void initialize();
}