/* * Copyright 2013 Guidewire Software, Inc. */ package gw.plugin.ij.lang.psi.api.statements.typedef; import com.intellij.psi.NavigatablePsiElement; import com.intellij.psi.PsiClass; import com.intellij.psi.impl.source.tree.LeafPsiElement; import com.intellij.util.ArrayFactory; import gw.plugin.ij.lang.psi.IGosuNamedElement; import gw.plugin.ij.lang.psi.IGosuPsiElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public interface IGosuTypeDefinition extends NavigatablePsiElement, PsiClass, IGosuPsiElement, IGosuNamedElement { String DEFAULT_BASE_CLASS_NAME = "gosu.lang.GosuObject"; IGosuTypeDefinition[] EMPTY_ARRAY = new IGosuTypeDefinition[0]; ArrayFactory<IGosuTypeDefinition> ARRAY_FACTORY = new ArrayFactory<IGosuTypeDefinition>() { @NotNull public IGosuTypeDefinition[] create(int count) { return count == 0 ? EMPTY_ARRAY : new IGosuTypeDefinition[count]; } }; String[] getSuperClassNames(); boolean isAnonymous(); boolean isEnhancement(); @Nullable IGosuReferenceList getExtendsClause(); @Nullable IGosuReferenceList getImplementsClause(); LeafPsiElement getGosuLBrace(); @Nullable LeafPsiElement getGosuRBrace(); }