proj-sys 0.18.1

Rust bindings for PROJ v7.1.x
Documentation
/* THESE ARE NOT LIVE BINDINGS */
/* THEY EXIST FOR USE BY DOCS-RS ONLY */
/* automatically generated by rust-bindgen */

pub const PROJ_VERSION_MAJOR: u32 = 7;
pub const PROJ_VERSION_MINOR: u32 = 1;
pub const PROJ_VERSION_PATCH: u32 = 0;
pub const PJ_DEFAULT_CTX: u32 = 0;
pub type wchar_t = ::std::os::raw::c_int;
extern "C" {
    pub static mut pj_release: [::std::os::raw::c_char; 0usize];
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PJ_AREA {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct P5_FACTORS {
    pub meridional_scale: f64,
    pub parallel_scale: f64,
    pub areal_scale: f64,
    pub angular_distortion: f64,
    pub meridian_parallel_angle: f64,
    pub meridian_convergence: f64,
    pub tissot_semimajor: f64,
    pub tissot_semiminor: f64,
    pub dx_dlam: f64,
    pub dx_dphi: f64,
    pub dy_dlam: f64,
    pub dy_dphi: f64,
}
#[test]
fn bindgen_test_layout_P5_FACTORS() {
    assert_eq!(
        ::std::mem::size_of::<P5_FACTORS>(),
        96usize,
        concat!("Size of: ", stringify!(P5_FACTORS))
    );
    assert_eq!(
        ::std::mem::align_of::<P5_FACTORS>(),
        8usize,
        concat!("Alignment of ", stringify!(P5_FACTORS))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<P5_FACTORS>())).meridional_scale as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(P5_FACTORS),
            "::",
            stringify!(meridional_scale)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<P5_FACTORS>())).parallel_scale as *const _ as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(P5_FACTORS),
            "::",
            stringify!(parallel_scale)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<P5_FACTORS>())).areal_scale as *const _ as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(P5_FACTORS),
            "::",
            stringify!(areal_scale)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<P5_FACTORS>())).angular_distortion as *const _ as usize },
        24usize,
        concat!(
            "Offset of field: ",
            stringify!(P5_FACTORS),
            "::",
            stringify!(angular_distortion)
        )
    );
    assert_eq!(
        unsafe {
            &(*(::std::ptr::null::<P5_FACTORS>())).meridian_parallel_angle as *const _ as usize
        },
        32usize,
        concat!(
            "Offset of field: ",
            stringify!(P5_FACTORS),
            "::",
            stringify!(meridian_parallel_angle)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<P5_FACTORS>())).meridian_convergence as *const _ as usize },
        40usize,
        concat!(
            "Offset of field: ",
            stringify!(P5_FACTORS),
            "::",
            stringify!(meridian_convergence)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<P5_FACTORS>())).tissot_semimajor as *const _ as usize },
        48usize,
        concat!(
            "Offset of field: ",
            stringify!(P5_FACTORS),
            "::",
            stringify!(tissot_semimajor)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<P5_FACTORS>())).tissot_semiminor as *const _ as usize },
        56usize,
        concat!(
            "Offset of field: ",
            stringify!(P5_FACTORS),
            "::",
            stringify!(tissot_semiminor)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<P5_FACTORS>())).dx_dlam as *const _ as usize },
        64usize,
        concat!(
            "Offset of field: ",
            stringify!(P5_FACTORS),
            "::",
            stringify!(dx_dlam)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<P5_FACTORS>())).dx_dphi as *const _ as usize },
        72usize,
        concat!(
            "Offset of field: ",
            stringify!(P5_FACTORS),
            "::",
            stringify!(dx_dphi)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<P5_FACTORS>())).dy_dlam as *const _ as usize },
        80usize,
        concat!(
            "Offset of field: ",
            stringify!(P5_FACTORS),
            "::",
            stringify!(dy_dlam)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<P5_FACTORS>())).dy_dphi as *const _ as usize },
        88usize,
        concat!(
            "Offset of field: ",
            stringify!(P5_FACTORS),
            "::",
            stringify!(dy_dphi)
        )
    );
}
pub type PJ_FACTORS = P5_FACTORS;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PJconsts {
    _unused: [u8; 0],
}
pub type PJ = PJconsts;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PJ_LIST {
    pub id: *const ::std::os::raw::c_char,
    pub proj: ::std::option::Option<unsafe extern "C" fn(arg1: *mut PJ) -> *mut PJ>,
    pub descr: *const *const ::std::os::raw::c_char,
}
#[test]
fn bindgen_test_layout_PJ_LIST() {
    assert_eq!(
        ::std::mem::size_of::<PJ_LIST>(),
        24usize,
        concat!("Size of: ", stringify!(PJ_LIST))
    );
    assert_eq!(
        ::std::mem::align_of::<PJ_LIST>(),
        8usize,
        concat!("Alignment of ", stringify!(PJ_LIST))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_LIST>())).id as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_LIST),
            "::",
            stringify!(id)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_LIST>())).proj as *const _ as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_LIST),
            "::",
            stringify!(proj)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_LIST>())).descr as *const _ as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_LIST),
            "::",
            stringify!(descr)
        )
    );
}
pub type PJ_OPERATIONS = PJ_LIST;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PJ_ELLPS {
    pub id: *const ::std::os::raw::c_char,
    pub major: *const ::std::os::raw::c_char,
    pub ell: *const ::std::os::raw::c_char,
    pub name: *const ::std::os::raw::c_char,
}
#[test]
fn bindgen_test_layout_PJ_ELLPS() {
    assert_eq!(
        ::std::mem::size_of::<PJ_ELLPS>(),
        32usize,
        concat!("Size of: ", stringify!(PJ_ELLPS))
    );
    assert_eq!(
        ::std::mem::align_of::<PJ_ELLPS>(),
        8usize,
        concat!("Alignment of ", stringify!(PJ_ELLPS))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_ELLPS>())).id as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_ELLPS),
            "::",
            stringify!(id)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_ELLPS>())).major as *const _ as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_ELLPS),
            "::",
            stringify!(major)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_ELLPS>())).ell as *const _ as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_ELLPS),
            "::",
            stringify!(ell)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_ELLPS>())).name as *const _ as usize },
        24usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_ELLPS),
            "::",
            stringify!(name)
        )
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PJ_UNITS {
    pub id: *const ::std::os::raw::c_char,
    pub to_meter: *const ::std::os::raw::c_char,
    pub name: *const ::std::os::raw::c_char,
    pub factor: f64,
}
#[test]
fn bindgen_test_layout_PJ_UNITS() {
    assert_eq!(
        ::std::mem::size_of::<PJ_UNITS>(),
        32usize,
        concat!("Size of: ", stringify!(PJ_UNITS))
    );
    assert_eq!(
        ::std::mem::align_of::<PJ_UNITS>(),
        8usize,
        concat!("Alignment of ", stringify!(PJ_UNITS))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_UNITS>())).id as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_UNITS),
            "::",
            stringify!(id)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_UNITS>())).to_meter as *const _ as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_UNITS),
            "::",
            stringify!(to_meter)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_UNITS>())).name as *const _ as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_UNITS),
            "::",
            stringify!(name)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_UNITS>())).factor as *const _ as usize },
        24usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_UNITS),
            "::",
            stringify!(factor)
        )
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PJ_PRIME_MERIDIANS {
    pub id: *const ::std::os::raw::c_char,
    pub defn: *const ::std::os::raw::c_char,
}
#[test]
fn bindgen_test_layout_PJ_PRIME_MERIDIANS() {
    assert_eq!(
        ::std::mem::size_of::<PJ_PRIME_MERIDIANS>(),
        16usize,
        concat!("Size of: ", stringify!(PJ_PRIME_MERIDIANS))
    );
    assert_eq!(
        ::std::mem::align_of::<PJ_PRIME_MERIDIANS>(),
        8usize,
        concat!("Alignment of ", stringify!(PJ_PRIME_MERIDIANS))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_PRIME_MERIDIANS>())).id as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_PRIME_MERIDIANS),
            "::",
            stringify!(id)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_PRIME_MERIDIANS>())).defn as *const _ as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_PRIME_MERIDIANS),
            "::",
            stringify!(defn)
        )
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PJ_XYZT {
    pub x: f64,
    pub y: f64,
    pub z: f64,
    pub t: f64,
}
#[test]
fn bindgen_test_layout_PJ_XYZT() {
    assert_eq!(
        ::std::mem::size_of::<PJ_XYZT>(),
        32usize,
        concat!("Size of: ", stringify!(PJ_XYZT))
    );
    assert_eq!(
        ::std::mem::align_of::<PJ_XYZT>(),
        8usize,
        concat!("Alignment of ", stringify!(PJ_XYZT))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_XYZT>())).x as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_XYZT),
            "::",
            stringify!(x)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_XYZT>())).y as *const _ as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_XYZT),
            "::",
            stringify!(y)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_XYZT>())).z as *const _ as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_XYZT),
            "::",
            stringify!(z)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_XYZT>())).t as *const _ as usize },
        24usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_XYZT),
            "::",
            stringify!(t)
        )
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PJ_UVWT {
    pub u: f64,
    pub v: f64,
    pub w: f64,
    pub t: f64,
}
#[test]
fn bindgen_test_layout_PJ_UVWT() {
    assert_eq!(
        ::std::mem::size_of::<PJ_UVWT>(),
        32usize,
        concat!("Size of: ", stringify!(PJ_UVWT))
    );
    assert_eq!(
        ::std::mem::align_of::<PJ_UVWT>(),
        8usize,
        concat!("Alignment of ", stringify!(PJ_UVWT))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_UVWT>())).u as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_UVWT),
            "::",
            stringify!(u)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_UVWT>())).v as *const _ as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_UVWT),
            "::",
            stringify!(v)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_UVWT>())).w as *const _ as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_UVWT),
            "::",
            stringify!(w)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_UVWT>())).t as *const _ as usize },
        24usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_UVWT),
            "::",
            stringify!(t)
        )
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PJ_LPZT {
    pub lam: f64,
    pub phi: f64,
    pub z: f64,
    pub t: f64,
}
#[test]
fn bindgen_test_layout_PJ_LPZT() {
    assert_eq!(
        ::std::mem::size_of::<PJ_LPZT>(),
        32usize,
        concat!("Size of: ", stringify!(PJ_LPZT))
    );
    assert_eq!(
        ::std::mem::align_of::<PJ_LPZT>(),
        8usize,
        concat!("Alignment of ", stringify!(PJ_LPZT))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_LPZT>())).lam as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_LPZT),
            "::",
            stringify!(lam)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_LPZT>())).phi as *const _ as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_LPZT),
            "::",
            stringify!(phi)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_LPZT>())).z as *const _ as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_LPZT),
            "::",
            stringify!(z)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_LPZT>())).t as *const _ as usize },
        24usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_LPZT),
            "::",
            stringify!(t)
        )
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PJ_OPK {
    pub o: f64,
    pub p: f64,
    pub k: f64,
}
#[test]
fn bindgen_test_layout_PJ_OPK() {
    assert_eq!(
        ::std::mem::size_of::<PJ_OPK>(),
        24usize,
        concat!("Size of: ", stringify!(PJ_OPK))
    );
    assert_eq!(
        ::std::mem::align_of::<PJ_OPK>(),
        8usize,
        concat!("Alignment of ", stringify!(PJ_OPK))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_OPK>())).o as *const _ as usize },
        0usize,
        concat!("Offset of field: ", stringify!(PJ_OPK), "::", stringify!(o))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_OPK>())).p as *const _ as usize },
        8usize,
        concat!("Offset of field: ", stringify!(PJ_OPK), "::", stringify!(p))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_OPK>())).k as *const _ as usize },
        16usize,
        concat!("Offset of field: ", stringify!(PJ_OPK), "::", stringify!(k))
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PJ_ENU {
    pub e: f64,
    pub n: f64,
    pub u: f64,
}
#[test]
fn bindgen_test_layout_PJ_ENU() {
    assert_eq!(
        ::std::mem::size_of::<PJ_ENU>(),
        24usize,
        concat!("Size of: ", stringify!(PJ_ENU))
    );
    assert_eq!(
        ::std::mem::align_of::<PJ_ENU>(),
        8usize,
        concat!("Alignment of ", stringify!(PJ_ENU))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_ENU>())).e as *const _ as usize },
        0usize,
        concat!("Offset of field: ", stringify!(PJ_ENU), "::", stringify!(e))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_ENU>())).n as *const _ as usize },
        8usize,
        concat!("Offset of field: ", stringify!(PJ_ENU), "::", stringify!(n))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_ENU>())).u as *const _ as usize },
        16usize,
        concat!("Offset of field: ", stringify!(PJ_ENU), "::", stringify!(u))
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PJ_GEOD {
    pub s: f64,
    pub a1: f64,
    pub a2: f64,
}
#[test]
fn bindgen_test_layout_PJ_GEOD() {
    assert_eq!(
        ::std::mem::size_of::<PJ_GEOD>(),
        24usize,
        concat!("Size of: ", stringify!(PJ_GEOD))
    );
    assert_eq!(
        ::std::mem::align_of::<PJ_GEOD>(),
        8usize,
        concat!("Alignment of ", stringify!(PJ_GEOD))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_GEOD>())).s as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_GEOD),
            "::",
            stringify!(s)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_GEOD>())).a1 as *const _ as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_GEOD),
            "::",
            stringify!(a1)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_GEOD>())).a2 as *const _ as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_GEOD),
            "::",
            stringify!(a2)
        )
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PJ_UV {
    pub u: f64,
    pub v: f64,
}
#[test]
fn bindgen_test_layout_PJ_UV() {
    assert_eq!(
        ::std::mem::size_of::<PJ_UV>(),
        16usize,
        concat!("Size of: ", stringify!(PJ_UV))
    );
    assert_eq!(
        ::std::mem::align_of::<PJ_UV>(),
        8usize,
        concat!("Alignment of ", stringify!(PJ_UV))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_UV>())).u as *const _ as usize },
        0usize,
        concat!("Offset of field: ", stringify!(PJ_UV), "::", stringify!(u))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_UV>())).v as *const _ as usize },
        8usize,
        concat!("Offset of field: ", stringify!(PJ_UV), "::", stringify!(v))
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PJ_XY {
    pub x: f64,
    pub y: f64,
}
#[test]
fn bindgen_test_layout_PJ_XY() {
    assert_eq!(
        ::std::mem::size_of::<PJ_XY>(),
        16usize,
        concat!("Size of: ", stringify!(PJ_XY))
    );
    assert_eq!(
        ::std::mem::align_of::<PJ_XY>(),
        8usize,
        concat!("Alignment of ", stringify!(PJ_XY))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_XY>())).x as *const _ as usize },
        0usize,
        concat!("Offset of field: ", stringify!(PJ_XY), "::", stringify!(x))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_XY>())).y as *const _ as usize },
        8usize,
        concat!("Offset of field: ", stringify!(PJ_XY), "::", stringify!(y))
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PJ_LP {
    pub lam: f64,
    pub phi: f64,
}
#[test]
fn bindgen_test_layout_PJ_LP() {
    assert_eq!(
        ::std::mem::size_of::<PJ_LP>(),
        16usize,
        concat!("Size of: ", stringify!(PJ_LP))
    );
    assert_eq!(
        ::std::mem::align_of::<PJ_LP>(),
        8usize,
        concat!("Alignment of ", stringify!(PJ_LP))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_LP>())).lam as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_LP),
            "::",
            stringify!(lam)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_LP>())).phi as *const _ as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_LP),
            "::",
            stringify!(phi)
        )
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PJ_XYZ {
    pub x: f64,
    pub y: f64,
    pub z: f64,
}
#[test]
fn bindgen_test_layout_PJ_XYZ() {
    assert_eq!(
        ::std::mem::size_of::<PJ_XYZ>(),
        24usize,
        concat!("Size of: ", stringify!(PJ_XYZ))
    );
    assert_eq!(
        ::std::mem::align_of::<PJ_XYZ>(),
        8usize,
        concat!("Alignment of ", stringify!(PJ_XYZ))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_XYZ>())).x as *const _ as usize },
        0usize,
        concat!("Offset of field: ", stringify!(PJ_XYZ), "::", stringify!(x))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_XYZ>())).y as *const _ as usize },
        8usize,
        concat!("Offset of field: ", stringify!(PJ_XYZ), "::", stringify!(y))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_XYZ>())).z as *const _ as usize },
        16usize,
        concat!("Offset of field: ", stringify!(PJ_XYZ), "::", stringify!(z))
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PJ_UVW {
    pub u: f64,
    pub v: f64,
    pub w: f64,
}
#[test]
fn bindgen_test_layout_PJ_UVW() {
    assert_eq!(
        ::std::mem::size_of::<PJ_UVW>(),
        24usize,
        concat!("Size of: ", stringify!(PJ_UVW))
    );
    assert_eq!(
        ::std::mem::align_of::<PJ_UVW>(),
        8usize,
        concat!("Alignment of ", stringify!(PJ_UVW))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_UVW>())).u as *const _ as usize },
        0usize,
        concat!("Offset of field: ", stringify!(PJ_UVW), "::", stringify!(u))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_UVW>())).v as *const _ as usize },
        8usize,
        concat!("Offset of field: ", stringify!(PJ_UVW), "::", stringify!(v))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_UVW>())).w as *const _ as usize },
        16usize,
        concat!("Offset of field: ", stringify!(PJ_UVW), "::", stringify!(w))
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PJ_LPZ {
    pub lam: f64,
    pub phi: f64,
    pub z: f64,
}
#[test]
fn bindgen_test_layout_PJ_LPZ() {
    assert_eq!(
        ::std::mem::size_of::<PJ_LPZ>(),
        24usize,
        concat!("Size of: ", stringify!(PJ_LPZ))
    );
    assert_eq!(
        ::std::mem::align_of::<PJ_LPZ>(),
        8usize,
        concat!("Alignment of ", stringify!(PJ_LPZ))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_LPZ>())).lam as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_LPZ),
            "::",
            stringify!(lam)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_LPZ>())).phi as *const _ as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_LPZ),
            "::",
            stringify!(phi)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_LPZ>())).z as *const _ as usize },
        16usize,
        concat!("Offset of field: ", stringify!(PJ_LPZ), "::", stringify!(z))
    );
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union PJ_COORD {
    pub v: [f64; 4usize],
    pub xyzt: PJ_XYZT,
    pub uvwt: PJ_UVWT,
    pub lpzt: PJ_LPZT,
    pub geod: PJ_GEOD,
    pub opk: PJ_OPK,
    pub enu: PJ_ENU,
    pub xyz: PJ_XYZ,
    pub uvw: PJ_UVW,
    pub lpz: PJ_LPZ,
    pub xy: PJ_XY,
    pub uv: PJ_UV,
    pub lp: PJ_LP,
    _bindgen_union_align: [u64; 4usize],
}
#[test]
fn bindgen_test_layout_PJ_COORD() {
    assert_eq!(
        ::std::mem::size_of::<PJ_COORD>(),
        32usize,
        concat!("Size of: ", stringify!(PJ_COORD))
    );
    assert_eq!(
        ::std::mem::align_of::<PJ_COORD>(),
        8usize,
        concat!("Alignment of ", stringify!(PJ_COORD))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_COORD>())).v as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_COORD),
            "::",
            stringify!(v)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_COORD>())).xyzt as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_COORD),
            "::",
            stringify!(xyzt)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_COORD>())).uvwt as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_COORD),
            "::",
            stringify!(uvwt)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_COORD>())).lpzt as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_COORD),
            "::",
            stringify!(lpzt)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_COORD>())).geod as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_COORD),
            "::",
            stringify!(geod)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_COORD>())).opk as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_COORD),
            "::",
            stringify!(opk)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_COORD>())).enu as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_COORD),
            "::",
            stringify!(enu)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_COORD>())).xyz as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_COORD),
            "::",
            stringify!(xyz)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_COORD>())).uvw as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_COORD),
            "::",
            stringify!(uvw)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_COORD>())).lpz as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_COORD),
            "::",
            stringify!(lpz)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_COORD>())).xy as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_COORD),
            "::",
            stringify!(xy)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_COORD>())).uv as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_COORD),
            "::",
            stringify!(uv)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_COORD>())).lp as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_COORD),
            "::",
            stringify!(lp)
        )
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PJ_INFO {
    pub major: ::std::os::raw::c_int,
    pub minor: ::std::os::raw::c_int,
    pub patch: ::std::os::raw::c_int,
    pub release: *const ::std::os::raw::c_char,
    pub version: *const ::std::os::raw::c_char,
    pub searchpath: *const ::std::os::raw::c_char,
    pub paths: *const *const ::std::os::raw::c_char,
    pub path_count: usize,
}
#[test]
fn bindgen_test_layout_PJ_INFO() {
    assert_eq!(
        ::std::mem::size_of::<PJ_INFO>(),
        56usize,
        concat!("Size of: ", stringify!(PJ_INFO))
    );
    assert_eq!(
        ::std::mem::align_of::<PJ_INFO>(),
        8usize,
        concat!("Alignment of ", stringify!(PJ_INFO))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_INFO>())).major as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_INFO),
            "::",
            stringify!(major)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_INFO>())).minor as *const _ as usize },
        4usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_INFO),
            "::",
            stringify!(minor)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_INFO>())).patch as *const _ as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_INFO),
            "::",
            stringify!(patch)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_INFO>())).release as *const _ as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_INFO),
            "::",
            stringify!(release)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_INFO>())).version as *const _ as usize },
        24usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_INFO),
            "::",
            stringify!(version)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_INFO>())).searchpath as *const _ as usize },
        32usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_INFO),
            "::",
            stringify!(searchpath)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_INFO>())).paths as *const _ as usize },
        40usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_INFO),
            "::",
            stringify!(paths)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_INFO>())).path_count as *const _ as usize },
        48usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_INFO),
            "::",
            stringify!(path_count)
        )
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PJ_PROJ_INFO {
    pub id: *const ::std::os::raw::c_char,
    pub description: *const ::std::os::raw::c_char,
    pub definition: *const ::std::os::raw::c_char,
    pub has_inverse: ::std::os::raw::c_int,
    pub accuracy: f64,
}
#[test]
fn bindgen_test_layout_PJ_PROJ_INFO() {
    assert_eq!(
        ::std::mem::size_of::<PJ_PROJ_INFO>(),
        40usize,
        concat!("Size of: ", stringify!(PJ_PROJ_INFO))
    );
    assert_eq!(
        ::std::mem::align_of::<PJ_PROJ_INFO>(),
        8usize,
        concat!("Alignment of ", stringify!(PJ_PROJ_INFO))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_PROJ_INFO>())).id as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_PROJ_INFO),
            "::",
            stringify!(id)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_PROJ_INFO>())).description as *const _ as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_PROJ_INFO),
            "::",
            stringify!(description)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_PROJ_INFO>())).definition as *const _ as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_PROJ_INFO),
            "::",
            stringify!(definition)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_PROJ_INFO>())).has_inverse as *const _ as usize },
        24usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_PROJ_INFO),
            "::",
            stringify!(has_inverse)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_PROJ_INFO>())).accuracy as *const _ as usize },
        32usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_PROJ_INFO),
            "::",
            stringify!(accuracy)
        )
    );
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct PJ_GRID_INFO {
    pub gridname: [::std::os::raw::c_char; 32usize],
    pub filename: [::std::os::raw::c_char; 260usize],
    pub format: [::std::os::raw::c_char; 8usize],
    pub lowerleft: PJ_LP,
    pub upperright: PJ_LP,
    pub n_lon: ::std::os::raw::c_int,
    pub n_lat: ::std::os::raw::c_int,
    pub cs_lon: f64,
    pub cs_lat: f64,
}
#[test]
fn bindgen_test_layout_PJ_GRID_INFO() {
    assert_eq!(
        ::std::mem::size_of::<PJ_GRID_INFO>(),
        360usize,
        concat!("Size of: ", stringify!(PJ_GRID_INFO))
    );
    assert_eq!(
        ::std::mem::align_of::<PJ_GRID_INFO>(),
        8usize,
        concat!("Alignment of ", stringify!(PJ_GRID_INFO))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_GRID_INFO>())).gridname as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_GRID_INFO),
            "::",
            stringify!(gridname)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_GRID_INFO>())).filename as *const _ as usize },
        32usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_GRID_INFO),
            "::",
            stringify!(filename)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_GRID_INFO>())).format as *const _ as usize },
        292usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_GRID_INFO),
            "::",
            stringify!(format)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_GRID_INFO>())).lowerleft as *const _ as usize },
        304usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_GRID_INFO),
            "::",
            stringify!(lowerleft)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_GRID_INFO>())).upperright as *const _ as usize },
        320usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_GRID_INFO),
            "::",
            stringify!(upperright)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_GRID_INFO>())).n_lon as *const _ as usize },
        336usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_GRID_INFO),
            "::",
            stringify!(n_lon)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_GRID_INFO>())).n_lat as *const _ as usize },
        340usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_GRID_INFO),
            "::",
            stringify!(n_lat)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_GRID_INFO>())).cs_lon as *const _ as usize },
        344usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_GRID_INFO),
            "::",
            stringify!(cs_lon)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_GRID_INFO>())).cs_lat as *const _ as usize },
        352usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_GRID_INFO),
            "::",
            stringify!(cs_lat)
        )
    );
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct PJ_INIT_INFO {
    pub name: [::std::os::raw::c_char; 32usize],
    pub filename: [::std::os::raw::c_char; 260usize],
    pub version: [::std::os::raw::c_char; 32usize],
    pub origin: [::std::os::raw::c_char; 32usize],
    pub lastupdate: [::std::os::raw::c_char; 16usize],
}
#[test]
fn bindgen_test_layout_PJ_INIT_INFO() {
    assert_eq!(
        ::std::mem::size_of::<PJ_INIT_INFO>(),
        372usize,
        concat!("Size of: ", stringify!(PJ_INIT_INFO))
    );
    assert_eq!(
        ::std::mem::align_of::<PJ_INIT_INFO>(),
        1usize,
        concat!("Alignment of ", stringify!(PJ_INIT_INFO))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_INIT_INFO>())).name as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_INIT_INFO),
            "::",
            stringify!(name)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_INIT_INFO>())).filename as *const _ as usize },
        32usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_INIT_INFO),
            "::",
            stringify!(filename)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_INIT_INFO>())).version as *const _ as usize },
        292usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_INIT_INFO),
            "::",
            stringify!(version)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_INIT_INFO>())).origin as *const _ as usize },
        324usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_INIT_INFO),
            "::",
            stringify!(origin)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PJ_INIT_INFO>())).lastupdate as *const _ as usize },
        356usize,
        concat!(
            "Offset of field: ",
            stringify!(PJ_INIT_INFO),
            "::",
            stringify!(lastupdate)
        )
    );
}
pub const PJ_LOG_LEVEL_PJ_LOG_NONE: PJ_LOG_LEVEL = 0;
pub const PJ_LOG_LEVEL_PJ_LOG_ERROR: PJ_LOG_LEVEL = 1;
pub const PJ_LOG_LEVEL_PJ_LOG_DEBUG: PJ_LOG_LEVEL = 2;
pub const PJ_LOG_LEVEL_PJ_LOG_TRACE: PJ_LOG_LEVEL = 3;
pub const PJ_LOG_LEVEL_PJ_LOG_TELL: PJ_LOG_LEVEL = 4;
pub const PJ_LOG_LEVEL_PJ_LOG_DEBUG_MAJOR: PJ_LOG_LEVEL = 2;
pub const PJ_LOG_LEVEL_PJ_LOG_DEBUG_MINOR: PJ_LOG_LEVEL = 3;
pub type PJ_LOG_LEVEL = u32;
pub type PJ_LOG_FUNCTION = ::std::option::Option<
    unsafe extern "C" fn(
        arg1: *mut ::std::os::raw::c_void,
        arg2: ::std::os::raw::c_int,
        arg3: *const ::std::os::raw::c_char,
    ),
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct projCtx_t {
    _unused: [u8; 0],
}
pub type PJ_CONTEXT = projCtx_t;
extern "C" {
    pub fn proj_context_create() -> *mut PJ_CONTEXT;
}
extern "C" {
    pub fn proj_context_destroy(ctx: *mut PJ_CONTEXT) -> *mut PJ_CONTEXT;
}
pub type proj_file_finder = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *mut PJ_CONTEXT,
        arg1: *const ::std::os::raw::c_char,
        user_data: *mut ::std::os::raw::c_void,
    ) -> *const ::std::os::raw::c_char,
>;
extern "C" {
    pub fn proj_context_set_file_finder(
        ctx: *mut PJ_CONTEXT,
        finder: proj_file_finder,
        user_data: *mut ::std::os::raw::c_void,
    );
}
extern "C" {
    pub fn proj_context_set_search_paths(
        ctx: *mut PJ_CONTEXT,
        count_paths: ::std::os::raw::c_int,
        paths: *const *const ::std::os::raw::c_char,
    );
}
extern "C" {
    pub fn proj_context_use_proj4_init_rules(ctx: *mut PJ_CONTEXT, enable: ::std::os::raw::c_int);
}
extern "C" {
    pub fn proj_context_get_use_proj4_init_rules(
        ctx: *mut PJ_CONTEXT,
        from_legacy_code_path: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PROJ_FILE_HANDLE {
    _unused: [u8; 0],
}
pub const PROJ_OPEN_ACCESS_PROJ_OPEN_ACCESS_READ_ONLY: PROJ_OPEN_ACCESS = 0;
pub const PROJ_OPEN_ACCESS_PROJ_OPEN_ACCESS_READ_UPDATE: PROJ_OPEN_ACCESS = 1;
pub const PROJ_OPEN_ACCESS_PROJ_OPEN_ACCESS_CREATE: PROJ_OPEN_ACCESS = 2;
pub type PROJ_OPEN_ACCESS = u32;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PROJ_FILE_API {
    pub version: ::std::os::raw::c_int,
    pub open_cbk: ::std::option::Option<
        unsafe extern "C" fn(
            ctx: *mut PJ_CONTEXT,
            filename: *const ::std::os::raw::c_char,
            access: PROJ_OPEN_ACCESS,
            user_data: *mut ::std::os::raw::c_void,
        ) -> *mut PROJ_FILE_HANDLE,
    >,
    pub read_cbk: ::std::option::Option<
        unsafe extern "C" fn(
            ctx: *mut PJ_CONTEXT,
            arg1: *mut PROJ_FILE_HANDLE,
            buffer: *mut ::std::os::raw::c_void,
            sizeBytes: usize,
            user_data: *mut ::std::os::raw::c_void,
        ) -> usize,
    >,
    pub write_cbk: ::std::option::Option<
        unsafe extern "C" fn(
            ctx: *mut PJ_CONTEXT,
            arg1: *mut PROJ_FILE_HANDLE,
            buffer: *const ::std::os::raw::c_void,
            sizeBytes: usize,
            user_data: *mut ::std::os::raw::c_void,
        ) -> usize,
    >,
    pub seek_cbk: ::std::option::Option<
        unsafe extern "C" fn(
            ctx: *mut PJ_CONTEXT,
            arg1: *mut PROJ_FILE_HANDLE,
            offset: ::std::os::raw::c_longlong,
            whence: ::std::os::raw::c_int,
            user_data: *mut ::std::os::raw::c_void,
        ) -> ::std::os::raw::c_int,
    >,
    pub tell_cbk: ::std::option::Option<
        unsafe extern "C" fn(
            ctx: *mut PJ_CONTEXT,
            arg1: *mut PROJ_FILE_HANDLE,
            user_data: *mut ::std::os::raw::c_void,
        ) -> ::std::os::raw::c_ulonglong,
    >,
    pub close_cbk: ::std::option::Option<
        unsafe extern "C" fn(
            ctx: *mut PJ_CONTEXT,
            arg1: *mut PROJ_FILE_HANDLE,
            user_data: *mut ::std::os::raw::c_void,
        ),
    >,
    pub exists_cbk: ::std::option::Option<
        unsafe extern "C" fn(
            ctx: *mut PJ_CONTEXT,
            filename: *const ::std::os::raw::c_char,
            user_data: *mut ::std::os::raw::c_void,
        ) -> ::std::os::raw::c_int,
    >,
    pub mkdir_cbk: ::std::option::Option<
        unsafe extern "C" fn(
            ctx: *mut PJ_CONTEXT,
            filename: *const ::std::os::raw::c_char,
            user_data: *mut ::std::os::raw::c_void,
        ) -> ::std::os::raw::c_int,
    >,
    pub unlink_cbk: ::std::option::Option<
        unsafe extern "C" fn(
            ctx: *mut PJ_CONTEXT,
            filename: *const ::std::os::raw::c_char,
            user_data: *mut ::std::os::raw::c_void,
        ) -> ::std::os::raw::c_int,
    >,
    pub rename_cbk: ::std::option::Option<
        unsafe extern "C" fn(
            ctx: *mut PJ_CONTEXT,
            oldPath: *const ::std::os::raw::c_char,
            newPath: *const ::std::os::raw::c_char,
            user_data: *mut ::std::os::raw::c_void,
        ) -> ::std::os::raw::c_int,
    >,
}
#[test]
fn bindgen_test_layout_PROJ_FILE_API() {
    assert_eq!(
        ::std::mem::size_of::<PROJ_FILE_API>(),
        88usize,
        concat!("Size of: ", stringify!(PROJ_FILE_API))
    );
    assert_eq!(
        ::std::mem::align_of::<PROJ_FILE_API>(),
        8usize,
        concat!("Alignment of ", stringify!(PROJ_FILE_API))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_FILE_API>())).version as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_FILE_API),
            "::",
            stringify!(version)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_FILE_API>())).open_cbk as *const _ as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_FILE_API),
            "::",
            stringify!(open_cbk)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_FILE_API>())).read_cbk as *const _ as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_FILE_API),
            "::",
            stringify!(read_cbk)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_FILE_API>())).write_cbk as *const _ as usize },
        24usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_FILE_API),
            "::",
            stringify!(write_cbk)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_FILE_API>())).seek_cbk as *const _ as usize },
        32usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_FILE_API),
            "::",
            stringify!(seek_cbk)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_FILE_API>())).tell_cbk as *const _ as usize },
        40usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_FILE_API),
            "::",
            stringify!(tell_cbk)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_FILE_API>())).close_cbk as *const _ as usize },
        48usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_FILE_API),
            "::",
            stringify!(close_cbk)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_FILE_API>())).exists_cbk as *const _ as usize },
        56usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_FILE_API),
            "::",
            stringify!(exists_cbk)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_FILE_API>())).mkdir_cbk as *const _ as usize },
        64usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_FILE_API),
            "::",
            stringify!(mkdir_cbk)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_FILE_API>())).unlink_cbk as *const _ as usize },
        72usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_FILE_API),
            "::",
            stringify!(unlink_cbk)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_FILE_API>())).rename_cbk as *const _ as usize },
        80usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_FILE_API),
            "::",
            stringify!(rename_cbk)
        )
    );
}
extern "C" {
    pub fn proj_context_set_fileapi(
        ctx: *mut PJ_CONTEXT,
        fileapi: *const PROJ_FILE_API,
        user_data: *mut ::std::os::raw::c_void,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_context_set_sqlite3_vfs_name(
        ctx: *mut PJ_CONTEXT,
        name: *const ::std::os::raw::c_char,
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PROJ_NETWORK_HANDLE {
    _unused: [u8; 0],
}
pub type proj_network_open_cbk_type = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *mut PJ_CONTEXT,
        url: *const ::std::os::raw::c_char,
        offset: ::std::os::raw::c_ulonglong,
        size_to_read: usize,
        buffer: *mut ::std::os::raw::c_void,
        out_size_read: *mut usize,
        error_string_max_size: usize,
        out_error_string: *mut ::std::os::raw::c_char,
        user_data: *mut ::std::os::raw::c_void,
    ) -> *mut PROJ_NETWORK_HANDLE,
>;
pub type proj_network_close_cbk_type = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *mut PJ_CONTEXT,
        handle: *mut PROJ_NETWORK_HANDLE,
        user_data: *mut ::std::os::raw::c_void,
    ),
>;
pub type proj_network_get_header_value_cbk_type = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *mut PJ_CONTEXT,
        handle: *mut PROJ_NETWORK_HANDLE,
        header_name: *const ::std::os::raw::c_char,
        user_data: *mut ::std::os::raw::c_void,
    ) -> *const ::std::os::raw::c_char,
>;
pub type proj_network_read_range_type = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *mut PJ_CONTEXT,
        handle: *mut PROJ_NETWORK_HANDLE,
        offset: ::std::os::raw::c_ulonglong,
        size_to_read: usize,
        buffer: *mut ::std::os::raw::c_void,
        error_string_max_size: usize,
        out_error_string: *mut ::std::os::raw::c_char,
        user_data: *mut ::std::os::raw::c_void,
    ) -> usize,
>;
extern "C" {
    pub fn proj_context_set_network_callbacks(
        ctx: *mut PJ_CONTEXT,
        open_cbk: proj_network_open_cbk_type,
        close_cbk: proj_network_close_cbk_type,
        get_header_value_cbk: proj_network_get_header_value_cbk_type,
        read_range_cbk: proj_network_read_range_type,
        user_data: *mut ::std::os::raw::c_void,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_context_set_enable_network(
        ctx: *mut PJ_CONTEXT,
        enabled: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_context_is_network_enabled(ctx: *mut PJ_CONTEXT) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_context_set_url_endpoint(ctx: *mut PJ_CONTEXT, url: *const ::std::os::raw::c_char);
}
extern "C" {
    pub fn proj_context_get_url_endpoint(ctx: *mut PJ_CONTEXT) -> *const ::std::os::raw::c_char;
}
extern "C" {
    pub fn proj_context_get_user_writable_directory(
        ctx: *mut PJ_CONTEXT,
        create: ::std::os::raw::c_int,
    ) -> *const ::std::os::raw::c_char;
}
extern "C" {
    pub fn proj_grid_cache_set_enable(ctx: *mut PJ_CONTEXT, enabled: ::std::os::raw::c_int);
}
extern "C" {
    pub fn proj_grid_cache_set_filename(
        ctx: *mut PJ_CONTEXT,
        fullname: *const ::std::os::raw::c_char,
    );
}
extern "C" {
    pub fn proj_grid_cache_set_max_size(ctx: *mut PJ_CONTEXT, max_size_MB: ::std::os::raw::c_int);
}
extern "C" {
    pub fn proj_grid_cache_set_ttl(ctx: *mut PJ_CONTEXT, ttl_seconds: ::std::os::raw::c_int);
}
extern "C" {
    pub fn proj_grid_cache_clear(ctx: *mut PJ_CONTEXT);
}
extern "C" {
    pub fn proj_is_download_needed(
        ctx: *mut PJ_CONTEXT,
        url_or_filename: *const ::std::os::raw::c_char,
        ignore_ttl_setting: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_download_file(
        ctx: *mut PJ_CONTEXT,
        url_or_filename: *const ::std::os::raw::c_char,
        ignore_ttl_setting: ::std::os::raw::c_int,
        progress_cbk: ::std::option::Option<
            unsafe extern "C" fn(
                arg1: *mut PJ_CONTEXT,
                pct: f64,
                user_data: *mut ::std::os::raw::c_void,
            ) -> ::std::os::raw::c_int,
        >,
        user_data: *mut ::std::os::raw::c_void,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_create(ctx: *mut PJ_CONTEXT, definition: *const ::std::os::raw::c_char) -> *mut PJ;
}
extern "C" {
    pub fn proj_create_argv(
        ctx: *mut PJ_CONTEXT,
        argc: ::std::os::raw::c_int,
        argv: *mut *mut ::std::os::raw::c_char,
    ) -> *mut PJ;
}
extern "C" {
    pub fn proj_create_crs_to_crs(
        ctx: *mut PJ_CONTEXT,
        source_crs: *const ::std::os::raw::c_char,
        target_crs: *const ::std::os::raw::c_char,
        area: *mut PJ_AREA,
    ) -> *mut PJ;
}
extern "C" {
    pub fn proj_create_crs_to_crs_from_pj(
        ctx: *mut PJ_CONTEXT,
        source_crs: *const PJ,
        target_crs: *const PJ,
        area: *mut PJ_AREA,
        options: *const *const ::std::os::raw::c_char,
    ) -> *mut PJ;
}
extern "C" {
    pub fn proj_normalize_for_visualization(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> *mut PJ;
}
extern "C" {
    pub fn proj_assign_context(pj: *mut PJ, ctx: *mut PJ_CONTEXT);
}
extern "C" {
    pub fn proj_destroy(P: *mut PJ) -> *mut PJ;
}
extern "C" {
    pub fn proj_area_create() -> *mut PJ_AREA;
}
extern "C" {
    pub fn proj_area_set_bbox(
        area: *mut PJ_AREA,
        west_lon_degree: f64,
        south_lat_degree: f64,
        east_lon_degree: f64,
        north_lat_degree: f64,
    );
}
extern "C" {
    pub fn proj_area_destroy(area: *mut PJ_AREA);
}
pub const PJ_DIRECTION_PJ_FWD: PJ_DIRECTION = 1;
pub const PJ_DIRECTION_PJ_IDENT: PJ_DIRECTION = 0;
pub const PJ_DIRECTION_PJ_INV: PJ_DIRECTION = -1;
pub type PJ_DIRECTION = i32;
extern "C" {
    pub fn proj_angular_input(P: *mut PJ, dir: PJ_DIRECTION) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_angular_output(P: *mut PJ, dir: PJ_DIRECTION) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_degree_input(P: *mut PJ, dir: PJ_DIRECTION) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_degree_output(P: *mut PJ, dir: PJ_DIRECTION) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_trans(P: *mut PJ, direction: PJ_DIRECTION, coord: PJ_COORD) -> PJ_COORD;
}
extern "C" {
    pub fn proj_trans_array(
        P: *mut PJ,
        direction: PJ_DIRECTION,
        n: usize,
        coord: *mut PJ_COORD,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_trans_generic(
        P: *mut PJ,
        direction: PJ_DIRECTION,
        x: *mut f64,
        sx: usize,
        nx: usize,
        y: *mut f64,
        sy: usize,
        ny: usize,
        z: *mut f64,
        sz: usize,
        nz: usize,
        t: *mut f64,
        st: usize,
        nt: usize,
    ) -> usize;
}
extern "C" {
    pub fn proj_coord(x: f64, y: f64, z: f64, t: f64) -> PJ_COORD;
}
extern "C" {
    pub fn proj_roundtrip(
        P: *mut PJ,
        direction: PJ_DIRECTION,
        n: ::std::os::raw::c_int,
        coord: *mut PJ_COORD,
    ) -> f64;
}
extern "C" {
    pub fn proj_lp_dist(P: *const PJ, a: PJ_COORD, b: PJ_COORD) -> f64;
}
extern "C" {
    pub fn proj_lpz_dist(P: *const PJ, a: PJ_COORD, b: PJ_COORD) -> f64;
}
extern "C" {
    pub fn proj_xy_dist(a: PJ_COORD, b: PJ_COORD) -> f64;
}
extern "C" {
    pub fn proj_xyz_dist(a: PJ_COORD, b: PJ_COORD) -> f64;
}
extern "C" {
    pub fn proj_geod(P: *const PJ, a: PJ_COORD, b: PJ_COORD) -> PJ_COORD;
}
extern "C" {
    pub fn proj_context_errno(ctx: *mut PJ_CONTEXT) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_errno(P: *const PJ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_errno_set(P: *const PJ, err: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_errno_reset(P: *const PJ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_errno_restore(P: *const PJ, err: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_errno_string(err: ::std::os::raw::c_int) -> *const ::std::os::raw::c_char;
}
extern "C" {
    pub fn proj_log_level(ctx: *mut PJ_CONTEXT, log_level: PJ_LOG_LEVEL) -> PJ_LOG_LEVEL;
}
extern "C" {
    pub fn proj_log_func(
        ctx: *mut PJ_CONTEXT,
        app_data: *mut ::std::os::raw::c_void,
        logf: PJ_LOG_FUNCTION,
    );
}
extern "C" {
    pub fn proj_factors(P: *mut PJ, lp: PJ_COORD) -> PJ_FACTORS;
}
extern "C" {
    pub fn proj_info() -> PJ_INFO;
}
extern "C" {
    pub fn proj_pj_info(P: *mut PJ) -> PJ_PROJ_INFO;
}
extern "C" {
    pub fn proj_grid_info(gridname: *const ::std::os::raw::c_char) -> PJ_GRID_INFO;
}
extern "C" {
    pub fn proj_init_info(initname: *const ::std::os::raw::c_char) -> PJ_INIT_INFO;
}
extern "C" {
    pub fn proj_list_operations() -> *const PJ_OPERATIONS;
}
extern "C" {
    pub fn proj_list_ellps() -> *const PJ_ELLPS;
}
extern "C" {
    pub fn proj_list_units() -> *const PJ_UNITS;
}
extern "C" {
    pub fn proj_list_angular_units() -> *const PJ_UNITS;
}
extern "C" {
    pub fn proj_list_prime_meridians() -> *const PJ_PRIME_MERIDIANS;
}
extern "C" {
    pub fn proj_torad(angle_in_degrees: f64) -> f64;
}
extern "C" {
    pub fn proj_todeg(angle_in_radians: f64) -> f64;
}
extern "C" {
    pub fn proj_dmstor(
        is: *const ::std::os::raw::c_char,
        rs: *mut *mut ::std::os::raw::c_char,
    ) -> f64;
}
extern "C" {
    pub fn proj_rtodms(
        s: *mut ::std::os::raw::c_char,
        r: f64,
        pos: ::std::os::raw::c_int,
        neg: ::std::os::raw::c_int,
    ) -> *mut ::std::os::raw::c_char;
}
extern "C" {
    pub fn proj_cleanup();
}
pub type PROJ_STRING_LIST = *mut *mut ::std::os::raw::c_char;
pub const PJ_GUESSED_WKT_DIALECT_PJ_GUESSED_WKT2_2019: PJ_GUESSED_WKT_DIALECT = 0;
pub const PJ_GUESSED_WKT_DIALECT_PJ_GUESSED_WKT2_2018: PJ_GUESSED_WKT_DIALECT = 0;
pub const PJ_GUESSED_WKT_DIALECT_PJ_GUESSED_WKT2_2015: PJ_GUESSED_WKT_DIALECT = 1;
pub const PJ_GUESSED_WKT_DIALECT_PJ_GUESSED_WKT1_GDAL: PJ_GUESSED_WKT_DIALECT = 2;
pub const PJ_GUESSED_WKT_DIALECT_PJ_GUESSED_WKT1_ESRI: PJ_GUESSED_WKT_DIALECT = 3;
pub const PJ_GUESSED_WKT_DIALECT_PJ_GUESSED_NOT_WKT: PJ_GUESSED_WKT_DIALECT = 4;
pub type PJ_GUESSED_WKT_DIALECT = u32;
pub const PJ_CATEGORY_PJ_CATEGORY_ELLIPSOID: PJ_CATEGORY = 0;
pub const PJ_CATEGORY_PJ_CATEGORY_PRIME_MERIDIAN: PJ_CATEGORY = 1;
pub const PJ_CATEGORY_PJ_CATEGORY_DATUM: PJ_CATEGORY = 2;
pub const PJ_CATEGORY_PJ_CATEGORY_CRS: PJ_CATEGORY = 3;
pub const PJ_CATEGORY_PJ_CATEGORY_COORDINATE_OPERATION: PJ_CATEGORY = 4;
pub type PJ_CATEGORY = u32;
pub const PJ_TYPE_PJ_TYPE_UNKNOWN: PJ_TYPE = 0;
pub const PJ_TYPE_PJ_TYPE_ELLIPSOID: PJ_TYPE = 1;
pub const PJ_TYPE_PJ_TYPE_PRIME_MERIDIAN: PJ_TYPE = 2;
pub const PJ_TYPE_PJ_TYPE_GEODETIC_REFERENCE_FRAME: PJ_TYPE = 3;
pub const PJ_TYPE_PJ_TYPE_DYNAMIC_GEODETIC_REFERENCE_FRAME: PJ_TYPE = 4;
pub const PJ_TYPE_PJ_TYPE_VERTICAL_REFERENCE_FRAME: PJ_TYPE = 5;
pub const PJ_TYPE_PJ_TYPE_DYNAMIC_VERTICAL_REFERENCE_FRAME: PJ_TYPE = 6;
pub const PJ_TYPE_PJ_TYPE_DATUM_ENSEMBLE: PJ_TYPE = 7;
pub const PJ_TYPE_PJ_TYPE_CRS: PJ_TYPE = 8;
pub const PJ_TYPE_PJ_TYPE_GEODETIC_CRS: PJ_TYPE = 9;
pub const PJ_TYPE_PJ_TYPE_GEOCENTRIC_CRS: PJ_TYPE = 10;
pub const PJ_TYPE_PJ_TYPE_GEOGRAPHIC_CRS: PJ_TYPE = 11;
pub const PJ_TYPE_PJ_TYPE_GEOGRAPHIC_2D_CRS: PJ_TYPE = 12;
pub const PJ_TYPE_PJ_TYPE_GEOGRAPHIC_3D_CRS: PJ_TYPE = 13;
pub const PJ_TYPE_PJ_TYPE_VERTICAL_CRS: PJ_TYPE = 14;
pub const PJ_TYPE_PJ_TYPE_PROJECTED_CRS: PJ_TYPE = 15;
pub const PJ_TYPE_PJ_TYPE_COMPOUND_CRS: PJ_TYPE = 16;
pub const PJ_TYPE_PJ_TYPE_TEMPORAL_CRS: PJ_TYPE = 17;
pub const PJ_TYPE_PJ_TYPE_ENGINEERING_CRS: PJ_TYPE = 18;
pub const PJ_TYPE_PJ_TYPE_BOUND_CRS: PJ_TYPE = 19;
pub const PJ_TYPE_PJ_TYPE_OTHER_CRS: PJ_TYPE = 20;
pub const PJ_TYPE_PJ_TYPE_CONVERSION: PJ_TYPE = 21;
pub const PJ_TYPE_PJ_TYPE_TRANSFORMATION: PJ_TYPE = 22;
pub const PJ_TYPE_PJ_TYPE_CONCATENATED_OPERATION: PJ_TYPE = 23;
pub const PJ_TYPE_PJ_TYPE_OTHER_COORDINATE_OPERATION: PJ_TYPE = 24;
pub type PJ_TYPE = u32;
pub const PJ_COMPARISON_CRITERION_PJ_COMP_STRICT: PJ_COMPARISON_CRITERION = 0;
pub const PJ_COMPARISON_CRITERION_PJ_COMP_EQUIVALENT: PJ_COMPARISON_CRITERION = 1;
pub const PJ_COMPARISON_CRITERION_PJ_COMP_EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS:
    PJ_COMPARISON_CRITERION = 2;
pub type PJ_COMPARISON_CRITERION = u32;
pub const PJ_WKT_TYPE_PJ_WKT2_2015: PJ_WKT_TYPE = 0;
pub const PJ_WKT_TYPE_PJ_WKT2_2015_SIMPLIFIED: PJ_WKT_TYPE = 1;
pub const PJ_WKT_TYPE_PJ_WKT2_2019: PJ_WKT_TYPE = 2;
pub const PJ_WKT_TYPE_PJ_WKT2_2018: PJ_WKT_TYPE = 2;
pub const PJ_WKT_TYPE_PJ_WKT2_2019_SIMPLIFIED: PJ_WKT_TYPE = 3;
pub const PJ_WKT_TYPE_PJ_WKT2_2018_SIMPLIFIED: PJ_WKT_TYPE = 3;
pub const PJ_WKT_TYPE_PJ_WKT1_GDAL: PJ_WKT_TYPE = 4;
pub const PJ_WKT_TYPE_PJ_WKT1_ESRI: PJ_WKT_TYPE = 5;
pub type PJ_WKT_TYPE = u32;
pub const PROJ_CRS_EXTENT_USE_PJ_CRS_EXTENT_NONE: PROJ_CRS_EXTENT_USE = 0;
pub const PROJ_CRS_EXTENT_USE_PJ_CRS_EXTENT_BOTH: PROJ_CRS_EXTENT_USE = 1;
pub const PROJ_CRS_EXTENT_USE_PJ_CRS_EXTENT_INTERSECTION: PROJ_CRS_EXTENT_USE = 2;
pub const PROJ_CRS_EXTENT_USE_PJ_CRS_EXTENT_SMALLEST: PROJ_CRS_EXTENT_USE = 3;
pub type PROJ_CRS_EXTENT_USE = u32;
pub const PROJ_GRID_AVAILABILITY_USE_PROJ_GRID_AVAILABILITY_USED_FOR_SORTING:
    PROJ_GRID_AVAILABILITY_USE = 0;
pub const PROJ_GRID_AVAILABILITY_USE_PROJ_GRID_AVAILABILITY_DISCARD_OPERATION_IF_MISSING_GRID:
    PROJ_GRID_AVAILABILITY_USE = 1;
pub const PROJ_GRID_AVAILABILITY_USE_PROJ_GRID_AVAILABILITY_IGNORED: PROJ_GRID_AVAILABILITY_USE = 2;
pub const PROJ_GRID_AVAILABILITY_USE_PROJ_GRID_AVAILABILITY_KNOWN_AVAILABLE:
    PROJ_GRID_AVAILABILITY_USE = 3;
pub type PROJ_GRID_AVAILABILITY_USE = u32;
pub const PJ_PROJ_STRING_TYPE_PJ_PROJ_5: PJ_PROJ_STRING_TYPE = 0;
pub const PJ_PROJ_STRING_TYPE_PJ_PROJ_4: PJ_PROJ_STRING_TYPE = 1;
pub type PJ_PROJ_STRING_TYPE = u32;
pub const PROJ_SPATIAL_CRITERION_PROJ_SPATIAL_CRITERION_STRICT_CONTAINMENT: PROJ_SPATIAL_CRITERION =
    0;
pub const PROJ_SPATIAL_CRITERION_PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION:
    PROJ_SPATIAL_CRITERION = 1;
pub type PROJ_SPATIAL_CRITERION = u32;
pub const PROJ_INTERMEDIATE_CRS_USE_PROJ_INTERMEDIATE_CRS_USE_ALWAYS: PROJ_INTERMEDIATE_CRS_USE = 0;
pub const PROJ_INTERMEDIATE_CRS_USE_PROJ_INTERMEDIATE_CRS_USE_IF_NO_DIRECT_TRANSFORMATION:
    PROJ_INTERMEDIATE_CRS_USE = 1;
pub const PROJ_INTERMEDIATE_CRS_USE_PROJ_INTERMEDIATE_CRS_USE_NEVER: PROJ_INTERMEDIATE_CRS_USE = 2;
pub type PROJ_INTERMEDIATE_CRS_USE = u32;
pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_UNKNOWN: PJ_COORDINATE_SYSTEM_TYPE = 0;
pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_CARTESIAN: PJ_COORDINATE_SYSTEM_TYPE = 1;
pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_ELLIPSOIDAL: PJ_COORDINATE_SYSTEM_TYPE = 2;
pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_VERTICAL: PJ_COORDINATE_SYSTEM_TYPE = 3;
pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_SPHERICAL: PJ_COORDINATE_SYSTEM_TYPE = 4;
pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_ORDINAL: PJ_COORDINATE_SYSTEM_TYPE = 5;
pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_PARAMETRIC: PJ_COORDINATE_SYSTEM_TYPE = 6;
pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_DATETIMETEMPORAL: PJ_COORDINATE_SYSTEM_TYPE = 7;
pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_TEMPORALCOUNT: PJ_COORDINATE_SYSTEM_TYPE = 8;
pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_TEMPORALMEASURE: PJ_COORDINATE_SYSTEM_TYPE = 9;
pub type PJ_COORDINATE_SYSTEM_TYPE = u32;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PROJ_CRS_INFO {
    pub auth_name: *mut ::std::os::raw::c_char,
    pub code: *mut ::std::os::raw::c_char,
    pub name: *mut ::std::os::raw::c_char,
    pub type_: PJ_TYPE,
    pub deprecated: ::std::os::raw::c_int,
    pub bbox_valid: ::std::os::raw::c_int,
    pub west_lon_degree: f64,
    pub south_lat_degree: f64,
    pub east_lon_degree: f64,
    pub north_lat_degree: f64,
    pub area_name: *mut ::std::os::raw::c_char,
    pub projection_method_name: *mut ::std::os::raw::c_char,
}
#[test]
fn bindgen_test_layout_PROJ_CRS_INFO() {
    assert_eq!(
        ::std::mem::size_of::<PROJ_CRS_INFO>(),
        88usize,
        concat!("Size of: ", stringify!(PROJ_CRS_INFO))
    );
    assert_eq!(
        ::std::mem::align_of::<PROJ_CRS_INFO>(),
        8usize,
        concat!("Alignment of ", stringify!(PROJ_CRS_INFO))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_CRS_INFO>())).auth_name as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_CRS_INFO),
            "::",
            stringify!(auth_name)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_CRS_INFO>())).code as *const _ as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_CRS_INFO),
            "::",
            stringify!(code)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_CRS_INFO>())).name as *const _ as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_CRS_INFO),
            "::",
            stringify!(name)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_CRS_INFO>())).type_ as *const _ as usize },
        24usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_CRS_INFO),
            "::",
            stringify!(type_)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_CRS_INFO>())).deprecated as *const _ as usize },
        28usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_CRS_INFO),
            "::",
            stringify!(deprecated)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_CRS_INFO>())).bbox_valid as *const _ as usize },
        32usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_CRS_INFO),
            "::",
            stringify!(bbox_valid)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_CRS_INFO>())).west_lon_degree as *const _ as usize },
        40usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_CRS_INFO),
            "::",
            stringify!(west_lon_degree)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_CRS_INFO>())).south_lat_degree as *const _ as usize },
        48usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_CRS_INFO),
            "::",
            stringify!(south_lat_degree)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_CRS_INFO>())).east_lon_degree as *const _ as usize },
        56usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_CRS_INFO),
            "::",
            stringify!(east_lon_degree)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_CRS_INFO>())).north_lat_degree as *const _ as usize },
        64usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_CRS_INFO),
            "::",
            stringify!(north_lat_degree)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_CRS_INFO>())).area_name as *const _ as usize },
        72usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_CRS_INFO),
            "::",
            stringify!(area_name)
        )
    );
    assert_eq!(
        unsafe {
            &(*(::std::ptr::null::<PROJ_CRS_INFO>())).projection_method_name as *const _ as usize
        },
        80usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_CRS_INFO),
            "::",
            stringify!(projection_method_name)
        )
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PROJ_CRS_LIST_PARAMETERS {
    pub types: *const PJ_TYPE,
    pub typesCount: usize,
    pub crs_area_of_use_contains_bbox: ::std::os::raw::c_int,
    pub bbox_valid: ::std::os::raw::c_int,
    pub west_lon_degree: f64,
    pub south_lat_degree: f64,
    pub east_lon_degree: f64,
    pub north_lat_degree: f64,
    pub allow_deprecated: ::std::os::raw::c_int,
}
#[test]
fn bindgen_test_layout_PROJ_CRS_LIST_PARAMETERS() {
    assert_eq!(
        ::std::mem::size_of::<PROJ_CRS_LIST_PARAMETERS>(),
        64usize,
        concat!("Size of: ", stringify!(PROJ_CRS_LIST_PARAMETERS))
    );
    assert_eq!(
        ::std::mem::align_of::<PROJ_CRS_LIST_PARAMETERS>(),
        8usize,
        concat!("Alignment of ", stringify!(PROJ_CRS_LIST_PARAMETERS))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_CRS_LIST_PARAMETERS>())).types as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_CRS_LIST_PARAMETERS),
            "::",
            stringify!(types)
        )
    );
    assert_eq!(
        unsafe {
            &(*(::std::ptr::null::<PROJ_CRS_LIST_PARAMETERS>())).typesCount as *const _ as usize
        },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_CRS_LIST_PARAMETERS),
            "::",
            stringify!(typesCount)
        )
    );
    assert_eq!(
        unsafe {
            &(*(::std::ptr::null::<PROJ_CRS_LIST_PARAMETERS>())).crs_area_of_use_contains_bbox
                as *const _ as usize
        },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_CRS_LIST_PARAMETERS),
            "::",
            stringify!(crs_area_of_use_contains_bbox)
        )
    );
    assert_eq!(
        unsafe {
            &(*(::std::ptr::null::<PROJ_CRS_LIST_PARAMETERS>())).bbox_valid as *const _ as usize
        },
        20usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_CRS_LIST_PARAMETERS),
            "::",
            stringify!(bbox_valid)
        )
    );
    assert_eq!(
        unsafe {
            &(*(::std::ptr::null::<PROJ_CRS_LIST_PARAMETERS>())).west_lon_degree as *const _
                as usize
        },
        24usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_CRS_LIST_PARAMETERS),
            "::",
            stringify!(west_lon_degree)
        )
    );
    assert_eq!(
        unsafe {
            &(*(::std::ptr::null::<PROJ_CRS_LIST_PARAMETERS>())).south_lat_degree as *const _
                as usize
        },
        32usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_CRS_LIST_PARAMETERS),
            "::",
            stringify!(south_lat_degree)
        )
    );
    assert_eq!(
        unsafe {
            &(*(::std::ptr::null::<PROJ_CRS_LIST_PARAMETERS>())).east_lon_degree as *const _
                as usize
        },
        40usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_CRS_LIST_PARAMETERS),
            "::",
            stringify!(east_lon_degree)
        )
    );
    assert_eq!(
        unsafe {
            &(*(::std::ptr::null::<PROJ_CRS_LIST_PARAMETERS>())).north_lat_degree as *const _
                as usize
        },
        48usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_CRS_LIST_PARAMETERS),
            "::",
            stringify!(north_lat_degree)
        )
    );
    assert_eq!(
        unsafe {
            &(*(::std::ptr::null::<PROJ_CRS_LIST_PARAMETERS>())).allow_deprecated as *const _
                as usize
        },
        56usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_CRS_LIST_PARAMETERS),
            "::",
            stringify!(allow_deprecated)
        )
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PROJ_UNIT_INFO {
    pub auth_name: *mut ::std::os::raw::c_char,
    pub code: *mut ::std::os::raw::c_char,
    pub name: *mut ::std::os::raw::c_char,
    pub category: *mut ::std::os::raw::c_char,
    pub conv_factor: f64,
    pub proj_short_name: *mut ::std::os::raw::c_char,
    pub deprecated: ::std::os::raw::c_int,
}
#[test]
fn bindgen_test_layout_PROJ_UNIT_INFO() {
    assert_eq!(
        ::std::mem::size_of::<PROJ_UNIT_INFO>(),
        56usize,
        concat!("Size of: ", stringify!(PROJ_UNIT_INFO))
    );
    assert_eq!(
        ::std::mem::align_of::<PROJ_UNIT_INFO>(),
        8usize,
        concat!("Alignment of ", stringify!(PROJ_UNIT_INFO))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_UNIT_INFO>())).auth_name as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_UNIT_INFO),
            "::",
            stringify!(auth_name)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_UNIT_INFO>())).code as *const _ as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_UNIT_INFO),
            "::",
            stringify!(code)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_UNIT_INFO>())).name as *const _ as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_UNIT_INFO),
            "::",
            stringify!(name)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_UNIT_INFO>())).category as *const _ as usize },
        24usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_UNIT_INFO),
            "::",
            stringify!(category)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_UNIT_INFO>())).conv_factor as *const _ as usize },
        32usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_UNIT_INFO),
            "::",
            stringify!(conv_factor)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_UNIT_INFO>())).proj_short_name as *const _ as usize },
        40usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_UNIT_INFO),
            "::",
            stringify!(proj_short_name)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<PROJ_UNIT_INFO>())).deprecated as *const _ as usize },
        48usize,
        concat!(
            "Offset of field: ",
            stringify!(PROJ_UNIT_INFO),
            "::",
            stringify!(deprecated)
        )
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PJ_OBJ_LIST {
    _unused: [u8; 0],
}
extern "C" {
    pub fn proj_string_list_destroy(list: PROJ_STRING_LIST);
}
extern "C" {
    pub fn proj_context_set_autoclose_database(
        ctx: *mut PJ_CONTEXT,
        autoclose: ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn proj_context_set_database_path(
        ctx: *mut PJ_CONTEXT,
        dbPath: *const ::std::os::raw::c_char,
        auxDbPaths: *const *const ::std::os::raw::c_char,
        options: *const *const ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_context_get_database_path(ctx: *mut PJ_CONTEXT) -> *const ::std::os::raw::c_char;
}
extern "C" {
    pub fn proj_context_get_database_metadata(
        ctx: *mut PJ_CONTEXT,
        key: *const ::std::os::raw::c_char,
    ) -> *const ::std::os::raw::c_char;
}
extern "C" {
    pub fn proj_context_guess_wkt_dialect(
        ctx: *mut PJ_CONTEXT,
        wkt: *const ::std::os::raw::c_char,
    ) -> PJ_GUESSED_WKT_DIALECT;
}
extern "C" {
    pub fn proj_create_from_wkt(
        ctx: *mut PJ_CONTEXT,
        wkt: *const ::std::os::raw::c_char,
        options: *const *const ::std::os::raw::c_char,
        out_warnings: *mut PROJ_STRING_LIST,
        out_grammar_errors: *mut PROJ_STRING_LIST,
    ) -> *mut PJ;
}
extern "C" {
    pub fn proj_create_from_database(
        ctx: *mut PJ_CONTEXT,
        auth_name: *const ::std::os::raw::c_char,
        code: *const ::std::os::raw::c_char,
        category: PJ_CATEGORY,
        usePROJAlternativeGridNames: ::std::os::raw::c_int,
        options: *const *const ::std::os::raw::c_char,
    ) -> *mut PJ;
}
extern "C" {
    pub fn proj_uom_get_info_from_database(
        ctx: *mut PJ_CONTEXT,
        auth_name: *const ::std::os::raw::c_char,
        code: *const ::std::os::raw::c_char,
        out_name: *mut *const ::std::os::raw::c_char,
        out_conv_factor: *mut f64,
        out_category: *mut *const ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_grid_get_info_from_database(
        ctx: *mut PJ_CONTEXT,
        grid_name: *const ::std::os::raw::c_char,
        out_full_name: *mut *const ::std::os::raw::c_char,
        out_package_name: *mut *const ::std::os::raw::c_char,
        out_url: *mut *const ::std::os::raw::c_char,
        out_direct_download: *mut ::std::os::raw::c_int,
        out_open_license: *mut ::std::os::raw::c_int,
        out_available: *mut ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_clone(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> *mut PJ;
}
extern "C" {
    pub fn proj_create_from_name(
        ctx: *mut PJ_CONTEXT,
        auth_name: *const ::std::os::raw::c_char,
        searchedName: *const ::std::os::raw::c_char,
        types: *const PJ_TYPE,
        typesCount: usize,
        approximateMatch: ::std::os::raw::c_int,
        limitResultCount: usize,
        options: *const *const ::std::os::raw::c_char,
    ) -> *mut PJ_OBJ_LIST;
}
extern "C" {
    pub fn proj_get_type(obj: *const PJ) -> PJ_TYPE;
}
extern "C" {
    pub fn proj_is_deprecated(obj: *const PJ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_get_non_deprecated(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> *mut PJ_OBJ_LIST;
}
extern "C" {
    pub fn proj_is_equivalent_to(
        obj: *const PJ,
        other: *const PJ,
        criterion: PJ_COMPARISON_CRITERION,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_is_equivalent_to_with_ctx(
        ctx: *mut PJ_CONTEXT,
        obj: *const PJ,
        other: *const PJ,
        criterion: PJ_COMPARISON_CRITERION,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_is_crs(obj: *const PJ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_get_name(obj: *const PJ) -> *const ::std::os::raw::c_char;
}
extern "C" {
    pub fn proj_get_id_auth_name(
        obj: *const PJ,
        index: ::std::os::raw::c_int,
    ) -> *const ::std::os::raw::c_char;
}
extern "C" {
    pub fn proj_get_id_code(
        obj: *const PJ,
        index: ::std::os::raw::c_int,
    ) -> *const ::std::os::raw::c_char;
}
extern "C" {
    pub fn proj_get_remarks(obj: *const PJ) -> *const ::std::os::raw::c_char;
}
extern "C" {
    pub fn proj_get_scope(obj: *const PJ) -> *const ::std::os::raw::c_char;
}
extern "C" {
    pub fn proj_get_area_of_use(
        ctx: *mut PJ_CONTEXT,
        obj: *const PJ,
        out_west_lon_degree: *mut f64,
        out_south_lat_degree: *mut f64,
        out_east_lon_degree: *mut f64,
        out_north_lat_degree: *mut f64,
        out_area_name: *mut *const ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_as_wkt(
        ctx: *mut PJ_CONTEXT,
        obj: *const PJ,
        type_: PJ_WKT_TYPE,
        options: *const *const ::std::os::raw::c_char,
    ) -> *const ::std::os::raw::c_char;
}
extern "C" {
    pub fn proj_as_proj_string(
        ctx: *mut PJ_CONTEXT,
        obj: *const PJ,
        type_: PJ_PROJ_STRING_TYPE,
        options: *const *const ::std::os::raw::c_char,
    ) -> *const ::std::os::raw::c_char;
}
extern "C" {
    pub fn proj_as_projjson(
        ctx: *mut PJ_CONTEXT,
        obj: *const PJ,
        options: *const *const ::std::os::raw::c_char,
    ) -> *const ::std::os::raw::c_char;
}
extern "C" {
    pub fn proj_get_source_crs(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> *mut PJ;
}
extern "C" {
    pub fn proj_get_target_crs(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> *mut PJ;
}
extern "C" {
    pub fn proj_identify(
        ctx: *mut PJ_CONTEXT,
        obj: *const PJ,
        auth_name: *const ::std::os::raw::c_char,
        options: *const *const ::std::os::raw::c_char,
        out_confidence: *mut *mut ::std::os::raw::c_int,
    ) -> *mut PJ_OBJ_LIST;
}
extern "C" {
    pub fn proj_int_list_destroy(list: *mut ::std::os::raw::c_int);
}
extern "C" {
    pub fn proj_get_authorities_from_database(ctx: *mut PJ_CONTEXT) -> PROJ_STRING_LIST;
}
extern "C" {
    pub fn proj_get_codes_from_database(
        ctx: *mut PJ_CONTEXT,
        auth_name: *const ::std::os::raw::c_char,
        type_: PJ_TYPE,
        allow_deprecated: ::std::os::raw::c_int,
    ) -> PROJ_STRING_LIST;
}
extern "C" {
    pub fn proj_get_crs_list_parameters_create() -> *mut PROJ_CRS_LIST_PARAMETERS;
}
extern "C" {
    pub fn proj_get_crs_list_parameters_destroy(params: *mut PROJ_CRS_LIST_PARAMETERS);
}
extern "C" {
    pub fn proj_get_crs_info_list_from_database(
        ctx: *mut PJ_CONTEXT,
        auth_name: *const ::std::os::raw::c_char,
        params: *const PROJ_CRS_LIST_PARAMETERS,
        out_result_count: *mut ::std::os::raw::c_int,
    ) -> *mut *mut PROJ_CRS_INFO;
}
extern "C" {
    pub fn proj_crs_info_list_destroy(list: *mut *mut PROJ_CRS_INFO);
}
extern "C" {
    pub fn proj_get_units_from_database(
        ctx: *mut PJ_CONTEXT,
        auth_name: *const ::std::os::raw::c_char,
        category: *const ::std::os::raw::c_char,
        allow_deprecated: ::std::os::raw::c_int,
        out_result_count: *mut ::std::os::raw::c_int,
    ) -> *mut *mut PROJ_UNIT_INFO;
}
extern "C" {
    pub fn proj_unit_list_destroy(list: *mut *mut PROJ_UNIT_INFO);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PJ_OPERATION_FACTORY_CONTEXT {
    _unused: [u8; 0],
}
extern "C" {
    pub fn proj_create_operation_factory_context(
        ctx: *mut PJ_CONTEXT,
        authority: *const ::std::os::raw::c_char,
    ) -> *mut PJ_OPERATION_FACTORY_CONTEXT;
}
extern "C" {
    pub fn proj_operation_factory_context_destroy(ctx: *mut PJ_OPERATION_FACTORY_CONTEXT);
}
extern "C" {
    pub fn proj_operation_factory_context_set_desired_accuracy(
        ctx: *mut PJ_CONTEXT,
        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
        accuracy: f64,
    );
}
extern "C" {
    pub fn proj_operation_factory_context_set_area_of_interest(
        ctx: *mut PJ_CONTEXT,
        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
        west_lon_degree: f64,
        south_lat_degree: f64,
        east_lon_degree: f64,
        north_lat_degree: f64,
    );
}
extern "C" {
    pub fn proj_operation_factory_context_set_crs_extent_use(
        ctx: *mut PJ_CONTEXT,
        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
        use_: PROJ_CRS_EXTENT_USE,
    );
}
extern "C" {
    pub fn proj_operation_factory_context_set_spatial_criterion(
        ctx: *mut PJ_CONTEXT,
        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
        criterion: PROJ_SPATIAL_CRITERION,
    );
}
extern "C" {
    pub fn proj_operation_factory_context_set_grid_availability_use(
        ctx: *mut PJ_CONTEXT,
        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
        use_: PROJ_GRID_AVAILABILITY_USE,
    );
}
extern "C" {
    pub fn proj_operation_factory_context_set_use_proj_alternative_grid_names(
        ctx: *mut PJ_CONTEXT,
        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
        usePROJNames: ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn proj_operation_factory_context_set_allow_use_intermediate_crs(
        ctx: *mut PJ_CONTEXT,
        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
        use_: PROJ_INTERMEDIATE_CRS_USE,
    );
}
extern "C" {
    pub fn proj_operation_factory_context_set_allowed_intermediate_crs(
        ctx: *mut PJ_CONTEXT,
        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
        list_of_auth_name_codes: *const *const ::std::os::raw::c_char,
    );
}
extern "C" {
    pub fn proj_operation_factory_context_set_discard_superseded(
        ctx: *mut PJ_CONTEXT,
        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
        discard: ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn proj_operation_factory_context_set_allow_ballpark_transformations(
        ctx: *mut PJ_CONTEXT,
        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
        allow: ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn proj_create_operations(
        ctx: *mut PJ_CONTEXT,
        source_crs: *const PJ,
        target_crs: *const PJ,
        operationContext: *const PJ_OPERATION_FACTORY_CONTEXT,
    ) -> *mut PJ_OBJ_LIST;
}
extern "C" {
    pub fn proj_list_get_count(result: *const PJ_OBJ_LIST) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_list_get(
        ctx: *mut PJ_CONTEXT,
        result: *const PJ_OBJ_LIST,
        index: ::std::os::raw::c_int,
    ) -> *mut PJ;
}
extern "C" {
    pub fn proj_list_destroy(result: *mut PJ_OBJ_LIST);
}
extern "C" {
    pub fn proj_get_suggested_operation(
        ctx: *mut PJ_CONTEXT,
        operations: *mut PJ_OBJ_LIST,
        direction: PJ_DIRECTION,
        coord: PJ_COORD,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_crs_get_geodetic_crs(ctx: *mut PJ_CONTEXT, crs: *const PJ) -> *mut PJ;
}
extern "C" {
    pub fn proj_crs_get_horizontal_datum(ctx: *mut PJ_CONTEXT, crs: *const PJ) -> *mut PJ;
}
extern "C" {
    pub fn proj_crs_get_sub_crs(
        ctx: *mut PJ_CONTEXT,
        crs: *const PJ,
        index: ::std::os::raw::c_int,
    ) -> *mut PJ;
}
extern "C" {
    pub fn proj_crs_get_datum(ctx: *mut PJ_CONTEXT, crs: *const PJ) -> *mut PJ;
}
extern "C" {
    pub fn proj_crs_get_coordinate_system(ctx: *mut PJ_CONTEXT, crs: *const PJ) -> *mut PJ;
}
extern "C" {
    pub fn proj_cs_get_type(ctx: *mut PJ_CONTEXT, cs: *const PJ) -> PJ_COORDINATE_SYSTEM_TYPE;
}
extern "C" {
    pub fn proj_cs_get_axis_count(ctx: *mut PJ_CONTEXT, cs: *const PJ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_cs_get_axis_info(
        ctx: *mut PJ_CONTEXT,
        cs: *const PJ,
        index: ::std::os::raw::c_int,
        out_name: *mut *const ::std::os::raw::c_char,
        out_abbrev: *mut *const ::std::os::raw::c_char,
        out_direction: *mut *const ::std::os::raw::c_char,
        out_unit_conv_factor: *mut f64,
        out_unit_name: *mut *const ::std::os::raw::c_char,
        out_unit_auth_name: *mut *const ::std::os::raw::c_char,
        out_unit_code: *mut *const ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_get_ellipsoid(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> *mut PJ;
}
extern "C" {
    pub fn proj_ellipsoid_get_parameters(
        ctx: *mut PJ_CONTEXT,
        ellipsoid: *const PJ,
        out_semi_major_metre: *mut f64,
        out_semi_minor_metre: *mut f64,
        out_is_semi_minor_computed: *mut ::std::os::raw::c_int,
        out_inv_flattening: *mut f64,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_get_prime_meridian(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> *mut PJ;
}
extern "C" {
    pub fn proj_prime_meridian_get_parameters(
        ctx: *mut PJ_CONTEXT,
        prime_meridian: *const PJ,
        out_longitude: *mut f64,
        out_unit_conv_factor: *mut f64,
        out_unit_name: *mut *const ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_crs_get_coordoperation(ctx: *mut PJ_CONTEXT, crs: *const PJ) -> *mut PJ;
}
extern "C" {
    pub fn proj_coordoperation_get_method_info(
        ctx: *mut PJ_CONTEXT,
        coordoperation: *const PJ,
        out_method_name: *mut *const ::std::os::raw::c_char,
        out_method_auth_name: *mut *const ::std::os::raw::c_char,
        out_method_code: *mut *const ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_coordoperation_is_instantiable(
        ctx: *mut PJ_CONTEXT,
        coordoperation: *const PJ,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_coordoperation_has_ballpark_transformation(
        ctx: *mut PJ_CONTEXT,
        coordoperation: *const PJ,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_coordoperation_get_param_count(
        ctx: *mut PJ_CONTEXT,
        coordoperation: *const PJ,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_coordoperation_get_param_index(
        ctx: *mut PJ_CONTEXT,
        coordoperation: *const PJ,
        name: *const ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_coordoperation_get_param(
        ctx: *mut PJ_CONTEXT,
        coordoperation: *const PJ,
        index: ::std::os::raw::c_int,
        out_name: *mut *const ::std::os::raw::c_char,
        out_auth_name: *mut *const ::std::os::raw::c_char,
        out_code: *mut *const ::std::os::raw::c_char,
        out_value: *mut f64,
        out_value_string: *mut *const ::std::os::raw::c_char,
        out_unit_conv_factor: *mut f64,
        out_unit_name: *mut *const ::std::os::raw::c_char,
        out_unit_auth_name: *mut *const ::std::os::raw::c_char,
        out_unit_code: *mut *const ::std::os::raw::c_char,
        out_unit_category: *mut *const ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_coordoperation_get_grid_used_count(
        ctx: *mut PJ_CONTEXT,
        coordoperation: *const PJ,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_coordoperation_get_grid_used(
        ctx: *mut PJ_CONTEXT,
        coordoperation: *const PJ,
        index: ::std::os::raw::c_int,
        out_short_name: *mut *const ::std::os::raw::c_char,
        out_full_name: *mut *const ::std::os::raw::c_char,
        out_package_name: *mut *const ::std::os::raw::c_char,
        out_url: *mut *const ::std::os::raw::c_char,
        out_direct_download: *mut ::std::os::raw::c_int,
        out_open_license: *mut ::std::os::raw::c_int,
        out_available: *mut ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_coordoperation_get_accuracy(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> f64;
}
extern "C" {
    pub fn proj_coordoperation_get_towgs84_values(
        ctx: *mut PJ_CONTEXT,
        coordoperation: *const PJ,
        out_values: *mut f64,
        value_count: ::std::os::raw::c_int,
        emit_error_if_incompatible: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_coordoperation_create_inverse(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> *mut PJ;
}
extern "C" {
    pub fn proj_concatoperation_get_step_count(
        ctx: *mut PJ_CONTEXT,
        concatoperation: *const PJ,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn proj_concatoperation_get_step(
        ctx: *mut PJ_CONTEXT,
        concatoperation: *const PJ,
        i_step: ::std::os::raw::c_int,
    ) -> *mut PJ;
}