blob: 6c7fdc2ceec183b7d25471d3ff695864f2839ae7 [file] [log] [blame]
// Copyright (c) 2021, 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.utils.collections;
import com.android.tools.r8.graph.GraphLens;
import java.util.function.IntFunction;
public abstract class LongLivedCollectionBuilder<BuilderCollection, ResultCollection> {
// Factory for creating the final result collection.
protected final IntFunction<ResultCollection> factory;
// Factory for creating a builder collection.
protected final IntFunction<BuilderCollection> factoryForBuilder;
// The graph lens that this collection has been rewritten up until.
protected GraphLens appliedGraphLens;
// The underlying backing.
protected BuilderCollection backing;
protected LongLivedCollectionBuilder(
GraphLens currentGraphLens,
IntFunction<ResultCollection> factory,
IntFunction<BuilderCollection> factoryForBuilder) {
this.appliedGraphLens = currentGraphLens;
this.factory = factory;
this.factoryForBuilder = factoryForBuilder;
this.backing = factoryForBuilder.apply(2);
}
public boolean isRewrittenWithLens(GraphLens graphLens) {
return appliedGraphLens == graphLens;
}
public boolean verifyIsRewrittenWithLens(GraphLens graphLens) {
assert isRewrittenWithLens(graphLens);
return true;
}
}