/**
* Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
/*
* Created on Sep 23, 2006
* @author Fabio
*/
package org.python.pydev.core;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.python.pydev.core.structure.FastStack;
public interface ILocalScope {
/**
* Checks if this scope is an outer scope of the scope passed as a param (s).
* Or if it is the same scope.
*/
public boolean isOuterOrSameScope(ILocalScope s);
/**
* @return all the local tokens found
*/
public IToken[] getAllLocalTokens();
/**
* @param endLine tokens will only be recognized if its beginLine is higher than this parameter.
*/
public IToken[] getLocalTokens(int endLine, int col, boolean onlyArgs);
/**
* @param line: starts at 1
* @param col: starts at 1
* @return the modules that are imported in the current (local) scope as tokens
*/
public List<IToken> getLocalImportedModules(int line, int col, String moduleName);
/**
* @return whether the last element found in this scope is a class definition
*/
public boolean isLastClassDef();
/**
* @return the scope stack with simple nodes
* @note SimpleNode is not declared because we only have it in the parser (and not in the local scope)
*/
public FastStack /*<SimpleNode>*/getScopeStack();
/**
* @return the list of tokens that are part of the interface for some local variable.
* E.g.:
*
* foo.bar
* foo.kkk
*
* a token for 'bar' and a token for 'kkk' will be returned
*/
public Collection<IToken> getInterfaceForLocal(String activationToken);
/**
* @return Iterator for the nodes in the scope (starting with the last to the first -- or from the inner to the outer)
*/
public Iterator /*<SimpleNode>*/iterator();
/**
* @return the class definition found previously in the scope
*/
public Object /*ClassDef*/getClassDef();
public int getScopeEndLine();
public int getIfMainLine();
public void setIfMainLine(int original);
public void setScopeEndLine(int beginLine);
/**
* @param activationToken the activation token we're looking for.
*
* @return a list of Strings with the new activation token that we should look for instead of the old activation token
* if we're able to find an assert isinstance(xxx, SomeClass) -- which in this case would return SomeClass.
* Or null if it's not able to find such a statement.
*/
public List<String> getPossibleClassesForActivationToken(String activationToken);
}