From 1ea23c85a2e5a7fb1773fe3f1d4844944aa3ad4f Mon Sep 17 00:00:00 2001 From: Arthur Carcano Date: Fri, 7 May 2021 18:29:56 +0200 Subject: [PATCH] Init --- .gitignore | 2 + Cargo.toml | 6 + cvode-5-sys/Cargo.toml | 9 + cvode-5-sys/build.rs | 5 + cvode-5-sys/src/cvode.rs | 6591 ++++++++++++++++++++++++++++ cvode-5-sys/src/lib.rs | 6 + cvode-5-sys/src/nvector_serial.rs | 4869 ++++++++++++++++++++ cvode-5-sys/src/sunlinsol_dense.rs | 5755 ++++++++++++++++++++++++ cvode-5-sys/src/sunmatrix_dense.rs | 4914 +++++++++++++++++++++ cvode-wrap/Cargo.toml | 10 + cvode-wrap/src/lib.rs | 204 + cvode-wrap/src/nvector.rs | 51 + test-solver/Cargo.toml | 10 + test-solver/plot.py | 7 + test-solver/src/main.rs | 23 + 15 files changed, 22462 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.toml create mode 100644 cvode-5-sys/Cargo.toml create mode 100644 cvode-5-sys/build.rs create mode 100644 cvode-5-sys/src/cvode.rs create mode 100644 cvode-5-sys/src/lib.rs create mode 100644 cvode-5-sys/src/nvector_serial.rs create mode 100644 cvode-5-sys/src/sunlinsol_dense.rs create mode 100644 cvode-5-sys/src/sunmatrix_dense.rs create mode 100644 cvode-wrap/Cargo.toml create mode 100644 cvode-wrap/src/lib.rs create mode 100644 cvode-wrap/src/nvector.rs create mode 100644 test-solver/Cargo.toml create mode 100644 test-solver/plot.py create mode 100644 test-solver/src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2c96eb1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +target/ +Cargo.lock diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..875f7c0 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,6 @@ +[workspace] +members = [ + "cvode-5-sys", + "cvode-wrap", + "test-solver" +] \ No newline at end of file diff --git a/cvode-5-sys/Cargo.toml b/cvode-5-sys/Cargo.toml new file mode 100644 index 0000000..ea8ca62 --- /dev/null +++ b/cvode-5-sys/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "cvode-5-sys" +version = "0.1.0" +authors = ["Arthur Carcano "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/cvode-5-sys/build.rs b/cvode-5-sys/build.rs new file mode 100644 index 0000000..e19ca1c --- /dev/null +++ b/cvode-5-sys/build.rs @@ -0,0 +1,5 @@ +fn main() -> () { + for lib in &["sundials_cvodes", "sundials_nvecserial"] { + println!("cargo:rustc-link-lib={}", lib); + } +} \ No newline at end of file diff --git a/cvode-5-sys/src/cvode.rs b/cvode-5-sys/src/cvode.rs new file mode 100644 index 0000000..f7b520c --- /dev/null +++ b/cvode-5-sys/src/cvode.rs @@ -0,0 +1,6591 @@ +/* automatically generated by rust-bindgen 0.55.1 */ + +pub const _STDIO_H: u32 = 1; +pub const _FEATURES_H: u32 = 1; +pub const _DEFAULT_SOURCE: u32 = 1; +pub const __GLIBC_USE_ISOC2X: u32 = 0; +pub const __USE_ISOC11: u32 = 1; +pub const __USE_ISOC99: u32 = 1; +pub const __USE_ISOC95: u32 = 1; +pub const __USE_POSIX_IMPLICITLY: u32 = 1; +pub const _POSIX_SOURCE: u32 = 1; +pub const _POSIX_C_SOURCE: u32 = 200809; +pub const __USE_POSIX: u32 = 1; +pub const __USE_POSIX2: u32 = 1; +pub const __USE_POSIX199309: u32 = 1; +pub const __USE_POSIX199506: u32 = 1; +pub const __USE_XOPEN2K: u32 = 1; +pub const __USE_XOPEN2K8: u32 = 1; +pub const _ATFILE_SOURCE: u32 = 1; +pub const __USE_MISC: u32 = 1; +pub const __USE_ATFILE: u32 = 1; +pub const __USE_FORTIFY_LEVEL: u32 = 0; +pub const __GLIBC_USE_DEPRECATED_GETS: u32 = 0; +pub const __GLIBC_USE_DEPRECATED_SCANF: u32 = 0; +pub const _STDC_PREDEF_H: u32 = 1; +pub const __STDC_IEC_559__: u32 = 1; +pub const __STDC_IEC_559_COMPLEX__: u32 = 1; +pub const __STDC_ISO_10646__: u32 = 201706; +pub const __GNU_LIBRARY__: u32 = 6; +pub const __GLIBC__: u32 = 2; +pub const __GLIBC_MINOR__: u32 = 33; +pub const _SYS_CDEFS_H: u32 = 1; +pub const __glibc_c99_flexarr_available: u32 = 1; +pub const __WORDSIZE: u32 = 64; +pub const __WORDSIZE_TIME64_COMPAT32: u32 = 1; +pub const __SYSCALL_WORDSIZE: u32 = 64; +pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI: u32 = 0; +pub const __HAVE_GENERIC_SELECTION: u32 = 1; +pub const __GLIBC_USE_LIB_EXT2: u32 = 0; +pub const __GLIBC_USE_IEC_60559_BFP_EXT: u32 = 0; +pub const __GLIBC_USE_IEC_60559_BFP_EXT_C2X: u32 = 0; +pub const __GLIBC_USE_IEC_60559_FUNCS_EXT: u32 = 0; +pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X: u32 = 0; +pub const __GLIBC_USE_IEC_60559_TYPES_EXT: u32 = 0; +pub const __GNUC_VA_LIST: u32 = 1; +pub const _BITS_TYPES_H: u32 = 1; +pub const __TIMESIZE: u32 = 64; +pub const _BITS_TYPESIZES_H: u32 = 1; +pub const __OFF_T_MATCHES_OFF64_T: u32 = 1; +pub const __INO_T_MATCHES_INO64_T: u32 = 1; +pub const __RLIM_T_MATCHES_RLIM64_T: u32 = 1; +pub const __STATFS_MATCHES_STATFS64: u32 = 1; +pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64: u32 = 1; +pub const __FD_SETSIZE: u32 = 1024; +pub const _BITS_TIME64_H: u32 = 1; +pub const _____fpos_t_defined: u32 = 1; +pub const ____mbstate_t_defined: u32 = 1; +pub const _____fpos64_t_defined: u32 = 1; +pub const ____FILE_defined: u32 = 1; +pub const __FILE_defined: u32 = 1; +pub const __struct_FILE_defined: u32 = 1; +pub const _IO_EOF_SEEN: u32 = 16; +pub const _IO_ERR_SEEN: u32 = 32; +pub const _IO_USER_LOCK: u32 = 32768; +pub const _IOFBF: u32 = 0; +pub const _IOLBF: u32 = 1; +pub const _IONBF: u32 = 2; +pub const BUFSIZ: u32 = 8192; +pub const EOF: i32 = -1; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const P_tmpdir: &'static [u8; 5usize] = b"/tmp\0"; +pub const _BITS_STDIO_LIM_H: u32 = 1; +pub const L_tmpnam: u32 = 20; +pub const TMP_MAX: u32 = 238328; +pub const FILENAME_MAX: u32 = 4096; +pub const L_ctermid: u32 = 9; +pub const FOPEN_MAX: u32 = 16; +pub const __HAVE_FLOAT128: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT128: u32 = 0; +pub const __HAVE_FLOAT64X: u32 = 1; +pub const __HAVE_FLOAT64X_LONG_DOUBLE: u32 = 1; +pub const __HAVE_FLOAT16: u32 = 0; +pub const __HAVE_FLOAT32: u32 = 1; +pub const __HAVE_FLOAT64: u32 = 1; +pub const __HAVE_FLOAT32X: u32 = 1; +pub const __HAVE_FLOAT128X: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT16: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT32: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT64: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT32X: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT64X: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT128X: u32 = 0; +pub const __HAVE_FLOATN_NOT_TYPEDEF: u32 = 0; +pub const _STDLIB_H: u32 = 1; +pub const WNOHANG: u32 = 1; +pub const WUNTRACED: u32 = 2; +pub const WSTOPPED: u32 = 2; +pub const WEXITED: u32 = 4; +pub const WCONTINUED: u32 = 8; +pub const WNOWAIT: u32 = 16777216; +pub const __WNOTHREAD: u32 = 536870912; +pub const __WALL: u32 = 1073741824; +pub const __WCLONE: u32 = 2147483648; +pub const __W_CONTINUED: u32 = 65535; +pub const __WCOREFLAG: u32 = 128; +pub const __ldiv_t_defined: u32 = 1; +pub const __lldiv_t_defined: u32 = 1; +pub const RAND_MAX: u32 = 2147483647; +pub const EXIT_FAILURE: u32 = 1; +pub const EXIT_SUCCESS: u32 = 0; +pub const _SYS_TYPES_H: u32 = 1; +pub const __clock_t_defined: u32 = 1; +pub const __clockid_t_defined: u32 = 1; +pub const __time_t_defined: u32 = 1; +pub const __timer_t_defined: u32 = 1; +pub const _BITS_STDINT_INTN_H: u32 = 1; +pub const __BIT_TYPES_DEFINED__: u32 = 1; +pub const _ENDIAN_H: u32 = 1; +pub const _BITS_ENDIAN_H: u32 = 1; +pub const __LITTLE_ENDIAN: u32 = 1234; +pub const __BIG_ENDIAN: u32 = 4321; +pub const __PDP_ENDIAN: u32 = 3412; +pub const _BITS_ENDIANNESS_H: u32 = 1; +pub const __BYTE_ORDER: u32 = 1234; +pub const __FLOAT_WORD_ORDER: u32 = 1234; +pub const LITTLE_ENDIAN: u32 = 1234; +pub const BIG_ENDIAN: u32 = 4321; +pub const PDP_ENDIAN: u32 = 3412; +pub const BYTE_ORDER: u32 = 1234; +pub const _BITS_BYTESWAP_H: u32 = 1; +pub const _BITS_UINTN_IDENTITY_H: u32 = 1; +pub const _SYS_SELECT_H: u32 = 1; +pub const __sigset_t_defined: u32 = 1; +pub const __timeval_defined: u32 = 1; +pub const _STRUCT_TIMESPEC: u32 = 1; +pub const FD_SETSIZE: u32 = 1024; +pub const _BITS_PTHREADTYPES_COMMON_H: u32 = 1; +pub const _THREAD_SHARED_TYPES_H: u32 = 1; +pub const _BITS_PTHREADTYPES_ARCH_H: u32 = 1; +pub const __SIZEOF_PTHREAD_MUTEX_T: u32 = 40; +pub const __SIZEOF_PTHREAD_ATTR_T: u32 = 56; +pub const __SIZEOF_PTHREAD_RWLOCK_T: u32 = 56; +pub const __SIZEOF_PTHREAD_BARRIER_T: u32 = 32; +pub const __SIZEOF_PTHREAD_MUTEXATTR_T: u32 = 4; +pub const __SIZEOF_PTHREAD_COND_T: u32 = 48; +pub const __SIZEOF_PTHREAD_CONDATTR_T: u32 = 4; +pub const __SIZEOF_PTHREAD_RWLOCKATTR_T: u32 = 8; +pub const __SIZEOF_PTHREAD_BARRIERATTR_T: u32 = 4; +pub const _THREAD_MUTEX_INTERNAL_H: u32 = 1; +pub const __PTHREAD_MUTEX_HAVE_PREV: u32 = 1; +pub const __have_pthread_attr_t: u32 = 1; +pub const _ALLOCA_H: u32 = 1; +pub const SUNDIALS_VERSION: &'static [u8; 6usize] = b"5.7.0\0"; +pub const SUNDIALS_VERSION_MAJOR: u32 = 5; +pub const SUNDIALS_VERSION_MINOR: u32 = 7; +pub const SUNDIALS_VERSION_PATCH: u32 = 0; +pub const SUNDIALS_VERSION_LABEL: &'static [u8; 1usize] = b"\0"; +pub const SUNDIALS_DOUBLE_PRECISION: u32 = 1; +pub const SUNDIALS_INT64_T: u32 = 1; +pub const SUNDIALS_MPI_ENABLED: u32 = 1; +pub const SUNDIALS_ARKODE: u32 = 1; +pub const SUNDIALS_CVODE: u32 = 1; +pub const SUNDIALS_CVODES: u32 = 1; +pub const SUNDIALS_IDA: u32 = 1; +pub const SUNDIALS_IDAS: u32 = 1; +pub const SUNDIALS_KINSOL: u32 = 1; +pub const SUNDIALS_NVECTOR_SERIAL: u32 = 1; +pub const SUNDIALS_NVECTOR_MANYVECTOR: u32 = 1; +pub const SUNDIALS_NVECTOR_MPIMANYVECTOR: u32 = 1; +pub const SUNDIALS_NVECTOR_MPIPLUSX: u32 = 1; +pub const SUNDIALS_NVECTOR_PARALLEL: u32 = 1; +pub const SUNDIALS_NVECTOR_OPENMP: u32 = 1; +pub const SUNDIALS_NVECTOR_PTHREADS: u32 = 1; +pub const SUNDIALS_SUNMATRIX_BAND: u32 = 1; +pub const SUNDIALS_SUNMATRIX_DENSE: u32 = 1; +pub const SUNDIALS_SUNMATRIX_SPARSE: u32 = 1; +pub const SUNDIALS_SUNLINSOL_BAND: u32 = 1; +pub const SUNDIALS_SUNLINSOL_DENSE: u32 = 1; +pub const SUNDIALS_SUNLINSOL_PCG: u32 = 1; +pub const SUNDIALS_SUNLINSOL_SPBCGS: u32 = 1; +pub const SUNDIALS_SUNLINSOL_SPFGMR: u32 = 1; +pub const SUNDIALS_SUNLINSOL_SPGMR: u32 = 1; +pub const SUNDIALS_SUNLINSOL_SPTFQMR: u32 = 1; +pub const SUNDIALS_SUNLINSOL_KLU: u32 = 1; +pub const SUNDIALS_SUNNONLINSOL_NEWTON: u32 = 1; +pub const SUNDIALS_SUNNONLINSOL_FIXEDPOINT: u32 = 1; +pub const SUNDIALS_MPI_COMM_F2C: u32 = 1; +pub const _STDINT_H: u32 = 1; +pub const _BITS_WCHAR_H: u32 = 1; +pub const _BITS_STDINT_UINTN_H: u32 = 1; +pub const INT8_MIN: i32 = -128; +pub const INT16_MIN: i32 = -32768; +pub const INT32_MIN: i32 = -2147483648; +pub const INT8_MAX: u32 = 127; +pub const INT16_MAX: u32 = 32767; +pub const INT32_MAX: u32 = 2147483647; +pub const UINT8_MAX: u32 = 255; +pub const UINT16_MAX: u32 = 65535; +pub const UINT32_MAX: u32 = 4294967295; +pub const INT_LEAST8_MIN: i32 = -128; +pub const INT_LEAST16_MIN: i32 = -32768; +pub const INT_LEAST32_MIN: i32 = -2147483648; +pub const INT_LEAST8_MAX: u32 = 127; +pub const INT_LEAST16_MAX: u32 = 32767; +pub const INT_LEAST32_MAX: u32 = 2147483647; +pub const UINT_LEAST8_MAX: u32 = 255; +pub const UINT_LEAST16_MAX: u32 = 65535; +pub const UINT_LEAST32_MAX: u32 = 4294967295; +pub const INT_FAST8_MIN: i32 = -128; +pub const INT_FAST16_MIN: i64 = -9223372036854775808; +pub const INT_FAST32_MIN: i64 = -9223372036854775808; +pub const INT_FAST8_MAX: u32 = 127; +pub const INT_FAST16_MAX: u64 = 9223372036854775807; +pub const INT_FAST32_MAX: u64 = 9223372036854775807; +pub const UINT_FAST8_MAX: u32 = 255; +pub const UINT_FAST16_MAX: i32 = -1; +pub const UINT_FAST32_MAX: i32 = -1; +pub const INTPTR_MIN: i64 = -9223372036854775808; +pub const INTPTR_MAX: u64 = 9223372036854775807; +pub const UINTPTR_MAX: i32 = -1; +pub const PTRDIFF_MIN: i64 = -9223372036854775808; +pub const PTRDIFF_MAX: u64 = 9223372036854775807; +pub const SIG_ATOMIC_MIN: i32 = -2147483648; +pub const SIG_ATOMIC_MAX: u32 = 2147483647; +pub const SIZE_MAX: i32 = -1; +pub const WINT_MIN: u32 = 0; +pub const WINT_MAX: u32 = 4294967295; +pub const SUNFALSE: u32 = 0; +pub const SUNTRUE: u32 = 1; +pub const SUN_NLS_SUCCESS: u32 = 0; +pub const SUN_NLS_CONTINUE: u32 = 901; +pub const SUN_NLS_CONV_RECVR: u32 = 902; +pub const SUN_NLS_MEM_NULL: i32 = -901; +pub const SUN_NLS_MEM_FAIL: i32 = -902; +pub const SUN_NLS_ILL_INPUT: i32 = -903; +pub const SUN_NLS_VECTOROP_ERR: i32 = -904; +pub const SUN_NLS_EXT_FAIL: i32 = -905; +pub const SUN_NLS_MSG_RESIDUAL: &'static [u8; 46usize] = + b"\tnonlin. iteration %ld, nonlin. residual: %g\n\0"; +pub const SUNDIALS_DENSE: u32 = 1; +pub const SUNDIALS_BAND: u32 = 2; +pub const SUNMAT_SUCCESS: u32 = 0; +pub const SUNMAT_ILL_INPUT: i32 = -701; +pub const SUNMAT_MEM_FAIL: i32 = -702; +pub const SUNMAT_OPERATION_FAIL: i32 = -703; +pub const SUNMAT_MATVEC_SETUP_REQUIRED: i32 = -704; +pub const SUNLS_SUCCESS: u32 = 0; +pub const SUNLS_MEM_NULL: i32 = -801; +pub const SUNLS_ILL_INPUT: i32 = -802; +pub const SUNLS_MEM_FAIL: i32 = -803; +pub const SUNLS_ATIMES_NULL: i32 = -804; +pub const SUNLS_ATIMES_FAIL_UNREC: i32 = -805; +pub const SUNLS_PSET_FAIL_UNREC: i32 = -806; +pub const SUNLS_PSOLVE_NULL: i32 = -807; +pub const SUNLS_PSOLVE_FAIL_UNREC: i32 = -808; +pub const SUNLS_PACKAGE_FAIL_UNREC: i32 = -809; +pub const SUNLS_GS_FAIL: i32 = -810; +pub const SUNLS_QRSOL_FAIL: i32 = -811; +pub const SUNLS_VECTOROP_ERR: i32 = -812; +pub const SUNLS_RES_REDUCED: u32 = 801; +pub const SUNLS_CONV_FAIL: u32 = 802; +pub const SUNLS_ATIMES_FAIL_REC: u32 = 803; +pub const SUNLS_PSET_FAIL_REC: u32 = 804; +pub const SUNLS_PSOLVE_FAIL_REC: u32 = 805; +pub const SUNLS_PACKAGE_FAIL_REC: u32 = 806; +pub const SUNLS_QRFACT_FAIL: u32 = 807; +pub const SUNLS_LUFACT_FAIL: u32 = 808; +pub const SUNLS_MSG_RESIDUAL: &'static [u8; 41usize] = + b"\t\tlin. iteration %ld, lin. residual: %g\n\0"; +pub const CVLS_SUCCESS: u32 = 0; +pub const CVLS_MEM_NULL: i32 = -1; +pub const CVLS_LMEM_NULL: i32 = -2; +pub const CVLS_ILL_INPUT: i32 = -3; +pub const CVLS_MEM_FAIL: i32 = -4; +pub const CVLS_PMEM_NULL: i32 = -5; +pub const CVLS_JACFUNC_UNRECVR: i32 = -6; +pub const CVLS_JACFUNC_RECVR: i32 = -7; +pub const CVLS_SUNMAT_FAIL: i32 = -8; +pub const CVLS_SUNLS_FAIL: i32 = -9; +pub const CV_ADAMS: u32 = 1; +pub const CV_BDF: u32 = 2; +pub const CV_NORMAL: u32 = 1; +pub const CV_ONE_STEP: u32 = 2; +pub const CV_SUCCESS: u32 = 0; +pub const CV_TSTOP_RETURN: u32 = 1; +pub const CV_ROOT_RETURN: u32 = 2; +pub const CV_WARNING: u32 = 99; +pub const CV_TOO_MUCH_WORK: i32 = -1; +pub const CV_TOO_MUCH_ACC: i32 = -2; +pub const CV_ERR_FAILURE: i32 = -3; +pub const CV_CONV_FAILURE: i32 = -4; +pub const CV_LINIT_FAIL: i32 = -5; +pub const CV_LSETUP_FAIL: i32 = -6; +pub const CV_LSOLVE_FAIL: i32 = -7; +pub const CV_RHSFUNC_FAIL: i32 = -8; +pub const CV_FIRST_RHSFUNC_ERR: i32 = -9; +pub const CV_REPTD_RHSFUNC_ERR: i32 = -10; +pub const CV_UNREC_RHSFUNC_ERR: i32 = -11; +pub const CV_RTFUNC_FAIL: i32 = -12; +pub const CV_NLS_INIT_FAIL: i32 = -13; +pub const CV_NLS_SETUP_FAIL: i32 = -14; +pub const CV_CONSTR_FAIL: i32 = -15; +pub const CV_NLS_FAIL: i32 = -16; +pub const CV_MEM_FAIL: i32 = -20; +pub const CV_MEM_NULL: i32 = -21; +pub const CV_ILL_INPUT: i32 = -22; +pub const CV_NO_MALLOC: i32 = -23; +pub const CV_BAD_K: i32 = -24; +pub const CV_BAD_T: i32 = -25; +pub const CV_BAD_DKY: i32 = -26; +pub const CV_TOO_CLOSE: i32 = -27; +pub const CV_VECTOROP_ERR: i32 = -28; +pub const CV_PROJ_MEM_NULL: i32 = -29; +pub const CV_PROJFUNC_FAIL: i32 = -30; +pub const CV_REPTD_PROJFUNC_ERR: i32 = -31; +pub const CV_UNRECOGNIZED_ERR: i32 = -99; +pub type size_t = ::std::os::raw::c_ulong; +pub type va_list = __builtin_va_list; +pub type __gnuc_va_list = __builtin_va_list; +pub type __u_char = ::std::os::raw::c_uchar; +pub type __u_short = ::std::os::raw::c_ushort; +pub type __u_int = ::std::os::raw::c_uint; +pub type __u_long = ::std::os::raw::c_ulong; +pub type __int8_t = ::std::os::raw::c_schar; +pub type __uint8_t = ::std::os::raw::c_uchar; +pub type __int16_t = ::std::os::raw::c_short; +pub type __uint16_t = ::std::os::raw::c_ushort; +pub type __int32_t = ::std::os::raw::c_int; +pub type __uint32_t = ::std::os::raw::c_uint; +pub type __int64_t = ::std::os::raw::c_long; +pub type __uint64_t = ::std::os::raw::c_ulong; +pub type __int_least8_t = __int8_t; +pub type __uint_least8_t = __uint8_t; +pub type __int_least16_t = __int16_t; +pub type __uint_least16_t = __uint16_t; +pub type __int_least32_t = __int32_t; +pub type __uint_least32_t = __uint32_t; +pub type __int_least64_t = __int64_t; +pub type __uint_least64_t = __uint64_t; +pub type __quad_t = ::std::os::raw::c_long; +pub type __u_quad_t = ::std::os::raw::c_ulong; +pub type __intmax_t = ::std::os::raw::c_long; +pub type __uintmax_t = ::std::os::raw::c_ulong; +pub type __dev_t = ::std::os::raw::c_ulong; +pub type __uid_t = ::std::os::raw::c_uint; +pub type __gid_t = ::std::os::raw::c_uint; +pub type __ino_t = ::std::os::raw::c_ulong; +pub type __ino64_t = ::std::os::raw::c_ulong; +pub type __mode_t = ::std::os::raw::c_uint; +pub type __nlink_t = ::std::os::raw::c_ulong; +pub type __off_t = ::std::os::raw::c_long; +pub type __off64_t = ::std::os::raw::c_long; +pub type __pid_t = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __fsid_t { + pub __val: [::std::os::raw::c_int; 2usize], +} +#[test] +fn bindgen_test_layout___fsid_t() { + assert_eq!( + ::std::mem::size_of::<__fsid_t>(), + 8usize, + concat!("Size of: ", stringify!(__fsid_t)) + ); + assert_eq!( + ::std::mem::align_of::<__fsid_t>(), + 4usize, + concat!("Alignment of ", stringify!(__fsid_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__fsid_t>())).__val as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__fsid_t), + "::", + stringify!(__val) + ) + ); +} +pub type __clock_t = ::std::os::raw::c_long; +pub type __rlim_t = ::std::os::raw::c_ulong; +pub type __rlim64_t = ::std::os::raw::c_ulong; +pub type __id_t = ::std::os::raw::c_uint; +pub type __time_t = ::std::os::raw::c_long; +pub type __useconds_t = ::std::os::raw::c_uint; +pub type __suseconds_t = ::std::os::raw::c_long; +pub type __suseconds64_t = ::std::os::raw::c_long; +pub type __daddr_t = ::std::os::raw::c_int; +pub type __key_t = ::std::os::raw::c_int; +pub type __clockid_t = ::std::os::raw::c_int; +pub type __timer_t = *mut ::std::os::raw::c_void; +pub type __blksize_t = ::std::os::raw::c_long; +pub type __blkcnt_t = ::std::os::raw::c_long; +pub type __blkcnt64_t = ::std::os::raw::c_long; +pub type __fsblkcnt_t = ::std::os::raw::c_ulong; +pub type __fsblkcnt64_t = ::std::os::raw::c_ulong; +pub type __fsfilcnt_t = ::std::os::raw::c_ulong; +pub type __fsfilcnt64_t = ::std::os::raw::c_ulong; +pub type __fsword_t = ::std::os::raw::c_long; +pub type __ssize_t = ::std::os::raw::c_long; +pub type __syscall_slong_t = ::std::os::raw::c_long; +pub type __syscall_ulong_t = ::std::os::raw::c_ulong; +pub type __loff_t = __off64_t; +pub type __caddr_t = *mut ::std::os::raw::c_char; +pub type __intptr_t = ::std::os::raw::c_long; +pub type __socklen_t = ::std::os::raw::c_uint; +pub type __sig_atomic_t = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __mbstate_t { + pub __count: ::std::os::raw::c_int, + pub __value: __mbstate_t__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __mbstate_t__bindgen_ty_1 { + pub __wch: ::std::os::raw::c_uint, + pub __wchb: [::std::os::raw::c_char; 4usize], + _bindgen_union_align: u32, +} +#[test] +fn bindgen_test_layout___mbstate_t__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<__mbstate_t__bindgen_ty_1>(), + 4usize, + concat!("Size of: ", stringify!(__mbstate_t__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::<__mbstate_t__bindgen_ty_1>(), + 4usize, + concat!("Alignment of ", stringify!(__mbstate_t__bindgen_ty_1)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__mbstate_t__bindgen_ty_1>())).__wch as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__mbstate_t__bindgen_ty_1), + "::", + stringify!(__wch) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__mbstate_t__bindgen_ty_1>())).__wchb as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__mbstate_t__bindgen_ty_1), + "::", + stringify!(__wchb) + ) + ); +} +#[test] +fn bindgen_test_layout___mbstate_t() { + assert_eq!( + ::std::mem::size_of::<__mbstate_t>(), + 8usize, + concat!("Size of: ", stringify!(__mbstate_t)) + ); + assert_eq!( + ::std::mem::align_of::<__mbstate_t>(), + 4usize, + concat!("Alignment of ", stringify!(__mbstate_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__mbstate_t>())).__count as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__mbstate_t), + "::", + stringify!(__count) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__mbstate_t>())).__value as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__mbstate_t), + "::", + stringify!(__value) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _G_fpos_t { + pub __pos: __off_t, + pub __state: __mbstate_t, +} +#[test] +fn bindgen_test_layout__G_fpos_t() { + assert_eq!( + ::std::mem::size_of::<_G_fpos_t>(), + 16usize, + concat!("Size of: ", stringify!(_G_fpos_t)) + ); + assert_eq!( + ::std::mem::align_of::<_G_fpos_t>(), + 8usize, + concat!("Alignment of ", stringify!(_G_fpos_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_G_fpos_t>())).__pos as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_G_fpos_t), + "::", + stringify!(__pos) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_G_fpos_t>())).__state as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_G_fpos_t), + "::", + stringify!(__state) + ) + ); +} +pub type __fpos_t = _G_fpos_t; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _G_fpos64_t { + pub __pos: __off64_t, + pub __state: __mbstate_t, +} +#[test] +fn bindgen_test_layout__G_fpos64_t() { + assert_eq!( + ::std::mem::size_of::<_G_fpos64_t>(), + 16usize, + concat!("Size of: ", stringify!(_G_fpos64_t)) + ); + assert_eq!( + ::std::mem::align_of::<_G_fpos64_t>(), + 8usize, + concat!("Alignment of ", stringify!(_G_fpos64_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_G_fpos64_t>())).__pos as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_G_fpos64_t), + "::", + stringify!(__pos) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_G_fpos64_t>())).__state as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_G_fpos64_t), + "::", + stringify!(__state) + ) + ); +} +pub type __fpos64_t = _G_fpos64_t; +pub type __FILE = _IO_FILE; +pub type FILE = _IO_FILE; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _IO_marker { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _IO_codecvt { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _IO_wide_data { + _unused: [u8; 0], +} +pub type _IO_lock_t = ::std::os::raw::c_void; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _IO_FILE { + pub _flags: ::std::os::raw::c_int, + pub _IO_read_ptr: *mut ::std::os::raw::c_char, + pub _IO_read_end: *mut ::std::os::raw::c_char, + pub _IO_read_base: *mut ::std::os::raw::c_char, + pub _IO_write_base: *mut ::std::os::raw::c_char, + pub _IO_write_ptr: *mut ::std::os::raw::c_char, + pub _IO_write_end: *mut ::std::os::raw::c_char, + pub _IO_buf_base: *mut ::std::os::raw::c_char, + pub _IO_buf_end: *mut ::std::os::raw::c_char, + pub _IO_save_base: *mut ::std::os::raw::c_char, + pub _IO_backup_base: *mut ::std::os::raw::c_char, + pub _IO_save_end: *mut ::std::os::raw::c_char, + pub _markers: *mut _IO_marker, + pub _chain: *mut _IO_FILE, + pub _fileno: ::std::os::raw::c_int, + pub _flags2: ::std::os::raw::c_int, + pub _old_offset: __off_t, + pub _cur_column: ::std::os::raw::c_ushort, + pub _vtable_offset: ::std::os::raw::c_schar, + pub _shortbuf: [::std::os::raw::c_char; 1usize], + pub _lock: *mut _IO_lock_t, + pub _offset: __off64_t, + pub _codecvt: *mut _IO_codecvt, + pub _wide_data: *mut _IO_wide_data, + pub _freeres_list: *mut _IO_FILE, + pub _freeres_buf: *mut ::std::os::raw::c_void, + pub __pad5: size_t, + pub _mode: ::std::os::raw::c_int, + pub _unused2: [::std::os::raw::c_char; 20usize], +} +#[test] +fn bindgen_test_layout__IO_FILE() { + assert_eq!( + ::std::mem::size_of::<_IO_FILE>(), + 216usize, + concat!("Size of: ", stringify!(_IO_FILE)) + ); + assert_eq!( + ::std::mem::align_of::<_IO_FILE>(), + 8usize, + concat!("Alignment of ", stringify!(_IO_FILE)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._flags as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_flags) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_read_ptr as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_read_ptr) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_read_end as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_read_end) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_read_base as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_read_base) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_write_base as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_write_base) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_write_ptr as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_write_ptr) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_write_end as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_write_end) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_buf_base as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_buf_base) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_buf_end as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_buf_end) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_save_base as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_save_base) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_backup_base as *const _ as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_backup_base) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_save_end as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_save_end) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._markers as *const _ as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_markers) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._chain as *const _ as usize }, + 104usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_chain) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._fileno as *const _ as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_fileno) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._flags2 as *const _ as usize }, + 116usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_flags2) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._old_offset as *const _ as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_old_offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._cur_column as *const _ as usize }, + 128usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_cur_column) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._vtable_offset as *const _ as usize }, + 130usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_vtable_offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._shortbuf as *const _ as usize }, + 131usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_shortbuf) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._lock as *const _ as usize }, + 136usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_lock) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._offset as *const _ as usize }, + 144usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._codecvt as *const _ as usize }, + 152usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_codecvt) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._wide_data as *const _ as usize }, + 160usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_wide_data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._freeres_list as *const _ as usize }, + 168usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_freeres_list) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._freeres_buf as *const _ as usize }, + 176usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_freeres_buf) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>())).__pad5 as *const _ as usize }, + 184usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(__pad5) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._mode as *const _ as usize }, + 192usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_mode) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._unused2 as *const _ as usize }, + 196usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_unused2) + ) + ); +} +pub type off_t = __off_t; +pub type ssize_t = __ssize_t; +pub type fpos_t = __fpos_t; +extern "C" { + pub static mut stdin: *mut FILE; +} +extern "C" { + pub static mut stdout: *mut FILE; +} +extern "C" { + pub static mut stderr: *mut FILE; +} +extern "C" { + pub fn remove(__filename: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn rename( + __old: *const ::std::os::raw::c_char, + __new: *const ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn renameat( + __oldfd: ::std::os::raw::c_int, + __old: *const ::std::os::raw::c_char, + __newfd: ::std::os::raw::c_int, + __new: *const ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn tmpfile() -> *mut FILE; +} +extern "C" { + pub fn tmpnam(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn tmpnam_r(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn tempnam( + __dir: *const ::std::os::raw::c_char, + __pfx: *const ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn fclose(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fflush(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fflush_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fopen( + __filename: *const ::std::os::raw::c_char, + __modes: *const ::std::os::raw::c_char, + ) -> *mut FILE; +} +extern "C" { + pub fn freopen( + __filename: *const ::std::os::raw::c_char, + __modes: *const ::std::os::raw::c_char, + __stream: *mut FILE, + ) -> *mut FILE; +} +extern "C" { + pub fn fdopen(__fd: ::std::os::raw::c_int, __modes: *const ::std::os::raw::c_char) + -> *mut FILE; +} +extern "C" { + pub fn fmemopen( + __s: *mut ::std::os::raw::c_void, + __len: size_t, + __modes: *const ::std::os::raw::c_char, + ) -> *mut FILE; +} +extern "C" { + pub fn open_memstream( + __bufloc: *mut *mut ::std::os::raw::c_char, + __sizeloc: *mut size_t, + ) -> *mut FILE; +} +extern "C" { + pub fn setbuf(__stream: *mut FILE, __buf: *mut ::std::os::raw::c_char); +} +extern "C" { + pub fn setvbuf( + __stream: *mut FILE, + __buf: *mut ::std::os::raw::c_char, + __modes: ::std::os::raw::c_int, + __n: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn setbuffer(__stream: *mut FILE, __buf: *mut ::std::os::raw::c_char, __size: size_t); +} +extern "C" { + pub fn setlinebuf(__stream: *mut FILE); +} +extern "C" { + pub fn fprintf( + __stream: *mut FILE, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn printf(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn sprintf( + __s: *mut ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vfprintf( + __s: *mut FILE, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vprintf( + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vsprintf( + __s: *mut ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn snprintf( + __s: *mut ::std::os::raw::c_char, + __maxlen: ::std::os::raw::c_ulong, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vsnprintf( + __s: *mut ::std::os::raw::c_char, + __maxlen: ::std::os::raw::c_ulong, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vdprintf( + __fd: ::std::os::raw::c_int, + __fmt: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn dprintf( + __fd: ::std::os::raw::c_int, + __fmt: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fscanf( + __stream: *mut FILE, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn scanf(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn sscanf( + __s: *const ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +pub type _Float32 = f32; +pub type _Float64 = f64; +pub type _Float32x = f64; +pub type _Float64x = u128; +extern "C" { + #[link_name = "\u{1}__isoc99_fscanf"] + pub fn fscanf1( + __stream: *mut FILE, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + #[link_name = "\u{1}__isoc99_scanf"] + pub fn scanf1(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int; +} +extern "C" { + #[link_name = "\u{1}__isoc99_sscanf"] + pub fn sscanf1( + __s: *const ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vfscanf( + __s: *mut FILE, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vscanf( + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vsscanf( + __s: *const ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + #[link_name = "\u{1}__isoc99_vfscanf"] + pub fn vfscanf1( + __s: *mut FILE, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + #[link_name = "\u{1}__isoc99_vscanf"] + pub fn vscanf1( + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + #[link_name = "\u{1}__isoc99_vsscanf"] + pub fn vsscanf1( + __s: *const ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fgetc(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getc(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getchar() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getc_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getchar_unlocked() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fgetc_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fputc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn putc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn putchar(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fputc_unlocked(__c: ::std::os::raw::c_int, __stream: *mut FILE) + -> ::std::os::raw::c_int; +} +extern "C" { + pub fn putc_unlocked(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn putchar_unlocked(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getw(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn putw(__w: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fgets( + __s: *mut ::std::os::raw::c_char, + __n: ::std::os::raw::c_int, + __stream: *mut FILE, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn __getdelim( + __lineptr: *mut *mut ::std::os::raw::c_char, + __n: *mut size_t, + __delimiter: ::std::os::raw::c_int, + __stream: *mut FILE, + ) -> __ssize_t; +} +extern "C" { + pub fn getdelim( + __lineptr: *mut *mut ::std::os::raw::c_char, + __n: *mut size_t, + __delimiter: ::std::os::raw::c_int, + __stream: *mut FILE, + ) -> __ssize_t; +} +extern "C" { + pub fn getline( + __lineptr: *mut *mut ::std::os::raw::c_char, + __n: *mut size_t, + __stream: *mut FILE, + ) -> __ssize_t; +} +extern "C" { + pub fn fputs(__s: *const ::std::os::raw::c_char, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn puts(__s: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ungetc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fread( + __ptr: *mut ::std::os::raw::c_void, + __size: ::std::os::raw::c_ulong, + __n: ::std::os::raw::c_ulong, + __stream: *mut FILE, + ) -> ::std::os::raw::c_ulong; +} +extern "C" { + pub fn fwrite( + __ptr: *const ::std::os::raw::c_void, + __size: ::std::os::raw::c_ulong, + __n: ::std::os::raw::c_ulong, + __s: *mut FILE, + ) -> ::std::os::raw::c_ulong; +} +extern "C" { + pub fn fread_unlocked( + __ptr: *mut ::std::os::raw::c_void, + __size: size_t, + __n: size_t, + __stream: *mut FILE, + ) -> size_t; +} +extern "C" { + pub fn fwrite_unlocked( + __ptr: *const ::std::os::raw::c_void, + __size: size_t, + __n: size_t, + __stream: *mut FILE, + ) -> size_t; +} +extern "C" { + pub fn fseek( + __stream: *mut FILE, + __off: ::std::os::raw::c_long, + __whence: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ftell(__stream: *mut FILE) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn rewind(__stream: *mut FILE); +} +extern "C" { + pub fn fseeko( + __stream: *mut FILE, + __off: __off_t, + __whence: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ftello(__stream: *mut FILE) -> __off_t; +} +extern "C" { + pub fn fgetpos(__stream: *mut FILE, __pos: *mut fpos_t) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fsetpos(__stream: *mut FILE, __pos: *const fpos_t) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn clearerr(__stream: *mut FILE); +} +extern "C" { + pub fn feof(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ferror(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn clearerr_unlocked(__stream: *mut FILE); +} +extern "C" { + pub fn feof_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ferror_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn perror(__s: *const ::std::os::raw::c_char); +} +extern "C" { + pub fn fileno(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fileno_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn popen( + __command: *const ::std::os::raw::c_char, + __modes: *const ::std::os::raw::c_char, + ) -> *mut FILE; +} +extern "C" { + pub fn pclose(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ctermid(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn flockfile(__stream: *mut FILE); +} +extern "C" { + pub fn ftrylockfile(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn funlockfile(__stream: *mut FILE); +} +extern "C" { + pub fn __uflow(arg1: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn __overflow(arg1: *mut FILE, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +pub type wchar_t = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct div_t { + pub quot: ::std::os::raw::c_int, + pub rem: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_div_t() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(div_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(div_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).quot as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(div_t), + "::", + stringify!(quot) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rem as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(div_t), + "::", + stringify!(rem) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ldiv_t { + pub quot: ::std::os::raw::c_long, + pub rem: ::std::os::raw::c_long, +} +#[test] +fn bindgen_test_layout_ldiv_t() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(ldiv_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(ldiv_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).quot as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ldiv_t), + "::", + stringify!(quot) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rem as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ldiv_t), + "::", + stringify!(rem) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct lldiv_t { + pub quot: ::std::os::raw::c_longlong, + pub rem: ::std::os::raw::c_longlong, +} +#[test] +fn bindgen_test_layout_lldiv_t() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(lldiv_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(lldiv_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).quot as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lldiv_t), + "::", + stringify!(quot) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rem as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(lldiv_t), + "::", + stringify!(rem) + ) + ); +} +extern "C" { + pub fn __ctype_get_mb_cur_max() -> size_t; +} +extern "C" { + pub fn atof(__nptr: *const ::std::os::raw::c_char) -> f64; +} +extern "C" { + pub fn atoi(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn atol(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn atoll(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_longlong; +} +extern "C" { + pub fn strtod( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + ) -> f64; +} +extern "C" { + pub fn strtof( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + ) -> f32; +} +extern "C" { + pub fn strtold( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + ) -> u128; +} +extern "C" { + pub fn strtol( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn strtoul( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_ulong; +} +extern "C" { + pub fn strtoq( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_longlong; +} +extern "C" { + pub fn strtouq( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_ulonglong; +} +extern "C" { + pub fn strtoll( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_longlong; +} +extern "C" { + pub fn strtoull( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_ulonglong; +} +extern "C" { + pub fn l64a(__n: ::std::os::raw::c_long) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn a64l(__s: *const ::std::os::raw::c_char) -> ::std::os::raw::c_long; +} +pub type u_char = __u_char; +pub type u_short = __u_short; +pub type u_int = __u_int; +pub type u_long = __u_long; +pub type quad_t = __quad_t; +pub type u_quad_t = __u_quad_t; +pub type fsid_t = __fsid_t; +pub type loff_t = __loff_t; +pub type ino_t = __ino_t; +pub type dev_t = __dev_t; +pub type gid_t = __gid_t; +pub type mode_t = __mode_t; +pub type nlink_t = __nlink_t; +pub type uid_t = __uid_t; +pub type pid_t = __pid_t; +pub type id_t = __id_t; +pub type daddr_t = __daddr_t; +pub type caddr_t = __caddr_t; +pub type key_t = __key_t; +pub type clock_t = __clock_t; +pub type clockid_t = __clockid_t; +pub type time_t = __time_t; +pub type timer_t = __timer_t; +pub type ulong = ::std::os::raw::c_ulong; +pub type ushort = ::std::os::raw::c_ushort; +pub type uint = ::std::os::raw::c_uint; +pub type u_int8_t = __uint8_t; +pub type u_int16_t = __uint16_t; +pub type u_int32_t = __uint32_t; +pub type u_int64_t = __uint64_t; +pub type register_t = ::std::os::raw::c_long; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sigset_t { + pub __val: [::std::os::raw::c_ulong; 16usize], +} +#[test] +fn bindgen_test_layout___sigset_t() { + assert_eq!( + ::std::mem::size_of::<__sigset_t>(), + 128usize, + concat!("Size of: ", stringify!(__sigset_t)) + ); + assert_eq!( + ::std::mem::align_of::<__sigset_t>(), + 8usize, + concat!("Alignment of ", stringify!(__sigset_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__sigset_t>())).__val as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__sigset_t), + "::", + stringify!(__val) + ) + ); +} +pub type sigset_t = __sigset_t; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct timeval { + pub tv_sec: __time_t, + pub tv_usec: __suseconds_t, +} +#[test] +fn bindgen_test_layout_timeval() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(timeval)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(timeval)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tv_sec as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(timeval), + "::", + stringify!(tv_sec) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tv_usec as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(timeval), + "::", + stringify!(tv_usec) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct timespec { + pub tv_sec: __time_t, + pub tv_nsec: __syscall_slong_t, +} +#[test] +fn bindgen_test_layout_timespec() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(timespec)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(timespec)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tv_sec as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(timespec), + "::", + stringify!(tv_sec) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tv_nsec as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(timespec), + "::", + stringify!(tv_nsec) + ) + ); +} +pub type suseconds_t = __suseconds_t; +pub type __fd_mask = ::std::os::raw::c_long; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fd_set { + pub __fds_bits: [__fd_mask; 16usize], +} +#[test] +fn bindgen_test_layout_fd_set() { + assert_eq!( + ::std::mem::size_of::(), + 128usize, + concat!("Size of: ", stringify!(fd_set)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(fd_set)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__fds_bits as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(fd_set), + "::", + stringify!(__fds_bits) + ) + ); +} +pub type fd_mask = __fd_mask; +extern "C" { + pub fn select( + __nfds: ::std::os::raw::c_int, + __readfds: *mut fd_set, + __writefds: *mut fd_set, + __exceptfds: *mut fd_set, + __timeout: *mut timeval, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn pselect( + __nfds: ::std::os::raw::c_int, + __readfds: *mut fd_set, + __writefds: *mut fd_set, + __exceptfds: *mut fd_set, + __timeout: *const timespec, + __sigmask: *const __sigset_t, + ) -> ::std::os::raw::c_int; +} +pub type blksize_t = __blksize_t; +pub type blkcnt_t = __blkcnt_t; +pub type fsblkcnt_t = __fsblkcnt_t; +pub type fsfilcnt_t = __fsfilcnt_t; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_internal_list { + pub __prev: *mut __pthread_internal_list, + pub __next: *mut __pthread_internal_list, +} +#[test] +fn bindgen_test_layout___pthread_internal_list() { + assert_eq!( + ::std::mem::size_of::<__pthread_internal_list>(), + 16usize, + concat!("Size of: ", stringify!(__pthread_internal_list)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_internal_list>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_internal_list)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_internal_list>())).__prev as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_internal_list), + "::", + stringify!(__prev) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_internal_list>())).__next as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(__pthread_internal_list), + "::", + stringify!(__next) + ) + ); +} +pub type __pthread_list_t = __pthread_internal_list; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_internal_slist { + pub __next: *mut __pthread_internal_slist, +} +#[test] +fn bindgen_test_layout___pthread_internal_slist() { + assert_eq!( + ::std::mem::size_of::<__pthread_internal_slist>(), + 8usize, + concat!("Size of: ", stringify!(__pthread_internal_slist)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_internal_slist>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_internal_slist)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_internal_slist>())).__next as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_internal_slist), + "::", + stringify!(__next) + ) + ); +} +pub type __pthread_slist_t = __pthread_internal_slist; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_mutex_s { + pub __lock: ::std::os::raw::c_int, + pub __count: ::std::os::raw::c_uint, + pub __owner: ::std::os::raw::c_int, + pub __nusers: ::std::os::raw::c_uint, + pub __kind: ::std::os::raw::c_int, + pub __spins: ::std::os::raw::c_short, + pub __elision: ::std::os::raw::c_short, + pub __list: __pthread_list_t, +} +#[test] +fn bindgen_test_layout___pthread_mutex_s() { + assert_eq!( + ::std::mem::size_of::<__pthread_mutex_s>(), + 40usize, + concat!("Size of: ", stringify!(__pthread_mutex_s)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_mutex_s>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_mutex_s)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__lock as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__lock) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__count as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__count) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__owner as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__owner) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__nusers as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__nusers) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__kind as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__kind) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__spins as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__spins) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__elision as *const _ as usize }, + 22usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__elision) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__list as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__list) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_rwlock_arch_t { + pub __readers: ::std::os::raw::c_uint, + pub __writers: ::std::os::raw::c_uint, + pub __wrphase_futex: ::std::os::raw::c_uint, + pub __writers_futex: ::std::os::raw::c_uint, + pub __pad3: ::std::os::raw::c_uint, + pub __pad4: ::std::os::raw::c_uint, + pub __cur_writer: ::std::os::raw::c_int, + pub __shared: ::std::os::raw::c_int, + pub __rwelision: ::std::os::raw::c_schar, + pub __pad1: [::std::os::raw::c_uchar; 7usize], + pub __pad2: ::std::os::raw::c_ulong, + pub __flags: ::std::os::raw::c_uint, +} +#[test] +fn bindgen_test_layout___pthread_rwlock_arch_t() { + assert_eq!( + ::std::mem::size_of::<__pthread_rwlock_arch_t>(), + 56usize, + concat!("Size of: ", stringify!(__pthread_rwlock_arch_t)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_rwlock_arch_t>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_rwlock_arch_t)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__readers as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__readers) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__writers as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__writers) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__wrphase_futex as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__wrphase_futex) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__writers_futex as *const _ as usize + }, + 12usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__writers_futex) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad3 as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__pad3) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad4 as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__pad4) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__cur_writer as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__cur_writer) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__shared as *const _ as usize + }, + 28usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__shared) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__rwelision as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__rwelision) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad1 as *const _ as usize }, + 33usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__pad1) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad2 as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__pad2) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__flags as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__flags) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __pthread_cond_s { + pub __bindgen_anon_1: __pthread_cond_s__bindgen_ty_1, + pub __bindgen_anon_2: __pthread_cond_s__bindgen_ty_2, + pub __g_refs: [::std::os::raw::c_uint; 2usize], + pub __g_size: [::std::os::raw::c_uint; 2usize], + pub __g1_orig_size: ::std::os::raw::c_uint, + pub __wrefs: ::std::os::raw::c_uint, + pub __g_signals: [::std::os::raw::c_uint; 2usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __pthread_cond_s__bindgen_ty_1 { + pub __wseq: ::std::os::raw::c_ulonglong, + pub __wseq32: __pthread_cond_s__bindgen_ty_1__bindgen_ty_1, + _bindgen_union_align: u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_cond_s__bindgen_ty_1__bindgen_ty_1 { + pub __low: ::std::os::raw::c_uint, + pub __high: ::std::os::raw::c_uint, +} +#[test] +fn bindgen_test_layout___pthread_cond_s__bindgen_ty_1__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>(), + 8usize, + concat!( + "Size of: ", + stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>(), + 4usize, + concat!( + "Alignment of ", + stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>())).__low + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(__low) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>())).__high + as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(__high) + ) + ); +} +#[test] +fn bindgen_test_layout___pthread_cond_s__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_1>(), + 8usize, + concat!("Size of: ", stringify!(__pthread_cond_s__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_1>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_cond_s__bindgen_ty_1)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1>())).__wseq as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_1), + "::", + stringify!(__wseq) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1>())).__wseq32 as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_1), + "::", + stringify!(__wseq32) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __pthread_cond_s__bindgen_ty_2 { + pub __g1_start: ::std::os::raw::c_ulonglong, + pub __g1_start32: __pthread_cond_s__bindgen_ty_2__bindgen_ty_1, + _bindgen_union_align: u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_cond_s__bindgen_ty_2__bindgen_ty_1 { + pub __low: ::std::os::raw::c_uint, + pub __high: ::std::os::raw::c_uint, +} +#[test] +fn bindgen_test_layout___pthread_cond_s__bindgen_ty_2__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>(), + 8usize, + concat!( + "Size of: ", + stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>(), + 4usize, + concat!( + "Alignment of ", + stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>())).__low + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1), + "::", + stringify!(__low) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>())).__high + as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1), + "::", + stringify!(__high) + ) + ); +} +#[test] +fn bindgen_test_layout___pthread_cond_s__bindgen_ty_2() { + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_2>(), + 8usize, + concat!("Size of: ", stringify!(__pthread_cond_s__bindgen_ty_2)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_2>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_cond_s__bindgen_ty_2)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2>())).__g1_start as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_2), + "::", + stringify!(__g1_start) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2>())).__g1_start32 as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_2), + "::", + stringify!(__g1_start32) + ) + ); +} +#[test] +fn bindgen_test_layout___pthread_cond_s() { + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s>(), + 48usize, + concat!("Size of: ", stringify!(__pthread_cond_s)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_cond_s)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g_refs as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__g_refs) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g_size as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__g_size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g1_orig_size as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__g1_orig_size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__wrefs as *const _ as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__wrefs) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g_signals as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__g_signals) + ) + ); +} +pub type __tss_t = ::std::os::raw::c_uint; +pub type __thrd_t = ::std::os::raw::c_ulong; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __once_flag { + pub __data: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout___once_flag() { + assert_eq!( + ::std::mem::size_of::<__once_flag>(), + 4usize, + concat!("Size of: ", stringify!(__once_flag)) + ); + assert_eq!( + ::std::mem::align_of::<__once_flag>(), + 4usize, + concat!("Alignment of ", stringify!(__once_flag)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__once_flag>())).__data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__once_flag), + "::", + stringify!(__data) + ) + ); +} +pub type pthread_t = ::std::os::raw::c_ulong; +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_mutexattr_t { + pub __size: [::std::os::raw::c_char; 4usize], + pub __align: ::std::os::raw::c_int, + _bindgen_union_align: u32, +} +#[test] +fn bindgen_test_layout_pthread_mutexattr_t() { + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(pthread_mutexattr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(pthread_mutexattr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutexattr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutexattr_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_condattr_t { + pub __size: [::std::os::raw::c_char; 4usize], + pub __align: ::std::os::raw::c_int, + _bindgen_union_align: u32, +} +#[test] +fn bindgen_test_layout_pthread_condattr_t() { + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(pthread_condattr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(pthread_condattr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_condattr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_condattr_t), + "::", + stringify!(__align) + ) + ); +} +pub type pthread_key_t = ::std::os::raw::c_uint; +pub type pthread_once_t = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_attr_t { + pub __size: [::std::os::raw::c_char; 56usize], + pub __align: ::std::os::raw::c_long, + _bindgen_union_align: [u64; 7usize], +} +#[test] +fn bindgen_test_layout_pthread_attr_t() { + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(pthread_attr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_attr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_attr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_attr_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_mutex_t { + pub __data: __pthread_mutex_s, + pub __size: [::std::os::raw::c_char; 40usize], + pub __align: ::std::os::raw::c_long, + _bindgen_union_align: [u64; 5usize], +} +#[test] +fn bindgen_test_layout_pthread_mutex_t() { + assert_eq!( + ::std::mem::size_of::(), + 40usize, + concat!("Size of: ", stringify!(pthread_mutex_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_mutex_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutex_t), + "::", + stringify!(__data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutex_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutex_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_cond_t { + pub __data: __pthread_cond_s, + pub __size: [::std::os::raw::c_char; 48usize], + pub __align: ::std::os::raw::c_longlong, + _bindgen_union_align: [u64; 6usize], +} +#[test] +fn bindgen_test_layout_pthread_cond_t() { + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(pthread_cond_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_cond_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_cond_t), + "::", + stringify!(__data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_cond_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_cond_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_rwlock_t { + pub __data: __pthread_rwlock_arch_t, + pub __size: [::std::os::raw::c_char; 56usize], + pub __align: ::std::os::raw::c_long, + _bindgen_union_align: [u64; 7usize], +} +#[test] +fn bindgen_test_layout_pthread_rwlock_t() { + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(pthread_rwlock_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_rwlock_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlock_t), + "::", + stringify!(__data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlock_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlock_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_rwlockattr_t { + pub __size: [::std::os::raw::c_char; 8usize], + pub __align: ::std::os::raw::c_long, + _bindgen_union_align: u64, +} +#[test] +fn bindgen_test_layout_pthread_rwlockattr_t() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(pthread_rwlockattr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_rwlockattr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlockattr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlockattr_t), + "::", + stringify!(__align) + ) + ); +} +pub type pthread_spinlock_t = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_barrier_t { + pub __size: [::std::os::raw::c_char; 32usize], + pub __align: ::std::os::raw::c_long, + _bindgen_union_align: [u64; 4usize], +} +#[test] +fn bindgen_test_layout_pthread_barrier_t() { + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(pthread_barrier_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_barrier_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_barrier_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_barrier_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_barrierattr_t { + pub __size: [::std::os::raw::c_char; 4usize], + pub __align: ::std::os::raw::c_int, + _bindgen_union_align: u32, +} +#[test] +fn bindgen_test_layout_pthread_barrierattr_t() { + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(pthread_barrierattr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(pthread_barrierattr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_barrierattr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_barrierattr_t), + "::", + stringify!(__align) + ) + ); +} +extern "C" { + pub fn random() -> ::std::os::raw::c_long; +} +extern "C" { + pub fn srandom(__seed: ::std::os::raw::c_uint); +} +extern "C" { + pub fn initstate( + __seed: ::std::os::raw::c_uint, + __statebuf: *mut ::std::os::raw::c_char, + __statelen: size_t, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn setstate(__statebuf: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct random_data { + pub fptr: *mut i32, + pub rptr: *mut i32, + pub state: *mut i32, + pub rand_type: ::std::os::raw::c_int, + pub rand_deg: ::std::os::raw::c_int, + pub rand_sep: ::std::os::raw::c_int, + pub end_ptr: *mut i32, +} +#[test] +fn bindgen_test_layout_random_data() { + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(random_data)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(random_data)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fptr as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(fptr) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rptr as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(rptr) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).state as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(state) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rand_type as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(rand_type) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rand_deg as *const _ as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(rand_deg) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rand_sep as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(rand_sep) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).end_ptr as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(end_ptr) + ) + ); +} +extern "C" { + pub fn random_r(__buf: *mut random_data, __result: *mut i32) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn srandom_r( + __seed: ::std::os::raw::c_uint, + __buf: *mut random_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn initstate_r( + __seed: ::std::os::raw::c_uint, + __statebuf: *mut ::std::os::raw::c_char, + __statelen: size_t, + __buf: *mut random_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn setstate_r( + __statebuf: *mut ::std::os::raw::c_char, + __buf: *mut random_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn rand() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn srand(__seed: ::std::os::raw::c_uint); +} +extern "C" { + pub fn rand_r(__seed: *mut ::std::os::raw::c_uint) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn drand48() -> f64; +} +extern "C" { + pub fn erand48(__xsubi: *mut ::std::os::raw::c_ushort) -> f64; +} +extern "C" { + pub fn lrand48() -> ::std::os::raw::c_long; +} +extern "C" { + pub fn nrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn mrand48() -> ::std::os::raw::c_long; +} +extern "C" { + pub fn jrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn srand48(__seedval: ::std::os::raw::c_long); +} +extern "C" { + pub fn seed48(__seed16v: *mut ::std::os::raw::c_ushort) -> *mut ::std::os::raw::c_ushort; +} +extern "C" { + pub fn lcong48(__param: *mut ::std::os::raw::c_ushort); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct drand48_data { + pub __x: [::std::os::raw::c_ushort; 3usize], + pub __old_x: [::std::os::raw::c_ushort; 3usize], + pub __c: ::std::os::raw::c_ushort, + pub __init: ::std::os::raw::c_ushort, + pub __a: ::std::os::raw::c_ulonglong, +} +#[test] +fn bindgen_test_layout_drand48_data() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(drand48_data)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(drand48_data)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__x as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__old_x as *const _ as usize }, + 6usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__old_x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__c as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__c) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__init as *const _ as usize }, + 14usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__init) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__a as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__a) + ) + ); +} +extern "C" { + pub fn drand48_r(__buffer: *mut drand48_data, __result: *mut f64) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn erand48_r( + __xsubi: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + __result: *mut f64, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn lrand48_r( + __buffer: *mut drand48_data, + __result: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn nrand48_r( + __xsubi: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + __result: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mrand48_r( + __buffer: *mut drand48_data, + __result: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn jrand48_r( + __xsubi: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + __result: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn srand48_r( + __seedval: ::std::os::raw::c_long, + __buffer: *mut drand48_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn seed48_r( + __seed16v: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn lcong48_r( + __param: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn malloc(__size: ::std::os::raw::c_ulong) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn calloc( + __nmemb: ::std::os::raw::c_ulong, + __size: ::std::os::raw::c_ulong, + ) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn realloc( + __ptr: *mut ::std::os::raw::c_void, + __size: ::std::os::raw::c_ulong, + ) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn reallocarray( + __ptr: *mut ::std::os::raw::c_void, + __nmemb: size_t, + __size: size_t, + ) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn free(__ptr: *mut ::std::os::raw::c_void); +} +extern "C" { + pub fn alloca(__size: ::std::os::raw::c_ulong) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn valloc(__size: size_t) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn posix_memalign( + __memptr: *mut *mut ::std::os::raw::c_void, + __alignment: size_t, + __size: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn aligned_alloc(__alignment: size_t, __size: size_t) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn abort(); +} +extern "C" { + pub fn atexit(__func: ::std::option::Option) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn at_quick_exit( + __func: ::std::option::Option, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn on_exit( + __func: ::std::option::Option< + unsafe extern "C" fn( + __status: ::std::os::raw::c_int, + __arg: *mut ::std::os::raw::c_void, + ), + >, + __arg: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn exit(__status: ::std::os::raw::c_int); +} +extern "C" { + pub fn quick_exit(__status: ::std::os::raw::c_int); +} +extern "C" { + pub fn _Exit(__status: ::std::os::raw::c_int); +} +extern "C" { + pub fn getenv(__name: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn putenv(__string: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn setenv( + __name: *const ::std::os::raw::c_char, + __value: *const ::std::os::raw::c_char, + __replace: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn unsetenv(__name: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn clearenv() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mktemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn mkstemp(__template: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mkstemps( + __template: *mut ::std::os::raw::c_char, + __suffixlen: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mkdtemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn system(__command: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn realpath( + __name: *const ::std::os::raw::c_char, + __resolved: *mut ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_char; +} +pub type __compar_fn_t = ::std::option::Option< + unsafe extern "C" fn( + arg1: *const ::std::os::raw::c_void, + arg2: *const ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, +>; +extern "C" { + pub fn bsearch( + __key: *const ::std::os::raw::c_void, + __base: *const ::std::os::raw::c_void, + __nmemb: size_t, + __size: size_t, + __compar: __compar_fn_t, + ) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn qsort( + __base: *mut ::std::os::raw::c_void, + __nmemb: size_t, + __size: size_t, + __compar: __compar_fn_t, + ); +} +extern "C" { + pub fn abs(__x: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn labs(__x: ::std::os::raw::c_long) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn llabs(__x: ::std::os::raw::c_longlong) -> ::std::os::raw::c_longlong; +} +extern "C" { + pub fn div(__numer: ::std::os::raw::c_int, __denom: ::std::os::raw::c_int) -> div_t; +} +extern "C" { + pub fn ldiv(__numer: ::std::os::raw::c_long, __denom: ::std::os::raw::c_long) -> ldiv_t; +} +extern "C" { + pub fn lldiv( + __numer: ::std::os::raw::c_longlong, + __denom: ::std::os::raw::c_longlong, + ) -> lldiv_t; +} +extern "C" { + pub fn ecvt( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn fcvt( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn gcvt( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn qecvt( + __value: u128, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn qfcvt( + __value: u128, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn qgcvt( + __value: u128, + __ndigit: ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn ecvt_r( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + __len: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fcvt_r( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + __len: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn qecvt_r( + __value: u128, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + __len: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn qfcvt_r( + __value: u128, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + __len: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mblen(__s: *const ::std::os::raw::c_char, __n: size_t) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mbtowc( + __pwc: *mut wchar_t, + __s: *const ::std::os::raw::c_char, + __n: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn wctomb(__s: *mut ::std::os::raw::c_char, __wchar: wchar_t) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mbstowcs( + __pwcs: *mut wchar_t, + __s: *const ::std::os::raw::c_char, + __n: size_t, + ) -> size_t; +} +extern "C" { + pub fn wcstombs( + __s: *mut ::std::os::raw::c_char, + __pwcs: *const wchar_t, + __n: size_t, + ) -> size_t; +} +extern "C" { + pub fn rpmatch(__response: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getsubopt( + __optionp: *mut *mut ::std::os::raw::c_char, + __tokens: *const *mut ::std::os::raw::c_char, + __valuep: *mut *mut ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getloadavg(__loadavg: *mut f64, __nelem: ::std::os::raw::c_int) + -> ::std::os::raw::c_int; +} +#[repr(C)] +#[repr(align(16))] +#[derive(Debug, Copy, Clone)] +pub struct max_align_t { + pub __clang_max_align_nonce1: ::std::os::raw::c_longlong, + pub __bindgen_padding_0: u64, + pub __clang_max_align_nonce2: u128, +} +#[test] +fn bindgen_test_layout_max_align_t() { + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(max_align_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 16usize, + concat!("Alignment of ", stringify!(max_align_t)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).__clang_max_align_nonce1 as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(max_align_t), + "::", + stringify!(__clang_max_align_nonce1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).__clang_max_align_nonce2 as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(max_align_t), + "::", + stringify!(__clang_max_align_nonce2) + ) + ); +} +pub type int_least8_t = __int_least8_t; +pub type int_least16_t = __int_least16_t; +pub type int_least32_t = __int_least32_t; +pub type int_least64_t = __int_least64_t; +pub type uint_least8_t = __uint_least8_t; +pub type uint_least16_t = __uint_least16_t; +pub type uint_least32_t = __uint_least32_t; +pub type uint_least64_t = __uint_least64_t; +pub type int_fast8_t = ::std::os::raw::c_schar; +pub type int_fast16_t = ::std::os::raw::c_long; +pub type int_fast32_t = ::std::os::raw::c_long; +pub type int_fast64_t = ::std::os::raw::c_long; +pub type uint_fast8_t = ::std::os::raw::c_uchar; +pub type uint_fast16_t = ::std::os::raw::c_ulong; +pub type uint_fast32_t = ::std::os::raw::c_ulong; +pub type uint_fast64_t = ::std::os::raw::c_ulong; +pub type intmax_t = __intmax_t; +pub type uintmax_t = __uintmax_t; +pub type realtype = f64; +pub type sunindextype = i64; +pub const N_Vector_ID_SUNDIALS_NVEC_SERIAL: N_Vector_ID = 0; +pub const N_Vector_ID_SUNDIALS_NVEC_PARALLEL: N_Vector_ID = 1; +pub const N_Vector_ID_SUNDIALS_NVEC_OPENMP: N_Vector_ID = 2; +pub const N_Vector_ID_SUNDIALS_NVEC_PTHREADS: N_Vector_ID = 3; +pub const N_Vector_ID_SUNDIALS_NVEC_PARHYP: N_Vector_ID = 4; +pub const N_Vector_ID_SUNDIALS_NVEC_PETSC: N_Vector_ID = 5; +pub const N_Vector_ID_SUNDIALS_NVEC_CUDA: N_Vector_ID = 6; +pub const N_Vector_ID_SUNDIALS_NVEC_HIP: N_Vector_ID = 7; +pub const N_Vector_ID_SUNDIALS_NVEC_SYCL: N_Vector_ID = 8; +pub const N_Vector_ID_SUNDIALS_NVEC_RAJA: N_Vector_ID = 9; +pub const N_Vector_ID_SUNDIALS_NVEC_OPENMPDEV: N_Vector_ID = 10; +pub const N_Vector_ID_SUNDIALS_NVEC_TRILINOS: N_Vector_ID = 11; +pub const N_Vector_ID_SUNDIALS_NVEC_MANYVECTOR: N_Vector_ID = 12; +pub const N_Vector_ID_SUNDIALS_NVEC_MPIMANYVECTOR: N_Vector_ID = 13; +pub const N_Vector_ID_SUNDIALS_NVEC_MPIPLUSX: N_Vector_ID = 14; +pub const N_Vector_ID_SUNDIALS_NVEC_CUSTOM: N_Vector_ID = 15; +pub type N_Vector_ID = ::std::os::raw::c_uint; +pub type N_Vector_Ops = *mut _generic_N_Vector_Ops; +pub type N_Vector = *mut _generic_N_Vector; +pub type N_Vector_S = *mut N_Vector; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _generic_N_Vector_Ops { + pub nvgetvectorid: ::std::option::Option N_Vector_ID>, + pub nvclone: ::std::option::Option N_Vector>, + pub nvcloneempty: ::std::option::Option N_Vector>, + pub nvdestroy: ::std::option::Option, + pub nvspace: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: *mut sunindextype, arg3: *mut sunindextype), + >, + pub nvgetarraypointer: + ::std::option::Option *mut realtype>, + pub nvgetdevicearraypointer: + ::std::option::Option *mut realtype>, + pub nvsetarraypointer: + ::std::option::Option, + pub nvgetcommunicator: + ::std::option::Option *mut ::std::os::raw::c_void>, + pub nvgetlength: ::std::option::Option sunindextype>, + pub nvlinearsum: ::std::option::Option< + unsafe extern "C" fn( + arg1: realtype, + arg2: N_Vector, + arg3: realtype, + arg4: N_Vector, + arg5: N_Vector, + ), + >, + pub nvconst: ::std::option::Option, + pub nvprod: + ::std::option::Option, + pub nvdiv: + ::std::option::Option, + pub nvscale: + ::std::option::Option, + pub nvabs: ::std::option::Option, + pub nvinv: ::std::option::Option, + pub nvaddconst: + ::std::option::Option, + pub nvdotprod: + ::std::option::Option realtype>, + pub nvmaxnorm: ::std::option::Option realtype>, + pub nvwrmsnorm: + ::std::option::Option realtype>, + pub nvwrmsnormmask: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: N_Vector, arg3: N_Vector) -> realtype, + >, + pub nvmin: ::std::option::Option realtype>, + pub nvwl2norm: + ::std::option::Option realtype>, + pub nvl1norm: ::std::option::Option realtype>, + pub nvcompare: + ::std::option::Option, + pub nvinvtest: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: N_Vector) -> ::std::os::raw::c_int, + >, + pub nvconstrmask: ::std::option::Option< + unsafe extern "C" fn( + arg1: N_Vector, + arg2: N_Vector, + arg3: N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvminquotient: + ::std::option::Option realtype>, + pub nvlinearcombination: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: *mut realtype, + arg3: *mut N_Vector, + arg4: N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvscaleaddmulti: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: *mut realtype, + arg3: N_Vector, + arg4: *mut N_Vector, + arg5: *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvdotprodmulti: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: N_Vector, + arg3: *mut N_Vector, + arg4: *mut realtype, + ) -> ::std::os::raw::c_int, + >, + pub nvlinearsumvectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: realtype, + arg3: *mut N_Vector, + arg4: realtype, + arg5: *mut N_Vector, + arg6: *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvscalevectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: *mut realtype, + arg3: *mut N_Vector, + arg4: *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvconstvectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: realtype, + arg3: *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvwrmsnormvectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: *mut N_Vector, + arg3: *mut N_Vector, + arg4: *mut realtype, + ) -> ::std::os::raw::c_int, + >, + pub nvwrmsnormmaskvectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: *mut N_Vector, + arg3: *mut N_Vector, + arg4: N_Vector, + arg5: *mut realtype, + ) -> ::std::os::raw::c_int, + >, + pub nvscaleaddmultivectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: ::std::os::raw::c_int, + arg3: *mut realtype, + arg4: *mut N_Vector, + arg5: *mut *mut N_Vector, + arg6: *mut *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvlinearcombinationvectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: ::std::os::raw::c_int, + arg3: *mut realtype, + arg4: *mut *mut N_Vector, + arg5: *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvdotprodlocal: + ::std::option::Option realtype>, + pub nvmaxnormlocal: ::std::option::Option realtype>, + pub nvminlocal: ::std::option::Option realtype>, + pub nvl1normlocal: ::std::option::Option realtype>, + pub nvinvtestlocal: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: N_Vector) -> ::std::os::raw::c_int, + >, + pub nvconstrmasklocal: ::std::option::Option< + unsafe extern "C" fn( + arg1: N_Vector, + arg2: N_Vector, + arg3: N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvminquotientlocal: + ::std::option::Option realtype>, + pub nvwsqrsumlocal: + ::std::option::Option realtype>, + pub nvwsqrsummasklocal: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: N_Vector, arg3: N_Vector) -> realtype, + >, + pub nvbufsize: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: *mut sunindextype) -> ::std::os::raw::c_int, + >, + pub nvbufpack: ::std::option::Option< + unsafe extern "C" fn( + arg1: N_Vector, + arg2: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, + >, + pub nvbufunpack: ::std::option::Option< + unsafe extern "C" fn( + arg1: N_Vector, + arg2: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, + >, + pub nvprint: ::std::option::Option, + pub nvprintfile: ::std::option::Option, +} +#[test] +fn bindgen_test_layout__generic_N_Vector_Ops() { + assert_eq!( + ::std::mem::size_of::<_generic_N_Vector_Ops>(), + 424usize, + concat!("Size of: ", stringify!(_generic_N_Vector_Ops)) + ); + assert_eq!( + ::std::mem::align_of::<_generic_N_Vector_Ops>(), + 8usize, + concat!("Alignment of ", stringify!(_generic_N_Vector_Ops)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvgetvectorid as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvgetvectorid) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvclone as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvclone) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvcloneempty as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvcloneempty) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvdestroy as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvdestroy) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvspace as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvspace) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvgetarraypointer as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvgetarraypointer) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvgetdevicearraypointer as *const _ + as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvgetdevicearraypointer) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvsetarraypointer as *const _ as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvsetarraypointer) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvgetcommunicator as *const _ as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvgetcommunicator) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvgetlength as *const _ as usize + }, + 72usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvgetlength) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvlinearsum as *const _ as usize + }, + 80usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvlinearsum) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvconst as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvconst) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvprod as *const _ as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvprod) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvdiv as *const _ as usize }, + 104usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvdiv) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvscale as *const _ as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvscale) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvabs as *const _ as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvabs) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvinv as *const _ as usize }, + 128usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvinv) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvaddconst as *const _ as usize + }, + 136usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvaddconst) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvdotprod as *const _ as usize }, + 144usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvdotprod) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvmaxnorm as *const _ as usize }, + 152usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvmaxnorm) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwrmsnorm as *const _ as usize + }, + 160usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwrmsnorm) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwrmsnormmask as *const _ as usize + }, + 168usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwrmsnormmask) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvmin as *const _ as usize }, + 176usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvmin) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwl2norm as *const _ as usize }, + 184usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwl2norm) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvl1norm as *const _ as usize }, + 192usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvl1norm) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvcompare as *const _ as usize }, + 200usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvcompare) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvinvtest as *const _ as usize }, + 208usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvinvtest) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvconstrmask as *const _ as usize + }, + 216usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvconstrmask) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvminquotient as *const _ as usize + }, + 224usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvminquotient) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvlinearcombination as *const _ + as usize + }, + 232usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvlinearcombination) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvscaleaddmulti as *const _ as usize + }, + 240usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvscaleaddmulti) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvdotprodmulti as *const _ as usize + }, + 248usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvdotprodmulti) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvlinearsumvectorarray as *const _ + as usize + }, + 256usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvlinearsumvectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvscalevectorarray as *const _ + as usize + }, + 264usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvscalevectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvconstvectorarray as *const _ + as usize + }, + 272usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvconstvectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwrmsnormvectorarray as *const _ + as usize + }, + 280usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwrmsnormvectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwrmsnormmaskvectorarray as *const _ + as usize + }, + 288usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwrmsnormmaskvectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvscaleaddmultivectorarray as *const _ + as usize + }, + 296usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvscaleaddmultivectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvlinearcombinationvectorarray + as *const _ as usize + }, + 304usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvlinearcombinationvectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvdotprodlocal as *const _ as usize + }, + 312usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvdotprodlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvmaxnormlocal as *const _ as usize + }, + 320usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvmaxnormlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvminlocal as *const _ as usize + }, + 328usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvminlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvl1normlocal as *const _ as usize + }, + 336usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvl1normlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvinvtestlocal as *const _ as usize + }, + 344usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvinvtestlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvconstrmasklocal as *const _ as usize + }, + 352usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvconstrmasklocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvminquotientlocal as *const _ + as usize + }, + 360usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvminquotientlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwsqrsumlocal as *const _ as usize + }, + 368usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwsqrsumlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwsqrsummasklocal as *const _ + as usize + }, + 376usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwsqrsummasklocal) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvbufsize as *const _ as usize }, + 384usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvbufsize) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvbufpack as *const _ as usize }, + 392usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvbufpack) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvbufunpack as *const _ as usize + }, + 400usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvbufunpack) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvprint as *const _ as usize }, + 408usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvprint) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvprintfile as *const _ as usize + }, + 416usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvprintfile) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _generic_N_Vector { + pub content: *mut ::std::os::raw::c_void, + pub ops: N_Vector_Ops, +} +#[test] +fn bindgen_test_layout__generic_N_Vector() { + assert_eq!( + ::std::mem::size_of::<_generic_N_Vector>(), + 16usize, + concat!("Size of: ", stringify!(_generic_N_Vector)) + ); + assert_eq!( + ::std::mem::align_of::<_generic_N_Vector>(), + 8usize, + concat!("Alignment of ", stringify!(_generic_N_Vector)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector>())).content as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector), + "::", + stringify!(content) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector>())).ops as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector), + "::", + stringify!(ops) + ) + ); +} +extern "C" { + pub fn N_VNewEmpty() -> N_Vector; +} +extern "C" { + pub fn N_VFreeEmpty(v: N_Vector); +} +extern "C" { + pub fn N_VCopyOps(w: N_Vector, v: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VGetVectorID(w: N_Vector) -> N_Vector_ID; +} +extern "C" { + pub fn N_VClone(w: N_Vector) -> N_Vector; +} +extern "C" { + pub fn N_VCloneEmpty(w: N_Vector) -> N_Vector; +} +extern "C" { + pub fn N_VDestroy(v: N_Vector); +} +extern "C" { + pub fn N_VSpace(v: N_Vector, lrw: *mut sunindextype, liw: *mut sunindextype); +} +extern "C" { + pub fn N_VGetArrayPointer(v: N_Vector) -> *mut realtype; +} +extern "C" { + pub fn N_VGetDeviceArrayPointer(v: N_Vector) -> *mut realtype; +} +extern "C" { + pub fn N_VSetArrayPointer(v_data: *mut realtype, v: N_Vector); +} +extern "C" { + pub fn N_VGetCommunicator(v: N_Vector) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn N_VGetLength(v: N_Vector) -> sunindextype; +} +extern "C" { + pub fn N_VLinearSum(a: realtype, x: N_Vector, b: realtype, y: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VConst(c: realtype, z: N_Vector); +} +extern "C" { + pub fn N_VProd(x: N_Vector, y: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VDiv(x: N_Vector, y: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VScale(c: realtype, x: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VAbs(x: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VInv(x: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VAddConst(x: N_Vector, b: realtype, z: N_Vector); +} +extern "C" { + pub fn N_VDotProd(x: N_Vector, y: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VMaxNorm(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWrmsNorm(x: N_Vector, w: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWrmsNormMask(x: N_Vector, w: N_Vector, id: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VMin(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWL2Norm(x: N_Vector, w: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VL1Norm(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VCompare(c: realtype, x: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VInvTest(x: N_Vector, z: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VConstrMask(c: N_Vector, x: N_Vector, m: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VMinQuotient(num: N_Vector, denom: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VLinearCombination( + nvec: ::std::os::raw::c_int, + c: *mut realtype, + X: *mut N_Vector, + z: N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VScaleAddMulti( + nvec: ::std::os::raw::c_int, + a: *mut realtype, + x: N_Vector, + Y: *mut N_Vector, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VDotProdMulti( + nvec: ::std::os::raw::c_int, + x: N_Vector, + Y: *mut N_Vector, + dotprods: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VLinearSumVectorArray( + nvec: ::std::os::raw::c_int, + a: realtype, + X: *mut N_Vector, + b: realtype, + Y: *mut N_Vector, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VScaleVectorArray( + nvec: ::std::os::raw::c_int, + c: *mut realtype, + X: *mut N_Vector, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VConstVectorArray( + nvec: ::std::os::raw::c_int, + c: realtype, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VWrmsNormVectorArray( + nvec: ::std::os::raw::c_int, + X: *mut N_Vector, + W: *mut N_Vector, + nrm: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VWrmsNormMaskVectorArray( + nvec: ::std::os::raw::c_int, + X: *mut N_Vector, + W: *mut N_Vector, + id: N_Vector, + nrm: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VScaleAddMultiVectorArray( + nvec: ::std::os::raw::c_int, + nsum: ::std::os::raw::c_int, + a: *mut realtype, + X: *mut N_Vector, + Y: *mut *mut N_Vector, + Z: *mut *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VLinearCombinationVectorArray( + nvec: ::std::os::raw::c_int, + nsum: ::std::os::raw::c_int, + c: *mut realtype, + X: *mut *mut N_Vector, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VDotProdLocal(x: N_Vector, y: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VMaxNormLocal(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VMinLocal(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VL1NormLocal(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWSqrSumLocal(x: N_Vector, w: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWSqrSumMaskLocal(x: N_Vector, w: N_Vector, id: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VInvTestLocal(x: N_Vector, z: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VConstrMaskLocal(c: N_Vector, x: N_Vector, m: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VMinQuotientLocal(num: N_Vector, denom: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VBufSize(x: N_Vector, size: *mut sunindextype) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VBufPack(x: N_Vector, buf: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VBufUnpack(x: N_Vector, buf: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VNewVectorArray(count: ::std::os::raw::c_int) -> *mut N_Vector; +} +extern "C" { + pub fn N_VCloneEmptyVectorArray(count: ::std::os::raw::c_int, w: N_Vector) -> *mut N_Vector; +} +extern "C" { + pub fn N_VCloneVectorArray(count: ::std::os::raw::c_int, w: N_Vector) -> *mut N_Vector; +} +extern "C" { + pub fn N_VDestroyVectorArray(vs: *mut N_Vector, count: ::std::os::raw::c_int); +} +extern "C" { + pub fn N_VGetVecAtIndexVectorArray(vs: *mut N_Vector, index: ::std::os::raw::c_int) + -> N_Vector; +} +extern "C" { + pub fn N_VSetVecAtIndexVectorArray( + vs: *mut N_Vector, + index: ::std::os::raw::c_int, + w: N_Vector, + ); +} +extern "C" { + pub fn N_VPrint(v: N_Vector); +} +extern "C" { + pub fn N_VPrintFile(v: N_Vector, outfile: *mut FILE); +} +pub type SUNNonlinearSolver_Ops = *mut _generic_SUNNonlinearSolver_Ops; +pub type SUNNonlinearSolver = *mut _generic_SUNNonlinearSolver; +pub type SUNNonlinSolSysFn = ::std::option::Option< + unsafe extern "C" fn( + y: N_Vector, + F: N_Vector, + mem: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, +>; +pub type SUNNonlinSolLSetupFn = ::std::option::Option< + unsafe extern "C" fn( + jbad: ::std::os::raw::c_int, + jcur: *mut ::std::os::raw::c_int, + mem: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, +>; +pub type SUNNonlinSolLSolveFn = ::std::option::Option< + unsafe extern "C" fn(b: N_Vector, mem: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int, +>; +pub type SUNNonlinSolConvTestFn = ::std::option::Option< + unsafe extern "C" fn( + NLS: SUNNonlinearSolver, + y: N_Vector, + del: N_Vector, + tol: realtype, + ewt: N_Vector, + mem: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, +>; +pub const SUNNonlinearSolver_Type_SUNNONLINEARSOLVER_ROOTFIND: SUNNonlinearSolver_Type = 0; +pub const SUNNonlinearSolver_Type_SUNNONLINEARSOLVER_FIXEDPOINT: SUNNonlinearSolver_Type = 1; +pub type SUNNonlinearSolver_Type = ::std::os::raw::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _generic_SUNNonlinearSolver_Ops { + pub gettype: ::std::option::Option< + unsafe extern "C" fn(arg1: SUNNonlinearSolver) -> SUNNonlinearSolver_Type, + >, + pub initialize: ::std::option::Option< + unsafe extern "C" fn(arg1: SUNNonlinearSolver) -> ::std::os::raw::c_int, + >, + pub setup: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNNonlinearSolver, + arg2: N_Vector, + arg3: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, + >, + pub solve: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNNonlinearSolver, + arg2: N_Vector, + arg3: N_Vector, + arg4: N_Vector, + arg5: realtype, + arg6: ::std::os::raw::c_int, + arg7: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, + >, + pub free: ::std::option::Option< + unsafe extern "C" fn(arg1: SUNNonlinearSolver) -> ::std::os::raw::c_int, + >, + pub setsysfn: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNNonlinearSolver, + arg2: SUNNonlinSolSysFn, + ) -> ::std::os::raw::c_int, + >, + pub setlsetupfn: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNNonlinearSolver, + arg2: SUNNonlinSolLSetupFn, + ) -> ::std::os::raw::c_int, + >, + pub setlsolvefn: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNNonlinearSolver, + arg2: SUNNonlinSolLSolveFn, + ) -> ::std::os::raw::c_int, + >, + pub setctestfn: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNNonlinearSolver, + arg2: SUNNonlinSolConvTestFn, + arg3: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, + >, + pub setmaxiters: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNNonlinearSolver, + arg2: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int, + >, + pub getnumiters: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNNonlinearSolver, + arg2: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int, + >, + pub getcuriter: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNNonlinearSolver, + arg2: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int, + >, + pub getnumconvfails: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNNonlinearSolver, + arg2: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int, + >, +} +#[test] +fn bindgen_test_layout__generic_SUNNonlinearSolver_Ops() { + assert_eq!( + ::std::mem::size_of::<_generic_SUNNonlinearSolver_Ops>(), + 104usize, + concat!("Size of: ", stringify!(_generic_SUNNonlinearSolver_Ops)) + ); + assert_eq!( + ::std::mem::align_of::<_generic_SUNNonlinearSolver_Ops>(), + 8usize, + concat!("Alignment of ", stringify!(_generic_SUNNonlinearSolver_Ops)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNNonlinearSolver_Ops>())).gettype as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNNonlinearSolver_Ops), + "::", + stringify!(gettype) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNNonlinearSolver_Ops>())).initialize as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNNonlinearSolver_Ops), + "::", + stringify!(initialize) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNNonlinearSolver_Ops>())).setup as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNNonlinearSolver_Ops), + "::", + stringify!(setup) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNNonlinearSolver_Ops>())).solve as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNNonlinearSolver_Ops), + "::", + stringify!(solve) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNNonlinearSolver_Ops>())).free as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNNonlinearSolver_Ops), + "::", + stringify!(free) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNNonlinearSolver_Ops>())).setsysfn as *const _ + as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNNonlinearSolver_Ops), + "::", + stringify!(setsysfn) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNNonlinearSolver_Ops>())).setlsetupfn as *const _ + as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNNonlinearSolver_Ops), + "::", + stringify!(setlsetupfn) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNNonlinearSolver_Ops>())).setlsolvefn as *const _ + as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNNonlinearSolver_Ops), + "::", + stringify!(setlsolvefn) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNNonlinearSolver_Ops>())).setctestfn as *const _ + as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNNonlinearSolver_Ops), + "::", + stringify!(setctestfn) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNNonlinearSolver_Ops>())).setmaxiters as *const _ + as usize + }, + 72usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNNonlinearSolver_Ops), + "::", + stringify!(setmaxiters) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNNonlinearSolver_Ops>())).getnumiters as *const _ + as usize + }, + 80usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNNonlinearSolver_Ops), + "::", + stringify!(getnumiters) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNNonlinearSolver_Ops>())).getcuriter as *const _ + as usize + }, + 88usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNNonlinearSolver_Ops), + "::", + stringify!(getcuriter) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNNonlinearSolver_Ops>())).getnumconvfails as *const _ + as usize + }, + 96usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNNonlinearSolver_Ops), + "::", + stringify!(getnumconvfails) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _generic_SUNNonlinearSolver { + pub content: *mut ::std::os::raw::c_void, + pub ops: SUNNonlinearSolver_Ops, +} +#[test] +fn bindgen_test_layout__generic_SUNNonlinearSolver() { + assert_eq!( + ::std::mem::size_of::<_generic_SUNNonlinearSolver>(), + 16usize, + concat!("Size of: ", stringify!(_generic_SUNNonlinearSolver)) + ); + assert_eq!( + ::std::mem::align_of::<_generic_SUNNonlinearSolver>(), + 8usize, + concat!("Alignment of ", stringify!(_generic_SUNNonlinearSolver)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNNonlinearSolver>())).content as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNNonlinearSolver), + "::", + stringify!(content) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNNonlinearSolver>())).ops as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNNonlinearSolver), + "::", + stringify!(ops) + ) + ); +} +extern "C" { + pub fn SUNNonlinSolNewEmpty() -> SUNNonlinearSolver; +} +extern "C" { + pub fn SUNNonlinSolFreeEmpty(NLS: SUNNonlinearSolver); +} +extern "C" { + pub fn SUNNonlinSolGetType(NLS: SUNNonlinearSolver) -> SUNNonlinearSolver_Type; +} +extern "C" { + pub fn SUNNonlinSolInitialize(NLS: SUNNonlinearSolver) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNNonlinSolSetup( + NLS: SUNNonlinearSolver, + y: N_Vector, + mem: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNNonlinSolSolve( + NLS: SUNNonlinearSolver, + y0: N_Vector, + y: N_Vector, + w: N_Vector, + tol: realtype, + callLSetup: ::std::os::raw::c_int, + mem: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNNonlinSolFree(NLS: SUNNonlinearSolver) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNNonlinSolSetSysFn( + NLS: SUNNonlinearSolver, + SysFn: SUNNonlinSolSysFn, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNNonlinSolSetLSetupFn( + NLS: SUNNonlinearSolver, + SetupFn: SUNNonlinSolLSetupFn, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNNonlinSolSetLSolveFn( + NLS: SUNNonlinearSolver, + SolveFn: SUNNonlinSolLSolveFn, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNNonlinSolSetConvTestFn( + NLS: SUNNonlinearSolver, + CTestFn: SUNNonlinSolConvTestFn, + ctest_data: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNNonlinSolSetMaxIters( + NLS: SUNNonlinearSolver, + maxiters: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNNonlinSolGetNumIters( + NLS: SUNNonlinearSolver, + niters: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNNonlinSolGetCurIter( + NLS: SUNNonlinearSolver, + iter: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNNonlinSolGetNumConvFails( + NLS: SUNNonlinearSolver, + nconvfails: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _DlsMat { + pub type_: ::std::os::raw::c_int, + pub M: sunindextype, + pub N: sunindextype, + pub ldim: sunindextype, + pub mu: sunindextype, + pub ml: sunindextype, + pub s_mu: sunindextype, + pub data: *mut realtype, + pub ldata: sunindextype, + pub cols: *mut *mut realtype, +} +#[test] +fn bindgen_test_layout__DlsMat() { + assert_eq!( + ::std::mem::size_of::<_DlsMat>(), + 80usize, + concat!("Size of: ", stringify!(_DlsMat)) + ); + assert_eq!( + ::std::mem::align_of::<_DlsMat>(), + 8usize, + concat!("Alignment of ", stringify!(_DlsMat)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_DlsMat>())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_DlsMat), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_DlsMat>())).M as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_DlsMat), + "::", + stringify!(M) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_DlsMat>())).N as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_DlsMat), + "::", + stringify!(N) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_DlsMat>())).ldim as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_DlsMat), + "::", + stringify!(ldim) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_DlsMat>())).mu as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(_DlsMat), + "::", + stringify!(mu) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_DlsMat>())).ml as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(_DlsMat), + "::", + stringify!(ml) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_DlsMat>())).s_mu as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(_DlsMat), + "::", + stringify!(s_mu) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_DlsMat>())).data as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(_DlsMat), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_DlsMat>())).ldata as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(_DlsMat), + "::", + stringify!(ldata) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_DlsMat>())).cols as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(_DlsMat), + "::", + stringify!(cols) + ) + ); +} +pub type DlsMat = *mut _DlsMat; +extern "C" { + pub fn NewDenseMat(M: sunindextype, N: sunindextype) -> DlsMat; +} +extern "C" { + pub fn NewBandMat( + N: sunindextype, + mu: sunindextype, + ml: sunindextype, + smu: sunindextype, + ) -> DlsMat; +} +extern "C" { + pub fn DestroyMat(A: DlsMat); +} +extern "C" { + pub fn NewIntArray(N: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_int; +} +extern "C" { + pub fn NewIndexArray(N: sunindextype) -> *mut sunindextype; +} +extern "C" { + pub fn NewRealArray(N: sunindextype) -> *mut realtype; +} +extern "C" { + pub fn DestroyArray(p: *mut ::std::os::raw::c_void); +} +extern "C" { + pub fn AddIdentity(A: DlsMat); +} +extern "C" { + pub fn SetToZero(A: DlsMat); +} +extern "C" { + pub fn PrintMat(A: DlsMat, outfile: *mut FILE); +} +extern "C" { + pub fn newDenseMat(m: sunindextype, n: sunindextype) -> *mut *mut realtype; +} +extern "C" { + pub fn newBandMat(n: sunindextype, smu: sunindextype, ml: sunindextype) -> *mut *mut realtype; +} +extern "C" { + pub fn destroyMat(a: *mut *mut realtype); +} +extern "C" { + pub fn newIntArray(n: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_int; +} +extern "C" { + pub fn newIndexArray(n: sunindextype) -> *mut sunindextype; +} +extern "C" { + pub fn newRealArray(m: sunindextype) -> *mut realtype; +} +extern "C" { + pub fn destroyArray(v: *mut ::std::os::raw::c_void); +} +pub const PREC_NONE: ::std::os::raw::c_uint = 0; +pub const PREC_LEFT: ::std::os::raw::c_uint = 1; +pub const PREC_RIGHT: ::std::os::raw::c_uint = 2; +pub const PREC_BOTH: ::std::os::raw::c_uint = 3; +pub type _bindgen_ty_1 = ::std::os::raw::c_uint; +pub const MODIFIED_GS: ::std::os::raw::c_uint = 1; +pub const CLASSICAL_GS: ::std::os::raw::c_uint = 2; +pub type _bindgen_ty_2 = ::std::os::raw::c_uint; +pub type ATimesFn = ::std::option::Option< + unsafe extern "C" fn( + A_data: *mut ::std::os::raw::c_void, + v: N_Vector, + z: N_Vector, + ) -> ::std::os::raw::c_int, +>; +pub type PSetupFn = ::std::option::Option< + unsafe extern "C" fn(P_data: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int, +>; +pub type PSolveFn = ::std::option::Option< + unsafe extern "C" fn( + P_data: *mut ::std::os::raw::c_void, + r: N_Vector, + z: N_Vector, + tol: realtype, + lr: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int, +>; +extern "C" { + pub fn ModifiedGS( + v: *mut N_Vector, + h: *mut *mut realtype, + k: ::std::os::raw::c_int, + p: ::std::os::raw::c_int, + new_vk_norm: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ClassicalGS( + v: *mut N_Vector, + h: *mut *mut realtype, + k: ::std::os::raw::c_int, + p: ::std::os::raw::c_int, + new_vk_norm: *mut realtype, + stemp: *mut realtype, + vtemp: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn QRfact( + n: ::std::os::raw::c_int, + h: *mut *mut realtype, + q: *mut realtype, + job: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn QRsol( + n: ::std::os::raw::c_int, + h: *mut *mut realtype, + q: *mut realtype, + b: *mut realtype, + ) -> ::std::os::raw::c_int; +} +pub const SUNMatrix_ID_SUNMATRIX_DENSE: SUNMatrix_ID = 0; +pub const SUNMatrix_ID_SUNMATRIX_MAGMADENSE: SUNMatrix_ID = 1; +pub const SUNMatrix_ID_SUNMATRIX_BAND: SUNMatrix_ID = 2; +pub const SUNMatrix_ID_SUNMATRIX_SPARSE: SUNMatrix_ID = 3; +pub const SUNMatrix_ID_SUNMATRIX_SLUNRLOC: SUNMatrix_ID = 4; +pub const SUNMatrix_ID_SUNMATRIX_CUSPARSE: SUNMatrix_ID = 5; +pub const SUNMatrix_ID_SUNMATRIX_CUSTOM: SUNMatrix_ID = 6; +pub type SUNMatrix_ID = ::std::os::raw::c_uint; +pub type SUNMatrix_Ops = *mut _generic_SUNMatrix_Ops; +pub type SUNMatrix = *mut _generic_SUNMatrix; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _generic_SUNMatrix_Ops { + pub getid: ::std::option::Option SUNMatrix_ID>, + pub clone: ::std::option::Option SUNMatrix>, + pub destroy: ::std::option::Option, + pub zero: ::std::option::Option ::std::os::raw::c_int>, + pub copy: ::std::option::Option< + unsafe extern "C" fn(arg1: SUNMatrix, arg2: SUNMatrix) -> ::std::os::raw::c_int, + >, + pub scaleadd: ::std::option::Option< + unsafe extern "C" fn( + arg1: realtype, + arg2: SUNMatrix, + arg3: SUNMatrix, + ) -> ::std::os::raw::c_int, + >, + pub scaleaddi: ::std::option::Option< + unsafe extern "C" fn(arg1: realtype, arg2: SUNMatrix) -> ::std::os::raw::c_int, + >, + pub matvecsetup: + ::std::option::Option ::std::os::raw::c_int>, + pub matvec: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNMatrix, + arg2: N_Vector, + arg3: N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub space: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNMatrix, + arg2: *mut ::std::os::raw::c_long, + arg3: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int, + >, +} +#[test] +fn bindgen_test_layout__generic_SUNMatrix_Ops() { + assert_eq!( + ::std::mem::size_of::<_generic_SUNMatrix_Ops>(), + 80usize, + concat!("Size of: ", stringify!(_generic_SUNMatrix_Ops)) + ); + assert_eq!( + ::std::mem::align_of::<_generic_SUNMatrix_Ops>(), + 8usize, + concat!("Alignment of ", stringify!(_generic_SUNMatrix_Ops)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).getid as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(getid) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).clone as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(clone) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).destroy as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(destroy) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).zero as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(zero) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).copy as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(copy) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).scaleadd as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(scaleadd) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).scaleaddi as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(scaleaddi) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).matvecsetup as *const _ as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(matvecsetup) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).matvec as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(matvec) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).space as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(space) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _generic_SUNMatrix { + pub content: *mut ::std::os::raw::c_void, + pub ops: SUNMatrix_Ops, +} +#[test] +fn bindgen_test_layout__generic_SUNMatrix() { + assert_eq!( + ::std::mem::size_of::<_generic_SUNMatrix>(), + 16usize, + concat!("Size of: ", stringify!(_generic_SUNMatrix)) + ); + assert_eq!( + ::std::mem::align_of::<_generic_SUNMatrix>(), + 8usize, + concat!("Alignment of ", stringify!(_generic_SUNMatrix)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix>())).content as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix), + "::", + stringify!(content) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix>())).ops as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix), + "::", + stringify!(ops) + ) + ); +} +extern "C" { + pub fn SUNMatNewEmpty() -> SUNMatrix; +} +extern "C" { + pub fn SUNMatFreeEmpty(A: SUNMatrix); +} +extern "C" { + pub fn SUNMatCopyOps(A: SUNMatrix, B: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatGetID(A: SUNMatrix) -> SUNMatrix_ID; +} +extern "C" { + pub fn SUNMatClone(A: SUNMatrix) -> SUNMatrix; +} +extern "C" { + pub fn SUNMatDestroy(A: SUNMatrix); +} +extern "C" { + pub fn SUNMatZero(A: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatCopy(A: SUNMatrix, B: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatScaleAdd(c: realtype, A: SUNMatrix, B: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatScaleAddI(c: realtype, A: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatMatvecSetup(A: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatMatvec(A: SUNMatrix, x: N_Vector, y: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatSpace( + A: SUNMatrix, + lenrw: *mut ::std::os::raw::c_long, + leniw: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +pub const SUNLinearSolver_Type_SUNLINEARSOLVER_DIRECT: SUNLinearSolver_Type = 0; +pub const SUNLinearSolver_Type_SUNLINEARSOLVER_ITERATIVE: SUNLinearSolver_Type = 1; +pub const SUNLinearSolver_Type_SUNLINEARSOLVER_MATRIX_ITERATIVE: SUNLinearSolver_Type = 2; +pub type SUNLinearSolver_Type = ::std::os::raw::c_uint; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_BAND: SUNLinearSolver_ID = 0; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_DENSE: SUNLinearSolver_ID = 1; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_KLU: SUNLinearSolver_ID = 2; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_LAPACKBAND: SUNLinearSolver_ID = 3; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_LAPACKDENSE: SUNLinearSolver_ID = 4; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_PCG: SUNLinearSolver_ID = 5; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_SPBCGS: SUNLinearSolver_ID = 6; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_SPFGMR: SUNLinearSolver_ID = 7; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_SPGMR: SUNLinearSolver_ID = 8; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_SPTFQMR: SUNLinearSolver_ID = 9; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_SUPERLUDIST: SUNLinearSolver_ID = 10; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_SUPERLUMT: SUNLinearSolver_ID = 11; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_CUSOLVERSP_BATCHQR: SUNLinearSolver_ID = 12; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_MAGMADENSE: SUNLinearSolver_ID = 13; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_CUSTOM: SUNLinearSolver_ID = 14; +pub type SUNLinearSolver_ID = ::std::os::raw::c_uint; +pub type SUNLinearSolver_Ops = *mut _generic_SUNLinearSolver_Ops; +pub type SUNLinearSolver = *mut _generic_SUNLinearSolver; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _generic_SUNLinearSolver_Ops { + pub gettype: + ::std::option::Option SUNLinearSolver_Type>, + pub getid: + ::std::option::Option SUNLinearSolver_ID>, + pub setatimes: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNLinearSolver, + arg2: *mut ::std::os::raw::c_void, + arg3: ATimesFn, + ) -> ::std::os::raw::c_int, + >, + pub setpreconditioner: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNLinearSolver, + arg2: *mut ::std::os::raw::c_void, + arg3: PSetupFn, + arg4: PSolveFn, + ) -> ::std::os::raw::c_int, + >, + pub setscalingvectors: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNLinearSolver, + arg2: N_Vector, + arg3: N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub initialize: + ::std::option::Option ::std::os::raw::c_int>, + pub setup: ::std::option::Option< + unsafe extern "C" fn(arg1: SUNLinearSolver, arg2: SUNMatrix) -> ::std::os::raw::c_int, + >, + pub solve: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNLinearSolver, + arg2: SUNMatrix, + arg3: N_Vector, + arg4: N_Vector, + arg5: realtype, + ) -> ::std::os::raw::c_int, + >, + pub numiters: + ::std::option::Option ::std::os::raw::c_int>, + pub resnorm: ::std::option::Option realtype>, + pub lastflag: + ::std::option::Option sunindextype>, + pub space: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNLinearSolver, + arg2: *mut ::std::os::raw::c_long, + arg3: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int, + >, + pub resid: ::std::option::Option N_Vector>, + pub free: + ::std::option::Option ::std::os::raw::c_int>, +} +#[test] +fn bindgen_test_layout__generic_SUNLinearSolver_Ops() { + assert_eq!( + ::std::mem::size_of::<_generic_SUNLinearSolver_Ops>(), + 112usize, + concat!("Size of: ", stringify!(_generic_SUNLinearSolver_Ops)) + ); + assert_eq!( + ::std::mem::align_of::<_generic_SUNLinearSolver_Ops>(), + 8usize, + concat!("Alignment of ", stringify!(_generic_SUNLinearSolver_Ops)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).gettype as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(gettype) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).getid as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(getid) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).setatimes as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(setatimes) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).setpreconditioner as *const _ + as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(setpreconditioner) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).setscalingvectors as *const _ + as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(setscalingvectors) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).initialize as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(initialize) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).setup as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(setup) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).solve as *const _ as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(solve) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).numiters as *const _ as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(numiters) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).resnorm as *const _ as usize + }, + 72usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(resnorm) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).lastflag as *const _ as usize + }, + 80usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(lastflag) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).space as *const _ as usize + }, + 88usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(space) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).resid as *const _ as usize + }, + 96usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(resid) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).free as *const _ as usize + }, + 104usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(free) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _generic_SUNLinearSolver { + pub content: *mut ::std::os::raw::c_void, + pub ops: SUNLinearSolver_Ops, +} +#[test] +fn bindgen_test_layout__generic_SUNLinearSolver() { + assert_eq!( + ::std::mem::size_of::<_generic_SUNLinearSolver>(), + 16usize, + concat!("Size of: ", stringify!(_generic_SUNLinearSolver)) + ); + assert_eq!( + ::std::mem::align_of::<_generic_SUNLinearSolver>(), + 8usize, + concat!("Alignment of ", stringify!(_generic_SUNLinearSolver)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver>())).content as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver), + "::", + stringify!(content) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNLinearSolver>())).ops as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver), + "::", + stringify!(ops) + ) + ); +} +extern "C" { + pub fn SUNLinSolNewEmpty() -> SUNLinearSolver; +} +extern "C" { + pub fn SUNLinSolFreeEmpty(S: SUNLinearSolver); +} +extern "C" { + pub fn SUNLinSolGetType(S: SUNLinearSolver) -> SUNLinearSolver_Type; +} +extern "C" { + pub fn SUNLinSolGetID(S: SUNLinearSolver) -> SUNLinearSolver_ID; +} +extern "C" { + pub fn SUNLinSolSetATimes( + S: SUNLinearSolver, + A_data: *mut ::std::os::raw::c_void, + ATimes: ATimesFn, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNLinSolSetPreconditioner( + S: SUNLinearSolver, + P_data: *mut ::std::os::raw::c_void, + Pset: PSetupFn, + Psol: PSolveFn, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNLinSolSetScalingVectors( + S: SUNLinearSolver, + s1: N_Vector, + s2: N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNLinSolInitialize(S: SUNLinearSolver) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNLinSolSetup(S: SUNLinearSolver, A: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNLinSolSolve( + S: SUNLinearSolver, + A: SUNMatrix, + x: N_Vector, + b: N_Vector, + tol: realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNLinSolNumIters(S: SUNLinearSolver) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNLinSolResNorm(S: SUNLinearSolver) -> realtype; +} +extern "C" { + pub fn SUNLinSolResid(S: SUNLinearSolver) -> N_Vector; +} +extern "C" { + pub fn SUNLinSolLastFlag(S: SUNLinearSolver) -> sunindextype; +} +extern "C" { + pub fn SUNLinSolSpace( + S: SUNLinearSolver, + lenrwLS: *mut ::std::os::raw::c_long, + leniwLS: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNLinSolFree(S: SUNLinearSolver) -> ::std::os::raw::c_int; +} +pub type CVLsJacFn = ::std::option::Option< + unsafe extern "C" fn( + t: realtype, + y: N_Vector, + fy: N_Vector, + Jac: SUNMatrix, + user_data: *mut ::std::os::raw::c_void, + tmp1: N_Vector, + tmp2: N_Vector, + tmp3: N_Vector, + ) -> ::std::os::raw::c_int, +>; +pub type CVLsPrecSetupFn = ::std::option::Option< + unsafe extern "C" fn( + t: realtype, + y: N_Vector, + fy: N_Vector, + jok: ::std::os::raw::c_int, + jcurPtr: *mut ::std::os::raw::c_int, + gamma: realtype, + user_data: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, +>; +pub type CVLsPrecSolveFn = ::std::option::Option< + unsafe extern "C" fn( + t: realtype, + y: N_Vector, + fy: N_Vector, + r: N_Vector, + z: N_Vector, + gamma: realtype, + delta: realtype, + lr: ::std::os::raw::c_int, + user_data: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, +>; +pub type CVLsJacTimesSetupFn = ::std::option::Option< + unsafe extern "C" fn( + t: realtype, + y: N_Vector, + fy: N_Vector, + user_data: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, +>; +pub type CVLsJacTimesVecFn = ::std::option::Option< + unsafe extern "C" fn( + v: N_Vector, + Jv: N_Vector, + t: realtype, + y: N_Vector, + fy: N_Vector, + user_data: *mut ::std::os::raw::c_void, + tmp: N_Vector, + ) -> ::std::os::raw::c_int, +>; +pub type CVLsLinSysFn = ::std::option::Option< + unsafe extern "C" fn( + t: realtype, + y: N_Vector, + fy: N_Vector, + A: SUNMatrix, + jok: ::std::os::raw::c_int, + jcur: *mut ::std::os::raw::c_int, + gamma: realtype, + user_data: *mut ::std::os::raw::c_void, + tmp1: N_Vector, + tmp2: N_Vector, + tmp3: N_Vector, + ) -> ::std::os::raw::c_int, +>; +extern "C" { + pub fn CVodeSetLinearSolver( + cvode_mem: *mut ::std::os::raw::c_void, + LS: SUNLinearSolver, + A: SUNMatrix, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetJacFn( + cvode_mem: *mut ::std::os::raw::c_void, + jac: CVLsJacFn, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetJacEvalFrequency( + cvode_mem: *mut ::std::os::raw::c_void, + msbj: ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetLinearSolutionScaling( + cvode_mem: *mut ::std::os::raw::c_void, + onoff: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetEpsLin( + cvode_mem: *mut ::std::os::raw::c_void, + eplifac: realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetLSNormFactor( + arkode_mem: *mut ::std::os::raw::c_void, + nrmfac: realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetPreconditioner( + cvode_mem: *mut ::std::os::raw::c_void, + pset: CVLsPrecSetupFn, + psolve: CVLsPrecSolveFn, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetJacTimes( + cvode_mem: *mut ::std::os::raw::c_void, + jtsetup: CVLsJacTimesSetupFn, + jtimes: CVLsJacTimesVecFn, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetLinSysFn( + cvode_mem: *mut ::std::os::raw::c_void, + linsys: CVLsLinSysFn, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetLinWorkSpace( + cvode_mem: *mut ::std::os::raw::c_void, + lenrwLS: *mut ::std::os::raw::c_long, + leniwLS: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetNumJacEvals( + cvode_mem: *mut ::std::os::raw::c_void, + njevals: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetNumPrecEvals( + cvode_mem: *mut ::std::os::raw::c_void, + npevals: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetNumPrecSolves( + cvode_mem: *mut ::std::os::raw::c_void, + npsolves: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetNumLinIters( + cvode_mem: *mut ::std::os::raw::c_void, + nliters: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetNumLinConvFails( + cvode_mem: *mut ::std::os::raw::c_void, + nlcfails: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetNumJTSetupEvals( + cvode_mem: *mut ::std::os::raw::c_void, + njtsetups: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetNumJtimesEvals( + cvode_mem: *mut ::std::os::raw::c_void, + njvevals: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetNumLinRhsEvals( + cvode_mem: *mut ::std::os::raw::c_void, + nfevalsLS: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetLinSolveStats( + cvode_mem: *mut ::std::os::raw::c_void, + njevals: *mut ::std::os::raw::c_long, + nfevalsLS: *mut ::std::os::raw::c_long, + nliters: *mut ::std::os::raw::c_long, + nlcfails: *mut ::std::os::raw::c_long, + npevals: *mut ::std::os::raw::c_long, + npsolves: *mut ::std::os::raw::c_long, + njtsetups: *mut ::std::os::raw::c_long, + njtimes: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetLastLinFlag( + cvode_mem: *mut ::std::os::raw::c_void, + flag: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetLinReturnFlagName(flag: ::std::os::raw::c_long) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn CVodeSetMaxStepsBetweenJac( + cvode_mem: *mut ::std::os::raw::c_void, + msbj: ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +pub type CVProjFn = ::std::option::Option< + unsafe extern "C" fn( + t: realtype, + ycur: N_Vector, + corr: N_Vector, + epsProj: realtype, + err: N_Vector, + user_data: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, +>; +extern "C" { + pub fn CVodeSetProjFn( + cvode_mem: *mut ::std::os::raw::c_void, + pfun: CVProjFn, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetProjErrEst( + cvode_mem: *mut ::std::os::raw::c_void, + onoff: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetProjFrequency( + cvode_mem: *mut ::std::os::raw::c_void, + proj_freq: ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetMaxNumProjFails( + cvode_mem: *mut ::std::os::raw::c_void, + max_fails: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetEpsProj( + cvode_mem: *mut ::std::os::raw::c_void, + eps: realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetProjFailEta( + cvode_mem: *mut ::std::os::raw::c_void, + eta: realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetNumProjEvals( + cvode_mem: *mut ::std::os::raw::c_void, + nproj: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetNumProjFails( + cvode_mem: *mut ::std::os::raw::c_void, + nprf: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +pub type CVRhsFn = ::std::option::Option< + unsafe extern "C" fn( + t: realtype, + y: N_Vector, + ydot: N_Vector, + user_data: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, +>; +pub type CVRootFn = ::std::option::Option< + unsafe extern "C" fn( + t: realtype, + y: N_Vector, + gout: *mut realtype, + user_data: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, +>; +pub type CVEwtFn = ::std::option::Option< + unsafe extern "C" fn( + y: N_Vector, + ewt: N_Vector, + user_data: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, +>; +pub type CVErrHandlerFn = ::std::option::Option< + unsafe extern "C" fn( + error_code: ::std::os::raw::c_int, + module: *const ::std::os::raw::c_char, + function: *const ::std::os::raw::c_char, + msg: *mut ::std::os::raw::c_char, + user_data: *mut ::std::os::raw::c_void, + ), +>; +pub type CVMonitorFn = ::std::option::Option< + unsafe extern "C" fn( + cvode_mem: *mut ::std::os::raw::c_void, + user_data: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, +>; +extern "C" { + pub fn CVodeCreate(lmm: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn CVodeInit( + cvode_mem: *mut ::std::os::raw::c_void, + f: CVRhsFn, + t0: realtype, + y0: N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeReInit( + cvode_mem: *mut ::std::os::raw::c_void, + t0: realtype, + y0: N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSStolerances( + cvode_mem: *mut ::std::os::raw::c_void, + reltol: realtype, + abstol: realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSVtolerances( + cvode_mem: *mut ::std::os::raw::c_void, + reltol: realtype, + abstol: N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeWFtolerances( + cvode_mem: *mut ::std::os::raw::c_void, + efun: CVEwtFn, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetErrHandlerFn( + cvode_mem: *mut ::std::os::raw::c_void, + ehfun: CVErrHandlerFn, + eh_data: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetErrFile( + cvode_mem: *mut ::std::os::raw::c_void, + errfp: *mut FILE, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetUserData( + cvode_mem: *mut ::std::os::raw::c_void, + user_data: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetMonitorFn( + cvode_mem: *mut ::std::os::raw::c_void, + fn_: CVMonitorFn, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetMonitorFrequency( + cvode_mem: *mut ::std::os::raw::c_void, + nst: ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetMaxOrd( + cvode_mem: *mut ::std::os::raw::c_void, + maxord: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetMaxNumSteps( + cvode_mem: *mut ::std::os::raw::c_void, + mxsteps: ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetMaxHnilWarns( + cvode_mem: *mut ::std::os::raw::c_void, + mxhnil: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetStabLimDet( + cvode_mem: *mut ::std::os::raw::c_void, + stldet: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetInitStep( + cvode_mem: *mut ::std::os::raw::c_void, + hin: realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetMinStep( + cvode_mem: *mut ::std::os::raw::c_void, + hmin: realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetMaxStep( + cvode_mem: *mut ::std::os::raw::c_void, + hmax: realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetStopTime( + cvode_mem: *mut ::std::os::raw::c_void, + tstop: realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetMaxErrTestFails( + cvode_mem: *mut ::std::os::raw::c_void, + maxnef: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetMaxNonlinIters( + cvode_mem: *mut ::std::os::raw::c_void, + maxcor: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetMaxConvFails( + cvode_mem: *mut ::std::os::raw::c_void, + maxncf: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetNonlinConvCoef( + cvode_mem: *mut ::std::os::raw::c_void, + nlscoef: realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetLSetupFrequency( + cvode_mem: *mut ::std::os::raw::c_void, + msbp: ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetConstraints( + cvode_mem: *mut ::std::os::raw::c_void, + constraints: N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetNonlinearSolver( + cvode_mem: *mut ::std::os::raw::c_void, + NLS: SUNNonlinearSolver, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetUseIntegratorFusedKernels( + cvode_mem: *mut ::std::os::raw::c_void, + onoff: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeRootInit( + cvode_mem: *mut ::std::os::raw::c_void, + nrtfn: ::std::os::raw::c_int, + g: CVRootFn, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetRootDirection( + cvode_mem: *mut ::std::os::raw::c_void, + rootdir: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeSetNoInactiveRootWarn( + cvode_mem: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVode( + cvode_mem: *mut ::std::os::raw::c_void, + tout: realtype, + yout: N_Vector, + tret: *mut realtype, + itask: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeComputeState( + cvode_mem: *mut ::std::os::raw::c_void, + ycor: N_Vector, + y: N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetDky( + cvode_mem: *mut ::std::os::raw::c_void, + t: realtype, + k: ::std::os::raw::c_int, + dky: N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetWorkSpace( + cvode_mem: *mut ::std::os::raw::c_void, + lenrw: *mut ::std::os::raw::c_long, + leniw: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetNumSteps( + cvode_mem: *mut ::std::os::raw::c_void, + nsteps: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetNumRhsEvals( + cvode_mem: *mut ::std::os::raw::c_void, + nfevals: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetNumLinSolvSetups( + cvode_mem: *mut ::std::os::raw::c_void, + nlinsetups: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetNumErrTestFails( + cvode_mem: *mut ::std::os::raw::c_void, + netfails: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetLastOrder( + cvode_mem: *mut ::std::os::raw::c_void, + qlast: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetCurrentOrder( + cvode_mem: *mut ::std::os::raw::c_void, + qcur: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetCurrentGamma( + cvode_mem: *mut ::std::os::raw::c_void, + gamma: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetNumStabLimOrderReds( + cvode_mem: *mut ::std::os::raw::c_void, + nslred: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetActualInitStep( + cvode_mem: *mut ::std::os::raw::c_void, + hinused: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetLastStep( + cvode_mem: *mut ::std::os::raw::c_void, + hlast: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetCurrentStep( + cvode_mem: *mut ::std::os::raw::c_void, + hcur: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetCurrentState( + cvode_mem: *mut ::std::os::raw::c_void, + y: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetCurrentTime( + cvode_mem: *mut ::std::os::raw::c_void, + tcur: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetTolScaleFactor( + cvode_mem: *mut ::std::os::raw::c_void, + tolsfac: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetErrWeights( + cvode_mem: *mut ::std::os::raw::c_void, + eweight: N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetEstLocalErrors( + cvode_mem: *mut ::std::os::raw::c_void, + ele: N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetNumGEvals( + cvode_mem: *mut ::std::os::raw::c_void, + ngevals: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetRootInfo( + cvode_mem: *mut ::std::os::raw::c_void, + rootsfound: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetIntegratorStats( + cvode_mem: *mut ::std::os::raw::c_void, + nsteps: *mut ::std::os::raw::c_long, + nfevals: *mut ::std::os::raw::c_long, + nlinsetups: *mut ::std::os::raw::c_long, + netfails: *mut ::std::os::raw::c_long, + qlast: *mut ::std::os::raw::c_int, + qcur: *mut ::std::os::raw::c_int, + hinused: *mut realtype, + hlast: *mut realtype, + hcur: *mut realtype, + tcur: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetNonlinearSystemData( + cvode_mem: *mut ::std::os::raw::c_void, + tcur: *mut realtype, + ypred: *mut N_Vector, + yn: *mut N_Vector, + fn_: *mut N_Vector, + gamma: *mut realtype, + rl1: *mut realtype, + zn1: *mut N_Vector, + user_data: *mut *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetNumNonlinSolvIters( + cvode_mem: *mut ::std::os::raw::c_void, + nniters: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetNumNonlinSolvConvFails( + cvode_mem: *mut ::std::os::raw::c_void, + nncfails: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetNonlinSolvStats( + cvode_mem: *mut ::std::os::raw::c_void, + nniters: *mut ::std::os::raw::c_long, + nncfails: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn CVodeGetReturnFlagName(flag: ::std::os::raw::c_long) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn CVodeFree(cvode_mem: *mut *mut ::std::os::raw::c_void); +} +extern "C" { + pub fn CVodeSetJacTimesRhsFn( + cvode_mem: *mut ::std::os::raw::c_void, + jtimesRhsFn: CVRhsFn, + ) -> ::std::os::raw::c_int; +} +pub type __builtin_va_list = [__va_list_tag; 1usize]; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __va_list_tag { + pub gp_offset: ::std::os::raw::c_uint, + pub fp_offset: ::std::os::raw::c_uint, + pub overflow_arg_area: *mut ::std::os::raw::c_void, + pub reg_save_area: *mut ::std::os::raw::c_void, +} +#[test] +fn bindgen_test_layout___va_list_tag() { + assert_eq!( + ::std::mem::size_of::<__va_list_tag>(), + 24usize, + concat!("Size of: ", stringify!(__va_list_tag)) + ); + assert_eq!( + ::std::mem::align_of::<__va_list_tag>(), + 8usize, + concat!("Alignment of ", stringify!(__va_list_tag)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__va_list_tag>())).gp_offset as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__va_list_tag), + "::", + stringify!(gp_offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__va_list_tag>())).fp_offset as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__va_list_tag), + "::", + stringify!(fp_offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__va_list_tag>())).overflow_arg_area as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(__va_list_tag), + "::", + stringify!(overflow_arg_area) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__va_list_tag>())).reg_save_area as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(__va_list_tag), + "::", + stringify!(reg_save_area) + ) + ); +} diff --git a/cvode-5-sys/src/lib.rs b/cvode-5-sys/src/lib.rs new file mode 100644 index 0000000..a4f86f2 --- /dev/null +++ b/cvode-5-sys/src/lib.rs @@ -0,0 +1,6 @@ +#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, improper_ctypes)] + +pub mod cvode; +pub mod nvector_serial; +pub mod sunmatrix_dense; +pub mod sunlinsol_dense; \ No newline at end of file diff --git a/cvode-5-sys/src/nvector_serial.rs b/cvode-5-sys/src/nvector_serial.rs new file mode 100644 index 0000000..7bbc875 --- /dev/null +++ b/cvode-5-sys/src/nvector_serial.rs @@ -0,0 +1,4869 @@ +/* automatically generated by rust-bindgen 0.55.1 */ + +pub const _STDIO_H: u32 = 1; +pub const _FEATURES_H: u32 = 1; +pub const _DEFAULT_SOURCE: u32 = 1; +pub const __GLIBC_USE_ISOC2X: u32 = 0; +pub const __USE_ISOC11: u32 = 1; +pub const __USE_ISOC99: u32 = 1; +pub const __USE_ISOC95: u32 = 1; +pub const __USE_POSIX_IMPLICITLY: u32 = 1; +pub const _POSIX_SOURCE: u32 = 1; +pub const _POSIX_C_SOURCE: u32 = 200809; +pub const __USE_POSIX: u32 = 1; +pub const __USE_POSIX2: u32 = 1; +pub const __USE_POSIX199309: u32 = 1; +pub const __USE_POSIX199506: u32 = 1; +pub const __USE_XOPEN2K: u32 = 1; +pub const __USE_XOPEN2K8: u32 = 1; +pub const _ATFILE_SOURCE: u32 = 1; +pub const __USE_MISC: u32 = 1; +pub const __USE_ATFILE: u32 = 1; +pub const __USE_FORTIFY_LEVEL: u32 = 0; +pub const __GLIBC_USE_DEPRECATED_GETS: u32 = 0; +pub const __GLIBC_USE_DEPRECATED_SCANF: u32 = 0; +pub const _STDC_PREDEF_H: u32 = 1; +pub const __STDC_IEC_559__: u32 = 1; +pub const __STDC_IEC_559_COMPLEX__: u32 = 1; +pub const __STDC_ISO_10646__: u32 = 201706; +pub const __GNU_LIBRARY__: u32 = 6; +pub const __GLIBC__: u32 = 2; +pub const __GLIBC_MINOR__: u32 = 33; +pub const _SYS_CDEFS_H: u32 = 1; +pub const __glibc_c99_flexarr_available: u32 = 1; +pub const __WORDSIZE: u32 = 64; +pub const __WORDSIZE_TIME64_COMPAT32: u32 = 1; +pub const __SYSCALL_WORDSIZE: u32 = 64; +pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI: u32 = 0; +pub const __HAVE_GENERIC_SELECTION: u32 = 1; +pub const __GLIBC_USE_LIB_EXT2: u32 = 0; +pub const __GLIBC_USE_IEC_60559_BFP_EXT: u32 = 0; +pub const __GLIBC_USE_IEC_60559_BFP_EXT_C2X: u32 = 0; +pub const __GLIBC_USE_IEC_60559_FUNCS_EXT: u32 = 0; +pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X: u32 = 0; +pub const __GLIBC_USE_IEC_60559_TYPES_EXT: u32 = 0; +pub const __GNUC_VA_LIST: u32 = 1; +pub const _BITS_TYPES_H: u32 = 1; +pub const __TIMESIZE: u32 = 64; +pub const _BITS_TYPESIZES_H: u32 = 1; +pub const __OFF_T_MATCHES_OFF64_T: u32 = 1; +pub const __INO_T_MATCHES_INO64_T: u32 = 1; +pub const __RLIM_T_MATCHES_RLIM64_T: u32 = 1; +pub const __STATFS_MATCHES_STATFS64: u32 = 1; +pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64: u32 = 1; +pub const __FD_SETSIZE: u32 = 1024; +pub const _BITS_TIME64_H: u32 = 1; +pub const _____fpos_t_defined: u32 = 1; +pub const ____mbstate_t_defined: u32 = 1; +pub const _____fpos64_t_defined: u32 = 1; +pub const ____FILE_defined: u32 = 1; +pub const __FILE_defined: u32 = 1; +pub const __struct_FILE_defined: u32 = 1; +pub const _IO_EOF_SEEN: u32 = 16; +pub const _IO_ERR_SEEN: u32 = 32; +pub const _IO_USER_LOCK: u32 = 32768; +pub const _IOFBF: u32 = 0; +pub const _IOLBF: u32 = 1; +pub const _IONBF: u32 = 2; +pub const BUFSIZ: u32 = 8192; +pub const EOF: i32 = -1; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const P_tmpdir: &'static [u8; 5usize] = b"/tmp\0"; +pub const _BITS_STDIO_LIM_H: u32 = 1; +pub const L_tmpnam: u32 = 20; +pub const TMP_MAX: u32 = 238328; +pub const FILENAME_MAX: u32 = 4096; +pub const L_ctermid: u32 = 9; +pub const FOPEN_MAX: u32 = 16; +pub const __HAVE_FLOAT128: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT128: u32 = 0; +pub const __HAVE_FLOAT64X: u32 = 1; +pub const __HAVE_FLOAT64X_LONG_DOUBLE: u32 = 1; +pub const __HAVE_FLOAT16: u32 = 0; +pub const __HAVE_FLOAT32: u32 = 1; +pub const __HAVE_FLOAT64: u32 = 1; +pub const __HAVE_FLOAT32X: u32 = 1; +pub const __HAVE_FLOAT128X: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT16: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT32: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT64: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT32X: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT64X: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT128X: u32 = 0; +pub const __HAVE_FLOATN_NOT_TYPEDEF: u32 = 0; +pub const _STDLIB_H: u32 = 1; +pub const WNOHANG: u32 = 1; +pub const WUNTRACED: u32 = 2; +pub const WSTOPPED: u32 = 2; +pub const WEXITED: u32 = 4; +pub const WCONTINUED: u32 = 8; +pub const WNOWAIT: u32 = 16777216; +pub const __WNOTHREAD: u32 = 536870912; +pub const __WALL: u32 = 1073741824; +pub const __WCLONE: u32 = 2147483648; +pub const __W_CONTINUED: u32 = 65535; +pub const __WCOREFLAG: u32 = 128; +pub const __ldiv_t_defined: u32 = 1; +pub const __lldiv_t_defined: u32 = 1; +pub const RAND_MAX: u32 = 2147483647; +pub const EXIT_FAILURE: u32 = 1; +pub const EXIT_SUCCESS: u32 = 0; +pub const _SYS_TYPES_H: u32 = 1; +pub const __clock_t_defined: u32 = 1; +pub const __clockid_t_defined: u32 = 1; +pub const __time_t_defined: u32 = 1; +pub const __timer_t_defined: u32 = 1; +pub const _BITS_STDINT_INTN_H: u32 = 1; +pub const __BIT_TYPES_DEFINED__: u32 = 1; +pub const _ENDIAN_H: u32 = 1; +pub const _BITS_ENDIAN_H: u32 = 1; +pub const __LITTLE_ENDIAN: u32 = 1234; +pub const __BIG_ENDIAN: u32 = 4321; +pub const __PDP_ENDIAN: u32 = 3412; +pub const _BITS_ENDIANNESS_H: u32 = 1; +pub const __BYTE_ORDER: u32 = 1234; +pub const __FLOAT_WORD_ORDER: u32 = 1234; +pub const LITTLE_ENDIAN: u32 = 1234; +pub const BIG_ENDIAN: u32 = 4321; +pub const PDP_ENDIAN: u32 = 3412; +pub const BYTE_ORDER: u32 = 1234; +pub const _BITS_BYTESWAP_H: u32 = 1; +pub const _BITS_UINTN_IDENTITY_H: u32 = 1; +pub const _SYS_SELECT_H: u32 = 1; +pub const __sigset_t_defined: u32 = 1; +pub const __timeval_defined: u32 = 1; +pub const _STRUCT_TIMESPEC: u32 = 1; +pub const FD_SETSIZE: u32 = 1024; +pub const _BITS_PTHREADTYPES_COMMON_H: u32 = 1; +pub const _THREAD_SHARED_TYPES_H: u32 = 1; +pub const _BITS_PTHREADTYPES_ARCH_H: u32 = 1; +pub const __SIZEOF_PTHREAD_MUTEX_T: u32 = 40; +pub const __SIZEOF_PTHREAD_ATTR_T: u32 = 56; +pub const __SIZEOF_PTHREAD_RWLOCK_T: u32 = 56; +pub const __SIZEOF_PTHREAD_BARRIER_T: u32 = 32; +pub const __SIZEOF_PTHREAD_MUTEXATTR_T: u32 = 4; +pub const __SIZEOF_PTHREAD_COND_T: u32 = 48; +pub const __SIZEOF_PTHREAD_CONDATTR_T: u32 = 4; +pub const __SIZEOF_PTHREAD_RWLOCKATTR_T: u32 = 8; +pub const __SIZEOF_PTHREAD_BARRIERATTR_T: u32 = 4; +pub const _THREAD_MUTEX_INTERNAL_H: u32 = 1; +pub const __PTHREAD_MUTEX_HAVE_PREV: u32 = 1; +pub const __have_pthread_attr_t: u32 = 1; +pub const _ALLOCA_H: u32 = 1; +pub const SUNDIALS_VERSION: &'static [u8; 6usize] = b"5.7.0\0"; +pub const SUNDIALS_VERSION_MAJOR: u32 = 5; +pub const SUNDIALS_VERSION_MINOR: u32 = 7; +pub const SUNDIALS_VERSION_PATCH: u32 = 0; +pub const SUNDIALS_VERSION_LABEL: &'static [u8; 1usize] = b"\0"; +pub const SUNDIALS_DOUBLE_PRECISION: u32 = 1; +pub const SUNDIALS_INT64_T: u32 = 1; +pub const SUNDIALS_MPI_ENABLED: u32 = 1; +pub const SUNDIALS_ARKODE: u32 = 1; +pub const SUNDIALS_CVODE: u32 = 1; +pub const SUNDIALS_CVODES: u32 = 1; +pub const SUNDIALS_IDA: u32 = 1; +pub const SUNDIALS_IDAS: u32 = 1; +pub const SUNDIALS_KINSOL: u32 = 1; +pub const SUNDIALS_NVECTOR_SERIAL: u32 = 1; +pub const SUNDIALS_NVECTOR_MANYVECTOR: u32 = 1; +pub const SUNDIALS_NVECTOR_MPIMANYVECTOR: u32 = 1; +pub const SUNDIALS_NVECTOR_MPIPLUSX: u32 = 1; +pub const SUNDIALS_NVECTOR_PARALLEL: u32 = 1; +pub const SUNDIALS_NVECTOR_OPENMP: u32 = 1; +pub const SUNDIALS_NVECTOR_PTHREADS: u32 = 1; +pub const SUNDIALS_SUNMATRIX_BAND: u32 = 1; +pub const SUNDIALS_SUNMATRIX_DENSE: u32 = 1; +pub const SUNDIALS_SUNMATRIX_SPARSE: u32 = 1; +pub const SUNDIALS_SUNLINSOL_BAND: u32 = 1; +pub const SUNDIALS_SUNLINSOL_DENSE: u32 = 1; +pub const SUNDIALS_SUNLINSOL_PCG: u32 = 1; +pub const SUNDIALS_SUNLINSOL_SPBCGS: u32 = 1; +pub const SUNDIALS_SUNLINSOL_SPFGMR: u32 = 1; +pub const SUNDIALS_SUNLINSOL_SPGMR: u32 = 1; +pub const SUNDIALS_SUNLINSOL_SPTFQMR: u32 = 1; +pub const SUNDIALS_SUNLINSOL_KLU: u32 = 1; +pub const SUNDIALS_SUNNONLINSOL_NEWTON: u32 = 1; +pub const SUNDIALS_SUNNONLINSOL_FIXEDPOINT: u32 = 1; +pub const SUNDIALS_MPI_COMM_F2C: u32 = 1; +pub const _STDINT_H: u32 = 1; +pub const _BITS_WCHAR_H: u32 = 1; +pub const _BITS_STDINT_UINTN_H: u32 = 1; +pub const INT8_MIN: i32 = -128; +pub const INT16_MIN: i32 = -32768; +pub const INT32_MIN: i32 = -2147483648; +pub const INT8_MAX: u32 = 127; +pub const INT16_MAX: u32 = 32767; +pub const INT32_MAX: u32 = 2147483647; +pub const UINT8_MAX: u32 = 255; +pub const UINT16_MAX: u32 = 65535; +pub const UINT32_MAX: u32 = 4294967295; +pub const INT_LEAST8_MIN: i32 = -128; +pub const INT_LEAST16_MIN: i32 = -32768; +pub const INT_LEAST32_MIN: i32 = -2147483648; +pub const INT_LEAST8_MAX: u32 = 127; +pub const INT_LEAST16_MAX: u32 = 32767; +pub const INT_LEAST32_MAX: u32 = 2147483647; +pub const UINT_LEAST8_MAX: u32 = 255; +pub const UINT_LEAST16_MAX: u32 = 65535; +pub const UINT_LEAST32_MAX: u32 = 4294967295; +pub const INT_FAST8_MIN: i32 = -128; +pub const INT_FAST16_MIN: i64 = -9223372036854775808; +pub const INT_FAST32_MIN: i64 = -9223372036854775808; +pub const INT_FAST8_MAX: u32 = 127; +pub const INT_FAST16_MAX: u64 = 9223372036854775807; +pub const INT_FAST32_MAX: u64 = 9223372036854775807; +pub const UINT_FAST8_MAX: u32 = 255; +pub const UINT_FAST16_MAX: i32 = -1; +pub const UINT_FAST32_MAX: i32 = -1; +pub const INTPTR_MIN: i64 = -9223372036854775808; +pub const INTPTR_MAX: u64 = 9223372036854775807; +pub const UINTPTR_MAX: i32 = -1; +pub const PTRDIFF_MIN: i64 = -9223372036854775808; +pub const PTRDIFF_MAX: u64 = 9223372036854775807; +pub const SIG_ATOMIC_MIN: i32 = -2147483648; +pub const SIG_ATOMIC_MAX: u32 = 2147483647; +pub const SIZE_MAX: i32 = -1; +pub const WINT_MIN: u32 = 0; +pub const WINT_MAX: u32 = 4294967295; +pub const SUNFALSE: u32 = 0; +pub const SUNTRUE: u32 = 1; +pub type size_t = ::std::os::raw::c_ulong; +pub type va_list = __builtin_va_list; +pub type __gnuc_va_list = __builtin_va_list; +pub type __u_char = ::std::os::raw::c_uchar; +pub type __u_short = ::std::os::raw::c_ushort; +pub type __u_int = ::std::os::raw::c_uint; +pub type __u_long = ::std::os::raw::c_ulong; +pub type __int8_t = ::std::os::raw::c_schar; +pub type __uint8_t = ::std::os::raw::c_uchar; +pub type __int16_t = ::std::os::raw::c_short; +pub type __uint16_t = ::std::os::raw::c_ushort; +pub type __int32_t = ::std::os::raw::c_int; +pub type __uint32_t = ::std::os::raw::c_uint; +pub type __int64_t = ::std::os::raw::c_long; +pub type __uint64_t = ::std::os::raw::c_ulong; +pub type __int_least8_t = __int8_t; +pub type __uint_least8_t = __uint8_t; +pub type __int_least16_t = __int16_t; +pub type __uint_least16_t = __uint16_t; +pub type __int_least32_t = __int32_t; +pub type __uint_least32_t = __uint32_t; +pub type __int_least64_t = __int64_t; +pub type __uint_least64_t = __uint64_t; +pub type __quad_t = ::std::os::raw::c_long; +pub type __u_quad_t = ::std::os::raw::c_ulong; +pub type __intmax_t = ::std::os::raw::c_long; +pub type __uintmax_t = ::std::os::raw::c_ulong; +pub type __dev_t = ::std::os::raw::c_ulong; +pub type __uid_t = ::std::os::raw::c_uint; +pub type __gid_t = ::std::os::raw::c_uint; +pub type __ino_t = ::std::os::raw::c_ulong; +pub type __ino64_t = ::std::os::raw::c_ulong; +pub type __mode_t = ::std::os::raw::c_uint; +pub type __nlink_t = ::std::os::raw::c_ulong; +pub type __off_t = ::std::os::raw::c_long; +pub type __off64_t = ::std::os::raw::c_long; +pub type __pid_t = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __fsid_t { + pub __val: [::std::os::raw::c_int; 2usize], +} +#[test] +fn bindgen_test_layout___fsid_t() { + assert_eq!( + ::std::mem::size_of::<__fsid_t>(), + 8usize, + concat!("Size of: ", stringify!(__fsid_t)) + ); + assert_eq!( + ::std::mem::align_of::<__fsid_t>(), + 4usize, + concat!("Alignment of ", stringify!(__fsid_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__fsid_t>())).__val as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__fsid_t), + "::", + stringify!(__val) + ) + ); +} +pub type __clock_t = ::std::os::raw::c_long; +pub type __rlim_t = ::std::os::raw::c_ulong; +pub type __rlim64_t = ::std::os::raw::c_ulong; +pub type __id_t = ::std::os::raw::c_uint; +pub type __time_t = ::std::os::raw::c_long; +pub type __useconds_t = ::std::os::raw::c_uint; +pub type __suseconds_t = ::std::os::raw::c_long; +pub type __suseconds64_t = ::std::os::raw::c_long; +pub type __daddr_t = ::std::os::raw::c_int; +pub type __key_t = ::std::os::raw::c_int; +pub type __clockid_t = ::std::os::raw::c_int; +pub type __timer_t = *mut ::std::os::raw::c_void; +pub type __blksize_t = ::std::os::raw::c_long; +pub type __blkcnt_t = ::std::os::raw::c_long; +pub type __blkcnt64_t = ::std::os::raw::c_long; +pub type __fsblkcnt_t = ::std::os::raw::c_ulong; +pub type __fsblkcnt64_t = ::std::os::raw::c_ulong; +pub type __fsfilcnt_t = ::std::os::raw::c_ulong; +pub type __fsfilcnt64_t = ::std::os::raw::c_ulong; +pub type __fsword_t = ::std::os::raw::c_long; +pub type __ssize_t = ::std::os::raw::c_long; +pub type __syscall_slong_t = ::std::os::raw::c_long; +pub type __syscall_ulong_t = ::std::os::raw::c_ulong; +pub type __loff_t = __off64_t; +pub type __caddr_t = *mut ::std::os::raw::c_char; +pub type __intptr_t = ::std::os::raw::c_long; +pub type __socklen_t = ::std::os::raw::c_uint; +pub type __sig_atomic_t = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __mbstate_t { + pub __count: ::std::os::raw::c_int, + pub __value: __mbstate_t__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __mbstate_t__bindgen_ty_1 { + pub __wch: ::std::os::raw::c_uint, + pub __wchb: [::std::os::raw::c_char; 4usize], + _bindgen_union_align: u32, +} +#[test] +fn bindgen_test_layout___mbstate_t__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<__mbstate_t__bindgen_ty_1>(), + 4usize, + concat!("Size of: ", stringify!(__mbstate_t__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::<__mbstate_t__bindgen_ty_1>(), + 4usize, + concat!("Alignment of ", stringify!(__mbstate_t__bindgen_ty_1)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__mbstate_t__bindgen_ty_1>())).__wch as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__mbstate_t__bindgen_ty_1), + "::", + stringify!(__wch) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__mbstate_t__bindgen_ty_1>())).__wchb as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__mbstate_t__bindgen_ty_1), + "::", + stringify!(__wchb) + ) + ); +} +#[test] +fn bindgen_test_layout___mbstate_t() { + assert_eq!( + ::std::mem::size_of::<__mbstate_t>(), + 8usize, + concat!("Size of: ", stringify!(__mbstate_t)) + ); + assert_eq!( + ::std::mem::align_of::<__mbstate_t>(), + 4usize, + concat!("Alignment of ", stringify!(__mbstate_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__mbstate_t>())).__count as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__mbstate_t), + "::", + stringify!(__count) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__mbstate_t>())).__value as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__mbstate_t), + "::", + stringify!(__value) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _G_fpos_t { + pub __pos: __off_t, + pub __state: __mbstate_t, +} +#[test] +fn bindgen_test_layout__G_fpos_t() { + assert_eq!( + ::std::mem::size_of::<_G_fpos_t>(), + 16usize, + concat!("Size of: ", stringify!(_G_fpos_t)) + ); + assert_eq!( + ::std::mem::align_of::<_G_fpos_t>(), + 8usize, + concat!("Alignment of ", stringify!(_G_fpos_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_G_fpos_t>())).__pos as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_G_fpos_t), + "::", + stringify!(__pos) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_G_fpos_t>())).__state as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_G_fpos_t), + "::", + stringify!(__state) + ) + ); +} +pub type __fpos_t = _G_fpos_t; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _G_fpos64_t { + pub __pos: __off64_t, + pub __state: __mbstate_t, +} +#[test] +fn bindgen_test_layout__G_fpos64_t() { + assert_eq!( + ::std::mem::size_of::<_G_fpos64_t>(), + 16usize, + concat!("Size of: ", stringify!(_G_fpos64_t)) + ); + assert_eq!( + ::std::mem::align_of::<_G_fpos64_t>(), + 8usize, + concat!("Alignment of ", stringify!(_G_fpos64_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_G_fpos64_t>())).__pos as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_G_fpos64_t), + "::", + stringify!(__pos) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_G_fpos64_t>())).__state as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_G_fpos64_t), + "::", + stringify!(__state) + ) + ); +} +pub type __fpos64_t = _G_fpos64_t; +pub type __FILE = _IO_FILE; +pub type FILE = _IO_FILE; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _IO_marker { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _IO_codecvt { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _IO_wide_data { + _unused: [u8; 0], +} +pub type _IO_lock_t = ::std::os::raw::c_void; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _IO_FILE { + pub _flags: ::std::os::raw::c_int, + pub _IO_read_ptr: *mut ::std::os::raw::c_char, + pub _IO_read_end: *mut ::std::os::raw::c_char, + pub _IO_read_base: *mut ::std::os::raw::c_char, + pub _IO_write_base: *mut ::std::os::raw::c_char, + pub _IO_write_ptr: *mut ::std::os::raw::c_char, + pub _IO_write_end: *mut ::std::os::raw::c_char, + pub _IO_buf_base: *mut ::std::os::raw::c_char, + pub _IO_buf_end: *mut ::std::os::raw::c_char, + pub _IO_save_base: *mut ::std::os::raw::c_char, + pub _IO_backup_base: *mut ::std::os::raw::c_char, + pub _IO_save_end: *mut ::std::os::raw::c_char, + pub _markers: *mut _IO_marker, + pub _chain: *mut _IO_FILE, + pub _fileno: ::std::os::raw::c_int, + pub _flags2: ::std::os::raw::c_int, + pub _old_offset: __off_t, + pub _cur_column: ::std::os::raw::c_ushort, + pub _vtable_offset: ::std::os::raw::c_schar, + pub _shortbuf: [::std::os::raw::c_char; 1usize], + pub _lock: *mut _IO_lock_t, + pub _offset: __off64_t, + pub _codecvt: *mut _IO_codecvt, + pub _wide_data: *mut _IO_wide_data, + pub _freeres_list: *mut _IO_FILE, + pub _freeres_buf: *mut ::std::os::raw::c_void, + pub __pad5: size_t, + pub _mode: ::std::os::raw::c_int, + pub _unused2: [::std::os::raw::c_char; 20usize], +} +#[test] +fn bindgen_test_layout__IO_FILE() { + assert_eq!( + ::std::mem::size_of::<_IO_FILE>(), + 216usize, + concat!("Size of: ", stringify!(_IO_FILE)) + ); + assert_eq!( + ::std::mem::align_of::<_IO_FILE>(), + 8usize, + concat!("Alignment of ", stringify!(_IO_FILE)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._flags as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_flags) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_read_ptr as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_read_ptr) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_read_end as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_read_end) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_read_base as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_read_base) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_write_base as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_write_base) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_write_ptr as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_write_ptr) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_write_end as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_write_end) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_buf_base as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_buf_base) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_buf_end as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_buf_end) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_save_base as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_save_base) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_backup_base as *const _ as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_backup_base) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_save_end as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_save_end) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._markers as *const _ as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_markers) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._chain as *const _ as usize }, + 104usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_chain) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._fileno as *const _ as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_fileno) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._flags2 as *const _ as usize }, + 116usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_flags2) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._old_offset as *const _ as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_old_offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._cur_column as *const _ as usize }, + 128usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_cur_column) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._vtable_offset as *const _ as usize }, + 130usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_vtable_offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._shortbuf as *const _ as usize }, + 131usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_shortbuf) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._lock as *const _ as usize }, + 136usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_lock) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._offset as *const _ as usize }, + 144usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._codecvt as *const _ as usize }, + 152usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_codecvt) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._wide_data as *const _ as usize }, + 160usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_wide_data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._freeres_list as *const _ as usize }, + 168usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_freeres_list) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._freeres_buf as *const _ as usize }, + 176usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_freeres_buf) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>())).__pad5 as *const _ as usize }, + 184usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(__pad5) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._mode as *const _ as usize }, + 192usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_mode) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._unused2 as *const _ as usize }, + 196usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_unused2) + ) + ); +} +pub type off_t = __off_t; +pub type ssize_t = __ssize_t; +pub type fpos_t = __fpos_t; +extern "C" { + pub static mut stdin: *mut FILE; +} +extern "C" { + pub static mut stdout: *mut FILE; +} +extern "C" { + pub static mut stderr: *mut FILE; +} +extern "C" { + pub fn remove(__filename: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn rename( + __old: *const ::std::os::raw::c_char, + __new: *const ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn renameat( + __oldfd: ::std::os::raw::c_int, + __old: *const ::std::os::raw::c_char, + __newfd: ::std::os::raw::c_int, + __new: *const ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn tmpfile() -> *mut FILE; +} +extern "C" { + pub fn tmpnam(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn tmpnam_r(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn tempnam( + __dir: *const ::std::os::raw::c_char, + __pfx: *const ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn fclose(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fflush(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fflush_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fopen( + __filename: *const ::std::os::raw::c_char, + __modes: *const ::std::os::raw::c_char, + ) -> *mut FILE; +} +extern "C" { + pub fn freopen( + __filename: *const ::std::os::raw::c_char, + __modes: *const ::std::os::raw::c_char, + __stream: *mut FILE, + ) -> *mut FILE; +} +extern "C" { + pub fn fdopen(__fd: ::std::os::raw::c_int, __modes: *const ::std::os::raw::c_char) + -> *mut FILE; +} +extern "C" { + pub fn fmemopen( + __s: *mut ::std::os::raw::c_void, + __len: size_t, + __modes: *const ::std::os::raw::c_char, + ) -> *mut FILE; +} +extern "C" { + pub fn open_memstream( + __bufloc: *mut *mut ::std::os::raw::c_char, + __sizeloc: *mut size_t, + ) -> *mut FILE; +} +extern "C" { + pub fn setbuf(__stream: *mut FILE, __buf: *mut ::std::os::raw::c_char); +} +extern "C" { + pub fn setvbuf( + __stream: *mut FILE, + __buf: *mut ::std::os::raw::c_char, + __modes: ::std::os::raw::c_int, + __n: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn setbuffer(__stream: *mut FILE, __buf: *mut ::std::os::raw::c_char, __size: size_t); +} +extern "C" { + pub fn setlinebuf(__stream: *mut FILE); +} +extern "C" { + pub fn fprintf( + __stream: *mut FILE, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn printf(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn sprintf( + __s: *mut ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vfprintf( + __s: *mut FILE, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vprintf( + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vsprintf( + __s: *mut ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn snprintf( + __s: *mut ::std::os::raw::c_char, + __maxlen: ::std::os::raw::c_ulong, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vsnprintf( + __s: *mut ::std::os::raw::c_char, + __maxlen: ::std::os::raw::c_ulong, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vdprintf( + __fd: ::std::os::raw::c_int, + __fmt: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn dprintf( + __fd: ::std::os::raw::c_int, + __fmt: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fscanf( + __stream: *mut FILE, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn scanf(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn sscanf( + __s: *const ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +pub type _Float32 = f32; +pub type _Float64 = f64; +pub type _Float32x = f64; +pub type _Float64x = u128; +extern "C" { + #[link_name = "\u{1}__isoc99_fscanf"] + pub fn fscanf1( + __stream: *mut FILE, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + #[link_name = "\u{1}__isoc99_scanf"] + pub fn scanf1(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int; +} +extern "C" { + #[link_name = "\u{1}__isoc99_sscanf"] + pub fn sscanf1( + __s: *const ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vfscanf( + __s: *mut FILE, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vscanf( + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vsscanf( + __s: *const ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + #[link_name = "\u{1}__isoc99_vfscanf"] + pub fn vfscanf1( + __s: *mut FILE, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + #[link_name = "\u{1}__isoc99_vscanf"] + pub fn vscanf1( + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + #[link_name = "\u{1}__isoc99_vsscanf"] + pub fn vsscanf1( + __s: *const ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fgetc(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getc(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getchar() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getc_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getchar_unlocked() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fgetc_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fputc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn putc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn putchar(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fputc_unlocked(__c: ::std::os::raw::c_int, __stream: *mut FILE) + -> ::std::os::raw::c_int; +} +extern "C" { + pub fn putc_unlocked(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn putchar_unlocked(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getw(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn putw(__w: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fgets( + __s: *mut ::std::os::raw::c_char, + __n: ::std::os::raw::c_int, + __stream: *mut FILE, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn __getdelim( + __lineptr: *mut *mut ::std::os::raw::c_char, + __n: *mut size_t, + __delimiter: ::std::os::raw::c_int, + __stream: *mut FILE, + ) -> __ssize_t; +} +extern "C" { + pub fn getdelim( + __lineptr: *mut *mut ::std::os::raw::c_char, + __n: *mut size_t, + __delimiter: ::std::os::raw::c_int, + __stream: *mut FILE, + ) -> __ssize_t; +} +extern "C" { + pub fn getline( + __lineptr: *mut *mut ::std::os::raw::c_char, + __n: *mut size_t, + __stream: *mut FILE, + ) -> __ssize_t; +} +extern "C" { + pub fn fputs(__s: *const ::std::os::raw::c_char, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn puts(__s: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ungetc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fread( + __ptr: *mut ::std::os::raw::c_void, + __size: ::std::os::raw::c_ulong, + __n: ::std::os::raw::c_ulong, + __stream: *mut FILE, + ) -> ::std::os::raw::c_ulong; +} +extern "C" { + pub fn fwrite( + __ptr: *const ::std::os::raw::c_void, + __size: ::std::os::raw::c_ulong, + __n: ::std::os::raw::c_ulong, + __s: *mut FILE, + ) -> ::std::os::raw::c_ulong; +} +extern "C" { + pub fn fread_unlocked( + __ptr: *mut ::std::os::raw::c_void, + __size: size_t, + __n: size_t, + __stream: *mut FILE, + ) -> size_t; +} +extern "C" { + pub fn fwrite_unlocked( + __ptr: *const ::std::os::raw::c_void, + __size: size_t, + __n: size_t, + __stream: *mut FILE, + ) -> size_t; +} +extern "C" { + pub fn fseek( + __stream: *mut FILE, + __off: ::std::os::raw::c_long, + __whence: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ftell(__stream: *mut FILE) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn rewind(__stream: *mut FILE); +} +extern "C" { + pub fn fseeko( + __stream: *mut FILE, + __off: __off_t, + __whence: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ftello(__stream: *mut FILE) -> __off_t; +} +extern "C" { + pub fn fgetpos(__stream: *mut FILE, __pos: *mut fpos_t) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fsetpos(__stream: *mut FILE, __pos: *const fpos_t) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn clearerr(__stream: *mut FILE); +} +extern "C" { + pub fn feof(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ferror(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn clearerr_unlocked(__stream: *mut FILE); +} +extern "C" { + pub fn feof_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ferror_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn perror(__s: *const ::std::os::raw::c_char); +} +extern "C" { + pub fn fileno(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fileno_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn popen( + __command: *const ::std::os::raw::c_char, + __modes: *const ::std::os::raw::c_char, + ) -> *mut FILE; +} +extern "C" { + pub fn pclose(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ctermid(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn flockfile(__stream: *mut FILE); +} +extern "C" { + pub fn ftrylockfile(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn funlockfile(__stream: *mut FILE); +} +extern "C" { + pub fn __uflow(arg1: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn __overflow(arg1: *mut FILE, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +pub type wchar_t = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct div_t { + pub quot: ::std::os::raw::c_int, + pub rem: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_div_t() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(div_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(div_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).quot as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(div_t), + "::", + stringify!(quot) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rem as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(div_t), + "::", + stringify!(rem) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ldiv_t { + pub quot: ::std::os::raw::c_long, + pub rem: ::std::os::raw::c_long, +} +#[test] +fn bindgen_test_layout_ldiv_t() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(ldiv_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(ldiv_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).quot as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ldiv_t), + "::", + stringify!(quot) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rem as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ldiv_t), + "::", + stringify!(rem) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct lldiv_t { + pub quot: ::std::os::raw::c_longlong, + pub rem: ::std::os::raw::c_longlong, +} +#[test] +fn bindgen_test_layout_lldiv_t() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(lldiv_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(lldiv_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).quot as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lldiv_t), + "::", + stringify!(quot) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rem as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(lldiv_t), + "::", + stringify!(rem) + ) + ); +} +extern "C" { + pub fn __ctype_get_mb_cur_max() -> size_t; +} +extern "C" { + pub fn atof(__nptr: *const ::std::os::raw::c_char) -> f64; +} +extern "C" { + pub fn atoi(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn atol(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn atoll(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_longlong; +} +extern "C" { + pub fn strtod( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + ) -> f64; +} +extern "C" { + pub fn strtof( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + ) -> f32; +} +extern "C" { + pub fn strtold( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + ) -> u128; +} +extern "C" { + pub fn strtol( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn strtoul( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_ulong; +} +extern "C" { + pub fn strtoq( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_longlong; +} +extern "C" { + pub fn strtouq( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_ulonglong; +} +extern "C" { + pub fn strtoll( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_longlong; +} +extern "C" { + pub fn strtoull( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_ulonglong; +} +extern "C" { + pub fn l64a(__n: ::std::os::raw::c_long) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn a64l(__s: *const ::std::os::raw::c_char) -> ::std::os::raw::c_long; +} +pub type u_char = __u_char; +pub type u_short = __u_short; +pub type u_int = __u_int; +pub type u_long = __u_long; +pub type quad_t = __quad_t; +pub type u_quad_t = __u_quad_t; +pub type fsid_t = __fsid_t; +pub type loff_t = __loff_t; +pub type ino_t = __ino_t; +pub type dev_t = __dev_t; +pub type gid_t = __gid_t; +pub type mode_t = __mode_t; +pub type nlink_t = __nlink_t; +pub type uid_t = __uid_t; +pub type pid_t = __pid_t; +pub type id_t = __id_t; +pub type daddr_t = __daddr_t; +pub type caddr_t = __caddr_t; +pub type key_t = __key_t; +pub type clock_t = __clock_t; +pub type clockid_t = __clockid_t; +pub type time_t = __time_t; +pub type timer_t = __timer_t; +pub type ulong = ::std::os::raw::c_ulong; +pub type ushort = ::std::os::raw::c_ushort; +pub type uint = ::std::os::raw::c_uint; +pub type u_int8_t = __uint8_t; +pub type u_int16_t = __uint16_t; +pub type u_int32_t = __uint32_t; +pub type u_int64_t = __uint64_t; +pub type register_t = ::std::os::raw::c_long; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sigset_t { + pub __val: [::std::os::raw::c_ulong; 16usize], +} +#[test] +fn bindgen_test_layout___sigset_t() { + assert_eq!( + ::std::mem::size_of::<__sigset_t>(), + 128usize, + concat!("Size of: ", stringify!(__sigset_t)) + ); + assert_eq!( + ::std::mem::align_of::<__sigset_t>(), + 8usize, + concat!("Alignment of ", stringify!(__sigset_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__sigset_t>())).__val as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__sigset_t), + "::", + stringify!(__val) + ) + ); +} +pub type sigset_t = __sigset_t; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct timeval { + pub tv_sec: __time_t, + pub tv_usec: __suseconds_t, +} +#[test] +fn bindgen_test_layout_timeval() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(timeval)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(timeval)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tv_sec as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(timeval), + "::", + stringify!(tv_sec) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tv_usec as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(timeval), + "::", + stringify!(tv_usec) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct timespec { + pub tv_sec: __time_t, + pub tv_nsec: __syscall_slong_t, +} +#[test] +fn bindgen_test_layout_timespec() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(timespec)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(timespec)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tv_sec as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(timespec), + "::", + stringify!(tv_sec) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tv_nsec as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(timespec), + "::", + stringify!(tv_nsec) + ) + ); +} +pub type suseconds_t = __suseconds_t; +pub type __fd_mask = ::std::os::raw::c_long; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fd_set { + pub __fds_bits: [__fd_mask; 16usize], +} +#[test] +fn bindgen_test_layout_fd_set() { + assert_eq!( + ::std::mem::size_of::(), + 128usize, + concat!("Size of: ", stringify!(fd_set)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(fd_set)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__fds_bits as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(fd_set), + "::", + stringify!(__fds_bits) + ) + ); +} +pub type fd_mask = __fd_mask; +extern "C" { + pub fn select( + __nfds: ::std::os::raw::c_int, + __readfds: *mut fd_set, + __writefds: *mut fd_set, + __exceptfds: *mut fd_set, + __timeout: *mut timeval, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn pselect( + __nfds: ::std::os::raw::c_int, + __readfds: *mut fd_set, + __writefds: *mut fd_set, + __exceptfds: *mut fd_set, + __timeout: *const timespec, + __sigmask: *const __sigset_t, + ) -> ::std::os::raw::c_int; +} +pub type blksize_t = __blksize_t; +pub type blkcnt_t = __blkcnt_t; +pub type fsblkcnt_t = __fsblkcnt_t; +pub type fsfilcnt_t = __fsfilcnt_t; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_internal_list { + pub __prev: *mut __pthread_internal_list, + pub __next: *mut __pthread_internal_list, +} +#[test] +fn bindgen_test_layout___pthread_internal_list() { + assert_eq!( + ::std::mem::size_of::<__pthread_internal_list>(), + 16usize, + concat!("Size of: ", stringify!(__pthread_internal_list)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_internal_list>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_internal_list)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_internal_list>())).__prev as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_internal_list), + "::", + stringify!(__prev) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_internal_list>())).__next as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(__pthread_internal_list), + "::", + stringify!(__next) + ) + ); +} +pub type __pthread_list_t = __pthread_internal_list; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_internal_slist { + pub __next: *mut __pthread_internal_slist, +} +#[test] +fn bindgen_test_layout___pthread_internal_slist() { + assert_eq!( + ::std::mem::size_of::<__pthread_internal_slist>(), + 8usize, + concat!("Size of: ", stringify!(__pthread_internal_slist)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_internal_slist>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_internal_slist)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_internal_slist>())).__next as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_internal_slist), + "::", + stringify!(__next) + ) + ); +} +pub type __pthread_slist_t = __pthread_internal_slist; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_mutex_s { + pub __lock: ::std::os::raw::c_int, + pub __count: ::std::os::raw::c_uint, + pub __owner: ::std::os::raw::c_int, + pub __nusers: ::std::os::raw::c_uint, + pub __kind: ::std::os::raw::c_int, + pub __spins: ::std::os::raw::c_short, + pub __elision: ::std::os::raw::c_short, + pub __list: __pthread_list_t, +} +#[test] +fn bindgen_test_layout___pthread_mutex_s() { + assert_eq!( + ::std::mem::size_of::<__pthread_mutex_s>(), + 40usize, + concat!("Size of: ", stringify!(__pthread_mutex_s)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_mutex_s>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_mutex_s)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__lock as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__lock) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__count as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__count) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__owner as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__owner) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__nusers as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__nusers) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__kind as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__kind) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__spins as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__spins) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__elision as *const _ as usize }, + 22usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__elision) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__list as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__list) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_rwlock_arch_t { + pub __readers: ::std::os::raw::c_uint, + pub __writers: ::std::os::raw::c_uint, + pub __wrphase_futex: ::std::os::raw::c_uint, + pub __writers_futex: ::std::os::raw::c_uint, + pub __pad3: ::std::os::raw::c_uint, + pub __pad4: ::std::os::raw::c_uint, + pub __cur_writer: ::std::os::raw::c_int, + pub __shared: ::std::os::raw::c_int, + pub __rwelision: ::std::os::raw::c_schar, + pub __pad1: [::std::os::raw::c_uchar; 7usize], + pub __pad2: ::std::os::raw::c_ulong, + pub __flags: ::std::os::raw::c_uint, +} +#[test] +fn bindgen_test_layout___pthread_rwlock_arch_t() { + assert_eq!( + ::std::mem::size_of::<__pthread_rwlock_arch_t>(), + 56usize, + concat!("Size of: ", stringify!(__pthread_rwlock_arch_t)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_rwlock_arch_t>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_rwlock_arch_t)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__readers as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__readers) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__writers as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__writers) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__wrphase_futex as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__wrphase_futex) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__writers_futex as *const _ as usize + }, + 12usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__writers_futex) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad3 as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__pad3) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad4 as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__pad4) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__cur_writer as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__cur_writer) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__shared as *const _ as usize + }, + 28usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__shared) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__rwelision as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__rwelision) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad1 as *const _ as usize }, + 33usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__pad1) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad2 as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__pad2) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__flags as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__flags) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __pthread_cond_s { + pub __bindgen_anon_1: __pthread_cond_s__bindgen_ty_1, + pub __bindgen_anon_2: __pthread_cond_s__bindgen_ty_2, + pub __g_refs: [::std::os::raw::c_uint; 2usize], + pub __g_size: [::std::os::raw::c_uint; 2usize], + pub __g1_orig_size: ::std::os::raw::c_uint, + pub __wrefs: ::std::os::raw::c_uint, + pub __g_signals: [::std::os::raw::c_uint; 2usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __pthread_cond_s__bindgen_ty_1 { + pub __wseq: ::std::os::raw::c_ulonglong, + pub __wseq32: __pthread_cond_s__bindgen_ty_1__bindgen_ty_1, + _bindgen_union_align: u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_cond_s__bindgen_ty_1__bindgen_ty_1 { + pub __low: ::std::os::raw::c_uint, + pub __high: ::std::os::raw::c_uint, +} +#[test] +fn bindgen_test_layout___pthread_cond_s__bindgen_ty_1__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>(), + 8usize, + concat!( + "Size of: ", + stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>(), + 4usize, + concat!( + "Alignment of ", + stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>())).__low + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(__low) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>())).__high + as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(__high) + ) + ); +} +#[test] +fn bindgen_test_layout___pthread_cond_s__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_1>(), + 8usize, + concat!("Size of: ", stringify!(__pthread_cond_s__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_1>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_cond_s__bindgen_ty_1)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1>())).__wseq as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_1), + "::", + stringify!(__wseq) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1>())).__wseq32 as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_1), + "::", + stringify!(__wseq32) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __pthread_cond_s__bindgen_ty_2 { + pub __g1_start: ::std::os::raw::c_ulonglong, + pub __g1_start32: __pthread_cond_s__bindgen_ty_2__bindgen_ty_1, + _bindgen_union_align: u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_cond_s__bindgen_ty_2__bindgen_ty_1 { + pub __low: ::std::os::raw::c_uint, + pub __high: ::std::os::raw::c_uint, +} +#[test] +fn bindgen_test_layout___pthread_cond_s__bindgen_ty_2__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>(), + 8usize, + concat!( + "Size of: ", + stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>(), + 4usize, + concat!( + "Alignment of ", + stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>())).__low + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1), + "::", + stringify!(__low) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>())).__high + as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1), + "::", + stringify!(__high) + ) + ); +} +#[test] +fn bindgen_test_layout___pthread_cond_s__bindgen_ty_2() { + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_2>(), + 8usize, + concat!("Size of: ", stringify!(__pthread_cond_s__bindgen_ty_2)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_2>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_cond_s__bindgen_ty_2)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2>())).__g1_start as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_2), + "::", + stringify!(__g1_start) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2>())).__g1_start32 as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_2), + "::", + stringify!(__g1_start32) + ) + ); +} +#[test] +fn bindgen_test_layout___pthread_cond_s() { + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s>(), + 48usize, + concat!("Size of: ", stringify!(__pthread_cond_s)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_cond_s)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g_refs as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__g_refs) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g_size as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__g_size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g1_orig_size as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__g1_orig_size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__wrefs as *const _ as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__wrefs) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g_signals as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__g_signals) + ) + ); +} +pub type __tss_t = ::std::os::raw::c_uint; +pub type __thrd_t = ::std::os::raw::c_ulong; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __once_flag { + pub __data: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout___once_flag() { + assert_eq!( + ::std::mem::size_of::<__once_flag>(), + 4usize, + concat!("Size of: ", stringify!(__once_flag)) + ); + assert_eq!( + ::std::mem::align_of::<__once_flag>(), + 4usize, + concat!("Alignment of ", stringify!(__once_flag)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__once_flag>())).__data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__once_flag), + "::", + stringify!(__data) + ) + ); +} +pub type pthread_t = ::std::os::raw::c_ulong; +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_mutexattr_t { + pub __size: [::std::os::raw::c_char; 4usize], + pub __align: ::std::os::raw::c_int, + _bindgen_union_align: u32, +} +#[test] +fn bindgen_test_layout_pthread_mutexattr_t() { + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(pthread_mutexattr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(pthread_mutexattr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutexattr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutexattr_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_condattr_t { + pub __size: [::std::os::raw::c_char; 4usize], + pub __align: ::std::os::raw::c_int, + _bindgen_union_align: u32, +} +#[test] +fn bindgen_test_layout_pthread_condattr_t() { + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(pthread_condattr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(pthread_condattr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_condattr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_condattr_t), + "::", + stringify!(__align) + ) + ); +} +pub type pthread_key_t = ::std::os::raw::c_uint; +pub type pthread_once_t = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_attr_t { + pub __size: [::std::os::raw::c_char; 56usize], + pub __align: ::std::os::raw::c_long, + _bindgen_union_align: [u64; 7usize], +} +#[test] +fn bindgen_test_layout_pthread_attr_t() { + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(pthread_attr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_attr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_attr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_attr_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_mutex_t { + pub __data: __pthread_mutex_s, + pub __size: [::std::os::raw::c_char; 40usize], + pub __align: ::std::os::raw::c_long, + _bindgen_union_align: [u64; 5usize], +} +#[test] +fn bindgen_test_layout_pthread_mutex_t() { + assert_eq!( + ::std::mem::size_of::(), + 40usize, + concat!("Size of: ", stringify!(pthread_mutex_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_mutex_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutex_t), + "::", + stringify!(__data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutex_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutex_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_cond_t { + pub __data: __pthread_cond_s, + pub __size: [::std::os::raw::c_char; 48usize], + pub __align: ::std::os::raw::c_longlong, + _bindgen_union_align: [u64; 6usize], +} +#[test] +fn bindgen_test_layout_pthread_cond_t() { + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(pthread_cond_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_cond_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_cond_t), + "::", + stringify!(__data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_cond_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_cond_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_rwlock_t { + pub __data: __pthread_rwlock_arch_t, + pub __size: [::std::os::raw::c_char; 56usize], + pub __align: ::std::os::raw::c_long, + _bindgen_union_align: [u64; 7usize], +} +#[test] +fn bindgen_test_layout_pthread_rwlock_t() { + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(pthread_rwlock_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_rwlock_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlock_t), + "::", + stringify!(__data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlock_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlock_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_rwlockattr_t { + pub __size: [::std::os::raw::c_char; 8usize], + pub __align: ::std::os::raw::c_long, + _bindgen_union_align: u64, +} +#[test] +fn bindgen_test_layout_pthread_rwlockattr_t() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(pthread_rwlockattr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_rwlockattr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlockattr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlockattr_t), + "::", + stringify!(__align) + ) + ); +} +pub type pthread_spinlock_t = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_barrier_t { + pub __size: [::std::os::raw::c_char; 32usize], + pub __align: ::std::os::raw::c_long, + _bindgen_union_align: [u64; 4usize], +} +#[test] +fn bindgen_test_layout_pthread_barrier_t() { + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(pthread_barrier_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_barrier_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_barrier_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_barrier_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_barrierattr_t { + pub __size: [::std::os::raw::c_char; 4usize], + pub __align: ::std::os::raw::c_int, + _bindgen_union_align: u32, +} +#[test] +fn bindgen_test_layout_pthread_barrierattr_t() { + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(pthread_barrierattr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(pthread_barrierattr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_barrierattr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_barrierattr_t), + "::", + stringify!(__align) + ) + ); +} +extern "C" { + pub fn random() -> ::std::os::raw::c_long; +} +extern "C" { + pub fn srandom(__seed: ::std::os::raw::c_uint); +} +extern "C" { + pub fn initstate( + __seed: ::std::os::raw::c_uint, + __statebuf: *mut ::std::os::raw::c_char, + __statelen: size_t, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn setstate(__statebuf: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct random_data { + pub fptr: *mut i32, + pub rptr: *mut i32, + pub state: *mut i32, + pub rand_type: ::std::os::raw::c_int, + pub rand_deg: ::std::os::raw::c_int, + pub rand_sep: ::std::os::raw::c_int, + pub end_ptr: *mut i32, +} +#[test] +fn bindgen_test_layout_random_data() { + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(random_data)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(random_data)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fptr as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(fptr) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rptr as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(rptr) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).state as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(state) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rand_type as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(rand_type) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rand_deg as *const _ as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(rand_deg) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rand_sep as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(rand_sep) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).end_ptr as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(end_ptr) + ) + ); +} +extern "C" { + pub fn random_r(__buf: *mut random_data, __result: *mut i32) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn srandom_r( + __seed: ::std::os::raw::c_uint, + __buf: *mut random_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn initstate_r( + __seed: ::std::os::raw::c_uint, + __statebuf: *mut ::std::os::raw::c_char, + __statelen: size_t, + __buf: *mut random_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn setstate_r( + __statebuf: *mut ::std::os::raw::c_char, + __buf: *mut random_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn rand() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn srand(__seed: ::std::os::raw::c_uint); +} +extern "C" { + pub fn rand_r(__seed: *mut ::std::os::raw::c_uint) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn drand48() -> f64; +} +extern "C" { + pub fn erand48(__xsubi: *mut ::std::os::raw::c_ushort) -> f64; +} +extern "C" { + pub fn lrand48() -> ::std::os::raw::c_long; +} +extern "C" { + pub fn nrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn mrand48() -> ::std::os::raw::c_long; +} +extern "C" { + pub fn jrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn srand48(__seedval: ::std::os::raw::c_long); +} +extern "C" { + pub fn seed48(__seed16v: *mut ::std::os::raw::c_ushort) -> *mut ::std::os::raw::c_ushort; +} +extern "C" { + pub fn lcong48(__param: *mut ::std::os::raw::c_ushort); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct drand48_data { + pub __x: [::std::os::raw::c_ushort; 3usize], + pub __old_x: [::std::os::raw::c_ushort; 3usize], + pub __c: ::std::os::raw::c_ushort, + pub __init: ::std::os::raw::c_ushort, + pub __a: ::std::os::raw::c_ulonglong, +} +#[test] +fn bindgen_test_layout_drand48_data() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(drand48_data)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(drand48_data)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__x as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__old_x as *const _ as usize }, + 6usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__old_x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__c as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__c) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__init as *const _ as usize }, + 14usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__init) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__a as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__a) + ) + ); +} +extern "C" { + pub fn drand48_r(__buffer: *mut drand48_data, __result: *mut f64) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn erand48_r( + __xsubi: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + __result: *mut f64, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn lrand48_r( + __buffer: *mut drand48_data, + __result: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn nrand48_r( + __xsubi: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + __result: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mrand48_r( + __buffer: *mut drand48_data, + __result: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn jrand48_r( + __xsubi: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + __result: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn srand48_r( + __seedval: ::std::os::raw::c_long, + __buffer: *mut drand48_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn seed48_r( + __seed16v: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn lcong48_r( + __param: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn malloc(__size: ::std::os::raw::c_ulong) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn calloc( + __nmemb: ::std::os::raw::c_ulong, + __size: ::std::os::raw::c_ulong, + ) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn realloc( + __ptr: *mut ::std::os::raw::c_void, + __size: ::std::os::raw::c_ulong, + ) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn reallocarray( + __ptr: *mut ::std::os::raw::c_void, + __nmemb: size_t, + __size: size_t, + ) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn free(__ptr: *mut ::std::os::raw::c_void); +} +extern "C" { + pub fn alloca(__size: ::std::os::raw::c_ulong) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn valloc(__size: size_t) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn posix_memalign( + __memptr: *mut *mut ::std::os::raw::c_void, + __alignment: size_t, + __size: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn aligned_alloc(__alignment: size_t, __size: size_t) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn abort(); +} +extern "C" { + pub fn atexit(__func: ::std::option::Option) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn at_quick_exit( + __func: ::std::option::Option, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn on_exit( + __func: ::std::option::Option< + unsafe extern "C" fn( + __status: ::std::os::raw::c_int, + __arg: *mut ::std::os::raw::c_void, + ), + >, + __arg: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn exit(__status: ::std::os::raw::c_int); +} +extern "C" { + pub fn quick_exit(__status: ::std::os::raw::c_int); +} +extern "C" { + pub fn _Exit(__status: ::std::os::raw::c_int); +} +extern "C" { + pub fn getenv(__name: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn putenv(__string: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn setenv( + __name: *const ::std::os::raw::c_char, + __value: *const ::std::os::raw::c_char, + __replace: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn unsetenv(__name: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn clearenv() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mktemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn mkstemp(__template: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mkstemps( + __template: *mut ::std::os::raw::c_char, + __suffixlen: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mkdtemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn system(__command: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn realpath( + __name: *const ::std::os::raw::c_char, + __resolved: *mut ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_char; +} +pub type __compar_fn_t = ::std::option::Option< + unsafe extern "C" fn( + arg1: *const ::std::os::raw::c_void, + arg2: *const ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, +>; +extern "C" { + pub fn bsearch( + __key: *const ::std::os::raw::c_void, + __base: *const ::std::os::raw::c_void, + __nmemb: size_t, + __size: size_t, + __compar: __compar_fn_t, + ) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn qsort( + __base: *mut ::std::os::raw::c_void, + __nmemb: size_t, + __size: size_t, + __compar: __compar_fn_t, + ); +} +extern "C" { + pub fn abs(__x: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn labs(__x: ::std::os::raw::c_long) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn llabs(__x: ::std::os::raw::c_longlong) -> ::std::os::raw::c_longlong; +} +extern "C" { + pub fn div(__numer: ::std::os::raw::c_int, __denom: ::std::os::raw::c_int) -> div_t; +} +extern "C" { + pub fn ldiv(__numer: ::std::os::raw::c_long, __denom: ::std::os::raw::c_long) -> ldiv_t; +} +extern "C" { + pub fn lldiv( + __numer: ::std::os::raw::c_longlong, + __denom: ::std::os::raw::c_longlong, + ) -> lldiv_t; +} +extern "C" { + pub fn ecvt( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn fcvt( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn gcvt( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn qecvt( + __value: u128, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn qfcvt( + __value: u128, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn qgcvt( + __value: u128, + __ndigit: ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn ecvt_r( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + __len: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fcvt_r( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + __len: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn qecvt_r( + __value: u128, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + __len: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn qfcvt_r( + __value: u128, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + __len: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mblen(__s: *const ::std::os::raw::c_char, __n: size_t) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mbtowc( + __pwc: *mut wchar_t, + __s: *const ::std::os::raw::c_char, + __n: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn wctomb(__s: *mut ::std::os::raw::c_char, __wchar: wchar_t) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mbstowcs( + __pwcs: *mut wchar_t, + __s: *const ::std::os::raw::c_char, + __n: size_t, + ) -> size_t; +} +extern "C" { + pub fn wcstombs( + __s: *mut ::std::os::raw::c_char, + __pwcs: *const wchar_t, + __n: size_t, + ) -> size_t; +} +extern "C" { + pub fn rpmatch(__response: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getsubopt( + __optionp: *mut *mut ::std::os::raw::c_char, + __tokens: *const *mut ::std::os::raw::c_char, + __valuep: *mut *mut ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getloadavg(__loadavg: *mut f64, __nelem: ::std::os::raw::c_int) + -> ::std::os::raw::c_int; +} +#[repr(C)] +#[repr(align(16))] +#[derive(Debug, Copy, Clone)] +pub struct max_align_t { + pub __clang_max_align_nonce1: ::std::os::raw::c_longlong, + pub __bindgen_padding_0: u64, + pub __clang_max_align_nonce2: u128, +} +#[test] +fn bindgen_test_layout_max_align_t() { + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(max_align_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 16usize, + concat!("Alignment of ", stringify!(max_align_t)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).__clang_max_align_nonce1 as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(max_align_t), + "::", + stringify!(__clang_max_align_nonce1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).__clang_max_align_nonce2 as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(max_align_t), + "::", + stringify!(__clang_max_align_nonce2) + ) + ); +} +pub type int_least8_t = __int_least8_t; +pub type int_least16_t = __int_least16_t; +pub type int_least32_t = __int_least32_t; +pub type int_least64_t = __int_least64_t; +pub type uint_least8_t = __uint_least8_t; +pub type uint_least16_t = __uint_least16_t; +pub type uint_least32_t = __uint_least32_t; +pub type uint_least64_t = __uint_least64_t; +pub type int_fast8_t = ::std::os::raw::c_schar; +pub type int_fast16_t = ::std::os::raw::c_long; +pub type int_fast32_t = ::std::os::raw::c_long; +pub type int_fast64_t = ::std::os::raw::c_long; +pub type uint_fast8_t = ::std::os::raw::c_uchar; +pub type uint_fast16_t = ::std::os::raw::c_ulong; +pub type uint_fast32_t = ::std::os::raw::c_ulong; +pub type uint_fast64_t = ::std::os::raw::c_ulong; +pub type intmax_t = __intmax_t; +pub type uintmax_t = __uintmax_t; +pub type realtype = f64; +pub type sunindextype = i64; +pub const N_Vector_ID_SUNDIALS_NVEC_SERIAL: N_Vector_ID = 0; +pub const N_Vector_ID_SUNDIALS_NVEC_PARALLEL: N_Vector_ID = 1; +pub const N_Vector_ID_SUNDIALS_NVEC_OPENMP: N_Vector_ID = 2; +pub const N_Vector_ID_SUNDIALS_NVEC_PTHREADS: N_Vector_ID = 3; +pub const N_Vector_ID_SUNDIALS_NVEC_PARHYP: N_Vector_ID = 4; +pub const N_Vector_ID_SUNDIALS_NVEC_PETSC: N_Vector_ID = 5; +pub const N_Vector_ID_SUNDIALS_NVEC_CUDA: N_Vector_ID = 6; +pub const N_Vector_ID_SUNDIALS_NVEC_HIP: N_Vector_ID = 7; +pub const N_Vector_ID_SUNDIALS_NVEC_SYCL: N_Vector_ID = 8; +pub const N_Vector_ID_SUNDIALS_NVEC_RAJA: N_Vector_ID = 9; +pub const N_Vector_ID_SUNDIALS_NVEC_OPENMPDEV: N_Vector_ID = 10; +pub const N_Vector_ID_SUNDIALS_NVEC_TRILINOS: N_Vector_ID = 11; +pub const N_Vector_ID_SUNDIALS_NVEC_MANYVECTOR: N_Vector_ID = 12; +pub const N_Vector_ID_SUNDIALS_NVEC_MPIMANYVECTOR: N_Vector_ID = 13; +pub const N_Vector_ID_SUNDIALS_NVEC_MPIPLUSX: N_Vector_ID = 14; +pub const N_Vector_ID_SUNDIALS_NVEC_CUSTOM: N_Vector_ID = 15; +pub type N_Vector_ID = ::std::os::raw::c_uint; +pub type N_Vector_Ops = *mut _generic_N_Vector_Ops; +pub type N_Vector = *mut _generic_N_Vector; +pub type N_Vector_S = *mut N_Vector; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _generic_N_Vector_Ops { + pub nvgetvectorid: ::std::option::Option N_Vector_ID>, + pub nvclone: ::std::option::Option N_Vector>, + pub nvcloneempty: ::std::option::Option N_Vector>, + pub nvdestroy: ::std::option::Option, + pub nvspace: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: *mut sunindextype, arg3: *mut sunindextype), + >, + pub nvgetarraypointer: + ::std::option::Option *mut realtype>, + pub nvgetdevicearraypointer: + ::std::option::Option *mut realtype>, + pub nvsetarraypointer: + ::std::option::Option, + pub nvgetcommunicator: + ::std::option::Option *mut ::std::os::raw::c_void>, + pub nvgetlength: ::std::option::Option sunindextype>, + pub nvlinearsum: ::std::option::Option< + unsafe extern "C" fn( + arg1: realtype, + arg2: N_Vector, + arg3: realtype, + arg4: N_Vector, + arg5: N_Vector, + ), + >, + pub nvconst: ::std::option::Option, + pub nvprod: + ::std::option::Option, + pub nvdiv: + ::std::option::Option, + pub nvscale: + ::std::option::Option, + pub nvabs: ::std::option::Option, + pub nvinv: ::std::option::Option, + pub nvaddconst: + ::std::option::Option, + pub nvdotprod: + ::std::option::Option realtype>, + pub nvmaxnorm: ::std::option::Option realtype>, + pub nvwrmsnorm: + ::std::option::Option realtype>, + pub nvwrmsnormmask: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: N_Vector, arg3: N_Vector) -> realtype, + >, + pub nvmin: ::std::option::Option realtype>, + pub nvwl2norm: + ::std::option::Option realtype>, + pub nvl1norm: ::std::option::Option realtype>, + pub nvcompare: + ::std::option::Option, + pub nvinvtest: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: N_Vector) -> ::std::os::raw::c_int, + >, + pub nvconstrmask: ::std::option::Option< + unsafe extern "C" fn( + arg1: N_Vector, + arg2: N_Vector, + arg3: N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvminquotient: + ::std::option::Option realtype>, + pub nvlinearcombination: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: *mut realtype, + arg3: *mut N_Vector, + arg4: N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvscaleaddmulti: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: *mut realtype, + arg3: N_Vector, + arg4: *mut N_Vector, + arg5: *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvdotprodmulti: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: N_Vector, + arg3: *mut N_Vector, + arg4: *mut realtype, + ) -> ::std::os::raw::c_int, + >, + pub nvlinearsumvectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: realtype, + arg3: *mut N_Vector, + arg4: realtype, + arg5: *mut N_Vector, + arg6: *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvscalevectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: *mut realtype, + arg3: *mut N_Vector, + arg4: *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvconstvectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: realtype, + arg3: *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvwrmsnormvectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: *mut N_Vector, + arg3: *mut N_Vector, + arg4: *mut realtype, + ) -> ::std::os::raw::c_int, + >, + pub nvwrmsnormmaskvectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: *mut N_Vector, + arg3: *mut N_Vector, + arg4: N_Vector, + arg5: *mut realtype, + ) -> ::std::os::raw::c_int, + >, + pub nvscaleaddmultivectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: ::std::os::raw::c_int, + arg3: *mut realtype, + arg4: *mut N_Vector, + arg5: *mut *mut N_Vector, + arg6: *mut *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvlinearcombinationvectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: ::std::os::raw::c_int, + arg3: *mut realtype, + arg4: *mut *mut N_Vector, + arg5: *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvdotprodlocal: + ::std::option::Option realtype>, + pub nvmaxnormlocal: ::std::option::Option realtype>, + pub nvminlocal: ::std::option::Option realtype>, + pub nvl1normlocal: ::std::option::Option realtype>, + pub nvinvtestlocal: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: N_Vector) -> ::std::os::raw::c_int, + >, + pub nvconstrmasklocal: ::std::option::Option< + unsafe extern "C" fn( + arg1: N_Vector, + arg2: N_Vector, + arg3: N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvminquotientlocal: + ::std::option::Option realtype>, + pub nvwsqrsumlocal: + ::std::option::Option realtype>, + pub nvwsqrsummasklocal: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: N_Vector, arg3: N_Vector) -> realtype, + >, + pub nvbufsize: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: *mut sunindextype) -> ::std::os::raw::c_int, + >, + pub nvbufpack: ::std::option::Option< + unsafe extern "C" fn( + arg1: N_Vector, + arg2: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, + >, + pub nvbufunpack: ::std::option::Option< + unsafe extern "C" fn( + arg1: N_Vector, + arg2: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, + >, + pub nvprint: ::std::option::Option, + pub nvprintfile: ::std::option::Option, +} +#[test] +fn bindgen_test_layout__generic_N_Vector_Ops() { + assert_eq!( + ::std::mem::size_of::<_generic_N_Vector_Ops>(), + 424usize, + concat!("Size of: ", stringify!(_generic_N_Vector_Ops)) + ); + assert_eq!( + ::std::mem::align_of::<_generic_N_Vector_Ops>(), + 8usize, + concat!("Alignment of ", stringify!(_generic_N_Vector_Ops)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvgetvectorid as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvgetvectorid) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvclone as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvclone) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvcloneempty as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvcloneempty) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvdestroy as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvdestroy) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvspace as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvspace) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvgetarraypointer as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvgetarraypointer) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvgetdevicearraypointer as *const _ + as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvgetdevicearraypointer) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvsetarraypointer as *const _ as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvsetarraypointer) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvgetcommunicator as *const _ as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvgetcommunicator) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvgetlength as *const _ as usize + }, + 72usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvgetlength) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvlinearsum as *const _ as usize + }, + 80usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvlinearsum) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvconst as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvconst) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvprod as *const _ as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvprod) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvdiv as *const _ as usize }, + 104usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvdiv) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvscale as *const _ as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvscale) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvabs as *const _ as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvabs) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvinv as *const _ as usize }, + 128usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvinv) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvaddconst as *const _ as usize + }, + 136usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvaddconst) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvdotprod as *const _ as usize }, + 144usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvdotprod) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvmaxnorm as *const _ as usize }, + 152usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvmaxnorm) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwrmsnorm as *const _ as usize + }, + 160usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwrmsnorm) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwrmsnormmask as *const _ as usize + }, + 168usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwrmsnormmask) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvmin as *const _ as usize }, + 176usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvmin) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwl2norm as *const _ as usize }, + 184usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwl2norm) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvl1norm as *const _ as usize }, + 192usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvl1norm) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvcompare as *const _ as usize }, + 200usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvcompare) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvinvtest as *const _ as usize }, + 208usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvinvtest) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvconstrmask as *const _ as usize + }, + 216usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvconstrmask) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvminquotient as *const _ as usize + }, + 224usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvminquotient) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvlinearcombination as *const _ + as usize + }, + 232usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvlinearcombination) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvscaleaddmulti as *const _ as usize + }, + 240usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvscaleaddmulti) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvdotprodmulti as *const _ as usize + }, + 248usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvdotprodmulti) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvlinearsumvectorarray as *const _ + as usize + }, + 256usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvlinearsumvectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvscalevectorarray as *const _ + as usize + }, + 264usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvscalevectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvconstvectorarray as *const _ + as usize + }, + 272usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvconstvectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwrmsnormvectorarray as *const _ + as usize + }, + 280usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwrmsnormvectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwrmsnormmaskvectorarray as *const _ + as usize + }, + 288usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwrmsnormmaskvectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvscaleaddmultivectorarray as *const _ + as usize + }, + 296usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvscaleaddmultivectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvlinearcombinationvectorarray + as *const _ as usize + }, + 304usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvlinearcombinationvectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvdotprodlocal as *const _ as usize + }, + 312usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvdotprodlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvmaxnormlocal as *const _ as usize + }, + 320usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvmaxnormlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvminlocal as *const _ as usize + }, + 328usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvminlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvl1normlocal as *const _ as usize + }, + 336usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvl1normlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvinvtestlocal as *const _ as usize + }, + 344usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvinvtestlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvconstrmasklocal as *const _ as usize + }, + 352usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvconstrmasklocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvminquotientlocal as *const _ + as usize + }, + 360usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvminquotientlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwsqrsumlocal as *const _ as usize + }, + 368usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwsqrsumlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwsqrsummasklocal as *const _ + as usize + }, + 376usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwsqrsummasklocal) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvbufsize as *const _ as usize }, + 384usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvbufsize) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvbufpack as *const _ as usize }, + 392usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvbufpack) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvbufunpack as *const _ as usize + }, + 400usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvbufunpack) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvprint as *const _ as usize }, + 408usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvprint) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvprintfile as *const _ as usize + }, + 416usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvprintfile) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _generic_N_Vector { + pub content: *mut ::std::os::raw::c_void, + pub ops: N_Vector_Ops, +} +#[test] +fn bindgen_test_layout__generic_N_Vector() { + assert_eq!( + ::std::mem::size_of::<_generic_N_Vector>(), + 16usize, + concat!("Size of: ", stringify!(_generic_N_Vector)) + ); + assert_eq!( + ::std::mem::align_of::<_generic_N_Vector>(), + 8usize, + concat!("Alignment of ", stringify!(_generic_N_Vector)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector>())).content as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector), + "::", + stringify!(content) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector>())).ops as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector), + "::", + stringify!(ops) + ) + ); +} +extern "C" { + pub fn N_VNewEmpty() -> N_Vector; +} +extern "C" { + pub fn N_VFreeEmpty(v: N_Vector); +} +extern "C" { + pub fn N_VCopyOps(w: N_Vector, v: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VGetVectorID(w: N_Vector) -> N_Vector_ID; +} +extern "C" { + pub fn N_VClone(w: N_Vector) -> N_Vector; +} +extern "C" { + pub fn N_VCloneEmpty(w: N_Vector) -> N_Vector; +} +extern "C" { + pub fn N_VDestroy(v: N_Vector); +} +extern "C" { + pub fn N_VSpace(v: N_Vector, lrw: *mut sunindextype, liw: *mut sunindextype); +} +extern "C" { + pub fn N_VGetArrayPointer(v: N_Vector) -> *mut realtype; +} +extern "C" { + pub fn N_VGetDeviceArrayPointer(v: N_Vector) -> *mut realtype; +} +extern "C" { + pub fn N_VSetArrayPointer(v_data: *mut realtype, v: N_Vector); +} +extern "C" { + pub fn N_VGetCommunicator(v: N_Vector) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn N_VGetLength(v: N_Vector) -> sunindextype; +} +extern "C" { + pub fn N_VLinearSum(a: realtype, x: N_Vector, b: realtype, y: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VConst(c: realtype, z: N_Vector); +} +extern "C" { + pub fn N_VProd(x: N_Vector, y: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VDiv(x: N_Vector, y: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VScale(c: realtype, x: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VAbs(x: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VInv(x: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VAddConst(x: N_Vector, b: realtype, z: N_Vector); +} +extern "C" { + pub fn N_VDotProd(x: N_Vector, y: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VMaxNorm(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWrmsNorm(x: N_Vector, w: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWrmsNormMask(x: N_Vector, w: N_Vector, id: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VMin(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWL2Norm(x: N_Vector, w: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VL1Norm(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VCompare(c: realtype, x: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VInvTest(x: N_Vector, z: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VConstrMask(c: N_Vector, x: N_Vector, m: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VMinQuotient(num: N_Vector, denom: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VLinearCombination( + nvec: ::std::os::raw::c_int, + c: *mut realtype, + X: *mut N_Vector, + z: N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VScaleAddMulti( + nvec: ::std::os::raw::c_int, + a: *mut realtype, + x: N_Vector, + Y: *mut N_Vector, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VDotProdMulti( + nvec: ::std::os::raw::c_int, + x: N_Vector, + Y: *mut N_Vector, + dotprods: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VLinearSumVectorArray( + nvec: ::std::os::raw::c_int, + a: realtype, + X: *mut N_Vector, + b: realtype, + Y: *mut N_Vector, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VScaleVectorArray( + nvec: ::std::os::raw::c_int, + c: *mut realtype, + X: *mut N_Vector, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VConstVectorArray( + nvec: ::std::os::raw::c_int, + c: realtype, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VWrmsNormVectorArray( + nvec: ::std::os::raw::c_int, + X: *mut N_Vector, + W: *mut N_Vector, + nrm: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VWrmsNormMaskVectorArray( + nvec: ::std::os::raw::c_int, + X: *mut N_Vector, + W: *mut N_Vector, + id: N_Vector, + nrm: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VScaleAddMultiVectorArray( + nvec: ::std::os::raw::c_int, + nsum: ::std::os::raw::c_int, + a: *mut realtype, + X: *mut N_Vector, + Y: *mut *mut N_Vector, + Z: *mut *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VLinearCombinationVectorArray( + nvec: ::std::os::raw::c_int, + nsum: ::std::os::raw::c_int, + c: *mut realtype, + X: *mut *mut N_Vector, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VDotProdLocal(x: N_Vector, y: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VMaxNormLocal(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VMinLocal(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VL1NormLocal(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWSqrSumLocal(x: N_Vector, w: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWSqrSumMaskLocal(x: N_Vector, w: N_Vector, id: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VInvTestLocal(x: N_Vector, z: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VConstrMaskLocal(c: N_Vector, x: N_Vector, m: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VMinQuotientLocal(num: N_Vector, denom: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VBufSize(x: N_Vector, size: *mut sunindextype) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VBufPack(x: N_Vector, buf: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VBufUnpack(x: N_Vector, buf: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VNewVectorArray(count: ::std::os::raw::c_int) -> *mut N_Vector; +} +extern "C" { + pub fn N_VCloneEmptyVectorArray(count: ::std::os::raw::c_int, w: N_Vector) -> *mut N_Vector; +} +extern "C" { + pub fn N_VCloneVectorArray(count: ::std::os::raw::c_int, w: N_Vector) -> *mut N_Vector; +} +extern "C" { + pub fn N_VDestroyVectorArray(vs: *mut N_Vector, count: ::std::os::raw::c_int); +} +extern "C" { + pub fn N_VGetVecAtIndexVectorArray(vs: *mut N_Vector, index: ::std::os::raw::c_int) + -> N_Vector; +} +extern "C" { + pub fn N_VSetVecAtIndexVectorArray( + vs: *mut N_Vector, + index: ::std::os::raw::c_int, + w: N_Vector, + ); +} +extern "C" { + pub fn N_VPrint(v: N_Vector); +} +extern "C" { + pub fn N_VPrintFile(v: N_Vector, outfile: *mut FILE); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _N_VectorContent_Serial { + pub length: sunindextype, + pub own_data: ::std::os::raw::c_int, + pub data: *mut realtype, +} +#[test] +fn bindgen_test_layout__N_VectorContent_Serial() { + assert_eq!( + ::std::mem::size_of::<_N_VectorContent_Serial>(), + 24usize, + concat!("Size of: ", stringify!(_N_VectorContent_Serial)) + ); + assert_eq!( + ::std::mem::align_of::<_N_VectorContent_Serial>(), + 8usize, + concat!("Alignment of ", stringify!(_N_VectorContent_Serial)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_N_VectorContent_Serial>())).length as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_N_VectorContent_Serial), + "::", + stringify!(length) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_N_VectorContent_Serial>())).own_data as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_N_VectorContent_Serial), + "::", + stringify!(own_data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_N_VectorContent_Serial>())).data as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_N_VectorContent_Serial), + "::", + stringify!(data) + ) + ); +} +pub type N_VectorContent_Serial = *mut _N_VectorContent_Serial; +extern "C" { + pub fn N_VNew_Serial(vec_length: sunindextype) -> N_Vector; +} +extern "C" { + pub fn N_VNewEmpty_Serial(vec_length: sunindextype) -> N_Vector; +} +extern "C" { + pub fn N_VMake_Serial(vec_length: sunindextype, v_data: *mut realtype) -> N_Vector; +} +extern "C" { + pub fn N_VCloneVectorArray_Serial(count: ::std::os::raw::c_int, w: N_Vector) -> *mut N_Vector; +} +extern "C" { + pub fn N_VCloneVectorArrayEmpty_Serial( + count: ::std::os::raw::c_int, + w: N_Vector, + ) -> *mut N_Vector; +} +extern "C" { + pub fn N_VDestroyVectorArray_Serial(vs: *mut N_Vector, count: ::std::os::raw::c_int); +} +extern "C" { + pub fn N_VGetLength_Serial(v: N_Vector) -> sunindextype; +} +extern "C" { + pub fn N_VPrint_Serial(v: N_Vector); +} +extern "C" { + pub fn N_VPrintFile_Serial(v: N_Vector, outfile: *mut FILE); +} +extern "C" { + pub fn N_VGetVectorID_Serial(v: N_Vector) -> N_Vector_ID; +} +extern "C" { + pub fn N_VCloneEmpty_Serial(w: N_Vector) -> N_Vector; +} +extern "C" { + pub fn N_VClone_Serial(w: N_Vector) -> N_Vector; +} +extern "C" { + pub fn N_VDestroy_Serial(v: N_Vector); +} +extern "C" { + pub fn N_VSpace_Serial(v: N_Vector, lrw: *mut sunindextype, liw: *mut sunindextype); +} +extern "C" { + pub fn N_VGetArrayPointer_Serial(v: N_Vector) -> *mut realtype; +} +extern "C" { + pub fn N_VSetArrayPointer_Serial(v_data: *mut realtype, v: N_Vector); +} +extern "C" { + pub fn N_VLinearSum_Serial(a: realtype, x: N_Vector, b: realtype, y: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VConst_Serial(c: realtype, z: N_Vector); +} +extern "C" { + pub fn N_VProd_Serial(x: N_Vector, y: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VDiv_Serial(x: N_Vector, y: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VScale_Serial(c: realtype, x: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VAbs_Serial(x: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VInv_Serial(x: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VAddConst_Serial(x: N_Vector, b: realtype, z: N_Vector); +} +extern "C" { + pub fn N_VDotProd_Serial(x: N_Vector, y: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VMaxNorm_Serial(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWrmsNorm_Serial(x: N_Vector, w: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWrmsNormMask_Serial(x: N_Vector, w: N_Vector, id: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VMin_Serial(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWL2Norm_Serial(x: N_Vector, w: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VL1Norm_Serial(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VCompare_Serial(c: realtype, x: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VInvTest_Serial(x: N_Vector, z: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VConstrMask_Serial(c: N_Vector, x: N_Vector, m: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VMinQuotient_Serial(num: N_Vector, denom: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VLinearCombination_Serial( + nvec: ::std::os::raw::c_int, + c: *mut realtype, + V: *mut N_Vector, + z: N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VScaleAddMulti_Serial( + nvec: ::std::os::raw::c_int, + a: *mut realtype, + x: N_Vector, + Y: *mut N_Vector, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VDotProdMulti_Serial( + nvec: ::std::os::raw::c_int, + x: N_Vector, + Y: *mut N_Vector, + dotprods: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VLinearSumVectorArray_Serial( + nvec: ::std::os::raw::c_int, + a: realtype, + X: *mut N_Vector, + b: realtype, + Y: *mut N_Vector, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VScaleVectorArray_Serial( + nvec: ::std::os::raw::c_int, + c: *mut realtype, + X: *mut N_Vector, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VConstVectorArray_Serial( + nvecs: ::std::os::raw::c_int, + c: realtype, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VWrmsNormVectorArray_Serial( + nvecs: ::std::os::raw::c_int, + X: *mut N_Vector, + W: *mut N_Vector, + nrm: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VWrmsNormMaskVectorArray_Serial( + nvecs: ::std::os::raw::c_int, + X: *mut N_Vector, + W: *mut N_Vector, + id: N_Vector, + nrm: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VScaleAddMultiVectorArray_Serial( + nvec: ::std::os::raw::c_int, + nsum: ::std::os::raw::c_int, + a: *mut realtype, + X: *mut N_Vector, + Y: *mut *mut N_Vector, + Z: *mut *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VLinearCombinationVectorArray_Serial( + nvec: ::std::os::raw::c_int, + nsum: ::std::os::raw::c_int, + c: *mut realtype, + X: *mut *mut N_Vector, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VWSqrSumLocal_Serial(x: N_Vector, w: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWSqrSumMaskLocal_Serial(x: N_Vector, w: N_Vector, id: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VBufSize_Serial(x: N_Vector, size: *mut sunindextype) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VBufPack_Serial( + x: N_Vector, + buf: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VBufUnpack_Serial( + x: N_Vector, + buf: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VEnableFusedOps_Serial( + v: N_Vector, + tf: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VEnableLinearCombination_Serial( + v: N_Vector, + tf: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VEnableScaleAddMulti_Serial( + v: N_Vector, + tf: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VEnableDotProdMulti_Serial( + v: N_Vector, + tf: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VEnableLinearSumVectorArray_Serial( + v: N_Vector, + tf: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VEnableScaleVectorArray_Serial( + v: N_Vector, + tf: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VEnableConstVectorArray_Serial( + v: N_Vector, + tf: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VEnableWrmsNormVectorArray_Serial( + v: N_Vector, + tf: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VEnableWrmsNormMaskVectorArray_Serial( + v: N_Vector, + tf: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VEnableScaleAddMultiVectorArray_Serial( + v: N_Vector, + tf: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VEnableLinearCombinationVectorArray_Serial( + v: N_Vector, + tf: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +pub type __builtin_va_list = [__va_list_tag; 1usize]; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __va_list_tag { + pub gp_offset: ::std::os::raw::c_uint, + pub fp_offset: ::std::os::raw::c_uint, + pub overflow_arg_area: *mut ::std::os::raw::c_void, + pub reg_save_area: *mut ::std::os::raw::c_void, +} +#[test] +fn bindgen_test_layout___va_list_tag() { + assert_eq!( + ::std::mem::size_of::<__va_list_tag>(), + 24usize, + concat!("Size of: ", stringify!(__va_list_tag)) + ); + assert_eq!( + ::std::mem::align_of::<__va_list_tag>(), + 8usize, + concat!("Alignment of ", stringify!(__va_list_tag)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__va_list_tag>())).gp_offset as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__va_list_tag), + "::", + stringify!(gp_offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__va_list_tag>())).fp_offset as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__va_list_tag), + "::", + stringify!(fp_offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__va_list_tag>())).overflow_arg_area as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(__va_list_tag), + "::", + stringify!(overflow_arg_area) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__va_list_tag>())).reg_save_area as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(__va_list_tag), + "::", + stringify!(reg_save_area) + ) + ); +} diff --git a/cvode-5-sys/src/sunlinsol_dense.rs b/cvode-5-sys/src/sunlinsol_dense.rs new file mode 100644 index 0000000..997b0ee --- /dev/null +++ b/cvode-5-sys/src/sunlinsol_dense.rs @@ -0,0 +1,5755 @@ +/* automatically generated by rust-bindgen 0.55.1 */ + +pub const SUNDIALS_VERSION: &'static [u8; 6usize] = b"5.7.0\0"; +pub const SUNDIALS_VERSION_MAJOR: u32 = 5; +pub const SUNDIALS_VERSION_MINOR: u32 = 7; +pub const SUNDIALS_VERSION_PATCH: u32 = 0; +pub const SUNDIALS_VERSION_LABEL: &'static [u8; 1usize] = b"\0"; +pub const SUNDIALS_DOUBLE_PRECISION: u32 = 1; +pub const SUNDIALS_INT64_T: u32 = 1; +pub const SUNDIALS_MPI_ENABLED: u32 = 1; +pub const SUNDIALS_ARKODE: u32 = 1; +pub const SUNDIALS_CVODE: u32 = 1; +pub const SUNDIALS_CVODES: u32 = 1; +pub const SUNDIALS_IDA: u32 = 1; +pub const SUNDIALS_IDAS: u32 = 1; +pub const SUNDIALS_KINSOL: u32 = 1; +pub const SUNDIALS_NVECTOR_SERIAL: u32 = 1; +pub const SUNDIALS_NVECTOR_MANYVECTOR: u32 = 1; +pub const SUNDIALS_NVECTOR_MPIMANYVECTOR: u32 = 1; +pub const SUNDIALS_NVECTOR_MPIPLUSX: u32 = 1; +pub const SUNDIALS_NVECTOR_PARALLEL: u32 = 1; +pub const SUNDIALS_NVECTOR_OPENMP: u32 = 1; +pub const SUNDIALS_NVECTOR_PTHREADS: u32 = 1; +pub const SUNDIALS_SUNMATRIX_BAND: u32 = 1; +pub const SUNDIALS_SUNMATRIX_DENSE: u32 = 1; +pub const SUNDIALS_SUNMATRIX_SPARSE: u32 = 1; +pub const SUNDIALS_SUNLINSOL_BAND: u32 = 1; +pub const SUNDIALS_SUNLINSOL_DENSE: u32 = 1; +pub const SUNDIALS_SUNLINSOL_PCG: u32 = 1; +pub const SUNDIALS_SUNLINSOL_SPBCGS: u32 = 1; +pub const SUNDIALS_SUNLINSOL_SPFGMR: u32 = 1; +pub const SUNDIALS_SUNLINSOL_SPGMR: u32 = 1; +pub const SUNDIALS_SUNLINSOL_SPTFQMR: u32 = 1; +pub const SUNDIALS_SUNLINSOL_KLU: u32 = 1; +pub const SUNDIALS_SUNNONLINSOL_NEWTON: u32 = 1; +pub const SUNDIALS_SUNNONLINSOL_FIXEDPOINT: u32 = 1; +pub const SUNDIALS_MPI_COMM_F2C: u32 = 1; +pub const _STDINT_H: u32 = 1; +pub const _FEATURES_H: u32 = 1; +pub const _DEFAULT_SOURCE: u32 = 1; +pub const __GLIBC_USE_ISOC2X: u32 = 0; +pub const __USE_ISOC11: u32 = 1; +pub const __USE_ISOC99: u32 = 1; +pub const __USE_ISOC95: u32 = 1; +pub const __USE_POSIX_IMPLICITLY: u32 = 1; +pub const _POSIX_SOURCE: u32 = 1; +pub const _POSIX_C_SOURCE: u32 = 200809; +pub const __USE_POSIX: u32 = 1; +pub const __USE_POSIX2: u32 = 1; +pub const __USE_POSIX199309: u32 = 1; +pub const __USE_POSIX199506: u32 = 1; +pub const __USE_XOPEN2K: u32 = 1; +pub const __USE_XOPEN2K8: u32 = 1; +pub const _ATFILE_SOURCE: u32 = 1; +pub const __USE_MISC: u32 = 1; +pub const __USE_ATFILE: u32 = 1; +pub const __USE_FORTIFY_LEVEL: u32 = 0; +pub const __GLIBC_USE_DEPRECATED_GETS: u32 = 0; +pub const __GLIBC_USE_DEPRECATED_SCANF: u32 = 0; +pub const _STDC_PREDEF_H: u32 = 1; +pub const __STDC_IEC_559__: u32 = 1; +pub const __STDC_IEC_559_COMPLEX__: u32 = 1; +pub const __STDC_ISO_10646__: u32 = 201706; +pub const __GNU_LIBRARY__: u32 = 6; +pub const __GLIBC__: u32 = 2; +pub const __GLIBC_MINOR__: u32 = 33; +pub const _SYS_CDEFS_H: u32 = 1; +pub const __glibc_c99_flexarr_available: u32 = 1; +pub const __WORDSIZE: u32 = 64; +pub const __WORDSIZE_TIME64_COMPAT32: u32 = 1; +pub const __SYSCALL_WORDSIZE: u32 = 64; +pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI: u32 = 0; +pub const __HAVE_GENERIC_SELECTION: u32 = 1; +pub const __GLIBC_USE_LIB_EXT2: u32 = 0; +pub const __GLIBC_USE_IEC_60559_BFP_EXT: u32 = 0; +pub const __GLIBC_USE_IEC_60559_BFP_EXT_C2X: u32 = 0; +pub const __GLIBC_USE_IEC_60559_FUNCS_EXT: u32 = 0; +pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X: u32 = 0; +pub const __GLIBC_USE_IEC_60559_TYPES_EXT: u32 = 0; +pub const _BITS_TYPES_H: u32 = 1; +pub const __TIMESIZE: u32 = 64; +pub const _BITS_TYPESIZES_H: u32 = 1; +pub const __OFF_T_MATCHES_OFF64_T: u32 = 1; +pub const __INO_T_MATCHES_INO64_T: u32 = 1; +pub const __RLIM_T_MATCHES_RLIM64_T: u32 = 1; +pub const __STATFS_MATCHES_STATFS64: u32 = 1; +pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64: u32 = 1; +pub const __FD_SETSIZE: u32 = 1024; +pub const _BITS_TIME64_H: u32 = 1; +pub const _BITS_WCHAR_H: u32 = 1; +pub const _BITS_STDINT_INTN_H: u32 = 1; +pub const _BITS_STDINT_UINTN_H: u32 = 1; +pub const INT8_MIN: i32 = -128; +pub const INT16_MIN: i32 = -32768; +pub const INT32_MIN: i32 = -2147483648; +pub const INT8_MAX: u32 = 127; +pub const INT16_MAX: u32 = 32767; +pub const INT32_MAX: u32 = 2147483647; +pub const UINT8_MAX: u32 = 255; +pub const UINT16_MAX: u32 = 65535; +pub const UINT32_MAX: u32 = 4294967295; +pub const INT_LEAST8_MIN: i32 = -128; +pub const INT_LEAST16_MIN: i32 = -32768; +pub const INT_LEAST32_MIN: i32 = -2147483648; +pub const INT_LEAST8_MAX: u32 = 127; +pub const INT_LEAST16_MAX: u32 = 32767; +pub const INT_LEAST32_MAX: u32 = 2147483647; +pub const UINT_LEAST8_MAX: u32 = 255; +pub const UINT_LEAST16_MAX: u32 = 65535; +pub const UINT_LEAST32_MAX: u32 = 4294967295; +pub const INT_FAST8_MIN: i32 = -128; +pub const INT_FAST16_MIN: i64 = -9223372036854775808; +pub const INT_FAST32_MIN: i64 = -9223372036854775808; +pub const INT_FAST8_MAX: u32 = 127; +pub const INT_FAST16_MAX: u64 = 9223372036854775807; +pub const INT_FAST32_MAX: u64 = 9223372036854775807; +pub const UINT_FAST8_MAX: u32 = 255; +pub const UINT_FAST16_MAX: i32 = -1; +pub const UINT_FAST32_MAX: i32 = -1; +pub const INTPTR_MIN: i64 = -9223372036854775808; +pub const INTPTR_MAX: u64 = 9223372036854775807; +pub const UINTPTR_MAX: i32 = -1; +pub const PTRDIFF_MIN: i64 = -9223372036854775808; +pub const PTRDIFF_MAX: u64 = 9223372036854775807; +pub const SIG_ATOMIC_MIN: i32 = -2147483648; +pub const SIG_ATOMIC_MAX: u32 = 2147483647; +pub const SIZE_MAX: i32 = -1; +pub const WINT_MIN: u32 = 0; +pub const WINT_MAX: u32 = 4294967295; +pub const SUNFALSE: u32 = 0; +pub const SUNTRUE: u32 = 1; +pub const _STDIO_H: u32 = 1; +pub const __GNUC_VA_LIST: u32 = 1; +pub const _____fpos_t_defined: u32 = 1; +pub const ____mbstate_t_defined: u32 = 1; +pub const _____fpos64_t_defined: u32 = 1; +pub const ____FILE_defined: u32 = 1; +pub const __FILE_defined: u32 = 1; +pub const __struct_FILE_defined: u32 = 1; +pub const _IO_EOF_SEEN: u32 = 16; +pub const _IO_ERR_SEEN: u32 = 32; +pub const _IO_USER_LOCK: u32 = 32768; +pub const _IOFBF: u32 = 0; +pub const _IOLBF: u32 = 1; +pub const _IONBF: u32 = 2; +pub const BUFSIZ: u32 = 8192; +pub const EOF: i32 = -1; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const P_tmpdir: &'static [u8; 5usize] = b"/tmp\0"; +pub const _BITS_STDIO_LIM_H: u32 = 1; +pub const L_tmpnam: u32 = 20; +pub const TMP_MAX: u32 = 238328; +pub const FILENAME_MAX: u32 = 4096; +pub const L_ctermid: u32 = 9; +pub const FOPEN_MAX: u32 = 16; +pub const __HAVE_FLOAT128: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT128: u32 = 0; +pub const __HAVE_FLOAT64X: u32 = 1; +pub const __HAVE_FLOAT64X_LONG_DOUBLE: u32 = 1; +pub const __HAVE_FLOAT16: u32 = 0; +pub const __HAVE_FLOAT32: u32 = 1; +pub const __HAVE_FLOAT64: u32 = 1; +pub const __HAVE_FLOAT32X: u32 = 1; +pub const __HAVE_FLOAT128X: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT16: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT32: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT64: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT32X: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT64X: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT128X: u32 = 0; +pub const __HAVE_FLOATN_NOT_TYPEDEF: u32 = 0; +pub const _STDLIB_H: u32 = 1; +pub const WNOHANG: u32 = 1; +pub const WUNTRACED: u32 = 2; +pub const WSTOPPED: u32 = 2; +pub const WEXITED: u32 = 4; +pub const WCONTINUED: u32 = 8; +pub const WNOWAIT: u32 = 16777216; +pub const __WNOTHREAD: u32 = 536870912; +pub const __WALL: u32 = 1073741824; +pub const __WCLONE: u32 = 2147483648; +pub const __W_CONTINUED: u32 = 65535; +pub const __WCOREFLAG: u32 = 128; +pub const __ldiv_t_defined: u32 = 1; +pub const __lldiv_t_defined: u32 = 1; +pub const RAND_MAX: u32 = 2147483647; +pub const EXIT_FAILURE: u32 = 1; +pub const EXIT_SUCCESS: u32 = 0; +pub const _SYS_TYPES_H: u32 = 1; +pub const __clock_t_defined: u32 = 1; +pub const __clockid_t_defined: u32 = 1; +pub const __time_t_defined: u32 = 1; +pub const __timer_t_defined: u32 = 1; +pub const __BIT_TYPES_DEFINED__: u32 = 1; +pub const _ENDIAN_H: u32 = 1; +pub const _BITS_ENDIAN_H: u32 = 1; +pub const __LITTLE_ENDIAN: u32 = 1234; +pub const __BIG_ENDIAN: u32 = 4321; +pub const __PDP_ENDIAN: u32 = 3412; +pub const _BITS_ENDIANNESS_H: u32 = 1; +pub const __BYTE_ORDER: u32 = 1234; +pub const __FLOAT_WORD_ORDER: u32 = 1234; +pub const LITTLE_ENDIAN: u32 = 1234; +pub const BIG_ENDIAN: u32 = 4321; +pub const PDP_ENDIAN: u32 = 3412; +pub const BYTE_ORDER: u32 = 1234; +pub const _BITS_BYTESWAP_H: u32 = 1; +pub const _BITS_UINTN_IDENTITY_H: u32 = 1; +pub const _SYS_SELECT_H: u32 = 1; +pub const __sigset_t_defined: u32 = 1; +pub const __timeval_defined: u32 = 1; +pub const _STRUCT_TIMESPEC: u32 = 1; +pub const FD_SETSIZE: u32 = 1024; +pub const _BITS_PTHREADTYPES_COMMON_H: u32 = 1; +pub const _THREAD_SHARED_TYPES_H: u32 = 1; +pub const _BITS_PTHREADTYPES_ARCH_H: u32 = 1; +pub const __SIZEOF_PTHREAD_MUTEX_T: u32 = 40; +pub const __SIZEOF_PTHREAD_ATTR_T: u32 = 56; +pub const __SIZEOF_PTHREAD_RWLOCK_T: u32 = 56; +pub const __SIZEOF_PTHREAD_BARRIER_T: u32 = 32; +pub const __SIZEOF_PTHREAD_MUTEXATTR_T: u32 = 4; +pub const __SIZEOF_PTHREAD_COND_T: u32 = 48; +pub const __SIZEOF_PTHREAD_CONDATTR_T: u32 = 4; +pub const __SIZEOF_PTHREAD_RWLOCKATTR_T: u32 = 8; +pub const __SIZEOF_PTHREAD_BARRIERATTR_T: u32 = 4; +pub const _THREAD_MUTEX_INTERNAL_H: u32 = 1; +pub const __PTHREAD_MUTEX_HAVE_PREV: u32 = 1; +pub const __have_pthread_attr_t: u32 = 1; +pub const _ALLOCA_H: u32 = 1; +pub const SUNMAT_SUCCESS: u32 = 0; +pub const SUNMAT_ILL_INPUT: i32 = -701; +pub const SUNMAT_MEM_FAIL: i32 = -702; +pub const SUNMAT_OPERATION_FAIL: i32 = -703; +pub const SUNMAT_MATVEC_SETUP_REQUIRED: i32 = -704; +pub const SUNLS_SUCCESS: u32 = 0; +pub const SUNLS_MEM_NULL: i32 = -801; +pub const SUNLS_ILL_INPUT: i32 = -802; +pub const SUNLS_MEM_FAIL: i32 = -803; +pub const SUNLS_ATIMES_NULL: i32 = -804; +pub const SUNLS_ATIMES_FAIL_UNREC: i32 = -805; +pub const SUNLS_PSET_FAIL_UNREC: i32 = -806; +pub const SUNLS_PSOLVE_NULL: i32 = -807; +pub const SUNLS_PSOLVE_FAIL_UNREC: i32 = -808; +pub const SUNLS_PACKAGE_FAIL_UNREC: i32 = -809; +pub const SUNLS_GS_FAIL: i32 = -810; +pub const SUNLS_QRSOL_FAIL: i32 = -811; +pub const SUNLS_VECTOROP_ERR: i32 = -812; +pub const SUNLS_RES_REDUCED: u32 = 801; +pub const SUNLS_CONV_FAIL: u32 = 802; +pub const SUNLS_ATIMES_FAIL_REC: u32 = 803; +pub const SUNLS_PSET_FAIL_REC: u32 = 804; +pub const SUNLS_PSOLVE_FAIL_REC: u32 = 805; +pub const SUNLS_PACKAGE_FAIL_REC: u32 = 806; +pub const SUNLS_QRFACT_FAIL: u32 = 807; +pub const SUNLS_LUFACT_FAIL: u32 = 808; +pub const SUNLS_MSG_RESIDUAL: &'static [u8; 41usize] = + b"\t\tlin. iteration %ld, lin. residual: %g\n\0"; +pub const SUNDIALS_DENSE: u32 = 1; +pub const SUNDIALS_BAND: u32 = 2; +pub type size_t = ::std::os::raw::c_ulong; +pub type wchar_t = ::std::os::raw::c_int; +#[repr(C)] +#[repr(align(16))] +#[derive(Debug, Copy, Clone)] +pub struct max_align_t { + pub __clang_max_align_nonce1: ::std::os::raw::c_longlong, + pub __bindgen_padding_0: u64, + pub __clang_max_align_nonce2: u128, +} +#[test] +fn bindgen_test_layout_max_align_t() { + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(max_align_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 16usize, + concat!("Alignment of ", stringify!(max_align_t)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).__clang_max_align_nonce1 as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(max_align_t), + "::", + stringify!(__clang_max_align_nonce1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).__clang_max_align_nonce2 as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(max_align_t), + "::", + stringify!(__clang_max_align_nonce2) + ) + ); +} +pub type __u_char = ::std::os::raw::c_uchar; +pub type __u_short = ::std::os::raw::c_ushort; +pub type __u_int = ::std::os::raw::c_uint; +pub type __u_long = ::std::os::raw::c_ulong; +pub type __int8_t = ::std::os::raw::c_schar; +pub type __uint8_t = ::std::os::raw::c_uchar; +pub type __int16_t = ::std::os::raw::c_short; +pub type __uint16_t = ::std::os::raw::c_ushort; +pub type __int32_t = ::std::os::raw::c_int; +pub type __uint32_t = ::std::os::raw::c_uint; +pub type __int64_t = ::std::os::raw::c_long; +pub type __uint64_t = ::std::os::raw::c_ulong; +pub type __int_least8_t = __int8_t; +pub type __uint_least8_t = __uint8_t; +pub type __int_least16_t = __int16_t; +pub type __uint_least16_t = __uint16_t; +pub type __int_least32_t = __int32_t; +pub type __uint_least32_t = __uint32_t; +pub type __int_least64_t = __int64_t; +pub type __uint_least64_t = __uint64_t; +pub type __quad_t = ::std::os::raw::c_long; +pub type __u_quad_t = ::std::os::raw::c_ulong; +pub type __intmax_t = ::std::os::raw::c_long; +pub type __uintmax_t = ::std::os::raw::c_ulong; +pub type __dev_t = ::std::os::raw::c_ulong; +pub type __uid_t = ::std::os::raw::c_uint; +pub type __gid_t = ::std::os::raw::c_uint; +pub type __ino_t = ::std::os::raw::c_ulong; +pub type __ino64_t = ::std::os::raw::c_ulong; +pub type __mode_t = ::std::os::raw::c_uint; +pub type __nlink_t = ::std::os::raw::c_ulong; +pub type __off_t = ::std::os::raw::c_long; +pub type __off64_t = ::std::os::raw::c_long; +pub type __pid_t = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __fsid_t { + pub __val: [::std::os::raw::c_int; 2usize], +} +#[test] +fn bindgen_test_layout___fsid_t() { + assert_eq!( + ::std::mem::size_of::<__fsid_t>(), + 8usize, + concat!("Size of: ", stringify!(__fsid_t)) + ); + assert_eq!( + ::std::mem::align_of::<__fsid_t>(), + 4usize, + concat!("Alignment of ", stringify!(__fsid_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__fsid_t>())).__val as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__fsid_t), + "::", + stringify!(__val) + ) + ); +} +pub type __clock_t = ::std::os::raw::c_long; +pub type __rlim_t = ::std::os::raw::c_ulong; +pub type __rlim64_t = ::std::os::raw::c_ulong; +pub type __id_t = ::std::os::raw::c_uint; +pub type __time_t = ::std::os::raw::c_long; +pub type __useconds_t = ::std::os::raw::c_uint; +pub type __suseconds_t = ::std::os::raw::c_long; +pub type __suseconds64_t = ::std::os::raw::c_long; +pub type __daddr_t = ::std::os::raw::c_int; +pub type __key_t = ::std::os::raw::c_int; +pub type __clockid_t = ::std::os::raw::c_int; +pub type __timer_t = *mut ::std::os::raw::c_void; +pub type __blksize_t = ::std::os::raw::c_long; +pub type __blkcnt_t = ::std::os::raw::c_long; +pub type __blkcnt64_t = ::std::os::raw::c_long; +pub type __fsblkcnt_t = ::std::os::raw::c_ulong; +pub type __fsblkcnt64_t = ::std::os::raw::c_ulong; +pub type __fsfilcnt_t = ::std::os::raw::c_ulong; +pub type __fsfilcnt64_t = ::std::os::raw::c_ulong; +pub type __fsword_t = ::std::os::raw::c_long; +pub type __ssize_t = ::std::os::raw::c_long; +pub type __syscall_slong_t = ::std::os::raw::c_long; +pub type __syscall_ulong_t = ::std::os::raw::c_ulong; +pub type __loff_t = __off64_t; +pub type __caddr_t = *mut ::std::os::raw::c_char; +pub type __intptr_t = ::std::os::raw::c_long; +pub type __socklen_t = ::std::os::raw::c_uint; +pub type __sig_atomic_t = ::std::os::raw::c_int; +pub type int_least8_t = __int_least8_t; +pub type int_least16_t = __int_least16_t; +pub type int_least32_t = __int_least32_t; +pub type int_least64_t = __int_least64_t; +pub type uint_least8_t = __uint_least8_t; +pub type uint_least16_t = __uint_least16_t; +pub type uint_least32_t = __uint_least32_t; +pub type uint_least64_t = __uint_least64_t; +pub type int_fast8_t = ::std::os::raw::c_schar; +pub type int_fast16_t = ::std::os::raw::c_long; +pub type int_fast32_t = ::std::os::raw::c_long; +pub type int_fast64_t = ::std::os::raw::c_long; +pub type uint_fast8_t = ::std::os::raw::c_uchar; +pub type uint_fast16_t = ::std::os::raw::c_ulong; +pub type uint_fast32_t = ::std::os::raw::c_ulong; +pub type uint_fast64_t = ::std::os::raw::c_ulong; +pub type intmax_t = __intmax_t; +pub type uintmax_t = __uintmax_t; +pub type realtype = f64; +pub type sunindextype = i64; +pub type va_list = __builtin_va_list; +pub type __gnuc_va_list = __builtin_va_list; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __mbstate_t { + pub __count: ::std::os::raw::c_int, + pub __value: __mbstate_t__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __mbstate_t__bindgen_ty_1 { + pub __wch: ::std::os::raw::c_uint, + pub __wchb: [::std::os::raw::c_char; 4usize], + _bindgen_union_align: u32, +} +#[test] +fn bindgen_test_layout___mbstate_t__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<__mbstate_t__bindgen_ty_1>(), + 4usize, + concat!("Size of: ", stringify!(__mbstate_t__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::<__mbstate_t__bindgen_ty_1>(), + 4usize, + concat!("Alignment of ", stringify!(__mbstate_t__bindgen_ty_1)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__mbstate_t__bindgen_ty_1>())).__wch as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__mbstate_t__bindgen_ty_1), + "::", + stringify!(__wch) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__mbstate_t__bindgen_ty_1>())).__wchb as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__mbstate_t__bindgen_ty_1), + "::", + stringify!(__wchb) + ) + ); +} +#[test] +fn bindgen_test_layout___mbstate_t() { + assert_eq!( + ::std::mem::size_of::<__mbstate_t>(), + 8usize, + concat!("Size of: ", stringify!(__mbstate_t)) + ); + assert_eq!( + ::std::mem::align_of::<__mbstate_t>(), + 4usize, + concat!("Alignment of ", stringify!(__mbstate_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__mbstate_t>())).__count as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__mbstate_t), + "::", + stringify!(__count) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__mbstate_t>())).__value as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__mbstate_t), + "::", + stringify!(__value) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _G_fpos_t { + pub __pos: __off_t, + pub __state: __mbstate_t, +} +#[test] +fn bindgen_test_layout__G_fpos_t() { + assert_eq!( + ::std::mem::size_of::<_G_fpos_t>(), + 16usize, + concat!("Size of: ", stringify!(_G_fpos_t)) + ); + assert_eq!( + ::std::mem::align_of::<_G_fpos_t>(), + 8usize, + concat!("Alignment of ", stringify!(_G_fpos_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_G_fpos_t>())).__pos as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_G_fpos_t), + "::", + stringify!(__pos) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_G_fpos_t>())).__state as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_G_fpos_t), + "::", + stringify!(__state) + ) + ); +} +pub type __fpos_t = _G_fpos_t; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _G_fpos64_t { + pub __pos: __off64_t, + pub __state: __mbstate_t, +} +#[test] +fn bindgen_test_layout__G_fpos64_t() { + assert_eq!( + ::std::mem::size_of::<_G_fpos64_t>(), + 16usize, + concat!("Size of: ", stringify!(_G_fpos64_t)) + ); + assert_eq!( + ::std::mem::align_of::<_G_fpos64_t>(), + 8usize, + concat!("Alignment of ", stringify!(_G_fpos64_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_G_fpos64_t>())).__pos as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_G_fpos64_t), + "::", + stringify!(__pos) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_G_fpos64_t>())).__state as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_G_fpos64_t), + "::", + stringify!(__state) + ) + ); +} +pub type __fpos64_t = _G_fpos64_t; +pub type __FILE = _IO_FILE; +pub type FILE = _IO_FILE; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _IO_marker { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _IO_codecvt { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _IO_wide_data { + _unused: [u8; 0], +} +pub type _IO_lock_t = ::std::os::raw::c_void; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _IO_FILE { + pub _flags: ::std::os::raw::c_int, + pub _IO_read_ptr: *mut ::std::os::raw::c_char, + pub _IO_read_end: *mut ::std::os::raw::c_char, + pub _IO_read_base: *mut ::std::os::raw::c_char, + pub _IO_write_base: *mut ::std::os::raw::c_char, + pub _IO_write_ptr: *mut ::std::os::raw::c_char, + pub _IO_write_end: *mut ::std::os::raw::c_char, + pub _IO_buf_base: *mut ::std::os::raw::c_char, + pub _IO_buf_end: *mut ::std::os::raw::c_char, + pub _IO_save_base: *mut ::std::os::raw::c_char, + pub _IO_backup_base: *mut ::std::os::raw::c_char, + pub _IO_save_end: *mut ::std::os::raw::c_char, + pub _markers: *mut _IO_marker, + pub _chain: *mut _IO_FILE, + pub _fileno: ::std::os::raw::c_int, + pub _flags2: ::std::os::raw::c_int, + pub _old_offset: __off_t, + pub _cur_column: ::std::os::raw::c_ushort, + pub _vtable_offset: ::std::os::raw::c_schar, + pub _shortbuf: [::std::os::raw::c_char; 1usize], + pub _lock: *mut _IO_lock_t, + pub _offset: __off64_t, + pub _codecvt: *mut _IO_codecvt, + pub _wide_data: *mut _IO_wide_data, + pub _freeres_list: *mut _IO_FILE, + pub _freeres_buf: *mut ::std::os::raw::c_void, + pub __pad5: size_t, + pub _mode: ::std::os::raw::c_int, + pub _unused2: [::std::os::raw::c_char; 20usize], +} +#[test] +fn bindgen_test_layout__IO_FILE() { + assert_eq!( + ::std::mem::size_of::<_IO_FILE>(), + 216usize, + concat!("Size of: ", stringify!(_IO_FILE)) + ); + assert_eq!( + ::std::mem::align_of::<_IO_FILE>(), + 8usize, + concat!("Alignment of ", stringify!(_IO_FILE)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._flags as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_flags) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_read_ptr as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_read_ptr) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_read_end as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_read_end) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_read_base as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_read_base) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_write_base as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_write_base) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_write_ptr as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_write_ptr) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_write_end as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_write_end) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_buf_base as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_buf_base) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_buf_end as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_buf_end) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_save_base as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_save_base) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_backup_base as *const _ as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_backup_base) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_save_end as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_save_end) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._markers as *const _ as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_markers) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._chain as *const _ as usize }, + 104usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_chain) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._fileno as *const _ as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_fileno) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._flags2 as *const _ as usize }, + 116usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_flags2) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._old_offset as *const _ as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_old_offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._cur_column as *const _ as usize }, + 128usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_cur_column) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._vtable_offset as *const _ as usize }, + 130usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_vtable_offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._shortbuf as *const _ as usize }, + 131usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_shortbuf) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._lock as *const _ as usize }, + 136usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_lock) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._offset as *const _ as usize }, + 144usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._codecvt as *const _ as usize }, + 152usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_codecvt) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._wide_data as *const _ as usize }, + 160usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_wide_data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._freeres_list as *const _ as usize }, + 168usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_freeres_list) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._freeres_buf as *const _ as usize }, + 176usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_freeres_buf) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>())).__pad5 as *const _ as usize }, + 184usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(__pad5) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._mode as *const _ as usize }, + 192usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_mode) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._unused2 as *const _ as usize }, + 196usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_unused2) + ) + ); +} +pub type off_t = __off_t; +pub type ssize_t = __ssize_t; +pub type fpos_t = __fpos_t; +extern "C" { + pub static mut stdin: *mut FILE; +} +extern "C" { + pub static mut stdout: *mut FILE; +} +extern "C" { + pub static mut stderr: *mut FILE; +} +extern "C" { + pub fn remove(__filename: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn rename( + __old: *const ::std::os::raw::c_char, + __new: *const ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn renameat( + __oldfd: ::std::os::raw::c_int, + __old: *const ::std::os::raw::c_char, + __newfd: ::std::os::raw::c_int, + __new: *const ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn tmpfile() -> *mut FILE; +} +extern "C" { + pub fn tmpnam(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn tmpnam_r(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn tempnam( + __dir: *const ::std::os::raw::c_char, + __pfx: *const ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn fclose(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fflush(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fflush_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fopen( + __filename: *const ::std::os::raw::c_char, + __modes: *const ::std::os::raw::c_char, + ) -> *mut FILE; +} +extern "C" { + pub fn freopen( + __filename: *const ::std::os::raw::c_char, + __modes: *const ::std::os::raw::c_char, + __stream: *mut FILE, + ) -> *mut FILE; +} +extern "C" { + pub fn fdopen(__fd: ::std::os::raw::c_int, __modes: *const ::std::os::raw::c_char) + -> *mut FILE; +} +extern "C" { + pub fn fmemopen( + __s: *mut ::std::os::raw::c_void, + __len: size_t, + __modes: *const ::std::os::raw::c_char, + ) -> *mut FILE; +} +extern "C" { + pub fn open_memstream( + __bufloc: *mut *mut ::std::os::raw::c_char, + __sizeloc: *mut size_t, + ) -> *mut FILE; +} +extern "C" { + pub fn setbuf(__stream: *mut FILE, __buf: *mut ::std::os::raw::c_char); +} +extern "C" { + pub fn setvbuf( + __stream: *mut FILE, + __buf: *mut ::std::os::raw::c_char, + __modes: ::std::os::raw::c_int, + __n: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn setbuffer(__stream: *mut FILE, __buf: *mut ::std::os::raw::c_char, __size: size_t); +} +extern "C" { + pub fn setlinebuf(__stream: *mut FILE); +} +extern "C" { + pub fn fprintf( + __stream: *mut FILE, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn printf(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn sprintf( + __s: *mut ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vfprintf( + __s: *mut FILE, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vprintf( + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vsprintf( + __s: *mut ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn snprintf( + __s: *mut ::std::os::raw::c_char, + __maxlen: ::std::os::raw::c_ulong, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vsnprintf( + __s: *mut ::std::os::raw::c_char, + __maxlen: ::std::os::raw::c_ulong, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vdprintf( + __fd: ::std::os::raw::c_int, + __fmt: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn dprintf( + __fd: ::std::os::raw::c_int, + __fmt: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fscanf( + __stream: *mut FILE, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn scanf(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn sscanf( + __s: *const ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +pub type _Float32 = f32; +pub type _Float64 = f64; +pub type _Float32x = f64; +pub type _Float64x = u128; +extern "C" { + #[link_name = "\u{1}__isoc99_fscanf"] + pub fn fscanf1( + __stream: *mut FILE, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + #[link_name = "\u{1}__isoc99_scanf"] + pub fn scanf1(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int; +} +extern "C" { + #[link_name = "\u{1}__isoc99_sscanf"] + pub fn sscanf1( + __s: *const ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vfscanf( + __s: *mut FILE, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vscanf( + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vsscanf( + __s: *const ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + #[link_name = "\u{1}__isoc99_vfscanf"] + pub fn vfscanf1( + __s: *mut FILE, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + #[link_name = "\u{1}__isoc99_vscanf"] + pub fn vscanf1( + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + #[link_name = "\u{1}__isoc99_vsscanf"] + pub fn vsscanf1( + __s: *const ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fgetc(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getc(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getchar() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getc_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getchar_unlocked() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fgetc_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fputc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn putc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn putchar(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fputc_unlocked(__c: ::std::os::raw::c_int, __stream: *mut FILE) + -> ::std::os::raw::c_int; +} +extern "C" { + pub fn putc_unlocked(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn putchar_unlocked(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getw(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn putw(__w: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fgets( + __s: *mut ::std::os::raw::c_char, + __n: ::std::os::raw::c_int, + __stream: *mut FILE, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn __getdelim( + __lineptr: *mut *mut ::std::os::raw::c_char, + __n: *mut size_t, + __delimiter: ::std::os::raw::c_int, + __stream: *mut FILE, + ) -> __ssize_t; +} +extern "C" { + pub fn getdelim( + __lineptr: *mut *mut ::std::os::raw::c_char, + __n: *mut size_t, + __delimiter: ::std::os::raw::c_int, + __stream: *mut FILE, + ) -> __ssize_t; +} +extern "C" { + pub fn getline( + __lineptr: *mut *mut ::std::os::raw::c_char, + __n: *mut size_t, + __stream: *mut FILE, + ) -> __ssize_t; +} +extern "C" { + pub fn fputs(__s: *const ::std::os::raw::c_char, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn puts(__s: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ungetc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fread( + __ptr: *mut ::std::os::raw::c_void, + __size: ::std::os::raw::c_ulong, + __n: ::std::os::raw::c_ulong, + __stream: *mut FILE, + ) -> ::std::os::raw::c_ulong; +} +extern "C" { + pub fn fwrite( + __ptr: *const ::std::os::raw::c_void, + __size: ::std::os::raw::c_ulong, + __n: ::std::os::raw::c_ulong, + __s: *mut FILE, + ) -> ::std::os::raw::c_ulong; +} +extern "C" { + pub fn fread_unlocked( + __ptr: *mut ::std::os::raw::c_void, + __size: size_t, + __n: size_t, + __stream: *mut FILE, + ) -> size_t; +} +extern "C" { + pub fn fwrite_unlocked( + __ptr: *const ::std::os::raw::c_void, + __size: size_t, + __n: size_t, + __stream: *mut FILE, + ) -> size_t; +} +extern "C" { + pub fn fseek( + __stream: *mut FILE, + __off: ::std::os::raw::c_long, + __whence: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ftell(__stream: *mut FILE) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn rewind(__stream: *mut FILE); +} +extern "C" { + pub fn fseeko( + __stream: *mut FILE, + __off: __off_t, + __whence: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ftello(__stream: *mut FILE) -> __off_t; +} +extern "C" { + pub fn fgetpos(__stream: *mut FILE, __pos: *mut fpos_t) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fsetpos(__stream: *mut FILE, __pos: *const fpos_t) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn clearerr(__stream: *mut FILE); +} +extern "C" { + pub fn feof(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ferror(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn clearerr_unlocked(__stream: *mut FILE); +} +extern "C" { + pub fn feof_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ferror_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn perror(__s: *const ::std::os::raw::c_char); +} +extern "C" { + pub fn fileno(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fileno_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn popen( + __command: *const ::std::os::raw::c_char, + __modes: *const ::std::os::raw::c_char, + ) -> *mut FILE; +} +extern "C" { + pub fn pclose(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ctermid(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn flockfile(__stream: *mut FILE); +} +extern "C" { + pub fn ftrylockfile(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn funlockfile(__stream: *mut FILE); +} +extern "C" { + pub fn __uflow(arg1: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn __overflow(arg1: *mut FILE, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct div_t { + pub quot: ::std::os::raw::c_int, + pub rem: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_div_t() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(div_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(div_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).quot as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(div_t), + "::", + stringify!(quot) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rem as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(div_t), + "::", + stringify!(rem) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ldiv_t { + pub quot: ::std::os::raw::c_long, + pub rem: ::std::os::raw::c_long, +} +#[test] +fn bindgen_test_layout_ldiv_t() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(ldiv_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(ldiv_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).quot as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ldiv_t), + "::", + stringify!(quot) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rem as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ldiv_t), + "::", + stringify!(rem) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct lldiv_t { + pub quot: ::std::os::raw::c_longlong, + pub rem: ::std::os::raw::c_longlong, +} +#[test] +fn bindgen_test_layout_lldiv_t() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(lldiv_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(lldiv_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).quot as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lldiv_t), + "::", + stringify!(quot) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rem as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(lldiv_t), + "::", + stringify!(rem) + ) + ); +} +extern "C" { + pub fn __ctype_get_mb_cur_max() -> size_t; +} +extern "C" { + pub fn atof(__nptr: *const ::std::os::raw::c_char) -> f64; +} +extern "C" { + pub fn atoi(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn atol(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn atoll(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_longlong; +} +extern "C" { + pub fn strtod( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + ) -> f64; +} +extern "C" { + pub fn strtof( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + ) -> f32; +} +extern "C" { + pub fn strtold( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + ) -> u128; +} +extern "C" { + pub fn strtol( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn strtoul( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_ulong; +} +extern "C" { + pub fn strtoq( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_longlong; +} +extern "C" { + pub fn strtouq( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_ulonglong; +} +extern "C" { + pub fn strtoll( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_longlong; +} +extern "C" { + pub fn strtoull( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_ulonglong; +} +extern "C" { + pub fn l64a(__n: ::std::os::raw::c_long) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn a64l(__s: *const ::std::os::raw::c_char) -> ::std::os::raw::c_long; +} +pub type u_char = __u_char; +pub type u_short = __u_short; +pub type u_int = __u_int; +pub type u_long = __u_long; +pub type quad_t = __quad_t; +pub type u_quad_t = __u_quad_t; +pub type fsid_t = __fsid_t; +pub type loff_t = __loff_t; +pub type ino_t = __ino_t; +pub type dev_t = __dev_t; +pub type gid_t = __gid_t; +pub type mode_t = __mode_t; +pub type nlink_t = __nlink_t; +pub type uid_t = __uid_t; +pub type pid_t = __pid_t; +pub type id_t = __id_t; +pub type daddr_t = __daddr_t; +pub type caddr_t = __caddr_t; +pub type key_t = __key_t; +pub type clock_t = __clock_t; +pub type clockid_t = __clockid_t; +pub type time_t = __time_t; +pub type timer_t = __timer_t; +pub type ulong = ::std::os::raw::c_ulong; +pub type ushort = ::std::os::raw::c_ushort; +pub type uint = ::std::os::raw::c_uint; +pub type u_int8_t = __uint8_t; +pub type u_int16_t = __uint16_t; +pub type u_int32_t = __uint32_t; +pub type u_int64_t = __uint64_t; +pub type register_t = ::std::os::raw::c_long; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sigset_t { + pub __val: [::std::os::raw::c_ulong; 16usize], +} +#[test] +fn bindgen_test_layout___sigset_t() { + assert_eq!( + ::std::mem::size_of::<__sigset_t>(), + 128usize, + concat!("Size of: ", stringify!(__sigset_t)) + ); + assert_eq!( + ::std::mem::align_of::<__sigset_t>(), + 8usize, + concat!("Alignment of ", stringify!(__sigset_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__sigset_t>())).__val as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__sigset_t), + "::", + stringify!(__val) + ) + ); +} +pub type sigset_t = __sigset_t; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct timeval { + pub tv_sec: __time_t, + pub tv_usec: __suseconds_t, +} +#[test] +fn bindgen_test_layout_timeval() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(timeval)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(timeval)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tv_sec as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(timeval), + "::", + stringify!(tv_sec) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tv_usec as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(timeval), + "::", + stringify!(tv_usec) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct timespec { + pub tv_sec: __time_t, + pub tv_nsec: __syscall_slong_t, +} +#[test] +fn bindgen_test_layout_timespec() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(timespec)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(timespec)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tv_sec as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(timespec), + "::", + stringify!(tv_sec) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tv_nsec as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(timespec), + "::", + stringify!(tv_nsec) + ) + ); +} +pub type suseconds_t = __suseconds_t; +pub type __fd_mask = ::std::os::raw::c_long; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fd_set { + pub __fds_bits: [__fd_mask; 16usize], +} +#[test] +fn bindgen_test_layout_fd_set() { + assert_eq!( + ::std::mem::size_of::(), + 128usize, + concat!("Size of: ", stringify!(fd_set)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(fd_set)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__fds_bits as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(fd_set), + "::", + stringify!(__fds_bits) + ) + ); +} +pub type fd_mask = __fd_mask; +extern "C" { + pub fn select( + __nfds: ::std::os::raw::c_int, + __readfds: *mut fd_set, + __writefds: *mut fd_set, + __exceptfds: *mut fd_set, + __timeout: *mut timeval, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn pselect( + __nfds: ::std::os::raw::c_int, + __readfds: *mut fd_set, + __writefds: *mut fd_set, + __exceptfds: *mut fd_set, + __timeout: *const timespec, + __sigmask: *const __sigset_t, + ) -> ::std::os::raw::c_int; +} +pub type blksize_t = __blksize_t; +pub type blkcnt_t = __blkcnt_t; +pub type fsblkcnt_t = __fsblkcnt_t; +pub type fsfilcnt_t = __fsfilcnt_t; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_internal_list { + pub __prev: *mut __pthread_internal_list, + pub __next: *mut __pthread_internal_list, +} +#[test] +fn bindgen_test_layout___pthread_internal_list() { + assert_eq!( + ::std::mem::size_of::<__pthread_internal_list>(), + 16usize, + concat!("Size of: ", stringify!(__pthread_internal_list)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_internal_list>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_internal_list)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_internal_list>())).__prev as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_internal_list), + "::", + stringify!(__prev) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_internal_list>())).__next as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(__pthread_internal_list), + "::", + stringify!(__next) + ) + ); +} +pub type __pthread_list_t = __pthread_internal_list; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_internal_slist { + pub __next: *mut __pthread_internal_slist, +} +#[test] +fn bindgen_test_layout___pthread_internal_slist() { + assert_eq!( + ::std::mem::size_of::<__pthread_internal_slist>(), + 8usize, + concat!("Size of: ", stringify!(__pthread_internal_slist)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_internal_slist>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_internal_slist)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_internal_slist>())).__next as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_internal_slist), + "::", + stringify!(__next) + ) + ); +} +pub type __pthread_slist_t = __pthread_internal_slist; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_mutex_s { + pub __lock: ::std::os::raw::c_int, + pub __count: ::std::os::raw::c_uint, + pub __owner: ::std::os::raw::c_int, + pub __nusers: ::std::os::raw::c_uint, + pub __kind: ::std::os::raw::c_int, + pub __spins: ::std::os::raw::c_short, + pub __elision: ::std::os::raw::c_short, + pub __list: __pthread_list_t, +} +#[test] +fn bindgen_test_layout___pthread_mutex_s() { + assert_eq!( + ::std::mem::size_of::<__pthread_mutex_s>(), + 40usize, + concat!("Size of: ", stringify!(__pthread_mutex_s)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_mutex_s>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_mutex_s)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__lock as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__lock) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__count as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__count) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__owner as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__owner) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__nusers as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__nusers) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__kind as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__kind) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__spins as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__spins) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__elision as *const _ as usize }, + 22usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__elision) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__list as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__list) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_rwlock_arch_t { + pub __readers: ::std::os::raw::c_uint, + pub __writers: ::std::os::raw::c_uint, + pub __wrphase_futex: ::std::os::raw::c_uint, + pub __writers_futex: ::std::os::raw::c_uint, + pub __pad3: ::std::os::raw::c_uint, + pub __pad4: ::std::os::raw::c_uint, + pub __cur_writer: ::std::os::raw::c_int, + pub __shared: ::std::os::raw::c_int, + pub __rwelision: ::std::os::raw::c_schar, + pub __pad1: [::std::os::raw::c_uchar; 7usize], + pub __pad2: ::std::os::raw::c_ulong, + pub __flags: ::std::os::raw::c_uint, +} +#[test] +fn bindgen_test_layout___pthread_rwlock_arch_t() { + assert_eq!( + ::std::mem::size_of::<__pthread_rwlock_arch_t>(), + 56usize, + concat!("Size of: ", stringify!(__pthread_rwlock_arch_t)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_rwlock_arch_t>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_rwlock_arch_t)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__readers as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__readers) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__writers as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__writers) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__wrphase_futex as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__wrphase_futex) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__writers_futex as *const _ as usize + }, + 12usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__writers_futex) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad3 as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__pad3) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad4 as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__pad4) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__cur_writer as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__cur_writer) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__shared as *const _ as usize + }, + 28usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__shared) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__rwelision as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__rwelision) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad1 as *const _ as usize }, + 33usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__pad1) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad2 as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__pad2) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__flags as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__flags) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __pthread_cond_s { + pub __bindgen_anon_1: __pthread_cond_s__bindgen_ty_1, + pub __bindgen_anon_2: __pthread_cond_s__bindgen_ty_2, + pub __g_refs: [::std::os::raw::c_uint; 2usize], + pub __g_size: [::std::os::raw::c_uint; 2usize], + pub __g1_orig_size: ::std::os::raw::c_uint, + pub __wrefs: ::std::os::raw::c_uint, + pub __g_signals: [::std::os::raw::c_uint; 2usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __pthread_cond_s__bindgen_ty_1 { + pub __wseq: ::std::os::raw::c_ulonglong, + pub __wseq32: __pthread_cond_s__bindgen_ty_1__bindgen_ty_1, + _bindgen_union_align: u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_cond_s__bindgen_ty_1__bindgen_ty_1 { + pub __low: ::std::os::raw::c_uint, + pub __high: ::std::os::raw::c_uint, +} +#[test] +fn bindgen_test_layout___pthread_cond_s__bindgen_ty_1__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>(), + 8usize, + concat!( + "Size of: ", + stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>(), + 4usize, + concat!( + "Alignment of ", + stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>())).__low + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(__low) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>())).__high + as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(__high) + ) + ); +} +#[test] +fn bindgen_test_layout___pthread_cond_s__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_1>(), + 8usize, + concat!("Size of: ", stringify!(__pthread_cond_s__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_1>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_cond_s__bindgen_ty_1)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1>())).__wseq as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_1), + "::", + stringify!(__wseq) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1>())).__wseq32 as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_1), + "::", + stringify!(__wseq32) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __pthread_cond_s__bindgen_ty_2 { + pub __g1_start: ::std::os::raw::c_ulonglong, + pub __g1_start32: __pthread_cond_s__bindgen_ty_2__bindgen_ty_1, + _bindgen_union_align: u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_cond_s__bindgen_ty_2__bindgen_ty_1 { + pub __low: ::std::os::raw::c_uint, + pub __high: ::std::os::raw::c_uint, +} +#[test] +fn bindgen_test_layout___pthread_cond_s__bindgen_ty_2__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>(), + 8usize, + concat!( + "Size of: ", + stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>(), + 4usize, + concat!( + "Alignment of ", + stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>())).__low + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1), + "::", + stringify!(__low) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>())).__high + as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1), + "::", + stringify!(__high) + ) + ); +} +#[test] +fn bindgen_test_layout___pthread_cond_s__bindgen_ty_2() { + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_2>(), + 8usize, + concat!("Size of: ", stringify!(__pthread_cond_s__bindgen_ty_2)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_2>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_cond_s__bindgen_ty_2)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2>())).__g1_start as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_2), + "::", + stringify!(__g1_start) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2>())).__g1_start32 as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_2), + "::", + stringify!(__g1_start32) + ) + ); +} +#[test] +fn bindgen_test_layout___pthread_cond_s() { + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s>(), + 48usize, + concat!("Size of: ", stringify!(__pthread_cond_s)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_cond_s)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g_refs as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__g_refs) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g_size as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__g_size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g1_orig_size as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__g1_orig_size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__wrefs as *const _ as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__wrefs) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g_signals as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__g_signals) + ) + ); +} +pub type __tss_t = ::std::os::raw::c_uint; +pub type __thrd_t = ::std::os::raw::c_ulong; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __once_flag { + pub __data: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout___once_flag() { + assert_eq!( + ::std::mem::size_of::<__once_flag>(), + 4usize, + concat!("Size of: ", stringify!(__once_flag)) + ); + assert_eq!( + ::std::mem::align_of::<__once_flag>(), + 4usize, + concat!("Alignment of ", stringify!(__once_flag)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__once_flag>())).__data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__once_flag), + "::", + stringify!(__data) + ) + ); +} +pub type pthread_t = ::std::os::raw::c_ulong; +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_mutexattr_t { + pub __size: [::std::os::raw::c_char; 4usize], + pub __align: ::std::os::raw::c_int, + _bindgen_union_align: u32, +} +#[test] +fn bindgen_test_layout_pthread_mutexattr_t() { + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(pthread_mutexattr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(pthread_mutexattr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutexattr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutexattr_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_condattr_t { + pub __size: [::std::os::raw::c_char; 4usize], + pub __align: ::std::os::raw::c_int, + _bindgen_union_align: u32, +} +#[test] +fn bindgen_test_layout_pthread_condattr_t() { + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(pthread_condattr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(pthread_condattr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_condattr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_condattr_t), + "::", + stringify!(__align) + ) + ); +} +pub type pthread_key_t = ::std::os::raw::c_uint; +pub type pthread_once_t = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_attr_t { + pub __size: [::std::os::raw::c_char; 56usize], + pub __align: ::std::os::raw::c_long, + _bindgen_union_align: [u64; 7usize], +} +#[test] +fn bindgen_test_layout_pthread_attr_t() { + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(pthread_attr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_attr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_attr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_attr_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_mutex_t { + pub __data: __pthread_mutex_s, + pub __size: [::std::os::raw::c_char; 40usize], + pub __align: ::std::os::raw::c_long, + _bindgen_union_align: [u64; 5usize], +} +#[test] +fn bindgen_test_layout_pthread_mutex_t() { + assert_eq!( + ::std::mem::size_of::(), + 40usize, + concat!("Size of: ", stringify!(pthread_mutex_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_mutex_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutex_t), + "::", + stringify!(__data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutex_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutex_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_cond_t { + pub __data: __pthread_cond_s, + pub __size: [::std::os::raw::c_char; 48usize], + pub __align: ::std::os::raw::c_longlong, + _bindgen_union_align: [u64; 6usize], +} +#[test] +fn bindgen_test_layout_pthread_cond_t() { + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(pthread_cond_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_cond_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_cond_t), + "::", + stringify!(__data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_cond_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_cond_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_rwlock_t { + pub __data: __pthread_rwlock_arch_t, + pub __size: [::std::os::raw::c_char; 56usize], + pub __align: ::std::os::raw::c_long, + _bindgen_union_align: [u64; 7usize], +} +#[test] +fn bindgen_test_layout_pthread_rwlock_t() { + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(pthread_rwlock_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_rwlock_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlock_t), + "::", + stringify!(__data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlock_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlock_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_rwlockattr_t { + pub __size: [::std::os::raw::c_char; 8usize], + pub __align: ::std::os::raw::c_long, + _bindgen_union_align: u64, +} +#[test] +fn bindgen_test_layout_pthread_rwlockattr_t() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(pthread_rwlockattr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_rwlockattr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlockattr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlockattr_t), + "::", + stringify!(__align) + ) + ); +} +pub type pthread_spinlock_t = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_barrier_t { + pub __size: [::std::os::raw::c_char; 32usize], + pub __align: ::std::os::raw::c_long, + _bindgen_union_align: [u64; 4usize], +} +#[test] +fn bindgen_test_layout_pthread_barrier_t() { + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(pthread_barrier_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_barrier_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_barrier_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_barrier_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_barrierattr_t { + pub __size: [::std::os::raw::c_char; 4usize], + pub __align: ::std::os::raw::c_int, + _bindgen_union_align: u32, +} +#[test] +fn bindgen_test_layout_pthread_barrierattr_t() { + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(pthread_barrierattr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(pthread_barrierattr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_barrierattr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_barrierattr_t), + "::", + stringify!(__align) + ) + ); +} +extern "C" { + pub fn random() -> ::std::os::raw::c_long; +} +extern "C" { + pub fn srandom(__seed: ::std::os::raw::c_uint); +} +extern "C" { + pub fn initstate( + __seed: ::std::os::raw::c_uint, + __statebuf: *mut ::std::os::raw::c_char, + __statelen: size_t, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn setstate(__statebuf: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct random_data { + pub fptr: *mut i32, + pub rptr: *mut i32, + pub state: *mut i32, + pub rand_type: ::std::os::raw::c_int, + pub rand_deg: ::std::os::raw::c_int, + pub rand_sep: ::std::os::raw::c_int, + pub end_ptr: *mut i32, +} +#[test] +fn bindgen_test_layout_random_data() { + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(random_data)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(random_data)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fptr as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(fptr) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rptr as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(rptr) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).state as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(state) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rand_type as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(rand_type) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rand_deg as *const _ as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(rand_deg) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rand_sep as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(rand_sep) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).end_ptr as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(end_ptr) + ) + ); +} +extern "C" { + pub fn random_r(__buf: *mut random_data, __result: *mut i32) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn srandom_r( + __seed: ::std::os::raw::c_uint, + __buf: *mut random_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn initstate_r( + __seed: ::std::os::raw::c_uint, + __statebuf: *mut ::std::os::raw::c_char, + __statelen: size_t, + __buf: *mut random_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn setstate_r( + __statebuf: *mut ::std::os::raw::c_char, + __buf: *mut random_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn rand() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn srand(__seed: ::std::os::raw::c_uint); +} +extern "C" { + pub fn rand_r(__seed: *mut ::std::os::raw::c_uint) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn drand48() -> f64; +} +extern "C" { + pub fn erand48(__xsubi: *mut ::std::os::raw::c_ushort) -> f64; +} +extern "C" { + pub fn lrand48() -> ::std::os::raw::c_long; +} +extern "C" { + pub fn nrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn mrand48() -> ::std::os::raw::c_long; +} +extern "C" { + pub fn jrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn srand48(__seedval: ::std::os::raw::c_long); +} +extern "C" { + pub fn seed48(__seed16v: *mut ::std::os::raw::c_ushort) -> *mut ::std::os::raw::c_ushort; +} +extern "C" { + pub fn lcong48(__param: *mut ::std::os::raw::c_ushort); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct drand48_data { + pub __x: [::std::os::raw::c_ushort; 3usize], + pub __old_x: [::std::os::raw::c_ushort; 3usize], + pub __c: ::std::os::raw::c_ushort, + pub __init: ::std::os::raw::c_ushort, + pub __a: ::std::os::raw::c_ulonglong, +} +#[test] +fn bindgen_test_layout_drand48_data() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(drand48_data)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(drand48_data)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__x as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__old_x as *const _ as usize }, + 6usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__old_x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__c as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__c) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__init as *const _ as usize }, + 14usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__init) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__a as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__a) + ) + ); +} +extern "C" { + pub fn drand48_r(__buffer: *mut drand48_data, __result: *mut f64) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn erand48_r( + __xsubi: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + __result: *mut f64, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn lrand48_r( + __buffer: *mut drand48_data, + __result: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn nrand48_r( + __xsubi: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + __result: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mrand48_r( + __buffer: *mut drand48_data, + __result: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn jrand48_r( + __xsubi: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + __result: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn srand48_r( + __seedval: ::std::os::raw::c_long, + __buffer: *mut drand48_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn seed48_r( + __seed16v: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn lcong48_r( + __param: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn malloc(__size: ::std::os::raw::c_ulong) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn calloc( + __nmemb: ::std::os::raw::c_ulong, + __size: ::std::os::raw::c_ulong, + ) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn realloc( + __ptr: *mut ::std::os::raw::c_void, + __size: ::std::os::raw::c_ulong, + ) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn reallocarray( + __ptr: *mut ::std::os::raw::c_void, + __nmemb: size_t, + __size: size_t, + ) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn free(__ptr: *mut ::std::os::raw::c_void); +} +extern "C" { + pub fn alloca(__size: ::std::os::raw::c_ulong) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn valloc(__size: size_t) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn posix_memalign( + __memptr: *mut *mut ::std::os::raw::c_void, + __alignment: size_t, + __size: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn aligned_alloc(__alignment: size_t, __size: size_t) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn abort(); +} +extern "C" { + pub fn atexit(__func: ::std::option::Option) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn at_quick_exit( + __func: ::std::option::Option, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn on_exit( + __func: ::std::option::Option< + unsafe extern "C" fn( + __status: ::std::os::raw::c_int, + __arg: *mut ::std::os::raw::c_void, + ), + >, + __arg: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn exit(__status: ::std::os::raw::c_int); +} +extern "C" { + pub fn quick_exit(__status: ::std::os::raw::c_int); +} +extern "C" { + pub fn _Exit(__status: ::std::os::raw::c_int); +} +extern "C" { + pub fn getenv(__name: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn putenv(__string: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn setenv( + __name: *const ::std::os::raw::c_char, + __value: *const ::std::os::raw::c_char, + __replace: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn unsetenv(__name: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn clearenv() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mktemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn mkstemp(__template: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mkstemps( + __template: *mut ::std::os::raw::c_char, + __suffixlen: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mkdtemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn system(__command: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn realpath( + __name: *const ::std::os::raw::c_char, + __resolved: *mut ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_char; +} +pub type __compar_fn_t = ::std::option::Option< + unsafe extern "C" fn( + arg1: *const ::std::os::raw::c_void, + arg2: *const ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, +>; +extern "C" { + pub fn bsearch( + __key: *const ::std::os::raw::c_void, + __base: *const ::std::os::raw::c_void, + __nmemb: size_t, + __size: size_t, + __compar: __compar_fn_t, + ) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn qsort( + __base: *mut ::std::os::raw::c_void, + __nmemb: size_t, + __size: size_t, + __compar: __compar_fn_t, + ); +} +extern "C" { + pub fn abs(__x: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn labs(__x: ::std::os::raw::c_long) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn llabs(__x: ::std::os::raw::c_longlong) -> ::std::os::raw::c_longlong; +} +extern "C" { + pub fn div(__numer: ::std::os::raw::c_int, __denom: ::std::os::raw::c_int) -> div_t; +} +extern "C" { + pub fn ldiv(__numer: ::std::os::raw::c_long, __denom: ::std::os::raw::c_long) -> ldiv_t; +} +extern "C" { + pub fn lldiv( + __numer: ::std::os::raw::c_longlong, + __denom: ::std::os::raw::c_longlong, + ) -> lldiv_t; +} +extern "C" { + pub fn ecvt( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn fcvt( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn gcvt( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn qecvt( + __value: u128, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn qfcvt( + __value: u128, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn qgcvt( + __value: u128, + __ndigit: ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn ecvt_r( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + __len: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fcvt_r( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + __len: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn qecvt_r( + __value: u128, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + __len: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn qfcvt_r( + __value: u128, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + __len: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mblen(__s: *const ::std::os::raw::c_char, __n: size_t) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mbtowc( + __pwc: *mut wchar_t, + __s: *const ::std::os::raw::c_char, + __n: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn wctomb(__s: *mut ::std::os::raw::c_char, __wchar: wchar_t) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mbstowcs( + __pwcs: *mut wchar_t, + __s: *const ::std::os::raw::c_char, + __n: size_t, + ) -> size_t; +} +extern "C" { + pub fn wcstombs( + __s: *mut ::std::os::raw::c_char, + __pwcs: *const wchar_t, + __n: size_t, + ) -> size_t; +} +extern "C" { + pub fn rpmatch(__response: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getsubopt( + __optionp: *mut *mut ::std::os::raw::c_char, + __tokens: *const *mut ::std::os::raw::c_char, + __valuep: *mut *mut ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getloadavg(__loadavg: *mut f64, __nelem: ::std::os::raw::c_int) + -> ::std::os::raw::c_int; +} +pub const N_Vector_ID_SUNDIALS_NVEC_SERIAL: N_Vector_ID = 0; +pub const N_Vector_ID_SUNDIALS_NVEC_PARALLEL: N_Vector_ID = 1; +pub const N_Vector_ID_SUNDIALS_NVEC_OPENMP: N_Vector_ID = 2; +pub const N_Vector_ID_SUNDIALS_NVEC_PTHREADS: N_Vector_ID = 3; +pub const N_Vector_ID_SUNDIALS_NVEC_PARHYP: N_Vector_ID = 4; +pub const N_Vector_ID_SUNDIALS_NVEC_PETSC: N_Vector_ID = 5; +pub const N_Vector_ID_SUNDIALS_NVEC_CUDA: N_Vector_ID = 6; +pub const N_Vector_ID_SUNDIALS_NVEC_HIP: N_Vector_ID = 7; +pub const N_Vector_ID_SUNDIALS_NVEC_SYCL: N_Vector_ID = 8; +pub const N_Vector_ID_SUNDIALS_NVEC_RAJA: N_Vector_ID = 9; +pub const N_Vector_ID_SUNDIALS_NVEC_OPENMPDEV: N_Vector_ID = 10; +pub const N_Vector_ID_SUNDIALS_NVEC_TRILINOS: N_Vector_ID = 11; +pub const N_Vector_ID_SUNDIALS_NVEC_MANYVECTOR: N_Vector_ID = 12; +pub const N_Vector_ID_SUNDIALS_NVEC_MPIMANYVECTOR: N_Vector_ID = 13; +pub const N_Vector_ID_SUNDIALS_NVEC_MPIPLUSX: N_Vector_ID = 14; +pub const N_Vector_ID_SUNDIALS_NVEC_CUSTOM: N_Vector_ID = 15; +pub type N_Vector_ID = ::std::os::raw::c_uint; +pub type N_Vector_Ops = *mut _generic_N_Vector_Ops; +pub type N_Vector = *mut _generic_N_Vector; +pub type N_Vector_S = *mut N_Vector; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _generic_N_Vector_Ops { + pub nvgetvectorid: ::std::option::Option N_Vector_ID>, + pub nvclone: ::std::option::Option N_Vector>, + pub nvcloneempty: ::std::option::Option N_Vector>, + pub nvdestroy: ::std::option::Option, + pub nvspace: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: *mut sunindextype, arg3: *mut sunindextype), + >, + pub nvgetarraypointer: + ::std::option::Option *mut realtype>, + pub nvgetdevicearraypointer: + ::std::option::Option *mut realtype>, + pub nvsetarraypointer: + ::std::option::Option, + pub nvgetcommunicator: + ::std::option::Option *mut ::std::os::raw::c_void>, + pub nvgetlength: ::std::option::Option sunindextype>, + pub nvlinearsum: ::std::option::Option< + unsafe extern "C" fn( + arg1: realtype, + arg2: N_Vector, + arg3: realtype, + arg4: N_Vector, + arg5: N_Vector, + ), + >, + pub nvconst: ::std::option::Option, + pub nvprod: + ::std::option::Option, + pub nvdiv: + ::std::option::Option, + pub nvscale: + ::std::option::Option, + pub nvabs: ::std::option::Option, + pub nvinv: ::std::option::Option, + pub nvaddconst: + ::std::option::Option, + pub nvdotprod: + ::std::option::Option realtype>, + pub nvmaxnorm: ::std::option::Option realtype>, + pub nvwrmsnorm: + ::std::option::Option realtype>, + pub nvwrmsnormmask: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: N_Vector, arg3: N_Vector) -> realtype, + >, + pub nvmin: ::std::option::Option realtype>, + pub nvwl2norm: + ::std::option::Option realtype>, + pub nvl1norm: ::std::option::Option realtype>, + pub nvcompare: + ::std::option::Option, + pub nvinvtest: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: N_Vector) -> ::std::os::raw::c_int, + >, + pub nvconstrmask: ::std::option::Option< + unsafe extern "C" fn( + arg1: N_Vector, + arg2: N_Vector, + arg3: N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvminquotient: + ::std::option::Option realtype>, + pub nvlinearcombination: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: *mut realtype, + arg3: *mut N_Vector, + arg4: N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvscaleaddmulti: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: *mut realtype, + arg3: N_Vector, + arg4: *mut N_Vector, + arg5: *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvdotprodmulti: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: N_Vector, + arg3: *mut N_Vector, + arg4: *mut realtype, + ) -> ::std::os::raw::c_int, + >, + pub nvlinearsumvectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: realtype, + arg3: *mut N_Vector, + arg4: realtype, + arg5: *mut N_Vector, + arg6: *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvscalevectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: *mut realtype, + arg3: *mut N_Vector, + arg4: *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvconstvectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: realtype, + arg3: *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvwrmsnormvectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: *mut N_Vector, + arg3: *mut N_Vector, + arg4: *mut realtype, + ) -> ::std::os::raw::c_int, + >, + pub nvwrmsnormmaskvectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: *mut N_Vector, + arg3: *mut N_Vector, + arg4: N_Vector, + arg5: *mut realtype, + ) -> ::std::os::raw::c_int, + >, + pub nvscaleaddmultivectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: ::std::os::raw::c_int, + arg3: *mut realtype, + arg4: *mut N_Vector, + arg5: *mut *mut N_Vector, + arg6: *mut *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvlinearcombinationvectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: ::std::os::raw::c_int, + arg3: *mut realtype, + arg4: *mut *mut N_Vector, + arg5: *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvdotprodlocal: + ::std::option::Option realtype>, + pub nvmaxnormlocal: ::std::option::Option realtype>, + pub nvminlocal: ::std::option::Option realtype>, + pub nvl1normlocal: ::std::option::Option realtype>, + pub nvinvtestlocal: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: N_Vector) -> ::std::os::raw::c_int, + >, + pub nvconstrmasklocal: ::std::option::Option< + unsafe extern "C" fn( + arg1: N_Vector, + arg2: N_Vector, + arg3: N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvminquotientlocal: + ::std::option::Option realtype>, + pub nvwsqrsumlocal: + ::std::option::Option realtype>, + pub nvwsqrsummasklocal: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: N_Vector, arg3: N_Vector) -> realtype, + >, + pub nvbufsize: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: *mut sunindextype) -> ::std::os::raw::c_int, + >, + pub nvbufpack: ::std::option::Option< + unsafe extern "C" fn( + arg1: N_Vector, + arg2: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, + >, + pub nvbufunpack: ::std::option::Option< + unsafe extern "C" fn( + arg1: N_Vector, + arg2: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, + >, + pub nvprint: ::std::option::Option, + pub nvprintfile: ::std::option::Option, +} +#[test] +fn bindgen_test_layout__generic_N_Vector_Ops() { + assert_eq!( + ::std::mem::size_of::<_generic_N_Vector_Ops>(), + 424usize, + concat!("Size of: ", stringify!(_generic_N_Vector_Ops)) + ); + assert_eq!( + ::std::mem::align_of::<_generic_N_Vector_Ops>(), + 8usize, + concat!("Alignment of ", stringify!(_generic_N_Vector_Ops)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvgetvectorid as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvgetvectorid) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvclone as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvclone) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvcloneempty as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvcloneempty) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvdestroy as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvdestroy) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvspace as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvspace) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvgetarraypointer as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvgetarraypointer) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvgetdevicearraypointer as *const _ + as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvgetdevicearraypointer) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvsetarraypointer as *const _ as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvsetarraypointer) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvgetcommunicator as *const _ as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvgetcommunicator) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvgetlength as *const _ as usize + }, + 72usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvgetlength) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvlinearsum as *const _ as usize + }, + 80usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvlinearsum) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvconst as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvconst) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvprod as *const _ as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvprod) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvdiv as *const _ as usize }, + 104usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvdiv) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvscale as *const _ as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvscale) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvabs as *const _ as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvabs) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvinv as *const _ as usize }, + 128usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvinv) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvaddconst as *const _ as usize + }, + 136usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvaddconst) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvdotprod as *const _ as usize }, + 144usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvdotprod) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvmaxnorm as *const _ as usize }, + 152usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvmaxnorm) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwrmsnorm as *const _ as usize + }, + 160usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwrmsnorm) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwrmsnormmask as *const _ as usize + }, + 168usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwrmsnormmask) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvmin as *const _ as usize }, + 176usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvmin) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwl2norm as *const _ as usize }, + 184usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwl2norm) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvl1norm as *const _ as usize }, + 192usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvl1norm) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvcompare as *const _ as usize }, + 200usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvcompare) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvinvtest as *const _ as usize }, + 208usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvinvtest) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvconstrmask as *const _ as usize + }, + 216usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvconstrmask) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvminquotient as *const _ as usize + }, + 224usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvminquotient) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvlinearcombination as *const _ + as usize + }, + 232usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvlinearcombination) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvscaleaddmulti as *const _ as usize + }, + 240usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvscaleaddmulti) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvdotprodmulti as *const _ as usize + }, + 248usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvdotprodmulti) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvlinearsumvectorarray as *const _ + as usize + }, + 256usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvlinearsumvectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvscalevectorarray as *const _ + as usize + }, + 264usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvscalevectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvconstvectorarray as *const _ + as usize + }, + 272usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvconstvectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwrmsnormvectorarray as *const _ + as usize + }, + 280usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwrmsnormvectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwrmsnormmaskvectorarray as *const _ + as usize + }, + 288usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwrmsnormmaskvectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvscaleaddmultivectorarray as *const _ + as usize + }, + 296usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvscaleaddmultivectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvlinearcombinationvectorarray + as *const _ as usize + }, + 304usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvlinearcombinationvectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvdotprodlocal as *const _ as usize + }, + 312usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvdotprodlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvmaxnormlocal as *const _ as usize + }, + 320usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvmaxnormlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvminlocal as *const _ as usize + }, + 328usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvminlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvl1normlocal as *const _ as usize + }, + 336usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvl1normlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvinvtestlocal as *const _ as usize + }, + 344usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvinvtestlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvconstrmasklocal as *const _ as usize + }, + 352usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvconstrmasklocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvminquotientlocal as *const _ + as usize + }, + 360usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvminquotientlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwsqrsumlocal as *const _ as usize + }, + 368usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwsqrsumlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwsqrsummasklocal as *const _ + as usize + }, + 376usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwsqrsummasklocal) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvbufsize as *const _ as usize }, + 384usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvbufsize) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvbufpack as *const _ as usize }, + 392usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvbufpack) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvbufunpack as *const _ as usize + }, + 400usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvbufunpack) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvprint as *const _ as usize }, + 408usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvprint) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvprintfile as *const _ as usize + }, + 416usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvprintfile) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _generic_N_Vector { + pub content: *mut ::std::os::raw::c_void, + pub ops: N_Vector_Ops, +} +#[test] +fn bindgen_test_layout__generic_N_Vector() { + assert_eq!( + ::std::mem::size_of::<_generic_N_Vector>(), + 16usize, + concat!("Size of: ", stringify!(_generic_N_Vector)) + ); + assert_eq!( + ::std::mem::align_of::<_generic_N_Vector>(), + 8usize, + concat!("Alignment of ", stringify!(_generic_N_Vector)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector>())).content as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector), + "::", + stringify!(content) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector>())).ops as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector), + "::", + stringify!(ops) + ) + ); +} +extern "C" { + pub fn N_VNewEmpty() -> N_Vector; +} +extern "C" { + pub fn N_VFreeEmpty(v: N_Vector); +} +extern "C" { + pub fn N_VCopyOps(w: N_Vector, v: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VGetVectorID(w: N_Vector) -> N_Vector_ID; +} +extern "C" { + pub fn N_VClone(w: N_Vector) -> N_Vector; +} +extern "C" { + pub fn N_VCloneEmpty(w: N_Vector) -> N_Vector; +} +extern "C" { + pub fn N_VDestroy(v: N_Vector); +} +extern "C" { + pub fn N_VSpace(v: N_Vector, lrw: *mut sunindextype, liw: *mut sunindextype); +} +extern "C" { + pub fn N_VGetArrayPointer(v: N_Vector) -> *mut realtype; +} +extern "C" { + pub fn N_VGetDeviceArrayPointer(v: N_Vector) -> *mut realtype; +} +extern "C" { + pub fn N_VSetArrayPointer(v_data: *mut realtype, v: N_Vector); +} +extern "C" { + pub fn N_VGetCommunicator(v: N_Vector) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn N_VGetLength(v: N_Vector) -> sunindextype; +} +extern "C" { + pub fn N_VLinearSum(a: realtype, x: N_Vector, b: realtype, y: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VConst(c: realtype, z: N_Vector); +} +extern "C" { + pub fn N_VProd(x: N_Vector, y: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VDiv(x: N_Vector, y: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VScale(c: realtype, x: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VAbs(x: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VInv(x: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VAddConst(x: N_Vector, b: realtype, z: N_Vector); +} +extern "C" { + pub fn N_VDotProd(x: N_Vector, y: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VMaxNorm(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWrmsNorm(x: N_Vector, w: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWrmsNormMask(x: N_Vector, w: N_Vector, id: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VMin(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWL2Norm(x: N_Vector, w: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VL1Norm(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VCompare(c: realtype, x: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VInvTest(x: N_Vector, z: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VConstrMask(c: N_Vector, x: N_Vector, m: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VMinQuotient(num: N_Vector, denom: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VLinearCombination( + nvec: ::std::os::raw::c_int, + c: *mut realtype, + X: *mut N_Vector, + z: N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VScaleAddMulti( + nvec: ::std::os::raw::c_int, + a: *mut realtype, + x: N_Vector, + Y: *mut N_Vector, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VDotProdMulti( + nvec: ::std::os::raw::c_int, + x: N_Vector, + Y: *mut N_Vector, + dotprods: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VLinearSumVectorArray( + nvec: ::std::os::raw::c_int, + a: realtype, + X: *mut N_Vector, + b: realtype, + Y: *mut N_Vector, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VScaleVectorArray( + nvec: ::std::os::raw::c_int, + c: *mut realtype, + X: *mut N_Vector, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VConstVectorArray( + nvec: ::std::os::raw::c_int, + c: realtype, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VWrmsNormVectorArray( + nvec: ::std::os::raw::c_int, + X: *mut N_Vector, + W: *mut N_Vector, + nrm: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VWrmsNormMaskVectorArray( + nvec: ::std::os::raw::c_int, + X: *mut N_Vector, + W: *mut N_Vector, + id: N_Vector, + nrm: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VScaleAddMultiVectorArray( + nvec: ::std::os::raw::c_int, + nsum: ::std::os::raw::c_int, + a: *mut realtype, + X: *mut N_Vector, + Y: *mut *mut N_Vector, + Z: *mut *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VLinearCombinationVectorArray( + nvec: ::std::os::raw::c_int, + nsum: ::std::os::raw::c_int, + c: *mut realtype, + X: *mut *mut N_Vector, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VDotProdLocal(x: N_Vector, y: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VMaxNormLocal(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VMinLocal(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VL1NormLocal(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWSqrSumLocal(x: N_Vector, w: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWSqrSumMaskLocal(x: N_Vector, w: N_Vector, id: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VInvTestLocal(x: N_Vector, z: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VConstrMaskLocal(c: N_Vector, x: N_Vector, m: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VMinQuotientLocal(num: N_Vector, denom: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VBufSize(x: N_Vector, size: *mut sunindextype) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VBufPack(x: N_Vector, buf: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VBufUnpack(x: N_Vector, buf: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VNewVectorArray(count: ::std::os::raw::c_int) -> *mut N_Vector; +} +extern "C" { + pub fn N_VCloneEmptyVectorArray(count: ::std::os::raw::c_int, w: N_Vector) -> *mut N_Vector; +} +extern "C" { + pub fn N_VCloneVectorArray(count: ::std::os::raw::c_int, w: N_Vector) -> *mut N_Vector; +} +extern "C" { + pub fn N_VDestroyVectorArray(vs: *mut N_Vector, count: ::std::os::raw::c_int); +} +extern "C" { + pub fn N_VGetVecAtIndexVectorArray(vs: *mut N_Vector, index: ::std::os::raw::c_int) + -> N_Vector; +} +extern "C" { + pub fn N_VSetVecAtIndexVectorArray( + vs: *mut N_Vector, + index: ::std::os::raw::c_int, + w: N_Vector, + ); +} +extern "C" { + pub fn N_VPrint(v: N_Vector); +} +extern "C" { + pub fn N_VPrintFile(v: N_Vector, outfile: *mut FILE); +} +pub const PREC_NONE: ::std::os::raw::c_uint = 0; +pub const PREC_LEFT: ::std::os::raw::c_uint = 1; +pub const PREC_RIGHT: ::std::os::raw::c_uint = 2; +pub const PREC_BOTH: ::std::os::raw::c_uint = 3; +pub type _bindgen_ty_1 = ::std::os::raw::c_uint; +pub const MODIFIED_GS: ::std::os::raw::c_uint = 1; +pub const CLASSICAL_GS: ::std::os::raw::c_uint = 2; +pub type _bindgen_ty_2 = ::std::os::raw::c_uint; +pub type ATimesFn = ::std::option::Option< + unsafe extern "C" fn( + A_data: *mut ::std::os::raw::c_void, + v: N_Vector, + z: N_Vector, + ) -> ::std::os::raw::c_int, +>; +pub type PSetupFn = ::std::option::Option< + unsafe extern "C" fn(P_data: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int, +>; +pub type PSolveFn = ::std::option::Option< + unsafe extern "C" fn( + P_data: *mut ::std::os::raw::c_void, + r: N_Vector, + z: N_Vector, + tol: realtype, + lr: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int, +>; +extern "C" { + pub fn ModifiedGS( + v: *mut N_Vector, + h: *mut *mut realtype, + k: ::std::os::raw::c_int, + p: ::std::os::raw::c_int, + new_vk_norm: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ClassicalGS( + v: *mut N_Vector, + h: *mut *mut realtype, + k: ::std::os::raw::c_int, + p: ::std::os::raw::c_int, + new_vk_norm: *mut realtype, + stemp: *mut realtype, + vtemp: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn QRfact( + n: ::std::os::raw::c_int, + h: *mut *mut realtype, + q: *mut realtype, + job: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn QRsol( + n: ::std::os::raw::c_int, + h: *mut *mut realtype, + q: *mut realtype, + b: *mut realtype, + ) -> ::std::os::raw::c_int; +} +pub const SUNMatrix_ID_SUNMATRIX_DENSE: SUNMatrix_ID = 0; +pub const SUNMatrix_ID_SUNMATRIX_MAGMADENSE: SUNMatrix_ID = 1; +pub const SUNMatrix_ID_SUNMATRIX_BAND: SUNMatrix_ID = 2; +pub const SUNMatrix_ID_SUNMATRIX_SPARSE: SUNMatrix_ID = 3; +pub const SUNMatrix_ID_SUNMATRIX_SLUNRLOC: SUNMatrix_ID = 4; +pub const SUNMatrix_ID_SUNMATRIX_CUSPARSE: SUNMatrix_ID = 5; +pub const SUNMatrix_ID_SUNMATRIX_CUSTOM: SUNMatrix_ID = 6; +pub type SUNMatrix_ID = ::std::os::raw::c_uint; +pub type SUNMatrix_Ops = *mut _generic_SUNMatrix_Ops; +pub type SUNMatrix = *mut _generic_SUNMatrix; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _generic_SUNMatrix_Ops { + pub getid: ::std::option::Option SUNMatrix_ID>, + pub clone: ::std::option::Option SUNMatrix>, + pub destroy: ::std::option::Option, + pub zero: ::std::option::Option ::std::os::raw::c_int>, + pub copy: ::std::option::Option< + unsafe extern "C" fn(arg1: SUNMatrix, arg2: SUNMatrix) -> ::std::os::raw::c_int, + >, + pub scaleadd: ::std::option::Option< + unsafe extern "C" fn( + arg1: realtype, + arg2: SUNMatrix, + arg3: SUNMatrix, + ) -> ::std::os::raw::c_int, + >, + pub scaleaddi: ::std::option::Option< + unsafe extern "C" fn(arg1: realtype, arg2: SUNMatrix) -> ::std::os::raw::c_int, + >, + pub matvecsetup: + ::std::option::Option ::std::os::raw::c_int>, + pub matvec: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNMatrix, + arg2: N_Vector, + arg3: N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub space: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNMatrix, + arg2: *mut ::std::os::raw::c_long, + arg3: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int, + >, +} +#[test] +fn bindgen_test_layout__generic_SUNMatrix_Ops() { + assert_eq!( + ::std::mem::size_of::<_generic_SUNMatrix_Ops>(), + 80usize, + concat!("Size of: ", stringify!(_generic_SUNMatrix_Ops)) + ); + assert_eq!( + ::std::mem::align_of::<_generic_SUNMatrix_Ops>(), + 8usize, + concat!("Alignment of ", stringify!(_generic_SUNMatrix_Ops)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).getid as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(getid) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).clone as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(clone) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).destroy as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(destroy) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).zero as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(zero) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).copy as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(copy) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).scaleadd as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(scaleadd) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).scaleaddi as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(scaleaddi) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).matvecsetup as *const _ as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(matvecsetup) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).matvec as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(matvec) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).space as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(space) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _generic_SUNMatrix { + pub content: *mut ::std::os::raw::c_void, + pub ops: SUNMatrix_Ops, +} +#[test] +fn bindgen_test_layout__generic_SUNMatrix() { + assert_eq!( + ::std::mem::size_of::<_generic_SUNMatrix>(), + 16usize, + concat!("Size of: ", stringify!(_generic_SUNMatrix)) + ); + assert_eq!( + ::std::mem::align_of::<_generic_SUNMatrix>(), + 8usize, + concat!("Alignment of ", stringify!(_generic_SUNMatrix)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix>())).content as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix), + "::", + stringify!(content) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix>())).ops as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix), + "::", + stringify!(ops) + ) + ); +} +extern "C" { + pub fn SUNMatNewEmpty() -> SUNMatrix; +} +extern "C" { + pub fn SUNMatFreeEmpty(A: SUNMatrix); +} +extern "C" { + pub fn SUNMatCopyOps(A: SUNMatrix, B: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatGetID(A: SUNMatrix) -> SUNMatrix_ID; +} +extern "C" { + pub fn SUNMatClone(A: SUNMatrix) -> SUNMatrix; +} +extern "C" { + pub fn SUNMatDestroy(A: SUNMatrix); +} +extern "C" { + pub fn SUNMatZero(A: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatCopy(A: SUNMatrix, B: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatScaleAdd(c: realtype, A: SUNMatrix, B: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatScaleAddI(c: realtype, A: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatMatvecSetup(A: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatMatvec(A: SUNMatrix, x: N_Vector, y: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatSpace( + A: SUNMatrix, + lenrw: *mut ::std::os::raw::c_long, + leniw: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +pub const SUNLinearSolver_Type_SUNLINEARSOLVER_DIRECT: SUNLinearSolver_Type = 0; +pub const SUNLinearSolver_Type_SUNLINEARSOLVER_ITERATIVE: SUNLinearSolver_Type = 1; +pub const SUNLinearSolver_Type_SUNLINEARSOLVER_MATRIX_ITERATIVE: SUNLinearSolver_Type = 2; +pub type SUNLinearSolver_Type = ::std::os::raw::c_uint; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_BAND: SUNLinearSolver_ID = 0; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_DENSE: SUNLinearSolver_ID = 1; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_KLU: SUNLinearSolver_ID = 2; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_LAPACKBAND: SUNLinearSolver_ID = 3; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_LAPACKDENSE: SUNLinearSolver_ID = 4; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_PCG: SUNLinearSolver_ID = 5; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_SPBCGS: SUNLinearSolver_ID = 6; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_SPFGMR: SUNLinearSolver_ID = 7; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_SPGMR: SUNLinearSolver_ID = 8; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_SPTFQMR: SUNLinearSolver_ID = 9; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_SUPERLUDIST: SUNLinearSolver_ID = 10; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_SUPERLUMT: SUNLinearSolver_ID = 11; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_CUSOLVERSP_BATCHQR: SUNLinearSolver_ID = 12; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_MAGMADENSE: SUNLinearSolver_ID = 13; +pub const SUNLinearSolver_ID_SUNLINEARSOLVER_CUSTOM: SUNLinearSolver_ID = 14; +pub type SUNLinearSolver_ID = ::std::os::raw::c_uint; +pub type SUNLinearSolver_Ops = *mut _generic_SUNLinearSolver_Ops; +pub type SUNLinearSolver = *mut _generic_SUNLinearSolver; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _generic_SUNLinearSolver_Ops { + pub gettype: + ::std::option::Option SUNLinearSolver_Type>, + pub getid: + ::std::option::Option SUNLinearSolver_ID>, + pub setatimes: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNLinearSolver, + arg2: *mut ::std::os::raw::c_void, + arg3: ATimesFn, + ) -> ::std::os::raw::c_int, + >, + pub setpreconditioner: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNLinearSolver, + arg2: *mut ::std::os::raw::c_void, + arg3: PSetupFn, + arg4: PSolveFn, + ) -> ::std::os::raw::c_int, + >, + pub setscalingvectors: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNLinearSolver, + arg2: N_Vector, + arg3: N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub initialize: + ::std::option::Option ::std::os::raw::c_int>, + pub setup: ::std::option::Option< + unsafe extern "C" fn(arg1: SUNLinearSolver, arg2: SUNMatrix) -> ::std::os::raw::c_int, + >, + pub solve: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNLinearSolver, + arg2: SUNMatrix, + arg3: N_Vector, + arg4: N_Vector, + arg5: realtype, + ) -> ::std::os::raw::c_int, + >, + pub numiters: + ::std::option::Option ::std::os::raw::c_int>, + pub resnorm: ::std::option::Option realtype>, + pub lastflag: + ::std::option::Option sunindextype>, + pub space: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNLinearSolver, + arg2: *mut ::std::os::raw::c_long, + arg3: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int, + >, + pub resid: ::std::option::Option N_Vector>, + pub free: + ::std::option::Option ::std::os::raw::c_int>, +} +#[test] +fn bindgen_test_layout__generic_SUNLinearSolver_Ops() { + assert_eq!( + ::std::mem::size_of::<_generic_SUNLinearSolver_Ops>(), + 112usize, + concat!("Size of: ", stringify!(_generic_SUNLinearSolver_Ops)) + ); + assert_eq!( + ::std::mem::align_of::<_generic_SUNLinearSolver_Ops>(), + 8usize, + concat!("Alignment of ", stringify!(_generic_SUNLinearSolver_Ops)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).gettype as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(gettype) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).getid as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(getid) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).setatimes as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(setatimes) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).setpreconditioner as *const _ + as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(setpreconditioner) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).setscalingvectors as *const _ + as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(setscalingvectors) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).initialize as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(initialize) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).setup as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(setup) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).solve as *const _ as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(solve) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).numiters as *const _ as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(numiters) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).resnorm as *const _ as usize + }, + 72usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(resnorm) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).lastflag as *const _ as usize + }, + 80usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(lastflag) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).space as *const _ as usize + }, + 88usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(space) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).resid as *const _ as usize + }, + 96usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(resid) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver_Ops>())).free as *const _ as usize + }, + 104usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver_Ops), + "::", + stringify!(free) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _generic_SUNLinearSolver { + pub content: *mut ::std::os::raw::c_void, + pub ops: SUNLinearSolver_Ops, +} +#[test] +fn bindgen_test_layout__generic_SUNLinearSolver() { + assert_eq!( + ::std::mem::size_of::<_generic_SUNLinearSolver>(), + 16usize, + concat!("Size of: ", stringify!(_generic_SUNLinearSolver)) + ); + assert_eq!( + ::std::mem::align_of::<_generic_SUNLinearSolver>(), + 8usize, + concat!("Alignment of ", stringify!(_generic_SUNLinearSolver)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNLinearSolver>())).content as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver), + "::", + stringify!(content) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNLinearSolver>())).ops as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNLinearSolver), + "::", + stringify!(ops) + ) + ); +} +extern "C" { + pub fn SUNLinSolNewEmpty() -> SUNLinearSolver; +} +extern "C" { + pub fn SUNLinSolFreeEmpty(S: SUNLinearSolver); +} +extern "C" { + pub fn SUNLinSolGetType(S: SUNLinearSolver) -> SUNLinearSolver_Type; +} +extern "C" { + pub fn SUNLinSolGetID(S: SUNLinearSolver) -> SUNLinearSolver_ID; +} +extern "C" { + pub fn SUNLinSolSetATimes( + S: SUNLinearSolver, + A_data: *mut ::std::os::raw::c_void, + ATimes: ATimesFn, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNLinSolSetPreconditioner( + S: SUNLinearSolver, + P_data: *mut ::std::os::raw::c_void, + Pset: PSetupFn, + Psol: PSolveFn, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNLinSolSetScalingVectors( + S: SUNLinearSolver, + s1: N_Vector, + s2: N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNLinSolInitialize(S: SUNLinearSolver) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNLinSolSetup(S: SUNLinearSolver, A: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNLinSolSolve( + S: SUNLinearSolver, + A: SUNMatrix, + x: N_Vector, + b: N_Vector, + tol: realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNLinSolNumIters(S: SUNLinearSolver) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNLinSolResNorm(S: SUNLinearSolver) -> realtype; +} +extern "C" { + pub fn SUNLinSolResid(S: SUNLinearSolver) -> N_Vector; +} +extern "C" { + pub fn SUNLinSolLastFlag(S: SUNLinearSolver) -> sunindextype; +} +extern "C" { + pub fn SUNLinSolSpace( + S: SUNLinearSolver, + lenrwLS: *mut ::std::os::raw::c_long, + leniwLS: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNLinSolFree(S: SUNLinearSolver) -> ::std::os::raw::c_int; +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _DlsMat { + pub type_: ::std::os::raw::c_int, + pub M: sunindextype, + pub N: sunindextype, + pub ldim: sunindextype, + pub mu: sunindextype, + pub ml: sunindextype, + pub s_mu: sunindextype, + pub data: *mut realtype, + pub ldata: sunindextype, + pub cols: *mut *mut realtype, +} +#[test] +fn bindgen_test_layout__DlsMat() { + assert_eq!( + ::std::mem::size_of::<_DlsMat>(), + 80usize, + concat!("Size of: ", stringify!(_DlsMat)) + ); + assert_eq!( + ::std::mem::align_of::<_DlsMat>(), + 8usize, + concat!("Alignment of ", stringify!(_DlsMat)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_DlsMat>())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_DlsMat), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_DlsMat>())).M as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_DlsMat), + "::", + stringify!(M) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_DlsMat>())).N as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_DlsMat), + "::", + stringify!(N) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_DlsMat>())).ldim as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_DlsMat), + "::", + stringify!(ldim) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_DlsMat>())).mu as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(_DlsMat), + "::", + stringify!(mu) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_DlsMat>())).ml as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(_DlsMat), + "::", + stringify!(ml) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_DlsMat>())).s_mu as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(_DlsMat), + "::", + stringify!(s_mu) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_DlsMat>())).data as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(_DlsMat), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_DlsMat>())).ldata as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(_DlsMat), + "::", + stringify!(ldata) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_DlsMat>())).cols as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(_DlsMat), + "::", + stringify!(cols) + ) + ); +} +pub type DlsMat = *mut _DlsMat; +extern "C" { + pub fn NewDenseMat(M: sunindextype, N: sunindextype) -> DlsMat; +} +extern "C" { + pub fn NewBandMat( + N: sunindextype, + mu: sunindextype, + ml: sunindextype, + smu: sunindextype, + ) -> DlsMat; +} +extern "C" { + pub fn DestroyMat(A: DlsMat); +} +extern "C" { + pub fn NewIntArray(N: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_int; +} +extern "C" { + pub fn NewIndexArray(N: sunindextype) -> *mut sunindextype; +} +extern "C" { + pub fn NewRealArray(N: sunindextype) -> *mut realtype; +} +extern "C" { + pub fn DestroyArray(p: *mut ::std::os::raw::c_void); +} +extern "C" { + pub fn AddIdentity(A: DlsMat); +} +extern "C" { + pub fn SetToZero(A: DlsMat); +} +extern "C" { + pub fn PrintMat(A: DlsMat, outfile: *mut FILE); +} +extern "C" { + pub fn newDenseMat(m: sunindextype, n: sunindextype) -> *mut *mut realtype; +} +extern "C" { + pub fn newBandMat(n: sunindextype, smu: sunindextype, ml: sunindextype) -> *mut *mut realtype; +} +extern "C" { + pub fn destroyMat(a: *mut *mut realtype); +} +extern "C" { + pub fn newIntArray(n: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_int; +} +extern "C" { + pub fn newIndexArray(n: sunindextype) -> *mut sunindextype; +} +extern "C" { + pub fn newRealArray(m: sunindextype) -> *mut realtype; +} +extern "C" { + pub fn destroyArray(v: *mut ::std::os::raw::c_void); +} +extern "C" { + pub fn DenseGETRF(A: DlsMat, p: *mut sunindextype) -> sunindextype; +} +extern "C" { + pub fn DenseGETRS(A: DlsMat, p: *mut sunindextype, b: *mut realtype); +} +extern "C" { + pub fn denseGETRF( + a: *mut *mut realtype, + m: sunindextype, + n: sunindextype, + p: *mut sunindextype, + ) -> sunindextype; +} +extern "C" { + pub fn denseGETRS( + a: *mut *mut realtype, + n: sunindextype, + p: *mut sunindextype, + b: *mut realtype, + ); +} +extern "C" { + pub fn DensePOTRF(A: DlsMat) -> sunindextype; +} +extern "C" { + pub fn DensePOTRS(A: DlsMat, b: *mut realtype); +} +extern "C" { + pub fn densePOTRF(a: *mut *mut realtype, m: sunindextype) -> sunindextype; +} +extern "C" { + pub fn densePOTRS(a: *mut *mut realtype, m: sunindextype, b: *mut realtype); +} +extern "C" { + pub fn DenseGEQRF(A: DlsMat, beta: *mut realtype, wrk: *mut realtype) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn DenseORMQR( + A: DlsMat, + beta: *mut realtype, + vn: *mut realtype, + vm: *mut realtype, + wrk: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn denseGEQRF( + a: *mut *mut realtype, + m: sunindextype, + n: sunindextype, + beta: *mut realtype, + wrk: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn denseORMQR( + a: *mut *mut realtype, + m: sunindextype, + n: sunindextype, + beta: *mut realtype, + v: *mut realtype, + w: *mut realtype, + wrk: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn DenseCopy(A: DlsMat, B: DlsMat); +} +extern "C" { + pub fn denseCopy( + a: *mut *mut realtype, + b: *mut *mut realtype, + m: sunindextype, + n: sunindextype, + ); +} +extern "C" { + pub fn DenseScale(c: realtype, A: DlsMat); +} +extern "C" { + pub fn denseScale(c: realtype, a: *mut *mut realtype, m: sunindextype, n: sunindextype); +} +extern "C" { + pub fn denseAddIdentity(a: *mut *mut realtype, n: sunindextype); +} +extern "C" { + pub fn DenseMatvec(A: DlsMat, x: *mut realtype, y: *mut realtype); +} +extern "C" { + pub fn denseMatvec( + a: *mut *mut realtype, + x: *mut realtype, + y: *mut realtype, + m: sunindextype, + n: sunindextype, + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _SUNMatrixContent_Dense { + pub M: sunindextype, + pub N: sunindextype, + pub data: *mut realtype, + pub ldata: sunindextype, + pub cols: *mut *mut realtype, +} +#[test] +fn bindgen_test_layout__SUNMatrixContent_Dense() { + assert_eq!( + ::std::mem::size_of::<_SUNMatrixContent_Dense>(), + 40usize, + concat!("Size of: ", stringify!(_SUNMatrixContent_Dense)) + ); + assert_eq!( + ::std::mem::align_of::<_SUNMatrixContent_Dense>(), + 8usize, + concat!("Alignment of ", stringify!(_SUNMatrixContent_Dense)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_SUNMatrixContent_Dense>())).M as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_SUNMatrixContent_Dense), + "::", + stringify!(M) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_SUNMatrixContent_Dense>())).N as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_SUNMatrixContent_Dense), + "::", + stringify!(N) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_SUNMatrixContent_Dense>())).data as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_SUNMatrixContent_Dense), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_SUNMatrixContent_Dense>())).ldata as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_SUNMatrixContent_Dense), + "::", + stringify!(ldata) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_SUNMatrixContent_Dense>())).cols as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(_SUNMatrixContent_Dense), + "::", + stringify!(cols) + ) + ); +} +pub type SUNMatrixContent_Dense = *mut _SUNMatrixContent_Dense; +extern "C" { + pub fn SUNDenseMatrix(M: sunindextype, N: sunindextype) -> SUNMatrix; +} +extern "C" { + pub fn SUNDenseMatrix_Print(A: SUNMatrix, outfile: *mut FILE); +} +extern "C" { + pub fn SUNDenseMatrix_Rows(A: SUNMatrix) -> sunindextype; +} +extern "C" { + pub fn SUNDenseMatrix_Columns(A: SUNMatrix) -> sunindextype; +} +extern "C" { + pub fn SUNDenseMatrix_LData(A: SUNMatrix) -> sunindextype; +} +extern "C" { + pub fn SUNDenseMatrix_Data(A: SUNMatrix) -> *mut realtype; +} +extern "C" { + pub fn SUNDenseMatrix_Cols(A: SUNMatrix) -> *mut *mut realtype; +} +extern "C" { + pub fn SUNDenseMatrix_Column(A: SUNMatrix, j: sunindextype) -> *mut realtype; +} +extern "C" { + pub fn SUNMatGetID_Dense(A: SUNMatrix) -> SUNMatrix_ID; +} +extern "C" { + pub fn SUNMatClone_Dense(A: SUNMatrix) -> SUNMatrix; +} +extern "C" { + pub fn SUNMatDestroy_Dense(A: SUNMatrix); +} +extern "C" { + pub fn SUNMatZero_Dense(A: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatCopy_Dense(A: SUNMatrix, B: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatScaleAdd_Dense(c: realtype, A: SUNMatrix, B: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatScaleAddI_Dense(c: realtype, A: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatMatvec_Dense(A: SUNMatrix, x: N_Vector, y: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatSpace_Dense( + A: SUNMatrix, + lenrw: *mut ::std::os::raw::c_long, + leniw: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _SUNLinearSolverContent_Dense { + pub N: sunindextype, + pub pivots: *mut sunindextype, + pub last_flag: sunindextype, +} +#[test] +fn bindgen_test_layout__SUNLinearSolverContent_Dense() { + assert_eq!( + ::std::mem::size_of::<_SUNLinearSolverContent_Dense>(), + 24usize, + concat!("Size of: ", stringify!(_SUNLinearSolverContent_Dense)) + ); + assert_eq!( + ::std::mem::align_of::<_SUNLinearSolverContent_Dense>(), + 8usize, + concat!("Alignment of ", stringify!(_SUNLinearSolverContent_Dense)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_SUNLinearSolverContent_Dense>())).N as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_SUNLinearSolverContent_Dense), + "::", + stringify!(N) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_SUNLinearSolverContent_Dense>())).pivots as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_SUNLinearSolverContent_Dense), + "::", + stringify!(pivots) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_SUNLinearSolverContent_Dense>())).last_flag as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_SUNLinearSolverContent_Dense), + "::", + stringify!(last_flag) + ) + ); +} +pub type SUNLinearSolverContent_Dense = *mut _SUNLinearSolverContent_Dense; +extern "C" { + pub fn SUNLinSol_Dense(y: N_Vector, A: SUNMatrix) -> SUNLinearSolver; +} +extern "C" { + pub fn SUNDenseLinearSolver(y: N_Vector, A: SUNMatrix) -> SUNLinearSolver; +} +extern "C" { + pub fn SUNLinSolGetType_Dense(S: SUNLinearSolver) -> SUNLinearSolver_Type; +} +extern "C" { + pub fn SUNLinSolGetID_Dense(S: SUNLinearSolver) -> SUNLinearSolver_ID; +} +extern "C" { + pub fn SUNLinSolInitialize_Dense(S: SUNLinearSolver) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNLinSolSetup_Dense(S: SUNLinearSolver, A: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNLinSolSolve_Dense( + S: SUNLinearSolver, + A: SUNMatrix, + x: N_Vector, + b: N_Vector, + tol: realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNLinSolLastFlag_Dense(S: SUNLinearSolver) -> sunindextype; +} +extern "C" { + pub fn SUNLinSolSpace_Dense( + S: SUNLinearSolver, + lenrwLS: *mut ::std::os::raw::c_long, + leniwLS: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNLinSolFree_Dense(S: SUNLinearSolver) -> ::std::os::raw::c_int; +} +pub type __builtin_va_list = [__va_list_tag; 1usize]; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __va_list_tag { + pub gp_offset: ::std::os::raw::c_uint, + pub fp_offset: ::std::os::raw::c_uint, + pub overflow_arg_area: *mut ::std::os::raw::c_void, + pub reg_save_area: *mut ::std::os::raw::c_void, +} +#[test] +fn bindgen_test_layout___va_list_tag() { + assert_eq!( + ::std::mem::size_of::<__va_list_tag>(), + 24usize, + concat!("Size of: ", stringify!(__va_list_tag)) + ); + assert_eq!( + ::std::mem::align_of::<__va_list_tag>(), + 8usize, + concat!("Alignment of ", stringify!(__va_list_tag)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__va_list_tag>())).gp_offset as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__va_list_tag), + "::", + stringify!(gp_offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__va_list_tag>())).fp_offset as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__va_list_tag), + "::", + stringify!(fp_offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__va_list_tag>())).overflow_arg_area as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(__va_list_tag), + "::", + stringify!(overflow_arg_area) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__va_list_tag>())).reg_save_area as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(__va_list_tag), + "::", + stringify!(reg_save_area) + ) + ); +} diff --git a/cvode-5-sys/src/sunmatrix_dense.rs b/cvode-5-sys/src/sunmatrix_dense.rs new file mode 100644 index 0000000..d140d1d --- /dev/null +++ b/cvode-5-sys/src/sunmatrix_dense.rs @@ -0,0 +1,4914 @@ +/* automatically generated by rust-bindgen 0.55.1 */ + +pub const _STDIO_H: u32 = 1; +pub const _FEATURES_H: u32 = 1; +pub const _DEFAULT_SOURCE: u32 = 1; +pub const __GLIBC_USE_ISOC2X: u32 = 0; +pub const __USE_ISOC11: u32 = 1; +pub const __USE_ISOC99: u32 = 1; +pub const __USE_ISOC95: u32 = 1; +pub const __USE_POSIX_IMPLICITLY: u32 = 1; +pub const _POSIX_SOURCE: u32 = 1; +pub const _POSIX_C_SOURCE: u32 = 200809; +pub const __USE_POSIX: u32 = 1; +pub const __USE_POSIX2: u32 = 1; +pub const __USE_POSIX199309: u32 = 1; +pub const __USE_POSIX199506: u32 = 1; +pub const __USE_XOPEN2K: u32 = 1; +pub const __USE_XOPEN2K8: u32 = 1; +pub const _ATFILE_SOURCE: u32 = 1; +pub const __USE_MISC: u32 = 1; +pub const __USE_ATFILE: u32 = 1; +pub const __USE_FORTIFY_LEVEL: u32 = 0; +pub const __GLIBC_USE_DEPRECATED_GETS: u32 = 0; +pub const __GLIBC_USE_DEPRECATED_SCANF: u32 = 0; +pub const _STDC_PREDEF_H: u32 = 1; +pub const __STDC_IEC_559__: u32 = 1; +pub const __STDC_IEC_559_COMPLEX__: u32 = 1; +pub const __STDC_ISO_10646__: u32 = 201706; +pub const __GNU_LIBRARY__: u32 = 6; +pub const __GLIBC__: u32 = 2; +pub const __GLIBC_MINOR__: u32 = 33; +pub const _SYS_CDEFS_H: u32 = 1; +pub const __glibc_c99_flexarr_available: u32 = 1; +pub const __WORDSIZE: u32 = 64; +pub const __WORDSIZE_TIME64_COMPAT32: u32 = 1; +pub const __SYSCALL_WORDSIZE: u32 = 64; +pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI: u32 = 0; +pub const __HAVE_GENERIC_SELECTION: u32 = 1; +pub const __GLIBC_USE_LIB_EXT2: u32 = 0; +pub const __GLIBC_USE_IEC_60559_BFP_EXT: u32 = 0; +pub const __GLIBC_USE_IEC_60559_BFP_EXT_C2X: u32 = 0; +pub const __GLIBC_USE_IEC_60559_FUNCS_EXT: u32 = 0; +pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X: u32 = 0; +pub const __GLIBC_USE_IEC_60559_TYPES_EXT: u32 = 0; +pub const __GNUC_VA_LIST: u32 = 1; +pub const _BITS_TYPES_H: u32 = 1; +pub const __TIMESIZE: u32 = 64; +pub const _BITS_TYPESIZES_H: u32 = 1; +pub const __OFF_T_MATCHES_OFF64_T: u32 = 1; +pub const __INO_T_MATCHES_INO64_T: u32 = 1; +pub const __RLIM_T_MATCHES_RLIM64_T: u32 = 1; +pub const __STATFS_MATCHES_STATFS64: u32 = 1; +pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64: u32 = 1; +pub const __FD_SETSIZE: u32 = 1024; +pub const _BITS_TIME64_H: u32 = 1; +pub const _____fpos_t_defined: u32 = 1; +pub const ____mbstate_t_defined: u32 = 1; +pub const _____fpos64_t_defined: u32 = 1; +pub const ____FILE_defined: u32 = 1; +pub const __FILE_defined: u32 = 1; +pub const __struct_FILE_defined: u32 = 1; +pub const _IO_EOF_SEEN: u32 = 16; +pub const _IO_ERR_SEEN: u32 = 32; +pub const _IO_USER_LOCK: u32 = 32768; +pub const _IOFBF: u32 = 0; +pub const _IOLBF: u32 = 1; +pub const _IONBF: u32 = 2; +pub const BUFSIZ: u32 = 8192; +pub const EOF: i32 = -1; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const P_tmpdir: &'static [u8; 5usize] = b"/tmp\0"; +pub const _BITS_STDIO_LIM_H: u32 = 1; +pub const L_tmpnam: u32 = 20; +pub const TMP_MAX: u32 = 238328; +pub const FILENAME_MAX: u32 = 4096; +pub const L_ctermid: u32 = 9; +pub const FOPEN_MAX: u32 = 16; +pub const __HAVE_FLOAT128: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT128: u32 = 0; +pub const __HAVE_FLOAT64X: u32 = 1; +pub const __HAVE_FLOAT64X_LONG_DOUBLE: u32 = 1; +pub const __HAVE_FLOAT16: u32 = 0; +pub const __HAVE_FLOAT32: u32 = 1; +pub const __HAVE_FLOAT64: u32 = 1; +pub const __HAVE_FLOAT32X: u32 = 1; +pub const __HAVE_FLOAT128X: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT16: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT32: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT64: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT32X: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT64X: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT128X: u32 = 0; +pub const __HAVE_FLOATN_NOT_TYPEDEF: u32 = 0; +pub const SUNDIALS_VERSION: &'static [u8; 6usize] = b"5.7.0\0"; +pub const SUNDIALS_VERSION_MAJOR: u32 = 5; +pub const SUNDIALS_VERSION_MINOR: u32 = 7; +pub const SUNDIALS_VERSION_PATCH: u32 = 0; +pub const SUNDIALS_VERSION_LABEL: &'static [u8; 1usize] = b"\0"; +pub const SUNDIALS_DOUBLE_PRECISION: u32 = 1; +pub const SUNDIALS_INT64_T: u32 = 1; +pub const SUNDIALS_MPI_ENABLED: u32 = 1; +pub const SUNDIALS_ARKODE: u32 = 1; +pub const SUNDIALS_CVODE: u32 = 1; +pub const SUNDIALS_CVODES: u32 = 1; +pub const SUNDIALS_IDA: u32 = 1; +pub const SUNDIALS_IDAS: u32 = 1; +pub const SUNDIALS_KINSOL: u32 = 1; +pub const SUNDIALS_NVECTOR_SERIAL: u32 = 1; +pub const SUNDIALS_NVECTOR_MANYVECTOR: u32 = 1; +pub const SUNDIALS_NVECTOR_MPIMANYVECTOR: u32 = 1; +pub const SUNDIALS_NVECTOR_MPIPLUSX: u32 = 1; +pub const SUNDIALS_NVECTOR_PARALLEL: u32 = 1; +pub const SUNDIALS_NVECTOR_OPENMP: u32 = 1; +pub const SUNDIALS_NVECTOR_PTHREADS: u32 = 1; +pub const SUNDIALS_SUNMATRIX_BAND: u32 = 1; +pub const SUNDIALS_SUNMATRIX_DENSE: u32 = 1; +pub const SUNDIALS_SUNMATRIX_SPARSE: u32 = 1; +pub const SUNDIALS_SUNLINSOL_BAND: u32 = 1; +pub const SUNDIALS_SUNLINSOL_DENSE: u32 = 1; +pub const SUNDIALS_SUNLINSOL_PCG: u32 = 1; +pub const SUNDIALS_SUNLINSOL_SPBCGS: u32 = 1; +pub const SUNDIALS_SUNLINSOL_SPFGMR: u32 = 1; +pub const SUNDIALS_SUNLINSOL_SPGMR: u32 = 1; +pub const SUNDIALS_SUNLINSOL_SPTFQMR: u32 = 1; +pub const SUNDIALS_SUNLINSOL_KLU: u32 = 1; +pub const SUNDIALS_SUNNONLINSOL_NEWTON: u32 = 1; +pub const SUNDIALS_SUNNONLINSOL_FIXEDPOINT: u32 = 1; +pub const SUNDIALS_MPI_COMM_F2C: u32 = 1; +pub const _STDINT_H: u32 = 1; +pub const _BITS_WCHAR_H: u32 = 1; +pub const _BITS_STDINT_INTN_H: u32 = 1; +pub const _BITS_STDINT_UINTN_H: u32 = 1; +pub const INT8_MIN: i32 = -128; +pub const INT16_MIN: i32 = -32768; +pub const INT32_MIN: i32 = -2147483648; +pub const INT8_MAX: u32 = 127; +pub const INT16_MAX: u32 = 32767; +pub const INT32_MAX: u32 = 2147483647; +pub const UINT8_MAX: u32 = 255; +pub const UINT16_MAX: u32 = 65535; +pub const UINT32_MAX: u32 = 4294967295; +pub const INT_LEAST8_MIN: i32 = -128; +pub const INT_LEAST16_MIN: i32 = -32768; +pub const INT_LEAST32_MIN: i32 = -2147483648; +pub const INT_LEAST8_MAX: u32 = 127; +pub const INT_LEAST16_MAX: u32 = 32767; +pub const INT_LEAST32_MAX: u32 = 2147483647; +pub const UINT_LEAST8_MAX: u32 = 255; +pub const UINT_LEAST16_MAX: u32 = 65535; +pub const UINT_LEAST32_MAX: u32 = 4294967295; +pub const INT_FAST8_MIN: i32 = -128; +pub const INT_FAST16_MIN: i64 = -9223372036854775808; +pub const INT_FAST32_MIN: i64 = -9223372036854775808; +pub const INT_FAST8_MAX: u32 = 127; +pub const INT_FAST16_MAX: u64 = 9223372036854775807; +pub const INT_FAST32_MAX: u64 = 9223372036854775807; +pub const UINT_FAST8_MAX: u32 = 255; +pub const UINT_FAST16_MAX: i32 = -1; +pub const UINT_FAST32_MAX: i32 = -1; +pub const INTPTR_MIN: i64 = -9223372036854775808; +pub const INTPTR_MAX: u64 = 9223372036854775807; +pub const UINTPTR_MAX: i32 = -1; +pub const PTRDIFF_MIN: i64 = -9223372036854775808; +pub const PTRDIFF_MAX: u64 = 9223372036854775807; +pub const SIG_ATOMIC_MIN: i32 = -2147483648; +pub const SIG_ATOMIC_MAX: u32 = 2147483647; +pub const SIZE_MAX: i32 = -1; +pub const WINT_MIN: u32 = 0; +pub const WINT_MAX: u32 = 4294967295; +pub const SUNFALSE: u32 = 0; +pub const SUNTRUE: u32 = 1; +pub const _STDLIB_H: u32 = 1; +pub const WNOHANG: u32 = 1; +pub const WUNTRACED: u32 = 2; +pub const WSTOPPED: u32 = 2; +pub const WEXITED: u32 = 4; +pub const WCONTINUED: u32 = 8; +pub const WNOWAIT: u32 = 16777216; +pub const __WNOTHREAD: u32 = 536870912; +pub const __WALL: u32 = 1073741824; +pub const __WCLONE: u32 = 2147483648; +pub const __W_CONTINUED: u32 = 65535; +pub const __WCOREFLAG: u32 = 128; +pub const __ldiv_t_defined: u32 = 1; +pub const __lldiv_t_defined: u32 = 1; +pub const RAND_MAX: u32 = 2147483647; +pub const EXIT_FAILURE: u32 = 1; +pub const EXIT_SUCCESS: u32 = 0; +pub const _SYS_TYPES_H: u32 = 1; +pub const __clock_t_defined: u32 = 1; +pub const __clockid_t_defined: u32 = 1; +pub const __time_t_defined: u32 = 1; +pub const __timer_t_defined: u32 = 1; +pub const __BIT_TYPES_DEFINED__: u32 = 1; +pub const _ENDIAN_H: u32 = 1; +pub const _BITS_ENDIAN_H: u32 = 1; +pub const __LITTLE_ENDIAN: u32 = 1234; +pub const __BIG_ENDIAN: u32 = 4321; +pub const __PDP_ENDIAN: u32 = 3412; +pub const _BITS_ENDIANNESS_H: u32 = 1; +pub const __BYTE_ORDER: u32 = 1234; +pub const __FLOAT_WORD_ORDER: u32 = 1234; +pub const LITTLE_ENDIAN: u32 = 1234; +pub const BIG_ENDIAN: u32 = 4321; +pub const PDP_ENDIAN: u32 = 3412; +pub const BYTE_ORDER: u32 = 1234; +pub const _BITS_BYTESWAP_H: u32 = 1; +pub const _BITS_UINTN_IDENTITY_H: u32 = 1; +pub const _SYS_SELECT_H: u32 = 1; +pub const __sigset_t_defined: u32 = 1; +pub const __timeval_defined: u32 = 1; +pub const _STRUCT_TIMESPEC: u32 = 1; +pub const FD_SETSIZE: u32 = 1024; +pub const _BITS_PTHREADTYPES_COMMON_H: u32 = 1; +pub const _THREAD_SHARED_TYPES_H: u32 = 1; +pub const _BITS_PTHREADTYPES_ARCH_H: u32 = 1; +pub const __SIZEOF_PTHREAD_MUTEX_T: u32 = 40; +pub const __SIZEOF_PTHREAD_ATTR_T: u32 = 56; +pub const __SIZEOF_PTHREAD_RWLOCK_T: u32 = 56; +pub const __SIZEOF_PTHREAD_BARRIER_T: u32 = 32; +pub const __SIZEOF_PTHREAD_MUTEXATTR_T: u32 = 4; +pub const __SIZEOF_PTHREAD_COND_T: u32 = 48; +pub const __SIZEOF_PTHREAD_CONDATTR_T: u32 = 4; +pub const __SIZEOF_PTHREAD_RWLOCKATTR_T: u32 = 8; +pub const __SIZEOF_PTHREAD_BARRIERATTR_T: u32 = 4; +pub const _THREAD_MUTEX_INTERNAL_H: u32 = 1; +pub const __PTHREAD_MUTEX_HAVE_PREV: u32 = 1; +pub const __have_pthread_attr_t: u32 = 1; +pub const _ALLOCA_H: u32 = 1; +pub const SUNMAT_SUCCESS: u32 = 0; +pub const SUNMAT_ILL_INPUT: i32 = -701; +pub const SUNMAT_MEM_FAIL: i32 = -702; +pub const SUNMAT_OPERATION_FAIL: i32 = -703; +pub const SUNMAT_MATVEC_SETUP_REQUIRED: i32 = -704; +pub type size_t = ::std::os::raw::c_ulong; +pub type va_list = __builtin_va_list; +pub type __gnuc_va_list = __builtin_va_list; +pub type __u_char = ::std::os::raw::c_uchar; +pub type __u_short = ::std::os::raw::c_ushort; +pub type __u_int = ::std::os::raw::c_uint; +pub type __u_long = ::std::os::raw::c_ulong; +pub type __int8_t = ::std::os::raw::c_schar; +pub type __uint8_t = ::std::os::raw::c_uchar; +pub type __int16_t = ::std::os::raw::c_short; +pub type __uint16_t = ::std::os::raw::c_ushort; +pub type __int32_t = ::std::os::raw::c_int; +pub type __uint32_t = ::std::os::raw::c_uint; +pub type __int64_t = ::std::os::raw::c_long; +pub type __uint64_t = ::std::os::raw::c_ulong; +pub type __int_least8_t = __int8_t; +pub type __uint_least8_t = __uint8_t; +pub type __int_least16_t = __int16_t; +pub type __uint_least16_t = __uint16_t; +pub type __int_least32_t = __int32_t; +pub type __uint_least32_t = __uint32_t; +pub type __int_least64_t = __int64_t; +pub type __uint_least64_t = __uint64_t; +pub type __quad_t = ::std::os::raw::c_long; +pub type __u_quad_t = ::std::os::raw::c_ulong; +pub type __intmax_t = ::std::os::raw::c_long; +pub type __uintmax_t = ::std::os::raw::c_ulong; +pub type __dev_t = ::std::os::raw::c_ulong; +pub type __uid_t = ::std::os::raw::c_uint; +pub type __gid_t = ::std::os::raw::c_uint; +pub type __ino_t = ::std::os::raw::c_ulong; +pub type __ino64_t = ::std::os::raw::c_ulong; +pub type __mode_t = ::std::os::raw::c_uint; +pub type __nlink_t = ::std::os::raw::c_ulong; +pub type __off_t = ::std::os::raw::c_long; +pub type __off64_t = ::std::os::raw::c_long; +pub type __pid_t = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __fsid_t { + pub __val: [::std::os::raw::c_int; 2usize], +} +#[test] +fn bindgen_test_layout___fsid_t() { + assert_eq!( + ::std::mem::size_of::<__fsid_t>(), + 8usize, + concat!("Size of: ", stringify!(__fsid_t)) + ); + assert_eq!( + ::std::mem::align_of::<__fsid_t>(), + 4usize, + concat!("Alignment of ", stringify!(__fsid_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__fsid_t>())).__val as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__fsid_t), + "::", + stringify!(__val) + ) + ); +} +pub type __clock_t = ::std::os::raw::c_long; +pub type __rlim_t = ::std::os::raw::c_ulong; +pub type __rlim64_t = ::std::os::raw::c_ulong; +pub type __id_t = ::std::os::raw::c_uint; +pub type __time_t = ::std::os::raw::c_long; +pub type __useconds_t = ::std::os::raw::c_uint; +pub type __suseconds_t = ::std::os::raw::c_long; +pub type __suseconds64_t = ::std::os::raw::c_long; +pub type __daddr_t = ::std::os::raw::c_int; +pub type __key_t = ::std::os::raw::c_int; +pub type __clockid_t = ::std::os::raw::c_int; +pub type __timer_t = *mut ::std::os::raw::c_void; +pub type __blksize_t = ::std::os::raw::c_long; +pub type __blkcnt_t = ::std::os::raw::c_long; +pub type __blkcnt64_t = ::std::os::raw::c_long; +pub type __fsblkcnt_t = ::std::os::raw::c_ulong; +pub type __fsblkcnt64_t = ::std::os::raw::c_ulong; +pub type __fsfilcnt_t = ::std::os::raw::c_ulong; +pub type __fsfilcnt64_t = ::std::os::raw::c_ulong; +pub type __fsword_t = ::std::os::raw::c_long; +pub type __ssize_t = ::std::os::raw::c_long; +pub type __syscall_slong_t = ::std::os::raw::c_long; +pub type __syscall_ulong_t = ::std::os::raw::c_ulong; +pub type __loff_t = __off64_t; +pub type __caddr_t = *mut ::std::os::raw::c_char; +pub type __intptr_t = ::std::os::raw::c_long; +pub type __socklen_t = ::std::os::raw::c_uint; +pub type __sig_atomic_t = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __mbstate_t { + pub __count: ::std::os::raw::c_int, + pub __value: __mbstate_t__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __mbstate_t__bindgen_ty_1 { + pub __wch: ::std::os::raw::c_uint, + pub __wchb: [::std::os::raw::c_char; 4usize], + _bindgen_union_align: u32, +} +#[test] +fn bindgen_test_layout___mbstate_t__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<__mbstate_t__bindgen_ty_1>(), + 4usize, + concat!("Size of: ", stringify!(__mbstate_t__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::<__mbstate_t__bindgen_ty_1>(), + 4usize, + concat!("Alignment of ", stringify!(__mbstate_t__bindgen_ty_1)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__mbstate_t__bindgen_ty_1>())).__wch as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__mbstate_t__bindgen_ty_1), + "::", + stringify!(__wch) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__mbstate_t__bindgen_ty_1>())).__wchb as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__mbstate_t__bindgen_ty_1), + "::", + stringify!(__wchb) + ) + ); +} +#[test] +fn bindgen_test_layout___mbstate_t() { + assert_eq!( + ::std::mem::size_of::<__mbstate_t>(), + 8usize, + concat!("Size of: ", stringify!(__mbstate_t)) + ); + assert_eq!( + ::std::mem::align_of::<__mbstate_t>(), + 4usize, + concat!("Alignment of ", stringify!(__mbstate_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__mbstate_t>())).__count as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__mbstate_t), + "::", + stringify!(__count) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__mbstate_t>())).__value as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__mbstate_t), + "::", + stringify!(__value) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _G_fpos_t { + pub __pos: __off_t, + pub __state: __mbstate_t, +} +#[test] +fn bindgen_test_layout__G_fpos_t() { + assert_eq!( + ::std::mem::size_of::<_G_fpos_t>(), + 16usize, + concat!("Size of: ", stringify!(_G_fpos_t)) + ); + assert_eq!( + ::std::mem::align_of::<_G_fpos_t>(), + 8usize, + concat!("Alignment of ", stringify!(_G_fpos_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_G_fpos_t>())).__pos as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_G_fpos_t), + "::", + stringify!(__pos) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_G_fpos_t>())).__state as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_G_fpos_t), + "::", + stringify!(__state) + ) + ); +} +pub type __fpos_t = _G_fpos_t; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _G_fpos64_t { + pub __pos: __off64_t, + pub __state: __mbstate_t, +} +#[test] +fn bindgen_test_layout__G_fpos64_t() { + assert_eq!( + ::std::mem::size_of::<_G_fpos64_t>(), + 16usize, + concat!("Size of: ", stringify!(_G_fpos64_t)) + ); + assert_eq!( + ::std::mem::align_of::<_G_fpos64_t>(), + 8usize, + concat!("Alignment of ", stringify!(_G_fpos64_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_G_fpos64_t>())).__pos as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_G_fpos64_t), + "::", + stringify!(__pos) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_G_fpos64_t>())).__state as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_G_fpos64_t), + "::", + stringify!(__state) + ) + ); +} +pub type __fpos64_t = _G_fpos64_t; +pub type __FILE = _IO_FILE; +pub type FILE = _IO_FILE; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _IO_marker { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _IO_codecvt { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _IO_wide_data { + _unused: [u8; 0], +} +pub type _IO_lock_t = ::std::os::raw::c_void; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _IO_FILE { + pub _flags: ::std::os::raw::c_int, + pub _IO_read_ptr: *mut ::std::os::raw::c_char, + pub _IO_read_end: *mut ::std::os::raw::c_char, + pub _IO_read_base: *mut ::std::os::raw::c_char, + pub _IO_write_base: *mut ::std::os::raw::c_char, + pub _IO_write_ptr: *mut ::std::os::raw::c_char, + pub _IO_write_end: *mut ::std::os::raw::c_char, + pub _IO_buf_base: *mut ::std::os::raw::c_char, + pub _IO_buf_end: *mut ::std::os::raw::c_char, + pub _IO_save_base: *mut ::std::os::raw::c_char, + pub _IO_backup_base: *mut ::std::os::raw::c_char, + pub _IO_save_end: *mut ::std::os::raw::c_char, + pub _markers: *mut _IO_marker, + pub _chain: *mut _IO_FILE, + pub _fileno: ::std::os::raw::c_int, + pub _flags2: ::std::os::raw::c_int, + pub _old_offset: __off_t, + pub _cur_column: ::std::os::raw::c_ushort, + pub _vtable_offset: ::std::os::raw::c_schar, + pub _shortbuf: [::std::os::raw::c_char; 1usize], + pub _lock: *mut _IO_lock_t, + pub _offset: __off64_t, + pub _codecvt: *mut _IO_codecvt, + pub _wide_data: *mut _IO_wide_data, + pub _freeres_list: *mut _IO_FILE, + pub _freeres_buf: *mut ::std::os::raw::c_void, + pub __pad5: size_t, + pub _mode: ::std::os::raw::c_int, + pub _unused2: [::std::os::raw::c_char; 20usize], +} +#[test] +fn bindgen_test_layout__IO_FILE() { + assert_eq!( + ::std::mem::size_of::<_IO_FILE>(), + 216usize, + concat!("Size of: ", stringify!(_IO_FILE)) + ); + assert_eq!( + ::std::mem::align_of::<_IO_FILE>(), + 8usize, + concat!("Alignment of ", stringify!(_IO_FILE)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._flags as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_flags) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_read_ptr as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_read_ptr) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_read_end as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_read_end) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_read_base as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_read_base) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_write_base as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_write_base) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_write_ptr as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_write_ptr) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_write_end as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_write_end) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_buf_base as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_buf_base) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_buf_end as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_buf_end) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_save_base as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_save_base) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_backup_base as *const _ as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_backup_base) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_save_end as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_IO_save_end) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._markers as *const _ as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_markers) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._chain as *const _ as usize }, + 104usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_chain) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._fileno as *const _ as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_fileno) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._flags2 as *const _ as usize }, + 116usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_flags2) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._old_offset as *const _ as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_old_offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._cur_column as *const _ as usize }, + 128usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_cur_column) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._vtable_offset as *const _ as usize }, + 130usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_vtable_offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._shortbuf as *const _ as usize }, + 131usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_shortbuf) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._lock as *const _ as usize }, + 136usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_lock) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._offset as *const _ as usize }, + 144usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._codecvt as *const _ as usize }, + 152usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_codecvt) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._wide_data as *const _ as usize }, + 160usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_wide_data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._freeres_list as *const _ as usize }, + 168usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_freeres_list) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._freeres_buf as *const _ as usize }, + 176usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_freeres_buf) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>())).__pad5 as *const _ as usize }, + 184usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(__pad5) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._mode as *const _ as usize }, + 192usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_mode) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._unused2 as *const _ as usize }, + 196usize, + concat!( + "Offset of field: ", + stringify!(_IO_FILE), + "::", + stringify!(_unused2) + ) + ); +} +pub type off_t = __off_t; +pub type ssize_t = __ssize_t; +pub type fpos_t = __fpos_t; +extern "C" { + pub static mut stdin: *mut FILE; +} +extern "C" { + pub static mut stdout: *mut FILE; +} +extern "C" { + pub static mut stderr: *mut FILE; +} +extern "C" { + pub fn remove(__filename: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn rename( + __old: *const ::std::os::raw::c_char, + __new: *const ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn renameat( + __oldfd: ::std::os::raw::c_int, + __old: *const ::std::os::raw::c_char, + __newfd: ::std::os::raw::c_int, + __new: *const ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn tmpfile() -> *mut FILE; +} +extern "C" { + pub fn tmpnam(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn tmpnam_r(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn tempnam( + __dir: *const ::std::os::raw::c_char, + __pfx: *const ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn fclose(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fflush(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fflush_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fopen( + __filename: *const ::std::os::raw::c_char, + __modes: *const ::std::os::raw::c_char, + ) -> *mut FILE; +} +extern "C" { + pub fn freopen( + __filename: *const ::std::os::raw::c_char, + __modes: *const ::std::os::raw::c_char, + __stream: *mut FILE, + ) -> *mut FILE; +} +extern "C" { + pub fn fdopen(__fd: ::std::os::raw::c_int, __modes: *const ::std::os::raw::c_char) + -> *mut FILE; +} +extern "C" { + pub fn fmemopen( + __s: *mut ::std::os::raw::c_void, + __len: size_t, + __modes: *const ::std::os::raw::c_char, + ) -> *mut FILE; +} +extern "C" { + pub fn open_memstream( + __bufloc: *mut *mut ::std::os::raw::c_char, + __sizeloc: *mut size_t, + ) -> *mut FILE; +} +extern "C" { + pub fn setbuf(__stream: *mut FILE, __buf: *mut ::std::os::raw::c_char); +} +extern "C" { + pub fn setvbuf( + __stream: *mut FILE, + __buf: *mut ::std::os::raw::c_char, + __modes: ::std::os::raw::c_int, + __n: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn setbuffer(__stream: *mut FILE, __buf: *mut ::std::os::raw::c_char, __size: size_t); +} +extern "C" { + pub fn setlinebuf(__stream: *mut FILE); +} +extern "C" { + pub fn fprintf( + __stream: *mut FILE, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn printf(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn sprintf( + __s: *mut ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vfprintf( + __s: *mut FILE, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vprintf( + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vsprintf( + __s: *mut ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn snprintf( + __s: *mut ::std::os::raw::c_char, + __maxlen: ::std::os::raw::c_ulong, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vsnprintf( + __s: *mut ::std::os::raw::c_char, + __maxlen: ::std::os::raw::c_ulong, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vdprintf( + __fd: ::std::os::raw::c_int, + __fmt: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn dprintf( + __fd: ::std::os::raw::c_int, + __fmt: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fscanf( + __stream: *mut FILE, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn scanf(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn sscanf( + __s: *const ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +pub type _Float32 = f32; +pub type _Float64 = f64; +pub type _Float32x = f64; +pub type _Float64x = u128; +extern "C" { + #[link_name = "\u{1}__isoc99_fscanf"] + pub fn fscanf1( + __stream: *mut FILE, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + #[link_name = "\u{1}__isoc99_scanf"] + pub fn scanf1(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int; +} +extern "C" { + #[link_name = "\u{1}__isoc99_sscanf"] + pub fn sscanf1( + __s: *const ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vfscanf( + __s: *mut FILE, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vscanf( + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vsscanf( + __s: *const ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + #[link_name = "\u{1}__isoc99_vfscanf"] + pub fn vfscanf1( + __s: *mut FILE, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + #[link_name = "\u{1}__isoc99_vscanf"] + pub fn vscanf1( + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + #[link_name = "\u{1}__isoc99_vsscanf"] + pub fn vsscanf1( + __s: *const ::std::os::raw::c_char, + __format: *const ::std::os::raw::c_char, + __arg: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fgetc(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getc(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getchar() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getc_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getchar_unlocked() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fgetc_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fputc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn putc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn putchar(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fputc_unlocked(__c: ::std::os::raw::c_int, __stream: *mut FILE) + -> ::std::os::raw::c_int; +} +extern "C" { + pub fn putc_unlocked(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn putchar_unlocked(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getw(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn putw(__w: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fgets( + __s: *mut ::std::os::raw::c_char, + __n: ::std::os::raw::c_int, + __stream: *mut FILE, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn __getdelim( + __lineptr: *mut *mut ::std::os::raw::c_char, + __n: *mut size_t, + __delimiter: ::std::os::raw::c_int, + __stream: *mut FILE, + ) -> __ssize_t; +} +extern "C" { + pub fn getdelim( + __lineptr: *mut *mut ::std::os::raw::c_char, + __n: *mut size_t, + __delimiter: ::std::os::raw::c_int, + __stream: *mut FILE, + ) -> __ssize_t; +} +extern "C" { + pub fn getline( + __lineptr: *mut *mut ::std::os::raw::c_char, + __n: *mut size_t, + __stream: *mut FILE, + ) -> __ssize_t; +} +extern "C" { + pub fn fputs(__s: *const ::std::os::raw::c_char, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn puts(__s: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ungetc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fread( + __ptr: *mut ::std::os::raw::c_void, + __size: ::std::os::raw::c_ulong, + __n: ::std::os::raw::c_ulong, + __stream: *mut FILE, + ) -> ::std::os::raw::c_ulong; +} +extern "C" { + pub fn fwrite( + __ptr: *const ::std::os::raw::c_void, + __size: ::std::os::raw::c_ulong, + __n: ::std::os::raw::c_ulong, + __s: *mut FILE, + ) -> ::std::os::raw::c_ulong; +} +extern "C" { + pub fn fread_unlocked( + __ptr: *mut ::std::os::raw::c_void, + __size: size_t, + __n: size_t, + __stream: *mut FILE, + ) -> size_t; +} +extern "C" { + pub fn fwrite_unlocked( + __ptr: *const ::std::os::raw::c_void, + __size: size_t, + __n: size_t, + __stream: *mut FILE, + ) -> size_t; +} +extern "C" { + pub fn fseek( + __stream: *mut FILE, + __off: ::std::os::raw::c_long, + __whence: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ftell(__stream: *mut FILE) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn rewind(__stream: *mut FILE); +} +extern "C" { + pub fn fseeko( + __stream: *mut FILE, + __off: __off_t, + __whence: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ftello(__stream: *mut FILE) -> __off_t; +} +extern "C" { + pub fn fgetpos(__stream: *mut FILE, __pos: *mut fpos_t) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fsetpos(__stream: *mut FILE, __pos: *const fpos_t) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn clearerr(__stream: *mut FILE); +} +extern "C" { + pub fn feof(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ferror(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn clearerr_unlocked(__stream: *mut FILE); +} +extern "C" { + pub fn feof_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ferror_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn perror(__s: *const ::std::os::raw::c_char); +} +extern "C" { + pub fn fileno(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fileno_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn popen( + __command: *const ::std::os::raw::c_char, + __modes: *const ::std::os::raw::c_char, + ) -> *mut FILE; +} +extern "C" { + pub fn pclose(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ctermid(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn flockfile(__stream: *mut FILE); +} +extern "C" { + pub fn ftrylockfile(__stream: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn funlockfile(__stream: *mut FILE); +} +extern "C" { + pub fn __uflow(arg1: *mut FILE) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn __overflow(arg1: *mut FILE, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +pub type wchar_t = ::std::os::raw::c_int; +#[repr(C)] +#[repr(align(16))] +#[derive(Debug, Copy, Clone)] +pub struct max_align_t { + pub __clang_max_align_nonce1: ::std::os::raw::c_longlong, + pub __bindgen_padding_0: u64, + pub __clang_max_align_nonce2: u128, +} +#[test] +fn bindgen_test_layout_max_align_t() { + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(max_align_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 16usize, + concat!("Alignment of ", stringify!(max_align_t)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).__clang_max_align_nonce1 as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(max_align_t), + "::", + stringify!(__clang_max_align_nonce1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).__clang_max_align_nonce2 as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(max_align_t), + "::", + stringify!(__clang_max_align_nonce2) + ) + ); +} +pub type int_least8_t = __int_least8_t; +pub type int_least16_t = __int_least16_t; +pub type int_least32_t = __int_least32_t; +pub type int_least64_t = __int_least64_t; +pub type uint_least8_t = __uint_least8_t; +pub type uint_least16_t = __uint_least16_t; +pub type uint_least32_t = __uint_least32_t; +pub type uint_least64_t = __uint_least64_t; +pub type int_fast8_t = ::std::os::raw::c_schar; +pub type int_fast16_t = ::std::os::raw::c_long; +pub type int_fast32_t = ::std::os::raw::c_long; +pub type int_fast64_t = ::std::os::raw::c_long; +pub type uint_fast8_t = ::std::os::raw::c_uchar; +pub type uint_fast16_t = ::std::os::raw::c_ulong; +pub type uint_fast32_t = ::std::os::raw::c_ulong; +pub type uint_fast64_t = ::std::os::raw::c_ulong; +pub type intmax_t = __intmax_t; +pub type uintmax_t = __uintmax_t; +pub type realtype = f64; +pub type sunindextype = i64; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct div_t { + pub quot: ::std::os::raw::c_int, + pub rem: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_div_t() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(div_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(div_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).quot as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(div_t), + "::", + stringify!(quot) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rem as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(div_t), + "::", + stringify!(rem) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ldiv_t { + pub quot: ::std::os::raw::c_long, + pub rem: ::std::os::raw::c_long, +} +#[test] +fn bindgen_test_layout_ldiv_t() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(ldiv_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(ldiv_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).quot as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ldiv_t), + "::", + stringify!(quot) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rem as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ldiv_t), + "::", + stringify!(rem) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct lldiv_t { + pub quot: ::std::os::raw::c_longlong, + pub rem: ::std::os::raw::c_longlong, +} +#[test] +fn bindgen_test_layout_lldiv_t() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(lldiv_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(lldiv_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).quot as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lldiv_t), + "::", + stringify!(quot) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rem as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(lldiv_t), + "::", + stringify!(rem) + ) + ); +} +extern "C" { + pub fn __ctype_get_mb_cur_max() -> size_t; +} +extern "C" { + pub fn atof(__nptr: *const ::std::os::raw::c_char) -> f64; +} +extern "C" { + pub fn atoi(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn atol(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn atoll(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_longlong; +} +extern "C" { + pub fn strtod( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + ) -> f64; +} +extern "C" { + pub fn strtof( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + ) -> f32; +} +extern "C" { + pub fn strtold( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + ) -> u128; +} +extern "C" { + pub fn strtol( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn strtoul( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_ulong; +} +extern "C" { + pub fn strtoq( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_longlong; +} +extern "C" { + pub fn strtouq( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_ulonglong; +} +extern "C" { + pub fn strtoll( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_longlong; +} +extern "C" { + pub fn strtoull( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_ulonglong; +} +extern "C" { + pub fn l64a(__n: ::std::os::raw::c_long) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn a64l(__s: *const ::std::os::raw::c_char) -> ::std::os::raw::c_long; +} +pub type u_char = __u_char; +pub type u_short = __u_short; +pub type u_int = __u_int; +pub type u_long = __u_long; +pub type quad_t = __quad_t; +pub type u_quad_t = __u_quad_t; +pub type fsid_t = __fsid_t; +pub type loff_t = __loff_t; +pub type ino_t = __ino_t; +pub type dev_t = __dev_t; +pub type gid_t = __gid_t; +pub type mode_t = __mode_t; +pub type nlink_t = __nlink_t; +pub type uid_t = __uid_t; +pub type pid_t = __pid_t; +pub type id_t = __id_t; +pub type daddr_t = __daddr_t; +pub type caddr_t = __caddr_t; +pub type key_t = __key_t; +pub type clock_t = __clock_t; +pub type clockid_t = __clockid_t; +pub type time_t = __time_t; +pub type timer_t = __timer_t; +pub type ulong = ::std::os::raw::c_ulong; +pub type ushort = ::std::os::raw::c_ushort; +pub type uint = ::std::os::raw::c_uint; +pub type u_int8_t = __uint8_t; +pub type u_int16_t = __uint16_t; +pub type u_int32_t = __uint32_t; +pub type u_int64_t = __uint64_t; +pub type register_t = ::std::os::raw::c_long; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sigset_t { + pub __val: [::std::os::raw::c_ulong; 16usize], +} +#[test] +fn bindgen_test_layout___sigset_t() { + assert_eq!( + ::std::mem::size_of::<__sigset_t>(), + 128usize, + concat!("Size of: ", stringify!(__sigset_t)) + ); + assert_eq!( + ::std::mem::align_of::<__sigset_t>(), + 8usize, + concat!("Alignment of ", stringify!(__sigset_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__sigset_t>())).__val as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__sigset_t), + "::", + stringify!(__val) + ) + ); +} +pub type sigset_t = __sigset_t; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct timeval { + pub tv_sec: __time_t, + pub tv_usec: __suseconds_t, +} +#[test] +fn bindgen_test_layout_timeval() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(timeval)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(timeval)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tv_sec as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(timeval), + "::", + stringify!(tv_sec) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tv_usec as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(timeval), + "::", + stringify!(tv_usec) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct timespec { + pub tv_sec: __time_t, + pub tv_nsec: __syscall_slong_t, +} +#[test] +fn bindgen_test_layout_timespec() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(timespec)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(timespec)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tv_sec as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(timespec), + "::", + stringify!(tv_sec) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tv_nsec as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(timespec), + "::", + stringify!(tv_nsec) + ) + ); +} +pub type suseconds_t = __suseconds_t; +pub type __fd_mask = ::std::os::raw::c_long; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fd_set { + pub __fds_bits: [__fd_mask; 16usize], +} +#[test] +fn bindgen_test_layout_fd_set() { + assert_eq!( + ::std::mem::size_of::(), + 128usize, + concat!("Size of: ", stringify!(fd_set)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(fd_set)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__fds_bits as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(fd_set), + "::", + stringify!(__fds_bits) + ) + ); +} +pub type fd_mask = __fd_mask; +extern "C" { + pub fn select( + __nfds: ::std::os::raw::c_int, + __readfds: *mut fd_set, + __writefds: *mut fd_set, + __exceptfds: *mut fd_set, + __timeout: *mut timeval, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn pselect( + __nfds: ::std::os::raw::c_int, + __readfds: *mut fd_set, + __writefds: *mut fd_set, + __exceptfds: *mut fd_set, + __timeout: *const timespec, + __sigmask: *const __sigset_t, + ) -> ::std::os::raw::c_int; +} +pub type blksize_t = __blksize_t; +pub type blkcnt_t = __blkcnt_t; +pub type fsblkcnt_t = __fsblkcnt_t; +pub type fsfilcnt_t = __fsfilcnt_t; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_internal_list { + pub __prev: *mut __pthread_internal_list, + pub __next: *mut __pthread_internal_list, +} +#[test] +fn bindgen_test_layout___pthread_internal_list() { + assert_eq!( + ::std::mem::size_of::<__pthread_internal_list>(), + 16usize, + concat!("Size of: ", stringify!(__pthread_internal_list)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_internal_list>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_internal_list)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_internal_list>())).__prev as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_internal_list), + "::", + stringify!(__prev) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_internal_list>())).__next as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(__pthread_internal_list), + "::", + stringify!(__next) + ) + ); +} +pub type __pthread_list_t = __pthread_internal_list; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_internal_slist { + pub __next: *mut __pthread_internal_slist, +} +#[test] +fn bindgen_test_layout___pthread_internal_slist() { + assert_eq!( + ::std::mem::size_of::<__pthread_internal_slist>(), + 8usize, + concat!("Size of: ", stringify!(__pthread_internal_slist)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_internal_slist>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_internal_slist)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_internal_slist>())).__next as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_internal_slist), + "::", + stringify!(__next) + ) + ); +} +pub type __pthread_slist_t = __pthread_internal_slist; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_mutex_s { + pub __lock: ::std::os::raw::c_int, + pub __count: ::std::os::raw::c_uint, + pub __owner: ::std::os::raw::c_int, + pub __nusers: ::std::os::raw::c_uint, + pub __kind: ::std::os::raw::c_int, + pub __spins: ::std::os::raw::c_short, + pub __elision: ::std::os::raw::c_short, + pub __list: __pthread_list_t, +} +#[test] +fn bindgen_test_layout___pthread_mutex_s() { + assert_eq!( + ::std::mem::size_of::<__pthread_mutex_s>(), + 40usize, + concat!("Size of: ", stringify!(__pthread_mutex_s)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_mutex_s>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_mutex_s)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__lock as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__lock) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__count as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__count) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__owner as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__owner) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__nusers as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__nusers) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__kind as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__kind) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__spins as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__spins) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__elision as *const _ as usize }, + 22usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__elision) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__list as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__list) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_rwlock_arch_t { + pub __readers: ::std::os::raw::c_uint, + pub __writers: ::std::os::raw::c_uint, + pub __wrphase_futex: ::std::os::raw::c_uint, + pub __writers_futex: ::std::os::raw::c_uint, + pub __pad3: ::std::os::raw::c_uint, + pub __pad4: ::std::os::raw::c_uint, + pub __cur_writer: ::std::os::raw::c_int, + pub __shared: ::std::os::raw::c_int, + pub __rwelision: ::std::os::raw::c_schar, + pub __pad1: [::std::os::raw::c_uchar; 7usize], + pub __pad2: ::std::os::raw::c_ulong, + pub __flags: ::std::os::raw::c_uint, +} +#[test] +fn bindgen_test_layout___pthread_rwlock_arch_t() { + assert_eq!( + ::std::mem::size_of::<__pthread_rwlock_arch_t>(), + 56usize, + concat!("Size of: ", stringify!(__pthread_rwlock_arch_t)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_rwlock_arch_t>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_rwlock_arch_t)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__readers as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__readers) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__writers as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__writers) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__wrphase_futex as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__wrphase_futex) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__writers_futex as *const _ as usize + }, + 12usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__writers_futex) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad3 as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__pad3) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad4 as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__pad4) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__cur_writer as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__cur_writer) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__shared as *const _ as usize + }, + 28usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__shared) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__rwelision as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__rwelision) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad1 as *const _ as usize }, + 33usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__pad1) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad2 as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__pad2) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__flags as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__flags) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __pthread_cond_s { + pub __bindgen_anon_1: __pthread_cond_s__bindgen_ty_1, + pub __bindgen_anon_2: __pthread_cond_s__bindgen_ty_2, + pub __g_refs: [::std::os::raw::c_uint; 2usize], + pub __g_size: [::std::os::raw::c_uint; 2usize], + pub __g1_orig_size: ::std::os::raw::c_uint, + pub __wrefs: ::std::os::raw::c_uint, + pub __g_signals: [::std::os::raw::c_uint; 2usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __pthread_cond_s__bindgen_ty_1 { + pub __wseq: ::std::os::raw::c_ulonglong, + pub __wseq32: __pthread_cond_s__bindgen_ty_1__bindgen_ty_1, + _bindgen_union_align: u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_cond_s__bindgen_ty_1__bindgen_ty_1 { + pub __low: ::std::os::raw::c_uint, + pub __high: ::std::os::raw::c_uint, +} +#[test] +fn bindgen_test_layout___pthread_cond_s__bindgen_ty_1__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>(), + 8usize, + concat!( + "Size of: ", + stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>(), + 4usize, + concat!( + "Alignment of ", + stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>())).__low + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(__low) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>())).__high + as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(__high) + ) + ); +} +#[test] +fn bindgen_test_layout___pthread_cond_s__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_1>(), + 8usize, + concat!("Size of: ", stringify!(__pthread_cond_s__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_1>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_cond_s__bindgen_ty_1)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1>())).__wseq as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_1), + "::", + stringify!(__wseq) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1>())).__wseq32 as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_1), + "::", + stringify!(__wseq32) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __pthread_cond_s__bindgen_ty_2 { + pub __g1_start: ::std::os::raw::c_ulonglong, + pub __g1_start32: __pthread_cond_s__bindgen_ty_2__bindgen_ty_1, + _bindgen_union_align: u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_cond_s__bindgen_ty_2__bindgen_ty_1 { + pub __low: ::std::os::raw::c_uint, + pub __high: ::std::os::raw::c_uint, +} +#[test] +fn bindgen_test_layout___pthread_cond_s__bindgen_ty_2__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>(), + 8usize, + concat!( + "Size of: ", + stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>(), + 4usize, + concat!( + "Alignment of ", + stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>())).__low + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1), + "::", + stringify!(__low) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>())).__high + as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1), + "::", + stringify!(__high) + ) + ); +} +#[test] +fn bindgen_test_layout___pthread_cond_s__bindgen_ty_2() { + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_2>(), + 8usize, + concat!("Size of: ", stringify!(__pthread_cond_s__bindgen_ty_2)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_2>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_cond_s__bindgen_ty_2)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2>())).__g1_start as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_2), + "::", + stringify!(__g1_start) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2>())).__g1_start32 as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_2), + "::", + stringify!(__g1_start32) + ) + ); +} +#[test] +fn bindgen_test_layout___pthread_cond_s() { + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s>(), + 48usize, + concat!("Size of: ", stringify!(__pthread_cond_s)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_cond_s)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g_refs as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__g_refs) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g_size as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__g_size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g1_orig_size as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__g1_orig_size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__wrefs as *const _ as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__wrefs) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g_signals as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__g_signals) + ) + ); +} +pub type __tss_t = ::std::os::raw::c_uint; +pub type __thrd_t = ::std::os::raw::c_ulong; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __once_flag { + pub __data: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout___once_flag() { + assert_eq!( + ::std::mem::size_of::<__once_flag>(), + 4usize, + concat!("Size of: ", stringify!(__once_flag)) + ); + assert_eq!( + ::std::mem::align_of::<__once_flag>(), + 4usize, + concat!("Alignment of ", stringify!(__once_flag)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__once_flag>())).__data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__once_flag), + "::", + stringify!(__data) + ) + ); +} +pub type pthread_t = ::std::os::raw::c_ulong; +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_mutexattr_t { + pub __size: [::std::os::raw::c_char; 4usize], + pub __align: ::std::os::raw::c_int, + _bindgen_union_align: u32, +} +#[test] +fn bindgen_test_layout_pthread_mutexattr_t() { + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(pthread_mutexattr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(pthread_mutexattr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutexattr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutexattr_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_condattr_t { + pub __size: [::std::os::raw::c_char; 4usize], + pub __align: ::std::os::raw::c_int, + _bindgen_union_align: u32, +} +#[test] +fn bindgen_test_layout_pthread_condattr_t() { + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(pthread_condattr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(pthread_condattr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_condattr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_condattr_t), + "::", + stringify!(__align) + ) + ); +} +pub type pthread_key_t = ::std::os::raw::c_uint; +pub type pthread_once_t = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_attr_t { + pub __size: [::std::os::raw::c_char; 56usize], + pub __align: ::std::os::raw::c_long, + _bindgen_union_align: [u64; 7usize], +} +#[test] +fn bindgen_test_layout_pthread_attr_t() { + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(pthread_attr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_attr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_attr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_attr_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_mutex_t { + pub __data: __pthread_mutex_s, + pub __size: [::std::os::raw::c_char; 40usize], + pub __align: ::std::os::raw::c_long, + _bindgen_union_align: [u64; 5usize], +} +#[test] +fn bindgen_test_layout_pthread_mutex_t() { + assert_eq!( + ::std::mem::size_of::(), + 40usize, + concat!("Size of: ", stringify!(pthread_mutex_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_mutex_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutex_t), + "::", + stringify!(__data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutex_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutex_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_cond_t { + pub __data: __pthread_cond_s, + pub __size: [::std::os::raw::c_char; 48usize], + pub __align: ::std::os::raw::c_longlong, + _bindgen_union_align: [u64; 6usize], +} +#[test] +fn bindgen_test_layout_pthread_cond_t() { + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(pthread_cond_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_cond_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_cond_t), + "::", + stringify!(__data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_cond_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_cond_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_rwlock_t { + pub __data: __pthread_rwlock_arch_t, + pub __size: [::std::os::raw::c_char; 56usize], + pub __align: ::std::os::raw::c_long, + _bindgen_union_align: [u64; 7usize], +} +#[test] +fn bindgen_test_layout_pthread_rwlock_t() { + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(pthread_rwlock_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_rwlock_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlock_t), + "::", + stringify!(__data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlock_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlock_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_rwlockattr_t { + pub __size: [::std::os::raw::c_char; 8usize], + pub __align: ::std::os::raw::c_long, + _bindgen_union_align: u64, +} +#[test] +fn bindgen_test_layout_pthread_rwlockattr_t() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(pthread_rwlockattr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_rwlockattr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlockattr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlockattr_t), + "::", + stringify!(__align) + ) + ); +} +pub type pthread_spinlock_t = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_barrier_t { + pub __size: [::std::os::raw::c_char; 32usize], + pub __align: ::std::os::raw::c_long, + _bindgen_union_align: [u64; 4usize], +} +#[test] +fn bindgen_test_layout_pthread_barrier_t() { + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(pthread_barrier_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_barrier_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_barrier_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_barrier_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_barrierattr_t { + pub __size: [::std::os::raw::c_char; 4usize], + pub __align: ::std::os::raw::c_int, + _bindgen_union_align: u32, +} +#[test] +fn bindgen_test_layout_pthread_barrierattr_t() { + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(pthread_barrierattr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(pthread_barrierattr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_barrierattr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_barrierattr_t), + "::", + stringify!(__align) + ) + ); +} +extern "C" { + pub fn random() -> ::std::os::raw::c_long; +} +extern "C" { + pub fn srandom(__seed: ::std::os::raw::c_uint); +} +extern "C" { + pub fn initstate( + __seed: ::std::os::raw::c_uint, + __statebuf: *mut ::std::os::raw::c_char, + __statelen: size_t, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn setstate(__statebuf: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct random_data { + pub fptr: *mut i32, + pub rptr: *mut i32, + pub state: *mut i32, + pub rand_type: ::std::os::raw::c_int, + pub rand_deg: ::std::os::raw::c_int, + pub rand_sep: ::std::os::raw::c_int, + pub end_ptr: *mut i32, +} +#[test] +fn bindgen_test_layout_random_data() { + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(random_data)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(random_data)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fptr as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(fptr) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rptr as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(rptr) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).state as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(state) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rand_type as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(rand_type) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rand_deg as *const _ as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(rand_deg) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rand_sep as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(rand_sep) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).end_ptr as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(end_ptr) + ) + ); +} +extern "C" { + pub fn random_r(__buf: *mut random_data, __result: *mut i32) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn srandom_r( + __seed: ::std::os::raw::c_uint, + __buf: *mut random_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn initstate_r( + __seed: ::std::os::raw::c_uint, + __statebuf: *mut ::std::os::raw::c_char, + __statelen: size_t, + __buf: *mut random_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn setstate_r( + __statebuf: *mut ::std::os::raw::c_char, + __buf: *mut random_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn rand() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn srand(__seed: ::std::os::raw::c_uint); +} +extern "C" { + pub fn rand_r(__seed: *mut ::std::os::raw::c_uint) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn drand48() -> f64; +} +extern "C" { + pub fn erand48(__xsubi: *mut ::std::os::raw::c_ushort) -> f64; +} +extern "C" { + pub fn lrand48() -> ::std::os::raw::c_long; +} +extern "C" { + pub fn nrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn mrand48() -> ::std::os::raw::c_long; +} +extern "C" { + pub fn jrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn srand48(__seedval: ::std::os::raw::c_long); +} +extern "C" { + pub fn seed48(__seed16v: *mut ::std::os::raw::c_ushort) -> *mut ::std::os::raw::c_ushort; +} +extern "C" { + pub fn lcong48(__param: *mut ::std::os::raw::c_ushort); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct drand48_data { + pub __x: [::std::os::raw::c_ushort; 3usize], + pub __old_x: [::std::os::raw::c_ushort; 3usize], + pub __c: ::std::os::raw::c_ushort, + pub __init: ::std::os::raw::c_ushort, + pub __a: ::std::os::raw::c_ulonglong, +} +#[test] +fn bindgen_test_layout_drand48_data() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(drand48_data)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(drand48_data)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__x as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__old_x as *const _ as usize }, + 6usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__old_x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__c as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__c) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__init as *const _ as usize }, + 14usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__init) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__a as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__a) + ) + ); +} +extern "C" { + pub fn drand48_r(__buffer: *mut drand48_data, __result: *mut f64) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn erand48_r( + __xsubi: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + __result: *mut f64, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn lrand48_r( + __buffer: *mut drand48_data, + __result: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn nrand48_r( + __xsubi: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + __result: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mrand48_r( + __buffer: *mut drand48_data, + __result: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn jrand48_r( + __xsubi: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + __result: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn srand48_r( + __seedval: ::std::os::raw::c_long, + __buffer: *mut drand48_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn seed48_r( + __seed16v: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn lcong48_r( + __param: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn malloc(__size: ::std::os::raw::c_ulong) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn calloc( + __nmemb: ::std::os::raw::c_ulong, + __size: ::std::os::raw::c_ulong, + ) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn realloc( + __ptr: *mut ::std::os::raw::c_void, + __size: ::std::os::raw::c_ulong, + ) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn reallocarray( + __ptr: *mut ::std::os::raw::c_void, + __nmemb: size_t, + __size: size_t, + ) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn free(__ptr: *mut ::std::os::raw::c_void); +} +extern "C" { + pub fn alloca(__size: ::std::os::raw::c_ulong) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn valloc(__size: size_t) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn posix_memalign( + __memptr: *mut *mut ::std::os::raw::c_void, + __alignment: size_t, + __size: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn aligned_alloc(__alignment: size_t, __size: size_t) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn abort(); +} +extern "C" { + pub fn atexit(__func: ::std::option::Option) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn at_quick_exit( + __func: ::std::option::Option, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn on_exit( + __func: ::std::option::Option< + unsafe extern "C" fn( + __status: ::std::os::raw::c_int, + __arg: *mut ::std::os::raw::c_void, + ), + >, + __arg: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn exit(__status: ::std::os::raw::c_int); +} +extern "C" { + pub fn quick_exit(__status: ::std::os::raw::c_int); +} +extern "C" { + pub fn _Exit(__status: ::std::os::raw::c_int); +} +extern "C" { + pub fn getenv(__name: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn putenv(__string: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn setenv( + __name: *const ::std::os::raw::c_char, + __value: *const ::std::os::raw::c_char, + __replace: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn unsetenv(__name: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn clearenv() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mktemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn mkstemp(__template: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mkstemps( + __template: *mut ::std::os::raw::c_char, + __suffixlen: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mkdtemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn system(__command: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn realpath( + __name: *const ::std::os::raw::c_char, + __resolved: *mut ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_char; +} +pub type __compar_fn_t = ::std::option::Option< + unsafe extern "C" fn( + arg1: *const ::std::os::raw::c_void, + arg2: *const ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, +>; +extern "C" { + pub fn bsearch( + __key: *const ::std::os::raw::c_void, + __base: *const ::std::os::raw::c_void, + __nmemb: size_t, + __size: size_t, + __compar: __compar_fn_t, + ) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn qsort( + __base: *mut ::std::os::raw::c_void, + __nmemb: size_t, + __size: size_t, + __compar: __compar_fn_t, + ); +} +extern "C" { + pub fn abs(__x: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn labs(__x: ::std::os::raw::c_long) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn llabs(__x: ::std::os::raw::c_longlong) -> ::std::os::raw::c_longlong; +} +extern "C" { + pub fn div(__numer: ::std::os::raw::c_int, __denom: ::std::os::raw::c_int) -> div_t; +} +extern "C" { + pub fn ldiv(__numer: ::std::os::raw::c_long, __denom: ::std::os::raw::c_long) -> ldiv_t; +} +extern "C" { + pub fn lldiv( + __numer: ::std::os::raw::c_longlong, + __denom: ::std::os::raw::c_longlong, + ) -> lldiv_t; +} +extern "C" { + pub fn ecvt( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn fcvt( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn gcvt( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn qecvt( + __value: u128, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn qfcvt( + __value: u128, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn qgcvt( + __value: u128, + __ndigit: ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn ecvt_r( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + __len: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn fcvt_r( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + __len: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn qecvt_r( + __value: u128, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + __len: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn qfcvt_r( + __value: u128, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + __len: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mblen(__s: *const ::std::os::raw::c_char, __n: size_t) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mbtowc( + __pwc: *mut wchar_t, + __s: *const ::std::os::raw::c_char, + __n: size_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn wctomb(__s: *mut ::std::os::raw::c_char, __wchar: wchar_t) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mbstowcs( + __pwcs: *mut wchar_t, + __s: *const ::std::os::raw::c_char, + __n: size_t, + ) -> size_t; +} +extern "C" { + pub fn wcstombs( + __s: *mut ::std::os::raw::c_char, + __pwcs: *const wchar_t, + __n: size_t, + ) -> size_t; +} +extern "C" { + pub fn rpmatch(__response: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getsubopt( + __optionp: *mut *mut ::std::os::raw::c_char, + __tokens: *const *mut ::std::os::raw::c_char, + __valuep: *mut *mut ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn getloadavg(__loadavg: *mut f64, __nelem: ::std::os::raw::c_int) + -> ::std::os::raw::c_int; +} +pub const N_Vector_ID_SUNDIALS_NVEC_SERIAL: N_Vector_ID = 0; +pub const N_Vector_ID_SUNDIALS_NVEC_PARALLEL: N_Vector_ID = 1; +pub const N_Vector_ID_SUNDIALS_NVEC_OPENMP: N_Vector_ID = 2; +pub const N_Vector_ID_SUNDIALS_NVEC_PTHREADS: N_Vector_ID = 3; +pub const N_Vector_ID_SUNDIALS_NVEC_PARHYP: N_Vector_ID = 4; +pub const N_Vector_ID_SUNDIALS_NVEC_PETSC: N_Vector_ID = 5; +pub const N_Vector_ID_SUNDIALS_NVEC_CUDA: N_Vector_ID = 6; +pub const N_Vector_ID_SUNDIALS_NVEC_HIP: N_Vector_ID = 7; +pub const N_Vector_ID_SUNDIALS_NVEC_SYCL: N_Vector_ID = 8; +pub const N_Vector_ID_SUNDIALS_NVEC_RAJA: N_Vector_ID = 9; +pub const N_Vector_ID_SUNDIALS_NVEC_OPENMPDEV: N_Vector_ID = 10; +pub const N_Vector_ID_SUNDIALS_NVEC_TRILINOS: N_Vector_ID = 11; +pub const N_Vector_ID_SUNDIALS_NVEC_MANYVECTOR: N_Vector_ID = 12; +pub const N_Vector_ID_SUNDIALS_NVEC_MPIMANYVECTOR: N_Vector_ID = 13; +pub const N_Vector_ID_SUNDIALS_NVEC_MPIPLUSX: N_Vector_ID = 14; +pub const N_Vector_ID_SUNDIALS_NVEC_CUSTOM: N_Vector_ID = 15; +pub type N_Vector_ID = ::std::os::raw::c_uint; +pub type N_Vector_Ops = *mut _generic_N_Vector_Ops; +pub type N_Vector = *mut _generic_N_Vector; +pub type N_Vector_S = *mut N_Vector; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _generic_N_Vector_Ops { + pub nvgetvectorid: ::std::option::Option N_Vector_ID>, + pub nvclone: ::std::option::Option N_Vector>, + pub nvcloneempty: ::std::option::Option N_Vector>, + pub nvdestroy: ::std::option::Option, + pub nvspace: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: *mut sunindextype, arg3: *mut sunindextype), + >, + pub nvgetarraypointer: + ::std::option::Option *mut realtype>, + pub nvgetdevicearraypointer: + ::std::option::Option *mut realtype>, + pub nvsetarraypointer: + ::std::option::Option, + pub nvgetcommunicator: + ::std::option::Option *mut ::std::os::raw::c_void>, + pub nvgetlength: ::std::option::Option sunindextype>, + pub nvlinearsum: ::std::option::Option< + unsafe extern "C" fn( + arg1: realtype, + arg2: N_Vector, + arg3: realtype, + arg4: N_Vector, + arg5: N_Vector, + ), + >, + pub nvconst: ::std::option::Option, + pub nvprod: + ::std::option::Option, + pub nvdiv: + ::std::option::Option, + pub nvscale: + ::std::option::Option, + pub nvabs: ::std::option::Option, + pub nvinv: ::std::option::Option, + pub nvaddconst: + ::std::option::Option, + pub nvdotprod: + ::std::option::Option realtype>, + pub nvmaxnorm: ::std::option::Option realtype>, + pub nvwrmsnorm: + ::std::option::Option realtype>, + pub nvwrmsnormmask: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: N_Vector, arg3: N_Vector) -> realtype, + >, + pub nvmin: ::std::option::Option realtype>, + pub nvwl2norm: + ::std::option::Option realtype>, + pub nvl1norm: ::std::option::Option realtype>, + pub nvcompare: + ::std::option::Option, + pub nvinvtest: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: N_Vector) -> ::std::os::raw::c_int, + >, + pub nvconstrmask: ::std::option::Option< + unsafe extern "C" fn( + arg1: N_Vector, + arg2: N_Vector, + arg3: N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvminquotient: + ::std::option::Option realtype>, + pub nvlinearcombination: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: *mut realtype, + arg3: *mut N_Vector, + arg4: N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvscaleaddmulti: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: *mut realtype, + arg3: N_Vector, + arg4: *mut N_Vector, + arg5: *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvdotprodmulti: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: N_Vector, + arg3: *mut N_Vector, + arg4: *mut realtype, + ) -> ::std::os::raw::c_int, + >, + pub nvlinearsumvectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: realtype, + arg3: *mut N_Vector, + arg4: realtype, + arg5: *mut N_Vector, + arg6: *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvscalevectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: *mut realtype, + arg3: *mut N_Vector, + arg4: *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvconstvectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: realtype, + arg3: *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvwrmsnormvectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: *mut N_Vector, + arg3: *mut N_Vector, + arg4: *mut realtype, + ) -> ::std::os::raw::c_int, + >, + pub nvwrmsnormmaskvectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: *mut N_Vector, + arg3: *mut N_Vector, + arg4: N_Vector, + arg5: *mut realtype, + ) -> ::std::os::raw::c_int, + >, + pub nvscaleaddmultivectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: ::std::os::raw::c_int, + arg3: *mut realtype, + arg4: *mut N_Vector, + arg5: *mut *mut N_Vector, + arg6: *mut *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvlinearcombinationvectorarray: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: ::std::os::raw::c_int, + arg3: *mut realtype, + arg4: *mut *mut N_Vector, + arg5: *mut N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvdotprodlocal: + ::std::option::Option realtype>, + pub nvmaxnormlocal: ::std::option::Option realtype>, + pub nvminlocal: ::std::option::Option realtype>, + pub nvl1normlocal: ::std::option::Option realtype>, + pub nvinvtestlocal: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: N_Vector) -> ::std::os::raw::c_int, + >, + pub nvconstrmasklocal: ::std::option::Option< + unsafe extern "C" fn( + arg1: N_Vector, + arg2: N_Vector, + arg3: N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub nvminquotientlocal: + ::std::option::Option realtype>, + pub nvwsqrsumlocal: + ::std::option::Option realtype>, + pub nvwsqrsummasklocal: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: N_Vector, arg3: N_Vector) -> realtype, + >, + pub nvbufsize: ::std::option::Option< + unsafe extern "C" fn(arg1: N_Vector, arg2: *mut sunindextype) -> ::std::os::raw::c_int, + >, + pub nvbufpack: ::std::option::Option< + unsafe extern "C" fn( + arg1: N_Vector, + arg2: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, + >, + pub nvbufunpack: ::std::option::Option< + unsafe extern "C" fn( + arg1: N_Vector, + arg2: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, + >, + pub nvprint: ::std::option::Option, + pub nvprintfile: ::std::option::Option, +} +#[test] +fn bindgen_test_layout__generic_N_Vector_Ops() { + assert_eq!( + ::std::mem::size_of::<_generic_N_Vector_Ops>(), + 424usize, + concat!("Size of: ", stringify!(_generic_N_Vector_Ops)) + ); + assert_eq!( + ::std::mem::align_of::<_generic_N_Vector_Ops>(), + 8usize, + concat!("Alignment of ", stringify!(_generic_N_Vector_Ops)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvgetvectorid as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvgetvectorid) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvclone as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvclone) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvcloneempty as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvcloneempty) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvdestroy as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvdestroy) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvspace as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvspace) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvgetarraypointer as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvgetarraypointer) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvgetdevicearraypointer as *const _ + as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvgetdevicearraypointer) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvsetarraypointer as *const _ as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvsetarraypointer) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvgetcommunicator as *const _ as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvgetcommunicator) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvgetlength as *const _ as usize + }, + 72usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvgetlength) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvlinearsum as *const _ as usize + }, + 80usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvlinearsum) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvconst as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvconst) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvprod as *const _ as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvprod) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvdiv as *const _ as usize }, + 104usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvdiv) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvscale as *const _ as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvscale) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvabs as *const _ as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvabs) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvinv as *const _ as usize }, + 128usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvinv) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvaddconst as *const _ as usize + }, + 136usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvaddconst) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvdotprod as *const _ as usize }, + 144usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvdotprod) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvmaxnorm as *const _ as usize }, + 152usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvmaxnorm) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwrmsnorm as *const _ as usize + }, + 160usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwrmsnorm) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwrmsnormmask as *const _ as usize + }, + 168usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwrmsnormmask) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvmin as *const _ as usize }, + 176usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvmin) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwl2norm as *const _ as usize }, + 184usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwl2norm) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvl1norm as *const _ as usize }, + 192usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvl1norm) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvcompare as *const _ as usize }, + 200usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvcompare) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvinvtest as *const _ as usize }, + 208usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvinvtest) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvconstrmask as *const _ as usize + }, + 216usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvconstrmask) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvminquotient as *const _ as usize + }, + 224usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvminquotient) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvlinearcombination as *const _ + as usize + }, + 232usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvlinearcombination) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvscaleaddmulti as *const _ as usize + }, + 240usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvscaleaddmulti) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvdotprodmulti as *const _ as usize + }, + 248usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvdotprodmulti) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvlinearsumvectorarray as *const _ + as usize + }, + 256usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvlinearsumvectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvscalevectorarray as *const _ + as usize + }, + 264usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvscalevectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvconstvectorarray as *const _ + as usize + }, + 272usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvconstvectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwrmsnormvectorarray as *const _ + as usize + }, + 280usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwrmsnormvectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwrmsnormmaskvectorarray as *const _ + as usize + }, + 288usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwrmsnormmaskvectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvscaleaddmultivectorarray as *const _ + as usize + }, + 296usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvscaleaddmultivectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvlinearcombinationvectorarray + as *const _ as usize + }, + 304usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvlinearcombinationvectorarray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvdotprodlocal as *const _ as usize + }, + 312usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvdotprodlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvmaxnormlocal as *const _ as usize + }, + 320usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvmaxnormlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvminlocal as *const _ as usize + }, + 328usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvminlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvl1normlocal as *const _ as usize + }, + 336usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvl1normlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvinvtestlocal as *const _ as usize + }, + 344usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvinvtestlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvconstrmasklocal as *const _ as usize + }, + 352usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvconstrmasklocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvminquotientlocal as *const _ + as usize + }, + 360usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvminquotientlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwsqrsumlocal as *const _ as usize + }, + 368usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwsqrsumlocal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvwsqrsummasklocal as *const _ + as usize + }, + 376usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvwsqrsummasklocal) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvbufsize as *const _ as usize }, + 384usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvbufsize) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvbufpack as *const _ as usize }, + 392usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvbufpack) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvbufunpack as *const _ as usize + }, + 400usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvbufunpack) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvprint as *const _ as usize }, + 408usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvprint) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_N_Vector_Ops>())).nvprintfile as *const _ as usize + }, + 416usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector_Ops), + "::", + stringify!(nvprintfile) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _generic_N_Vector { + pub content: *mut ::std::os::raw::c_void, + pub ops: N_Vector_Ops, +} +#[test] +fn bindgen_test_layout__generic_N_Vector() { + assert_eq!( + ::std::mem::size_of::<_generic_N_Vector>(), + 16usize, + concat!("Size of: ", stringify!(_generic_N_Vector)) + ); + assert_eq!( + ::std::mem::align_of::<_generic_N_Vector>(), + 8usize, + concat!("Alignment of ", stringify!(_generic_N_Vector)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector>())).content as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector), + "::", + stringify!(content) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_N_Vector>())).ops as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_generic_N_Vector), + "::", + stringify!(ops) + ) + ); +} +extern "C" { + pub fn N_VNewEmpty() -> N_Vector; +} +extern "C" { + pub fn N_VFreeEmpty(v: N_Vector); +} +extern "C" { + pub fn N_VCopyOps(w: N_Vector, v: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VGetVectorID(w: N_Vector) -> N_Vector_ID; +} +extern "C" { + pub fn N_VClone(w: N_Vector) -> N_Vector; +} +extern "C" { + pub fn N_VCloneEmpty(w: N_Vector) -> N_Vector; +} +extern "C" { + pub fn N_VDestroy(v: N_Vector); +} +extern "C" { + pub fn N_VSpace(v: N_Vector, lrw: *mut sunindextype, liw: *mut sunindextype); +} +extern "C" { + pub fn N_VGetArrayPointer(v: N_Vector) -> *mut realtype; +} +extern "C" { + pub fn N_VGetDeviceArrayPointer(v: N_Vector) -> *mut realtype; +} +extern "C" { + pub fn N_VSetArrayPointer(v_data: *mut realtype, v: N_Vector); +} +extern "C" { + pub fn N_VGetCommunicator(v: N_Vector) -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn N_VGetLength(v: N_Vector) -> sunindextype; +} +extern "C" { + pub fn N_VLinearSum(a: realtype, x: N_Vector, b: realtype, y: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VConst(c: realtype, z: N_Vector); +} +extern "C" { + pub fn N_VProd(x: N_Vector, y: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VDiv(x: N_Vector, y: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VScale(c: realtype, x: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VAbs(x: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VInv(x: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VAddConst(x: N_Vector, b: realtype, z: N_Vector); +} +extern "C" { + pub fn N_VDotProd(x: N_Vector, y: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VMaxNorm(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWrmsNorm(x: N_Vector, w: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWrmsNormMask(x: N_Vector, w: N_Vector, id: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VMin(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWL2Norm(x: N_Vector, w: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VL1Norm(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VCompare(c: realtype, x: N_Vector, z: N_Vector); +} +extern "C" { + pub fn N_VInvTest(x: N_Vector, z: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VConstrMask(c: N_Vector, x: N_Vector, m: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VMinQuotient(num: N_Vector, denom: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VLinearCombination( + nvec: ::std::os::raw::c_int, + c: *mut realtype, + X: *mut N_Vector, + z: N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VScaleAddMulti( + nvec: ::std::os::raw::c_int, + a: *mut realtype, + x: N_Vector, + Y: *mut N_Vector, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VDotProdMulti( + nvec: ::std::os::raw::c_int, + x: N_Vector, + Y: *mut N_Vector, + dotprods: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VLinearSumVectorArray( + nvec: ::std::os::raw::c_int, + a: realtype, + X: *mut N_Vector, + b: realtype, + Y: *mut N_Vector, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VScaleVectorArray( + nvec: ::std::os::raw::c_int, + c: *mut realtype, + X: *mut N_Vector, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VConstVectorArray( + nvec: ::std::os::raw::c_int, + c: realtype, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VWrmsNormVectorArray( + nvec: ::std::os::raw::c_int, + X: *mut N_Vector, + W: *mut N_Vector, + nrm: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VWrmsNormMaskVectorArray( + nvec: ::std::os::raw::c_int, + X: *mut N_Vector, + W: *mut N_Vector, + id: N_Vector, + nrm: *mut realtype, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VScaleAddMultiVectorArray( + nvec: ::std::os::raw::c_int, + nsum: ::std::os::raw::c_int, + a: *mut realtype, + X: *mut N_Vector, + Y: *mut *mut N_Vector, + Z: *mut *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VLinearCombinationVectorArray( + nvec: ::std::os::raw::c_int, + nsum: ::std::os::raw::c_int, + c: *mut realtype, + X: *mut *mut N_Vector, + Z: *mut N_Vector, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VDotProdLocal(x: N_Vector, y: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VMaxNormLocal(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VMinLocal(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VL1NormLocal(x: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWSqrSumLocal(x: N_Vector, w: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VWSqrSumMaskLocal(x: N_Vector, w: N_Vector, id: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VInvTestLocal(x: N_Vector, z: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VConstrMaskLocal(c: N_Vector, x: N_Vector, m: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VMinQuotientLocal(num: N_Vector, denom: N_Vector) -> realtype; +} +extern "C" { + pub fn N_VBufSize(x: N_Vector, size: *mut sunindextype) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VBufPack(x: N_Vector, buf: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VBufUnpack(x: N_Vector, buf: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn N_VNewVectorArray(count: ::std::os::raw::c_int) -> *mut N_Vector; +} +extern "C" { + pub fn N_VCloneEmptyVectorArray(count: ::std::os::raw::c_int, w: N_Vector) -> *mut N_Vector; +} +extern "C" { + pub fn N_VCloneVectorArray(count: ::std::os::raw::c_int, w: N_Vector) -> *mut N_Vector; +} +extern "C" { + pub fn N_VDestroyVectorArray(vs: *mut N_Vector, count: ::std::os::raw::c_int); +} +extern "C" { + pub fn N_VGetVecAtIndexVectorArray(vs: *mut N_Vector, index: ::std::os::raw::c_int) + -> N_Vector; +} +extern "C" { + pub fn N_VSetVecAtIndexVectorArray( + vs: *mut N_Vector, + index: ::std::os::raw::c_int, + w: N_Vector, + ); +} +extern "C" { + pub fn N_VPrint(v: N_Vector); +} +extern "C" { + pub fn N_VPrintFile(v: N_Vector, outfile: *mut FILE); +} +pub const SUNMatrix_ID_SUNMATRIX_DENSE: SUNMatrix_ID = 0; +pub const SUNMatrix_ID_SUNMATRIX_MAGMADENSE: SUNMatrix_ID = 1; +pub const SUNMatrix_ID_SUNMATRIX_BAND: SUNMatrix_ID = 2; +pub const SUNMatrix_ID_SUNMATRIX_SPARSE: SUNMatrix_ID = 3; +pub const SUNMatrix_ID_SUNMATRIX_SLUNRLOC: SUNMatrix_ID = 4; +pub const SUNMatrix_ID_SUNMATRIX_CUSPARSE: SUNMatrix_ID = 5; +pub const SUNMatrix_ID_SUNMATRIX_CUSTOM: SUNMatrix_ID = 6; +pub type SUNMatrix_ID = ::std::os::raw::c_uint; +pub type SUNMatrix_Ops = *mut _generic_SUNMatrix_Ops; +pub type SUNMatrix = *mut _generic_SUNMatrix; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _generic_SUNMatrix_Ops { + pub getid: ::std::option::Option SUNMatrix_ID>, + pub clone: ::std::option::Option SUNMatrix>, + pub destroy: ::std::option::Option, + pub zero: ::std::option::Option ::std::os::raw::c_int>, + pub copy: ::std::option::Option< + unsafe extern "C" fn(arg1: SUNMatrix, arg2: SUNMatrix) -> ::std::os::raw::c_int, + >, + pub scaleadd: ::std::option::Option< + unsafe extern "C" fn( + arg1: realtype, + arg2: SUNMatrix, + arg3: SUNMatrix, + ) -> ::std::os::raw::c_int, + >, + pub scaleaddi: ::std::option::Option< + unsafe extern "C" fn(arg1: realtype, arg2: SUNMatrix) -> ::std::os::raw::c_int, + >, + pub matvecsetup: + ::std::option::Option ::std::os::raw::c_int>, + pub matvec: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNMatrix, + arg2: N_Vector, + arg3: N_Vector, + ) -> ::std::os::raw::c_int, + >, + pub space: ::std::option::Option< + unsafe extern "C" fn( + arg1: SUNMatrix, + arg2: *mut ::std::os::raw::c_long, + arg3: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int, + >, +} +#[test] +fn bindgen_test_layout__generic_SUNMatrix_Ops() { + assert_eq!( + ::std::mem::size_of::<_generic_SUNMatrix_Ops>(), + 80usize, + concat!("Size of: ", stringify!(_generic_SUNMatrix_Ops)) + ); + assert_eq!( + ::std::mem::align_of::<_generic_SUNMatrix_Ops>(), + 8usize, + concat!("Alignment of ", stringify!(_generic_SUNMatrix_Ops)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).getid as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(getid) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).clone as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(clone) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).destroy as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(destroy) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).zero as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(zero) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).copy as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(copy) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).scaleadd as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(scaleadd) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).scaleaddi as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(scaleaddi) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).matvecsetup as *const _ as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(matvecsetup) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).matvec as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(matvec) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix_Ops>())).space as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix_Ops), + "::", + stringify!(space) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _generic_SUNMatrix { + pub content: *mut ::std::os::raw::c_void, + pub ops: SUNMatrix_Ops, +} +#[test] +fn bindgen_test_layout__generic_SUNMatrix() { + assert_eq!( + ::std::mem::size_of::<_generic_SUNMatrix>(), + 16usize, + concat!("Size of: ", stringify!(_generic_SUNMatrix)) + ); + assert_eq!( + ::std::mem::align_of::<_generic_SUNMatrix>(), + 8usize, + concat!("Alignment of ", stringify!(_generic_SUNMatrix)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix>())).content as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix), + "::", + stringify!(content) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_generic_SUNMatrix>())).ops as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_generic_SUNMatrix), + "::", + stringify!(ops) + ) + ); +} +extern "C" { + pub fn SUNMatNewEmpty() -> SUNMatrix; +} +extern "C" { + pub fn SUNMatFreeEmpty(A: SUNMatrix); +} +extern "C" { + pub fn SUNMatCopyOps(A: SUNMatrix, B: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatGetID(A: SUNMatrix) -> SUNMatrix_ID; +} +extern "C" { + pub fn SUNMatClone(A: SUNMatrix) -> SUNMatrix; +} +extern "C" { + pub fn SUNMatDestroy(A: SUNMatrix); +} +extern "C" { + pub fn SUNMatZero(A: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatCopy(A: SUNMatrix, B: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatScaleAdd(c: realtype, A: SUNMatrix, B: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatScaleAddI(c: realtype, A: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatMatvecSetup(A: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatMatvec(A: SUNMatrix, x: N_Vector, y: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatSpace( + A: SUNMatrix, + lenrw: *mut ::std::os::raw::c_long, + leniw: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _SUNMatrixContent_Dense { + pub M: sunindextype, + pub N: sunindextype, + pub data: *mut realtype, + pub ldata: sunindextype, + pub cols: *mut *mut realtype, +} +#[test] +fn bindgen_test_layout__SUNMatrixContent_Dense() { + assert_eq!( + ::std::mem::size_of::<_SUNMatrixContent_Dense>(), + 40usize, + concat!("Size of: ", stringify!(_SUNMatrixContent_Dense)) + ); + assert_eq!( + ::std::mem::align_of::<_SUNMatrixContent_Dense>(), + 8usize, + concat!("Alignment of ", stringify!(_SUNMatrixContent_Dense)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_SUNMatrixContent_Dense>())).M as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_SUNMatrixContent_Dense), + "::", + stringify!(M) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_SUNMatrixContent_Dense>())).N as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_SUNMatrixContent_Dense), + "::", + stringify!(N) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_SUNMatrixContent_Dense>())).data as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_SUNMatrixContent_Dense), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_SUNMatrixContent_Dense>())).ldata as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_SUNMatrixContent_Dense), + "::", + stringify!(ldata) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_SUNMatrixContent_Dense>())).cols as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(_SUNMatrixContent_Dense), + "::", + stringify!(cols) + ) + ); +} +pub type SUNMatrixContent_Dense = *mut _SUNMatrixContent_Dense; +extern "C" { + pub fn SUNDenseMatrix(M: sunindextype, N: sunindextype) -> SUNMatrix; +} +extern "C" { + pub fn SUNDenseMatrix_Print(A: SUNMatrix, outfile: *mut FILE); +} +extern "C" { + pub fn SUNDenseMatrix_Rows(A: SUNMatrix) -> sunindextype; +} +extern "C" { + pub fn SUNDenseMatrix_Columns(A: SUNMatrix) -> sunindextype; +} +extern "C" { + pub fn SUNDenseMatrix_LData(A: SUNMatrix) -> sunindextype; +} +extern "C" { + pub fn SUNDenseMatrix_Data(A: SUNMatrix) -> *mut realtype; +} +extern "C" { + pub fn SUNDenseMatrix_Cols(A: SUNMatrix) -> *mut *mut realtype; +} +extern "C" { + pub fn SUNDenseMatrix_Column(A: SUNMatrix, j: sunindextype) -> *mut realtype; +} +extern "C" { + pub fn SUNMatGetID_Dense(A: SUNMatrix) -> SUNMatrix_ID; +} +extern "C" { + pub fn SUNMatClone_Dense(A: SUNMatrix) -> SUNMatrix; +} +extern "C" { + pub fn SUNMatDestroy_Dense(A: SUNMatrix); +} +extern "C" { + pub fn SUNMatZero_Dense(A: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatCopy_Dense(A: SUNMatrix, B: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatScaleAdd_Dense(c: realtype, A: SUNMatrix, B: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatScaleAddI_Dense(c: realtype, A: SUNMatrix) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatMatvec_Dense(A: SUNMatrix, x: N_Vector, y: N_Vector) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SUNMatSpace_Dense( + A: SUNMatrix, + lenrw: *mut ::std::os::raw::c_long, + leniw: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +pub type __builtin_va_list = [__va_list_tag; 1usize]; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __va_list_tag { + pub gp_offset: ::std::os::raw::c_uint, + pub fp_offset: ::std::os::raw::c_uint, + pub overflow_arg_area: *mut ::std::os::raw::c_void, + pub reg_save_area: *mut ::std::os::raw::c_void, +} +#[test] +fn bindgen_test_layout___va_list_tag() { + assert_eq!( + ::std::mem::size_of::<__va_list_tag>(), + 24usize, + concat!("Size of: ", stringify!(__va_list_tag)) + ); + assert_eq!( + ::std::mem::align_of::<__va_list_tag>(), + 8usize, + concat!("Alignment of ", stringify!(__va_list_tag)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__va_list_tag>())).gp_offset as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__va_list_tag), + "::", + stringify!(gp_offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__va_list_tag>())).fp_offset as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__va_list_tag), + "::", + stringify!(fp_offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__va_list_tag>())).overflow_arg_area as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(__va_list_tag), + "::", + stringify!(overflow_arg_area) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__va_list_tag>())).reg_save_area as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(__va_list_tag), + "::", + stringify!(reg_save_area) + ) + ); +} diff --git a/cvode-wrap/Cargo.toml b/cvode-wrap/Cargo.toml new file mode 100644 index 0000000..280ea9b --- /dev/null +++ b/cvode-wrap/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "cvode-wrap" +version = "0.1.0" +authors = ["Arthur Carcano "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +cvode-5-sys = {path = "../cvode-5-sys"} \ No newline at end of file diff --git a/cvode-wrap/src/lib.rs b/cvode-wrap/src/lib.rs new file mode 100644 index 0000000..f1c50c1 --- /dev/null +++ b/cvode-wrap/src/lib.rs @@ -0,0 +1,204 @@ +use std::convert::TryInto; +use std::{ffi::c_void, intrinsics::transmute, os::raw::c_int, ptr::NonNull}; + +use cvode::SUNMatrix; +use cvode_5_sys::{ + cvode::{self, realtype, SUNLinearSolver}, + nvector_serial::N_VGetArrayPointer, +}; + +mod nvector; +pub use nvector::NVectorSerial; + +pub type F = realtype; +pub type CVector = cvode::N_Vector; + +#[repr(u32)] +#[derive(Debug)] +pub enum LinearMultistepMethod { + ADAMS = cvode::CV_ADAMS, + BDF = cvode::CV_BDF, +} + +#[repr(C)] +struct CvodeMemoryBlock { + _private: [u8; 0], +} + +#[repr(transparent)] +#[derive(Debug, Clone, Copy)] +struct CvodeMemoryBlockNonNullPtr { + ptr: NonNull, +} + +impl CvodeMemoryBlockNonNullPtr { + fn new(ptr: NonNull) -> Self { + Self { ptr } + } + + fn as_raw(self) -> *mut c_void { + self.ptr.as_ptr() as *mut c_void + } +} + +impl From> for CvodeMemoryBlockNonNullPtr { + fn from(x: NonNull) -> Self { + Self::new(x) + } +} + +pub struct Solver { + mem: CvodeMemoryBlockNonNullPtr, + _y0: NVectorSerial, + _sunmatrix: SUNMatrix, + _linsolver: SUNLinearSolver, +} + +pub enum RhsResult { + Ok, + RecoverableError(u8), + NonRecoverableError(u8), +} + +type RhsF = fn(F, &[F; N], &mut [F; N], *mut c_void) -> RhsResult; + +pub fn wrap_f( + f: RhsF, + t: F, + y: CVector, + ydot: CVector, + data: *mut c_void, +) -> c_int { + let y = unsafe { transmute(N_VGetArrayPointer(y as _)) }; + let ydot = unsafe { transmute(N_VGetArrayPointer(ydot as _)) }; + let res = f(t, y, ydot, data); + match res { + RhsResult::Ok => 0, + RhsResult::RecoverableError(e) => e as c_int, + RhsResult::NonRecoverableError(e) => -(e as c_int), + } +} + +#[macro_export] +macro_rules! wrap { + ($wrapped_f_name: ident, $f_name: ident) => { + extern "C" fn $wrapped_f_name( + t: F, + y: CVector, + ydot: CVector, + data: *mut std::ffi::c_void, + ) -> std::os::raw::c_int { + wrap_f($f_name, t, y, ydot, data) + } + }; +} + +type RhsFCtype = extern "C" fn(F, CVector, CVector, *mut c_void) -> c_int; + +#[repr(u32)] +pub enum StepKind { + Normal = cvode::CV_NORMAL, + OneStep = cvode::CV_ONE_STEP, +} + +#[derive(Debug)] +pub enum Error { + NullPointerError { func_id: &'static str }, + ErrorCode { func_id: &'static str, flag: c_int }, +} + +pub type Result = std::result::Result; + +fn check_non_null(ptr: *mut T, func_id: &'static str) -> Result> { + NonNull::new(ptr).ok_or_else(|| Error::NullPointerError { func_id }) +} + +fn check_flag_is_succes(flag: c_int, func_id: &'static str) -> Result<()> { + if flag == cvode::CV_SUCCESS as i32 { + Ok(()) + } else { + Err(Error::ErrorCode { flag, func_id }) + } +} + +impl Solver { + pub fn new( + method: LinearMultistepMethod, + f: RhsFCtype, + t0: F, + y0: &[F; N], + atol: F, + rtol: F, + ) -> Result { + assert_eq!(y0.len(), N); + let mem_maybenull = unsafe { cvode::CVodeCreate(method as c_int) }; + let mem: CvodeMemoryBlockNonNullPtr = + check_non_null(mem_maybenull as *mut CvodeMemoryBlock, "CVodeCreate")?.into(); + let y0 = NVectorSerial::new_from(y0); + let flag = unsafe { cvode::CVodeInit(mem.as_raw(), Some(f), t0, y0.as_raw() as _) }; + check_flag_is_succes(flag, "CVodeInit")?; + let flag = unsafe { cvode::CVodeSStolerances(mem.as_raw(), atol, rtol) }; + check_flag_is_succes(flag, "CVodeSStolerances")?; + let matrix = unsafe { + cvode_5_sys::sunmatrix_dense::SUNDenseMatrix( + N.try_into().unwrap(), + N.try_into().unwrap(), + ) + }; + check_non_null(matrix, "SUNDenseMatrix")?; + let linsolver = unsafe { + cvode_5_sys::sunlinsol_dense::SUNDenseLinearSolver(y0.as_raw() as _, matrix as _) + }; + check_non_null(linsolver, "SUNDenseLinearSolver")?; + let flag = + unsafe { cvode::CVodeSetLinearSolver(mem.as_raw(), linsolver as _, matrix as _) }; + check_flag_is_succes(flag, "CVodeSetLinearSolver")?; + Ok(Solver { + mem, + _y0: y0, + _sunmatrix: matrix as _, + _linsolver: linsolver as _, + }) + } + + pub fn step(&mut self, tout: F, step_kind: StepKind) -> Result<(F, &[F; N])> { + let mut tret = 0.; + let flag = unsafe { + cvode::CVode( + self.mem.as_raw(), + tout, + self._y0.as_raw() as _, + &mut tret, + step_kind as c_int, + ) + }; + check_flag_is_succes(flag, "CVode")?; + Ok((tret, self._y0.as_ref())) + } +} + +impl Drop for Solver { + fn drop(&mut self) { + unsafe { cvode::CVodeFree(&mut self.mem.as_raw()) } + unsafe { cvode::SUNLinSolFree(self._linsolver) }; + unsafe { cvode::SUNMatDestroy(self._sunmatrix) }; + } +} + +#[cfg(test)] +mod tests { + use super::*; + + fn f(_t: super::F, y: &[F; 2], ydot: &mut [F; 2], _data: *mut c_void) -> RhsResult { + *ydot = [y[1], -y[0]]; + RhsResult::Ok + } + + wrap!(wrapped_f, f); + + #[test] + fn create() { + let y0 = [0., 1.]; + let _solver = Solver::new(LinearMultistepMethod::ADAMS, wrapped_f, 0., &y0, 1e-4, 1e-4); + } +} diff --git a/cvode-wrap/src/nvector.rs b/cvode-wrap/src/nvector.rs new file mode 100644 index 0000000..ec0bfed --- /dev/null +++ b/cvode-wrap/src/nvector.rs @@ -0,0 +1,51 @@ +use std::{convert::TryInto, intrinsics::transmute, ptr::NonNull}; + +use cvode_5_sys::{cvode::realtype, nvector_serial}; + +#[repr(transparent)] +#[derive(Debug)] +pub struct NVectorSerial { + inner: NonNull, +} + +impl NVectorSerial { + pub fn as_ref(&self) -> &[realtype; SIZE] { + unsafe { transmute(nvector_serial::N_VGetArrayPointer_Serial(self.as_raw())) } + } + + pub fn as_mut(&mut self) -> &mut [realtype; SIZE] { + unsafe { transmute(nvector_serial::N_VGetArrayPointer_Serial(self.as_raw())) } + } + + pub fn new() -> Self { + Self { + inner: NonNull::new(unsafe { nvector_serial::N_VNew_Serial(SIZE.try_into().unwrap()) }) + .unwrap(), + } + } + + pub fn new_from(data: &[realtype; SIZE]) -> Self { + let mut res = Self::new(); + res.as_mut().copy_from_slice(data); + res + } + + pub fn make(data: &mut [realtype; SIZE]) -> Self { + Self { + inner: NonNull::new(unsafe { + nvector_serial::N_VMake_Serial(SIZE.try_into().unwrap(), data.as_mut_ptr()) + }) + .unwrap(), + } + } + + pub fn as_raw(&self) -> nvector_serial::N_Vector { + self.inner.as_ptr() + } +} + +impl Drop for NVectorSerial { + fn drop(&mut self) { + unsafe { nvector_serial::N_VDestroy(self.as_raw()) } + } +} diff --git a/test-solver/Cargo.toml b/test-solver/Cargo.toml new file mode 100644 index 0000000..ff70778 --- /dev/null +++ b/test-solver/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "test-solver" +version = "0.1.0" +authors = ["Arthur Carcano "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +cvode-wrap = {path = "../cvode-wrap"} \ No newline at end of file diff --git a/test-solver/plot.py b/test-solver/plot.py new file mode 100644 index 0000000..07debfc --- /dev/null +++ b/test-solver/plot.py @@ -0,0 +1,7 @@ +import pandas as pd +import sys +import matplotlib.pyplot as plt + +df = pd.read_csv(sys.stdin,names=['t','x',r'\dot{x}'],index_col='t') +ax = df.plot() +plt.show() \ No newline at end of file diff --git a/test-solver/src/main.rs b/test-solver/src/main.rs new file mode 100644 index 0000000..624e622 --- /dev/null +++ b/test-solver/src/main.rs @@ -0,0 +1,23 @@ +use std::ffi::c_void; + +use cvode_wrap::*; + +fn main() { + let y0 = [0., 1.]; + //define the right-hand-side + fn f(_t: F, y: &[F; 2], ydot: &mut [F; 2], _data: *mut c_void) -> RhsResult { + *ydot = [y[1], -y[0] / 10.]; + RhsResult::Ok + } + wrap!(wrapped_f, f); + //initialize the solver + let mut solver = + Solver::new(LinearMultistepMethod::ADAMS, wrapped_f, 0., &y0, 1e-4, 1e-4).unwrap(); + //and solve + let ts: Vec<_> = (1..100).collect(); + println!("0,{},{}", y0[0], y0[1]); + for &t in &ts { + let (_tret, &[x, xdot]) = solver.step(t as _, StepKind::Normal).unwrap(); + println!("{},{},{}", t, x, xdot); + } +}