package org.eclipse.dltk.tcl.core.extensions;
import java.util.Set;
import org.eclipse.dltk.ast.ASTNode;
import org.eclipse.dltk.ast.expressions.Expression;
import org.eclipse.dltk.ast.statements.Statement;
import org.eclipse.dltk.core.CompletionRequestor;
import org.eclipse.dltk.core.IModelElement;
import org.eclipse.dltk.tcl.ast.TclStatement;
import org.eclipse.dltk.tcl.internal.core.codeassist.TclCompletionEngine;
import org.eclipse.dltk.tcl.internal.core.codeassist.completion.CompletionOnKeywordArgumentOrFunctionArgument;
import org.eclipse.dltk.tcl.internal.core.codeassist.completion.CompletionOnKeywordOrFunction;
import org.eclipse.dltk.tcl.internal.core.codeassist.completion.CompletionOnVariable;
import org.eclipse.dltk.tcl.internal.core.codeassist.completion.TclCompletionParser;
public interface ICompletionExtension {
// This is completion parser features extension
boolean visit(Expression s, TclCompletionParser parser, int position);
boolean visit(Statement s, TclCompletionParser parser, int position);
// this is completion features extension
void completeOnKeywordOrFunction(CompletionOnKeywordOrFunction key,
ASTNode astNodeParent, TclCompletionEngine engine);
void completeOnKeywordArgumentsOne(String name, char[] token,
CompletionOnKeywordArgumentOrFunctionArgument compl,
Set methodNames, TclStatement st,
TclCompletionEngine tclCompletionEngine);
void setRequestor(CompletionRequestor requestor);
void completeOnVariables(CompletionOnVariable astNode,
TclCompletionEngine engine);
/**
* If filtered return false
*/
boolean modelFilter(Set completions, IModelElement modelElement);
}