Files
MY_COMPILER/midend/llvm/constant/IrConstantArray.java
2025-12-10 17:58:17 +08:00

48 lines
1.3 KiB
Java

package midend.llvm.constant;
import java.util.ArrayList;
import midend.llvm.type.IrInterType;
import midend.llvm.type.IrArrayType;
public class IrConstantArray extends IrConstant {
private ArrayList<IrConstant> elements;
private int size;
public IrConstantArray(String name, ArrayList<IrConstant> elements, int size) {
super(new IrArrayType(IrInterType.INT32, size), name);
this.elements = elements == null ? new ArrayList<>() : new ArrayList<>(elements);
this.size = size;
}
public ArrayList<IrConstant> getElements() {
return elements;
}
public int getSize() {
return size;
}
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getType().toString() + " ");
if (elements.size() == 0) {
sb.append("zeroinitializer");
} else {
sb.append("[");
for (IrConstant element : elements) {
sb.append(element.toString());
if (element != elements.get(elements.size() - 1)) {
sb.append(", ");
}
}
int left = size - elements.size();
for (int i = 0; i < left; i++) {
sb.append(", i32 0");
}
sb.append("]");
}
return sb.toString();
}
}