package com.intellij.flex.uiDesigner.libraries;
import com.intellij.flex.uiDesigner.AssetCounter;
import com.intellij.flex.uiDesigner.AssetCounterInfo;
import com.intellij.flex.uiDesigner.abc.AbcTranscoder;
import com.intellij.openapi.util.Condition;
import gnu.trove.THashMap;
import gnu.trove.THashSet;
import org.jetbrains.annotations.Nullable;
import java.util.Set;
public class FlexLibrarySet extends LibrarySet {
public final AssetCounterInfo assetCounterInfo;
final ContainsCondition contains;
private final String version;
FlexLibrarySet(LibrarySorter.SortResult sortResult,
@Nullable LibrarySet parent,
ContainsCondition contains,
AssetCounter demanded,
String version) {
super(sortResult.id, parent, sortResult.libraries);
this.contains = contains;
this.version = version;
assetCounterInfo = new AssetCounterInfo(demanded);
}
public String getVersion() {
return version;
}
static class ContainsCondition implements Condition<String> {
private final Set<CharSequence> globalDefinitions;
private final Set<CharSequence> ownDefinitions;
public ContainsCondition(Set<CharSequence> globalDefinitions, THashMap<CharSequence, Definition> definitionMap) {
this.globalDefinitions = globalDefinitions;
ownDefinitions = new THashSet<>(definitionMap.size(), AbcTranscoder.HASHING_STRATEGY);
ownDefinitions.addAll(definitionMap.keySet());
}
@Override
public boolean value(String name) {
return globalDefinitions.contains(name) || ownDefinitions.contains(name);
}
}
}