76 lines
1.6 KiB
Java
Executable File
76 lines
1.6 KiB
Java
Executable File
package midend.llvm.use;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import midend.llvm.value.IrValue;
|
|
import midend.llvm.type.IrType;
|
|
|
|
public class IrUser extends IrValue {
|
|
private ArrayList<IrValue> uses;
|
|
|
|
public IrUser(IrType type, String name) {
|
|
super(type, name);
|
|
this.uses = new ArrayList<>();
|
|
}
|
|
|
|
public ArrayList<IrValue> getUses() {
|
|
return uses;
|
|
}
|
|
|
|
public void addUse(IrValue value) {
|
|
uses.add(value);
|
|
if (value != null) {
|
|
value.addUser(this);
|
|
}
|
|
}
|
|
|
|
public IrValue getUse(int index) {
|
|
if (index >= uses.size()) {
|
|
return null;
|
|
}
|
|
return uses.get(index);
|
|
}
|
|
|
|
public void setUse(int index, IrValue value) {
|
|
if (index >= uses.size() || index < 0) {
|
|
return;
|
|
}
|
|
IrValue oldValue = uses.get(index);
|
|
if (oldValue != null) {
|
|
oldValue.deleteUser(this);
|
|
}
|
|
uses.set(index, value);
|
|
if (value != null) {
|
|
value.addUser(this);
|
|
}
|
|
}
|
|
|
|
public void deleteUse(IrValue value) {
|
|
uses.remove(value);
|
|
if (value != null) {
|
|
value.deleteUser(this);
|
|
}
|
|
}
|
|
|
|
public void clearUses() {
|
|
for (IrValue value : uses) {
|
|
if (value != null) {
|
|
value.deleteUser(this);
|
|
}
|
|
}
|
|
uses.clear();
|
|
}
|
|
|
|
public void deleteUse(int index) {
|
|
if (index >= uses.size() || index < 0) {
|
|
return;
|
|
}
|
|
IrValue value = uses.get(index);
|
|
deleteUse(value);
|
|
}
|
|
|
|
public int getNumUses() {
|
|
return uses.size();
|
|
}
|
|
}
|