package jadx.core.dex.regions;
import jadx.core.dex.nodes.BlockNode;
import jadx.core.dex.nodes.IBranchRegion;
import jadx.core.dex.nodes.IContainer;
import jadx.core.dex.nodes.IRegion;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public final class SwitchRegion extends AbstractRegion implements IBranchRegion {
private final BlockNode header;
private final List<List<Object>> keys;
private final List<IContainer> cases;
private IContainer defCase;
public SwitchRegion(IRegion parent, BlockNode header) {
super(parent);
this.header = header;
this.keys = new ArrayList<List<Object>>();
this.cases = new ArrayList<IContainer>();
}
public BlockNode getHeader() {
return header;
}
public void addCase(List<Object> keysList, IContainer c) {
keys.add(keysList);
cases.add(c);
}
public void setDefaultCase(IContainer block) {
defCase = block;
}
public IContainer getDefaultCase() {
return defCase;
}
public List<List<Object>> getKeys() {
return keys;
}
public List<IContainer> getCases() {
return cases;
}
@Override
public List<IContainer> getSubBlocks() {
List<IContainer> all = new ArrayList<IContainer>(cases.size() + 2);
all.add(header);
all.addAll(cases);
if (defCase != null) {
all.add(defCase);
}
return Collections.unmodifiableList(all);
}
@Override
public List<IContainer> getBranches() {
List<IContainer> branches = new ArrayList<IContainer>(cases.size() + 1);
branches.addAll(cases);
branches.add(defCase);
return Collections.unmodifiableList(branches);
}
@Override
public String baseString() {
return header.baseString();
}
@Override
public String toString() {
return "Switch: " + cases.size() + ", default: " + defCase;
}
}