|  | // Copyright (c) 2023, 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; | 
|  |  | 
|  | /** Information present in a given marker. */ | 
|  | @KeepForApi | 
|  | public interface MarkerInfo { | 
|  |  | 
|  | /** Get the tool that has generated the marker. */ | 
|  | String getTool(); | 
|  |  | 
|  | /** Get the version of the tool that has generated the marker. */ | 
|  | String getVersion(); | 
|  |  | 
|  | /** True of the generating tool was the R8 compiler. */ | 
|  | boolean isR8(); | 
|  |  | 
|  | /** True of the generating tool was the D8 compiler. */ | 
|  | boolean isD8(); | 
|  |  | 
|  | /** True of the generating tool was the L8 compiler. */ | 
|  | boolean isL8(); | 
|  |  | 
|  | /** Get the min-api specified by the marker, or -1 if not defined. */ | 
|  | int getMinApi(); | 
|  |  | 
|  | /** True if the "backend" information is present or can be inferred for the tool. */ | 
|  | boolean hasBackend(); | 
|  |  | 
|  | /** True if the tool is known to be targeting class files as backend output. */ | 
|  | boolean isBackendClassFiles(); | 
|  |  | 
|  | /** True if the tool is known to be targeting DEX as backend output. */ | 
|  | boolean isBackendDexFiles(); | 
|  |  | 
|  | /** True if the tool has a known compilation mode (i.e., release or debug). */ | 
|  | boolean hasCompilationMode(); | 
|  |  | 
|  | /** True if the tool has a known compilation mode and the mode is "debug". */ | 
|  | boolean isCompilationModeDebug(); | 
|  |  | 
|  | /** True if the tool has a known compilation mode and the mode is "release". */ | 
|  | boolean isCompilationModeRelease(); | 
|  |  | 
|  | /** True if the tool is R8 using compatibility mode. */ | 
|  | boolean isR8ModeCompatibility(); | 
|  |  | 
|  | /** True if the tool is R8 using full mode (e.g., not in compatibility mode). */ | 
|  | boolean isR8ModeFull(); | 
|  |  | 
|  | /** | 
|  | * Get the raw encoding of the marker used by the compilers. | 
|  | * | 
|  | * <p>Warning: The format of this encoding may be subject to change and its concrete encoding | 
|  | * should not be assumed. For usages of concrete information in the marker the structured API on | 
|  | * {@link MarkerInfo} should be used. | 
|  | */ | 
|  | String getRawEncoding(); | 
|  | } |