package com.siberika.idea.pascal.lang.psi.impl; import com.intellij.openapi.util.Pair; import com.intellij.psi.SmartPsiElementPointer; import com.siberika.idea.pascal.lang.psi.PasEntityScope; import com.siberika.idea.pascal.lang.psi.PascalNamedElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; import java.util.List; /** * Author: George Bakhtadze * Date: 13/08/2015 */ public interface PascalModule extends PasEntityScope { enum ModuleType { UNIT, PROGRAM, LIBRARY, PACKAGE } ModuleType getModuleType(); @Nullable PasField getPublicField(final String name); @Nullable PasField getPrivateField(final String name); @NotNull Collection<PasField> getPrivateFields(); @NotNull Collection<PasField> getPubicFields(); List<SmartPsiElementPointer<PasEntityScope>> getPrivateUnits(); List<SmartPsiElementPointer<PasEntityScope>> getPublicUnits(); // Used in interface and implementation identifiers list Pair<List<PascalNamedElement>, List<PascalNamedElement>> getIdentsFrom(@NotNull String module); }