package net.fusejna; import java.util.Arrays; import java.util.List; import net.fusejna.types.TypeBlkCnt; import net.fusejna.types.TypeFsFilCnt; import com.sun.jna.NativeLong; import com.sun.jna.Structure; public abstract class StructStatvfs extends Structure { public static class FreeBSD extends StructStatvfs { public static final class ByReference extends FreeBSD implements Structure.ByReference { } public static final class ByValue extends FreeBSD implements Structure.ByValue { } public static final List<String> FIELD_ORDER = Arrays.asList("f_bavail", "f_bfree", "f_blocks", "f_ffree", "f_favail", "f_files", "f_bsize", "__pad0", "f_frsize"); public TypeBlkCnt f_bavail; public TypeBlkCnt f_bfree; public TypeBlkCnt f_blocks; public TypeFsFilCnt f_ffree; public TypeFsFilCnt f_favail; public TypeFsFilCnt f_files; public NativeLong f_bsize; public NativeLong __pad0; public NativeLong f_frsize; @Override final long f_bavail() { return f_bavail.longValue(); } @Override final void f_bavail(final long f_bavail) { this.f_bavail.setValue(f_bavail); } @Override final long f_bfree() { return f_bfree.longValue(); } @Override final void f_bfree(final long f_bfree) { this.f_bfree.setValue(f_bfree); } @Override final long f_blocks() { return f_blocks.longValue(); } @Override final void f_blocks(final long f_blocks) { this.f_blocks.setValue(f_blocks); } @Override final long f_bsize() { return f_bsize.longValue(); } @Override final void f_bsize(final long f_bsize) { this.f_bsize.setValue(f_bsize); } @Override final long f_favail() { return f_favail.longValue(); } @Override final void f_favail(final long f_favail) { this.f_favail.setValue(f_favail); } @Override final long f_ffree() { return f_ffree.longValue(); } @Override final void f_ffree(final long f_ffree) { this.f_ffree.setValue(f_ffree); } @Override final long f_files() { return f_files.longValue(); } @Override final void f_files(final long f_files) { this.f_files.setValue(f_files); } @Override final long f_frsize() { return f_frsize.longValue(); } @Override final void f_frsize(final long f_frsize) { this.f_frsize.setValue(f_frsize); } @Override protected List<String> getFieldOrder() { return FIELD_ORDER; } } public static class NotFreeBSD extends StructStatvfs { public static final class ByReference extends NotFreeBSD implements Structure.ByReference { } public static final class ByValue extends NotFreeBSD implements Structure.ByValue { } public static final List<String> FIELD_ORDER = Arrays.asList("f_bsize", "f_frsize", "f_blocks", "f_bfree", "f_bavail", "f_files", "f_ffree", "f_favail"); public NativeLong f_bsize; public NativeLong f_frsize; public TypeBlkCnt f_blocks; public TypeBlkCnt f_bfree; public TypeBlkCnt f_bavail; public TypeFsFilCnt f_files; public TypeFsFilCnt f_ffree; public TypeFsFilCnt f_favail; @Override final long f_bavail() { return f_bavail.longValue(); } @Override final void f_bavail(final long f_bavail) { this.f_bavail.setValue(f_bavail); } @Override final long f_bfree() { return f_bfree.longValue(); } @Override final void f_bfree(final long f_bfree) { this.f_bfree.setValue(f_bfree); } @Override final long f_blocks() { return f_blocks.longValue(); } @Override final void f_blocks(final long f_blocks) { this.f_blocks.setValue(f_blocks); } @Override final long f_bsize() { return f_bsize.longValue(); } @Override final void f_bsize(final long f_bsize) { this.f_bsize.setValue(f_bsize); } @Override final long f_favail() { return f_favail.longValue(); } @Override final void f_favail(final long f_favail) { this.f_favail.setValue(f_favail); } @Override final long f_ffree() { return f_ffree.longValue(); } @Override final void f_ffree(final long f_ffree) { this.f_ffree.setValue(f_ffree); } @Override final long f_files() { return f_files.longValue(); } @Override final void f_files(final long f_files) { this.f_files.setValue(f_files); } @Override final long f_frsize() { return f_frsize.longValue(); } @Override final void f_frsize(final long f_frsize) { this.f_frsize.setValue(f_frsize); } @Override protected List<String> getFieldOrder() { return FIELD_ORDER; } } public static final class StatvfsWrapper { private final StructStatvfs structStatvfs; private final String path; StatvfsWrapper(final String path, final StructStatvfs structStatvfs) { this.path = path; this.structStatvfs = structStatvfs; } StatvfsWrapper(final StructStatvfs structStatvfs) { this(null, structStatvfs); } public final long bavail() { return structStatvfs.f_bavail(); } public final StatvfsWrapper bavail(final long f_bavail) { structStatvfs.f_bavail(f_bavail); return this; } public final long bfree() { return structStatvfs.f_bfree(); } public final StatvfsWrapper bfree(final long f_bfree) { structStatvfs.f_bfree(f_bfree); return this; } public final long blocks() { return structStatvfs.f_blocks(); } public final StatvfsWrapper blocks(final long f_blocks) { structStatvfs.f_blocks(f_blocks); return this; } public final long bsize() { return structStatvfs.f_bsize(); } public final StatvfsWrapper bsize(final long f_bsize) { structStatvfs.f_bsize(f_bsize); return this; } public final long favail() { return structStatvfs.f_favail(); } public final StatvfsWrapper favail(final long f_favail) { structStatvfs.f_favail(f_favail); return this; } public final long ffree() { return structStatvfs.f_ffree(); } public final StatvfsWrapper ffree(final long f_ffree) { structStatvfs.f_ffree(f_ffree); return this; } public final long files() { return structStatvfs.f_files(); } public final StatvfsWrapper files(final long f_files) { structStatvfs.f_files(f_files); return this; } public final long frsize() { return structStatvfs.f_frsize(); } public final StatvfsWrapper frsize(final long f_frsize) { structStatvfs.f_frsize(f_frsize); return this; } public final StatvfsWrapper set(final long blockSize, final long fragmentSize, final long freeBlocks, final long availBlocks, final long totalBlocks, final long freeFiles, final long availFiles, final long totalFiles) { return setSizes(blockSize, fragmentSize).setBlockInfo(freeBlocks, availBlocks, totalBlocks).setFileInfo(freeFiles, availFiles, totalFiles); } public final StatvfsWrapper setBlockInfo(final long freeBlocks, final long availBlocks, final long totalBlocks) { return bfree(freeBlocks).bavail(availBlocks).blocks(totalBlocks); } public final StatvfsWrapper setFileInfo(final long freeFiles, final long availFiles, final long totalFiles) { return ffree(freeFiles).favail(availFiles).files(totalFiles); } public final StatvfsWrapper setSizes(final long blockSize, final long fragmentSize) { return bsize(blockSize).frsize(fragmentSize); } @Override public final String toString() { if (path != null) { return path + "\n" + structStatvfs; } return structStatvfs.toString(); } final void write() { structStatvfs.write(); } } abstract long f_bavail(); abstract void f_bavail(long f_bavail); abstract long f_bfree(); abstract void f_bfree(long f_bfree); abstract long f_blocks(); abstract void f_blocks(long f_blocks); abstract long f_bsize(); abstract void f_bsize(long f_bsize); abstract long f_favail(); abstract void f_favail(long f_favail); abstract long f_ffree(); abstract void f_ffree(long f_ffree); abstract long f_files(); abstract void f_files(long f_files); abstract long f_frsize(); abstract void f_frsize(long f_frsize); }