| // 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(); | |
| } |