|  | // 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 com.android.tools.r8.keepanno.annotations.KeepForApi; | 
|  | import com.android.tools.r8.origin.Origin; | 
|  |  | 
|  | /** | 
|  | * Base interface for application resources. | 
|  | * | 
|  | * <p>Resources are inputs to the compilation that are provided from outside sources, e.g., the | 
|  | * command-line interface or API clients such as gradle. Each resource has an associated {@link | 
|  | * Origin} which is some opaque description of where the resource comes from. The D8/R8 compiler | 
|  | * does not assume any particular structure of origin and does not rely on it for compilation. The | 
|  | * origin will be provided to diagnostics handlers so that they may detail what resource was cause | 
|  | * of some particular error. | 
|  | * | 
|  | * <p>The D8/R8 compilers uses default implementations for various file-system resources, but the | 
|  | * client is free to provide their own. | 
|  | */ | 
|  | @KeepForApi | 
|  | public interface Resource { | 
|  | /** | 
|  | * Get the origin of the resource. | 
|  | * | 
|  | * The origin is a description of where the resource originates from. The client is free to define | 
|  | * what that means for a particular resource. | 
|  | */ | 
|  | Origin getOrigin(); | 
|  | } |