blob: db0a9f86d2d64a402a2972e0282035b999d9c835 [file] [log] [blame]
// Copyright (c) 2017, the R8 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.android.tools.r8;
import java.util.Set;
/**
* Program resource provider for program resources of class-file kind.
*
* <p>Note that the classes are generally lazily requested and the corresponding class structures
* only created on-demand when they are needed by the compiler. If never needed, the resource will
* never be loaded.
*/
@KeepForSubclassing
public interface ClassFileResourceProvider {
/**
* Get the set of all class descriptors that can be provided.
*
* <p>For user program classes (eg, not class-path or library resources), this set must be
* defined.
*
* @return Set of all class descriptors that can be provided or null if the set is unknown.
*/
Set<String> getClassDescriptors();
/**
* Get the program resource associated with the descriptor, or null if this provider does not have
* a resource for the descriptor.
*
* <p>Method may be called several times for the same resource, and should support concurrent
* calls from different threads.
*/
ProgramResource getProgramResource(String descriptor);
}