blob: 7ebadaa9d48b952472ec978556989c65adcf890b [file] [log] [blame]
// Copyright (c) 2025, 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 java.nio.file.Path;
/** Interface for retrieving the generated mapping and its id. */
@KeepForApi
public interface MapConsumer extends StringConsumer {
/**
* Called by R8 when the mapping id has been generated. This is always called prior to {@link
* #finished(DiagnosticsHandler)}.
*/
default void acceptMapId(String mapId) {}
@KeepForApi
class FileConsumer extends StringConsumer.FileConsumer implements MapConsumer {
private final MapConsumer consumer;
public FileConsumer(Path outputPath) {
this(outputPath, null);
}
public FileConsumer(Path outputPath, MapConsumer consumer) {
super(outputPath, consumer);
this.consumer = consumer;
}
@Override
public void acceptMapId(String mapId) {
if (consumer != null) {
consumer.acceptMapId(mapId);
}
}
}
@KeepForApi
class ForwardingConsumer extends StringConsumer.ForwardingConsumer implements MapConsumer {
private final MapConsumer consumer;
/**
* @param consumer Consumer to forward to, if null, nothing will be forwarded.
*/
public ForwardingConsumer(MapConsumer consumer) {
super(consumer);
this.consumer = consumer;
}
@Override
public void acceptMapId(String mapId) {
if (consumer != null) {
consumer.acceptMapId(mapId);
}
}
}
}