// Path: src/main/java/jnr/ffi/BaseStruct.java
// 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 {
//     }
// 
// 
// }


import jnr.ffi.NativeType;
import jnr.ffi.BaseStruct;
import jnr.posix.util.Platform;
package ru.serce.jnrfuse.struct;


/**
 * @author Sergey Tselovalnikov
 * @since 31.05.15
 */
public class Flock extends BaseStruct {

    public static final int LOCK_SH = 1;    /* Shared lock.  */
    public static final int LOCK_EX = 2;    /* Exclusive lock.  */
    public static final int LOCK_UN = 8;    /* Unlock.  */

    // lock types
    public static final int F_RDLCK = 0;	/* Read lock.  */
    public static final int F_WRLCK = 1;	/* Write lock.	*/
    public static final int F_UNLCK = 2;	/* Remove lock.	 */

    protected Flock(jnr.ffi.Runtime runtime) {
        super(runtime);
        if (Platform.IS_MAC) {
//            struct flock {
//                off_t	l_start;	/* starting offset */
//                off_t	l_len;		/* len = 0 means until end of file */
//                pid_t	l_pid;		/* lock owner */
//                short	l_type;		/* lock type: read/write, etc. */
//                short	l_whence;	/* type of l_start */
//            };
            l_start = new __off64_t();
            l_len = new __off64_t();
            l_pid = new pid_t();
            l_type = new Signed16();
            l_whence = new Signed16();
            pad = null;
        } else if (Platform.IS_WINDOWS) {
            l_type = new Signed16();
            l_whence = new Signed16();
            l_start = new __off64_t();
            l_len = new __off64_t();
            l_pid = new pid_t();
            pad = null;
        } else {
// Path: src/main/java/jnr/ffi/BaseStruct.java
// 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 {
//     }
// 
// 
// }


// Path: src/main/java/ru/serce/jnrfuse/struct/Flock.java
import jnr.ffi.NativeType;
import jnr.ffi.BaseStruct;
import jnr.posix.util.Platform;

package ru.serce.jnrfuse.struct;


/**
 * @author Sergey Tselovalnikov
 * @since 31.05.15
 */
public class Flock extends BaseStruct {

    public static final int LOCK_SH = 1;    /* Shared lock.  */
    public static final int LOCK_EX = 2;    /* Exclusive lock.  */
    public static final int LOCK_UN = 8;    /* Unlock.  */

    // lock types
    public static final int F_RDLCK = 0;	/* Read lock.  */
    public static final int F_WRLCK = 1;	/* Write lock.	*/
    public static final int F_UNLCK = 2;	/* Remove lock.	 */

    protected Flock(jnr.ffi.Runtime runtime) {
        super(runtime);
        if (Platform.IS_MAC) {
//            struct flock {
//                off_t	l_start;	/* starting offset */
//                off_t	l_len;		/* len = 0 means until end of file */
//                pid_t	l_pid;		/* lock owner */
//                short	l_type;		/* lock type: read/write, etc. */
//                short	l_whence;	/* type of l_start */
//            };
            l_start = new __off64_t();
            l_len = new __off64_t();
            l_pid = new pid_t();
            l_type = new Signed16();
            l_whence = new Signed16();
            pad = null;
        } else if (Platform.IS_WINDOWS) {
            l_type = new Signed16();
            l_whence = new Signed16();
            l_start = new __off64_t();
            l_len = new __off64_t();
            l_pid = new pid_t();
            pad = null;
        } else {
            l_type = new Signed16();