smetana.core.CArray Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of plantuml-mit Show documentation
Show all versions of plantuml-mit Show documentation
PlantUML is a component that allows to quickly write diagrams from text.
// THIS FILE HAS BEEN GENERATED BY A PREPROCESSOR.
package smetana.core;
import com.plantuml.api.cheerpj.WasmLog;
final public class CArray extends UnsupportedC {
private final ZType type;
private final Object[] data;
private final int offset;
@Override
public String toString() {
return "Array " + type + " offset=" + offset + " [" + data.length + "]" + data;
}
public static CArray ALLOC__(int size, ZType type) {
// WasmLog.log("ALLOC " + size);
final CArray result = new CArray(new Object[size], 0, type);
for (int i = 0; i < size; i++)
result.data[i] = type.create();
return result;
}
public static CArray REALLOC__(int size, CArray old, ZType type) {
// WasmLog.log("REALLOC " + size);
if (old == null)
return ALLOC__(size, type);
if (size <= old.data.length)
return old;
if (old.offset != 0)
throw new IllegalStateException();
WasmLog.log("Realloc from " + old.data.length + " to " + size);
final CArray result = new CArray(new Object[size], 0, type);
System.arraycopy(old.data, 0, result.data, 0, old.data.length);
for (int i = old.data.length; i < result.data.length; i++)
result.data[i] = type.create();
return result;
}
private CArray(Object[] data, int offset, ZType type) {
this.data = data;
this.offset = offset;
this.type = type;
}
public CArray plus_(int delta) {
return new CArray(data, offset + delta, type);
}
public int minus_(CArray other) {
if (this.data != other.data) {
throw new IllegalArgumentException();
}
return this.offset - other.offset;
}
public O get__(int i) {
return (O) data[i + offset];
}
}