123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- /* *******************************************************************
- * Copyright (c) 2003,2010 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
- * Andy Clement
- * ******************************************************************/
- package org.aspectj.asm;
-
- import java.io.Serializable;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Set;
-
- import org.aspectj.asm.internal.ProgramElement;
- import org.aspectj.bridge.ISourceLocation;
-
- /**
- * @author Mik Kersten
- * @author Andy Clement
- */
- public interface IHierarchy extends Serializable {
-
- public static final IProgramElement NO_STRUCTURE = new ProgramElement(null, "<build to view structure>",
- IProgramElement.Kind.ERROR, null);
-
- public IProgramElement getElement(String handle);
-
- public IProgramElement getRoot();
-
- public void setRoot(IProgramElement root);
-
- public void addToFileMap(String canonicalFilePath, IProgramElement compilationUnitProgramElement);
-
- public boolean removeFromFileMap(String canonicalFilePath);
-
- public void setFileMap(HashMap<String, IProgramElement> fileMap);
-
- public Object findInFileMap(Object key);
-
- public Set<Map.Entry<String, IProgramElement>> getFileMapEntrySet();
-
- public boolean isValid();
-
- public IProgramElement findElementForHandle(String handle);
-
- public IProgramElement findElementForHandleOrCreate(String handle, boolean create);
-
- /**
- * Returns the first match
- *
- * @param parent
- * @param kind not null
- * @return null if not found
- */
- public IProgramElement findElementForSignature(IProgramElement parent, IProgramElement.Kind kind, String signature);
-
- /**
- * Returns the first match
- *
- * @param parent
- * @param kind not null
- * @return null if not found
- */
- public IProgramElement findElementForLabel(IProgramElement parent, IProgramElement.Kind kind, String label);
-
- /**
- * @param packageName if null default package is searched
- * @param className can't be null
- */
- public IProgramElement findElementForType(String packageName, String typeName);
-
- /**
- * @param sourceFilePath modified to '/' delimited path for consistency
- * @return a new structure node for the file if it was not found in the model
- */
- public IProgramElement findElementForSourceFile(String sourceFile);
-
- /**
- * TODO: discriminate columns
- */
- public IProgramElement findElementForSourceLine(ISourceLocation location);
-
- /**
- * Never returns null
- *
- * @param sourceFilePath canonicalized path for consistency
- * @param lineNumber if 0 or 1 the corresponding file node will be returned
- * @return a new structure node for the file if it was not found in the model
- */
- public IProgramElement findElementForSourceLine(String sourceFilePath, int lineNumber);
-
- public IProgramElement findElementForOffSet(String sourceFilePath, int lineNumber, int offSet);
-
- public String getConfigFile();
-
- public void setConfigFile(String configFile);
-
- public void flushTypeMap();
-
- public void flushHandleMap();
-
- public void updateHandleMap(Set<String> deletedFiles);
-
- /**
- * For a specified node, check if any of the children more accurately represent the specified line.
- *
- * @param node where to start looking
- * @param lineno the line number
- * @return any closer match below 'node' or null if nothing is a more accurate match
- */
- public IProgramElement findCloserMatchForLineNumber(IProgramElement node, int lineno);
-
- /**
- * Discover the node representing a particular source file.
- *
- * @param node where in the model to start looking (usually the root on the initial call)
- * @param sourcefilePath the source file being searched for
- * @return the node representing that source file or null if it cannot be found
- */
- public IProgramElement findNodeForSourceFile(IProgramElement node, String sourcefilePath);
- }
|