gatk-3.8/java/src/org/broadinstitute/sting/jna/clibrary/LibC.java

197 lines
6.7 KiB
Java

/*
* Copyright (c) 2010, The Broad Institute
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
package org.broadinstitute.sting.jna.clibrary;
import com.sun.jna.*;
import com.sun.jna.ptr.NativeLongByReference;
/**
* Sparse port of the Standard C Library libc -lc.
*/
@SuppressWarnings("unused")
public class LibC {
static {
Native.register("c");
}
/** Operation not permitted */
public static final int EPERM = 1;
/** No such file or directory */
public static final int ENOENT = 2;
/** No such process */
public static final int ESRCH = 3;
/** Interrupted system call */
public static final int EINTR = 4;
/** I/O error */
public static final int EIO = 5;
/** No such device or address */
public static final int ENXIO = 6;
/** Argument list too long */
public static final int E2BIG = 7;
/** Exec format error */
public static final int ENOEXEC = 8;
/** Bad file number */
public static final int EBADF = 9;
/** No child processes */
public static final int ECHILD = 10;
/** Try again */
public static final int EAGAIN = 11;
/** Out of memory */
public static final int ENOMEM = 12;
/** Permission denied */
public static final int EACCES = 13;
/** Bad address */
public static final int EFAULT = 14;
/** Block device required */
public static final int ENOTBLK = 15;
/** Device or resource busy */
public static final int EBUSY = 16;
/** File exists */
public static final int EEXIST = 17;
/** Cross-device link */
public static final int EXDEV = 18;
/** No such device */
public static final int ENODEV = 19;
/** Not a directory */
public static final int ENOTDIR = 20;
/** Is a directory */
public static final int EISDIR = 21;
/** Invalid argument */
public static final int EINVAL = 22;
/** File table overflow */
public static final int ENFILE = 23;
/** Too many open files */
public static final int EMFILE = 24;
/** Not a typewriter */
public static final int ENOTTY = 25;
/** Text file busy */
public static final int ETXTBSY = 26;
/** File too large */
public static final int EFBIG = 27;
/** No space left on device */
public static final int ENOSPC = 28;
/** Illegal seek */
public static final int ESPIPE = 29;
/** Read-only file system */
public static final int EROFS = 30;
/** Too many links */
public static final int EMLINK = 31;
/** Broken pipe */
public static final int EPIPE = 32;
/** Math argument out of domain of func */
public static final int EDOM = 33;
/** Math result not representable */
public static final int ERANGE = 34;
/**
* Inserts or resets the environment variable name in the current environment list. If the variable name does not exist
* in the list, it is inserted with the given value. If the variable does exist, the argument overwrite is tested; if overwrite is zero, the
* variable is not reset, otherwise it is reset to the given value.
* @param name the environment variable name
* @param value the given value
* @param overwrite if overwrite is zero, the variable is not reset, otherwise it is reset to the given value
* @return the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.
* @throws LastErrorException [ENOMEM] The function failed because it was unable to allocate memory for the environment.
*/
public static native int setenv(String name, String value, int overwrite) throws LastErrorException;
/**
* Obtains the current value of the environment variable, name.
* @param name the environment variable name
* @return the value of the environment variable as a NUL-terminated string. If the variable name is not in the current environment, NULL is returned.
*/
public static native String getenv(String name);
/**
* The unsetenv() function deletes all instances of the variable name pointed to by name from the list. Note that only the variable name
* (e.g., "NAME") should be given; "NAME=value" will not work.
* @param name the environment variable name
* @return the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.
* @throws LastErrorException The function failed.
*/
public static native int unsetenv(String name) throws LastErrorException;
public static class timeval extends Structure {
public static class ByReference extends timeval implements Structure.ByReference {
}
public static class ByValue extends timeval implements Structure.ByValue {
}
public NativeLong tv_sec;
public NativeLong tv_usec;
}
/**
* The time() function returns the value of time in seconds since 0 hours, 0 minutes, 0 seconds, January 1, 1970, Coordinated Universal Time, without including leap seconds. If an error occurs, time() returns the value (time_t)-1.
* The return value is also stored in *tloc, provided that t is non-null.
* @param t the value of time in seconds, provided that t is non-null.
* @return the value of time in seconds
*/
public static native NativeLong time(NativeLongByReference t);
/**
* Returns the difference between two calendar times, (time1 - time0), expressed in seconds.
* @param time1 Time 1
* @param time0 Time 0
* @return the difference between two calendar times, (time1 - time0), expressed in seconds.
*/
public static native double difftime(NativeLong time1, NativeLong time0);
}