// Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

package com.google.dart.compiler;

import java.io.IOException;

/**
 * Abstract interface to library source.
 * 
 * TODO(jgw): Consider requiring implementors to intern LibrarySource instances so that users can
 * depend upon reference equality to avoid cycles (or require them to use .equals()). As it is,
 * there are two pieces of code in {@link DartCompiler} that do this manually, and it's a little
 * tricky.
 */
public interface LibrarySource extends Source {

  /**
   * Answer the {@link LibrarySource} for the path specified in the receiver's
   * imports declaration
   *
   * @param relPath path to the {@link LibrarySource} relative to the receiver
   * @return the dart source or <code>null</code> if could not be found
   */
  LibrarySource getImportFor(String relPath) throws IOException;

  /**
   * Answer the {@link DartSource} for the path specified in the receiver's
   * sources declaration
   *
   * @param relPath the path to the {@link DartSource} relative to the receiver
   * @return the dart source or <code>null</code> if could not be found
   */
  DartSource getSourceFor(String relPath);
}
