/* * Copyright (c) 2012, the Dart project authors. * * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.eclipse.org/legal/epl-v10.html * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package com.google.dart.engine.element; /** * The interface {@code LibraryElement} defines the behavior of elements representing a library. * * @coverage dart.engine.element */ public interface LibraryElement extends Element { /** * Return the compilation unit that defines this library. * * @return the compilation unit that defines this library */ public CompilationUnitElement getDefiningCompilationUnit(); /** * Return the entry point for this library, or {@code null} if this library does not have an entry * point. The entry point is defined to be a zero argument top-level function whose name is * {@code main}. * * @return the entry point for this library */ public FunctionElement getEntryPoint(); /** * Return an array containing all of the libraries that are exported from this library. * * @return an array containing all of the libraries that are exported from this library */ public LibraryElement[] getExportedLibraries(); /** * Return an array containing all of the exports defined in this library. * * @return the exports defined in this library */ public ExportElement[] getExports(); /** * Return an array containing all of the libraries that are imported into this library. This * includes all of the libraries that are imported using a prefix (also available through the * prefixes returned by {@link #getPrefixes()}) and those that are imported without a prefix. * * @return an array containing all of the libraries that are imported into this library */ public LibraryElement[] getImportedLibraries(); /** * Return an array containing all of the imports defined in this library. * * @return the imports defined in this library */ public ImportElement[] getImports(); /** * Return an array containing all of the imports that share the given prefix, or an empty array if * there are no such imports. * * @param prefixElement the prefix element shared by the returned imports */ public ImportElement[] getImportsWithPrefix(PrefixElement prefixElement); /** * Return the element representing the synthetic function {@code loadLibrary} that is implicitly * defined for this library if the library is imported using a deferred import. */ public FunctionElement getLoadLibraryFunction(); /** * Return an array containing all of the compilation units that are included in this library using * a {@code part} directive. This does not include the defining compilation unit that contains the * {@code part} directives. * * @return the compilation units that are included in this library */ public CompilationUnitElement[] getParts(); /** * Return an array containing elements for each of the prefixes used to {@code import} libraries * into this library. Each prefix can be used in more than one {@code import} directive. * * @return the prefixes used to {@code import} libraries into this library */ public PrefixElement[] getPrefixes(); /** * Return the class defined in this library that has the given name, or {@code null} if this * library does not define a class with the given name. * * @param className the name of the class to be returned * @return the class with the given name that is defined in this library */ public ClassElement getType(String className); /** * Return an array containing all of the compilation units this library consists of. This includes * the defining compilation unit and units included using the {@code part} directive. * * @return the compilation units this library consists of */ public CompilationUnitElement[] getUnits(); /** * Return an array containing all directly and indirectly imported libraries. * * @return all directly and indirectly imported libraries */ public LibraryElement[] getVisibleLibraries(); /** * Return {@code true} if the defining compilation unit of this library contains at least one * import directive whose URI uses the "dart-ext" scheme. */ public boolean hasExtUri(); /** * Return {@code true} if this library defines a top-level function named {@code loadLibrary}. * * @return {@code true} if this library defines a top-level function named {@code loadLibrary} */ public boolean hasLoadLibraryFunction(); /** * Return {@code true} if this library is created for Angular analysis. If this library has not * yet had toolkit references resolved, then {@code false} will be returned. * * @return {@code true} if this library is created for Angular analysis */ public boolean isAngularHtml(); /** * Return {@code true} if this library is an application that can be run in the browser. * * @return {@code true} if this library is an application that can be run in the browser */ public boolean isBrowserApplication(); /** * Return {@code true} if this library is the dart:core library. * * @return {@code true} if this library is the dart:core library */ public boolean isDartCore(); /** * Return {@code true} if this library is the dart:core library. * * @return {@code true} if this library is the dart:core library */ public boolean isInSdk(); /** * Return {@code true} if this library is up to date with respect to the given time stamp. If any * transitively referenced Source is newer than the time stamp, this method returns false. * * @param timeStamp the time stamp to compare against * @return {@code true} if this library is up to date with respect to the given time stamp */ public boolean isUpToDate(long timeStamp); }