package co.paralleluniverse.fuse; import jnr.ffi.Pointer; import jnr.ffi.Runtime; import jnr.ffi.StructLayout; public final class StructTimeBuffer { static final class Layout extends StructLayout { Layout(Runtime runtime) { super(runtime); } public final StructTimespec.Layout actime = inner(new StructTimespec.Layout(getRuntime())); public final StructTimespec.Layout modtime = inner(new StructTimespec.Layout(getRuntime())); } static final Layout layout = new Layout(Runtime.getSystemRuntime()); private final Pointer p; StructTimeBuffer(Pointer p) { this.p = p; } public long ac_nsec() { return layout.actime.tv_nsec.get(p); } public long ac_sec() { return layout.actime.tv_sec.get(p); } public StructTimeBuffer ac_set(double time) { StructTimespec.set(layout.actime, p, time); return this; } public StructTimeBuffer ac_set(long sec, long nsec) { StructTimespec.set(layout.actime, p, sec, nsec); return this; } public StructTimeBuffer ac_setMillis(long millis) { StructTimespec.setMillis(layout.actime, p, millis); return this; } public StructTimeBuffer ac_setSeconds(long seconds) { StructTimespec.setSeconds(layout.actime, p, seconds); return this; } public long mod_nsec() { return layout.modtime.tv_nsec.get(p); } public long mod_sec() { return layout.modtime.tv_sec.get(p); } public final StructTimeBuffer mod_set(double time) { StructTimespec.set(layout.modtime, p, time); return this; } public StructTimeBuffer mod_set(long sec, final long nsec) { StructTimespec.set(layout.modtime, p, sec, nsec); return this; } public StructTimeBuffer mod_setMillis(long millis) { StructTimespec.setMillis(layout.modtime, p, millis); return this; } public StructTimeBuffer mod_setSeconds(long seconds) { StructTimespec.setSeconds(layout.modtime, p, seconds); return this; } public StructTimeBuffer both_set(double time) { ac_set(time); mod_set(time); return this; } public StructTimeBuffer both_set(long sec, long nsec) { ac_set(sec, nsec); mod_set(sec, nsec); return this; } public StructTimeBuffer both_setMillis(long millis) { ac_setMillis(millis); mod_setMillis(millis); return this; } public StructTimeBuffer both_setSeconds(long seconds) { ac_setSeconds(seconds); mod_setSeconds(seconds); return this; } @Override public java.lang.String toString() { return layout.toString(); } }