package com.prezi.spaghetti.definition; import com.prezi.spaghetti.ast.ModuleNode; import java.util.SortedSet; /** * Stores the configuration of a parsed Spaghetti module and its dependencies. */ public interface ModuleConfiguration { /** * Returns the local module. * * @return the local module. */ ModuleNode getLocalModule(); /** * Returns direct dependencies of the local module. * * @return direct dependencies of the local module. */ SortedSet<EntityWithModuleMetaData<ModuleNode>> getDirectDependentModules(); /** * Returns transitive dependencies of the local module. * * @return transitive dependencies of the local module. */ SortedSet<EntityWithModuleMetaData<ModuleNode>> getTransitiveDependentModules(); /** * Returns all dependencies of the local module, including both direct and transitive dependencies. * * @return all dependencies of the local module. */ SortedSet<ModuleNode> getAllDependentModules(); /** * Returns all modules in the configuration, including the local module and its dependencies. */ SortedSet<ModuleNode> getAllModules(); }