package jnr.ffi;
import jnr.posix.util.Platform;
public abstract class BaseStruct extends Struct {
protected BaseStruct(jnr.ffi.Runtime runtime) {
super(runtime);
}
public class Func<T> extends AbstractMember {
private final Class<? extends T> closureClass;
private T instance;
public Func(Class<? extends T> closureClass) {
super(NativeType.ADDRESS);
this.closureClass = closureClass;
}
public final void set(T value) {
getMemory().putPointer(offset(), getRuntime().getClosureManager().getClosurePointer(closureClass, instance = value));
}
}
protected final <T> Func<T> func(Class<T> closureClass) {
return new Func<>(closureClass);
}
public class fsblkcnt64_t extends NumberField {
public fsblkcnt64_t() {
super(Platform.IS_MAC ? NativeType.UINT : NativeType.SLONGLONG);
}
public fsblkcnt64_t(Offset offset) {
super(Platform.IS_MAC ? NativeType.UINT : NativeType.SLONGLONG, offset);
}
public long get() {
return Platform.IS_MAC ? getMemory().getInt(offset()) : getMemory().getLongLong(offset());
}
public void set(java.lang.Number value) {
if (Platform.IS_MAC) {
getMemory().putInt(offset(), value.intValue());
} else {
getMemory().putLongLong(offset(), value.longValue());
}
}
@Override
public int intValue() {
return (int) get();
}
@Override
public long longValue() {
return get();
}
@Override
public java.lang.String toString() {
return java.lang.Long.toString(get());
}
}
public class fsfilcnt64_t extends NumberField {
public fsfilcnt64_t() {
super(Platform.IS_MAC ? NativeType.UINT : NativeType.SLONGLONG);
}
public fsfilcnt64_t(Offset offset) {
super(Platform.IS_MAC ? NativeType.UINT : NativeType.SLONGLONG, offset);
}
public long get() {
return Platform.IS_MAC ? getMemory().getInt(offset()) : getMemory().getLongLong(offset());
}
public void set(java.lang.Number value) {
if (Platform.IS_MAC) {
getMemory().putInt(offset(), value.intValue());
} else {
getMemory().putLongLong(offset(), value.longValue());
}
}
@Override
public int intValue() {
return (int) get();
}
@Override
public long longValue() {
return get();
}
@Override
public java.lang.String toString() {
return java.lang.Long.toString(get());
}
}
public class __time_t extends SignedLong {
}
public class __off64_t extends Signed64 {
}
}