package org.jetbrains.plugins.clojure.psi.api;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.impl.source.PsiFileWithStubSupport;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.clojure.psi.ClojurePsiElement;
import org.jetbrains.plugins.clojure.psi.api.defs.ClDef;
import org.jetbrains.plugins.clojure.psi.api.ns.ClNs;
import java.util.List;
/**
* @author ilyas
*/
public interface ClojureFile extends PsiFile, ClojurePsiElement, PsiFileWithStubSupport {
List<ClDef> getFileDefinitions();
boolean isClassDefiningFile();
@Nullable
String getNamespace();
@Nullable
ClNs getNamespaceElement();
@NotNull
ClNs findOrCreateNamespaceElement() throws IncorrectOperationException;
@NotNull
String getPackageName();
@Nullable
String getClassName();
PsiElement setClassName(@NonNls String s);
@Nullable
PsiClass getDefinedClass();
void setNamespace(String newNs);
@Nullable
String getNamespacePrefix();
@Nullable
String getNamespaceSuffix();
}