proj_sys/
bindings_docs-rs.rs

1/* THESE ARE NOT LIVE BINDINGS */
2/* THEY EXIST FOR USE BY DOCS-RS ONLY */
3
4/* automatically generated by rust-bindgen 0.71.1 */
5
6pub const PROJ_VERSION_MAJOR: u32 = 9;
7pub const PROJ_VERSION_MINOR: u32 = 6;
8pub const PROJ_VERSION_PATCH: u32 = 0;
9pub const PJ_DEFAULT_CTX: u32 = 0;
10pub const PROJ_ERR_INVALID_OP: u32 = 1024;
11pub const PROJ_ERR_INVALID_OP_WRONG_SYNTAX: u32 = 1025;
12pub const PROJ_ERR_INVALID_OP_MISSING_ARG: u32 = 1026;
13pub const PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE: u32 = 1027;
14pub const PROJ_ERR_INVALID_OP_MUTUALLY_EXCLUSIVE_ARGS: u32 = 1028;
15pub const PROJ_ERR_INVALID_OP_FILE_NOT_FOUND_OR_INVALID: u32 = 1029;
16pub const PROJ_ERR_COORD_TRANSFM: u32 = 2048;
17pub const PROJ_ERR_COORD_TRANSFM_INVALID_COORD: u32 = 2049;
18pub const PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN: u32 = 2050;
19pub const PROJ_ERR_COORD_TRANSFM_NO_OPERATION: u32 = 2051;
20pub const PROJ_ERR_COORD_TRANSFM_OUTSIDE_GRID: u32 = 2052;
21pub const PROJ_ERR_COORD_TRANSFM_GRID_AT_NODATA: u32 = 2053;
22pub const PROJ_ERR_COORD_TRANSFM_NO_CONVERGENCE: u32 = 2054;
23pub const PROJ_ERR_COORD_TRANSFM_MISSING_TIME: u32 = 2055;
24pub const PROJ_ERR_OTHER: u32 = 4096;
25pub const PROJ_ERR_OTHER_API_MISUSE: u32 = 4097;
26pub const PROJ_ERR_OTHER_NO_INVERSE_OP: u32 = 4098;
27pub const PROJ_ERR_OTHER_NETWORK_ERROR: u32 = 4099;
28pub type wchar_t = ::std::os::raw::c_int;
29unsafe extern "C" {
30    pub static pj_release: [::std::os::raw::c_char; 0usize];
31}
32#[repr(C)]
33#[derive(Debug, Copy, Clone)]
34pub struct PJ_AREA {
35    _unused: [u8; 0],
36}
37#[repr(C)]
38#[derive(Debug, Copy, Clone)]
39pub struct P5_FACTORS {
40    pub meridional_scale: f64,
41    pub parallel_scale: f64,
42    pub areal_scale: f64,
43    pub angular_distortion: f64,
44    pub meridian_parallel_angle: f64,
45    pub meridian_convergence: f64,
46    pub tissot_semimajor: f64,
47    pub tissot_semiminor: f64,
48    pub dx_dlam: f64,
49    pub dx_dphi: f64,
50    pub dy_dlam: f64,
51    pub dy_dphi: f64,
52}
53#[allow(clippy::unnecessary_operation, clippy::identity_op)]
54const _: () = {
55    ["Size of P5_FACTORS"][::std::mem::size_of::<P5_FACTORS>() - 96usize];
56    ["Alignment of P5_FACTORS"][::std::mem::align_of::<P5_FACTORS>() - 8usize];
57    ["Offset of field: P5_FACTORS::meridional_scale"]
58        [::std::mem::offset_of!(P5_FACTORS, meridional_scale) - 0usize];
59    ["Offset of field: P5_FACTORS::parallel_scale"]
60        [::std::mem::offset_of!(P5_FACTORS, parallel_scale) - 8usize];
61    ["Offset of field: P5_FACTORS::areal_scale"]
62        [::std::mem::offset_of!(P5_FACTORS, areal_scale) - 16usize];
63    ["Offset of field: P5_FACTORS::angular_distortion"]
64        [::std::mem::offset_of!(P5_FACTORS, angular_distortion) - 24usize];
65    ["Offset of field: P5_FACTORS::meridian_parallel_angle"]
66        [::std::mem::offset_of!(P5_FACTORS, meridian_parallel_angle) - 32usize];
67    ["Offset of field: P5_FACTORS::meridian_convergence"]
68        [::std::mem::offset_of!(P5_FACTORS, meridian_convergence) - 40usize];
69    ["Offset of field: P5_FACTORS::tissot_semimajor"]
70        [::std::mem::offset_of!(P5_FACTORS, tissot_semimajor) - 48usize];
71    ["Offset of field: P5_FACTORS::tissot_semiminor"]
72        [::std::mem::offset_of!(P5_FACTORS, tissot_semiminor) - 56usize];
73    ["Offset of field: P5_FACTORS::dx_dlam"][::std::mem::offset_of!(P5_FACTORS, dx_dlam) - 64usize];
74    ["Offset of field: P5_FACTORS::dx_dphi"][::std::mem::offset_of!(P5_FACTORS, dx_dphi) - 72usize];
75    ["Offset of field: P5_FACTORS::dy_dlam"][::std::mem::offset_of!(P5_FACTORS, dy_dlam) - 80usize];
76    ["Offset of field: P5_FACTORS::dy_dphi"][::std::mem::offset_of!(P5_FACTORS, dy_dphi) - 88usize];
77};
78pub type PJ_FACTORS = P5_FACTORS;
79#[repr(C)]
80#[derive(Debug, Copy, Clone)]
81pub struct PJconsts {
82    _unused: [u8; 0],
83}
84pub type PJ = PJconsts;
85#[repr(C)]
86#[derive(Debug, Copy, Clone)]
87pub struct PJ_LIST {
88    pub id: *const ::std::os::raw::c_char,
89    pub proj: ::std::option::Option<unsafe extern "C" fn(arg1: *mut PJ) -> *mut PJ>,
90    pub descr: *const *const ::std::os::raw::c_char,
91}
92#[allow(clippy::unnecessary_operation, clippy::identity_op)]
93const _: () = {
94    ["Size of PJ_LIST"][::std::mem::size_of::<PJ_LIST>() - 24usize];
95    ["Alignment of PJ_LIST"][::std::mem::align_of::<PJ_LIST>() - 8usize];
96    ["Offset of field: PJ_LIST::id"][::std::mem::offset_of!(PJ_LIST, id) - 0usize];
97    ["Offset of field: PJ_LIST::proj"][::std::mem::offset_of!(PJ_LIST, proj) - 8usize];
98    ["Offset of field: PJ_LIST::descr"][::std::mem::offset_of!(PJ_LIST, descr) - 16usize];
99};
100pub type PJ_OPERATIONS = PJ_LIST;
101#[repr(C)]
102#[derive(Debug, Copy, Clone)]
103pub struct PJ_ELLPS {
104    pub id: *const ::std::os::raw::c_char,
105    pub major: *const ::std::os::raw::c_char,
106    pub ell: *const ::std::os::raw::c_char,
107    pub name: *const ::std::os::raw::c_char,
108}
109#[allow(clippy::unnecessary_operation, clippy::identity_op)]
110const _: () = {
111    ["Size of PJ_ELLPS"][::std::mem::size_of::<PJ_ELLPS>() - 32usize];
112    ["Alignment of PJ_ELLPS"][::std::mem::align_of::<PJ_ELLPS>() - 8usize];
113    ["Offset of field: PJ_ELLPS::id"][::std::mem::offset_of!(PJ_ELLPS, id) - 0usize];
114    ["Offset of field: PJ_ELLPS::major"][::std::mem::offset_of!(PJ_ELLPS, major) - 8usize];
115    ["Offset of field: PJ_ELLPS::ell"][::std::mem::offset_of!(PJ_ELLPS, ell) - 16usize];
116    ["Offset of field: PJ_ELLPS::name"][::std::mem::offset_of!(PJ_ELLPS, name) - 24usize];
117};
118#[repr(C)]
119#[derive(Debug, Copy, Clone)]
120pub struct PJ_UNITS {
121    pub id: *const ::std::os::raw::c_char,
122    pub to_meter: *const ::std::os::raw::c_char,
123    pub name: *const ::std::os::raw::c_char,
124    pub factor: f64,
125}
126#[allow(clippy::unnecessary_operation, clippy::identity_op)]
127const _: () = {
128    ["Size of PJ_UNITS"][::std::mem::size_of::<PJ_UNITS>() - 32usize];
129    ["Alignment of PJ_UNITS"][::std::mem::align_of::<PJ_UNITS>() - 8usize];
130    ["Offset of field: PJ_UNITS::id"][::std::mem::offset_of!(PJ_UNITS, id) - 0usize];
131    ["Offset of field: PJ_UNITS::to_meter"][::std::mem::offset_of!(PJ_UNITS, to_meter) - 8usize];
132    ["Offset of field: PJ_UNITS::name"][::std::mem::offset_of!(PJ_UNITS, name) - 16usize];
133    ["Offset of field: PJ_UNITS::factor"][::std::mem::offset_of!(PJ_UNITS, factor) - 24usize];
134};
135#[repr(C)]
136#[derive(Debug, Copy, Clone)]
137pub struct PJ_PRIME_MERIDIANS {
138    pub id: *const ::std::os::raw::c_char,
139    pub defn: *const ::std::os::raw::c_char,
140}
141#[allow(clippy::unnecessary_operation, clippy::identity_op)]
142const _: () = {
143    ["Size of PJ_PRIME_MERIDIANS"][::std::mem::size_of::<PJ_PRIME_MERIDIANS>() - 16usize];
144    ["Alignment of PJ_PRIME_MERIDIANS"][::std::mem::align_of::<PJ_PRIME_MERIDIANS>() - 8usize];
145    ["Offset of field: PJ_PRIME_MERIDIANS::id"]
146        [::std::mem::offset_of!(PJ_PRIME_MERIDIANS, id) - 0usize];
147    ["Offset of field: PJ_PRIME_MERIDIANS::defn"]
148        [::std::mem::offset_of!(PJ_PRIME_MERIDIANS, defn) - 8usize];
149};
150#[repr(C)]
151#[derive(Debug, Copy, Clone)]
152pub struct PJ_XYZT {
153    pub x: f64,
154    pub y: f64,
155    pub z: f64,
156    pub t: f64,
157}
158#[allow(clippy::unnecessary_operation, clippy::identity_op)]
159const _: () = {
160    ["Size of PJ_XYZT"][::std::mem::size_of::<PJ_XYZT>() - 32usize];
161    ["Alignment of PJ_XYZT"][::std::mem::align_of::<PJ_XYZT>() - 8usize];
162    ["Offset of field: PJ_XYZT::x"][::std::mem::offset_of!(PJ_XYZT, x) - 0usize];
163    ["Offset of field: PJ_XYZT::y"][::std::mem::offset_of!(PJ_XYZT, y) - 8usize];
164    ["Offset of field: PJ_XYZT::z"][::std::mem::offset_of!(PJ_XYZT, z) - 16usize];
165    ["Offset of field: PJ_XYZT::t"][::std::mem::offset_of!(PJ_XYZT, t) - 24usize];
166};
167#[repr(C)]
168#[derive(Debug, Copy, Clone)]
169pub struct PJ_UVWT {
170    pub u: f64,
171    pub v: f64,
172    pub w: f64,
173    pub t: f64,
174}
175#[allow(clippy::unnecessary_operation, clippy::identity_op)]
176const _: () = {
177    ["Size of PJ_UVWT"][::std::mem::size_of::<PJ_UVWT>() - 32usize];
178    ["Alignment of PJ_UVWT"][::std::mem::align_of::<PJ_UVWT>() - 8usize];
179    ["Offset of field: PJ_UVWT::u"][::std::mem::offset_of!(PJ_UVWT, u) - 0usize];
180    ["Offset of field: PJ_UVWT::v"][::std::mem::offset_of!(PJ_UVWT, v) - 8usize];
181    ["Offset of field: PJ_UVWT::w"][::std::mem::offset_of!(PJ_UVWT, w) - 16usize];
182    ["Offset of field: PJ_UVWT::t"][::std::mem::offset_of!(PJ_UVWT, t) - 24usize];
183};
184#[repr(C)]
185#[derive(Debug, Copy, Clone)]
186pub struct PJ_LPZT {
187    pub lam: f64,
188    pub phi: f64,
189    pub z: f64,
190    pub t: f64,
191}
192#[allow(clippy::unnecessary_operation, clippy::identity_op)]
193const _: () = {
194    ["Size of PJ_LPZT"][::std::mem::size_of::<PJ_LPZT>() - 32usize];
195    ["Alignment of PJ_LPZT"][::std::mem::align_of::<PJ_LPZT>() - 8usize];
196    ["Offset of field: PJ_LPZT::lam"][::std::mem::offset_of!(PJ_LPZT, lam) - 0usize];
197    ["Offset of field: PJ_LPZT::phi"][::std::mem::offset_of!(PJ_LPZT, phi) - 8usize];
198    ["Offset of field: PJ_LPZT::z"][::std::mem::offset_of!(PJ_LPZT, z) - 16usize];
199    ["Offset of field: PJ_LPZT::t"][::std::mem::offset_of!(PJ_LPZT, t) - 24usize];
200};
201#[repr(C)]
202#[derive(Debug, Copy, Clone)]
203pub struct PJ_OPK {
204    pub o: f64,
205    pub p: f64,
206    pub k: f64,
207}
208#[allow(clippy::unnecessary_operation, clippy::identity_op)]
209const _: () = {
210    ["Size of PJ_OPK"][::std::mem::size_of::<PJ_OPK>() - 24usize];
211    ["Alignment of PJ_OPK"][::std::mem::align_of::<PJ_OPK>() - 8usize];
212    ["Offset of field: PJ_OPK::o"][::std::mem::offset_of!(PJ_OPK, o) - 0usize];
213    ["Offset of field: PJ_OPK::p"][::std::mem::offset_of!(PJ_OPK, p) - 8usize];
214    ["Offset of field: PJ_OPK::k"][::std::mem::offset_of!(PJ_OPK, k) - 16usize];
215};
216#[repr(C)]
217#[derive(Debug, Copy, Clone)]
218pub struct PJ_ENU {
219    pub e: f64,
220    pub n: f64,
221    pub u: f64,
222}
223#[allow(clippy::unnecessary_operation, clippy::identity_op)]
224const _: () = {
225    ["Size of PJ_ENU"][::std::mem::size_of::<PJ_ENU>() - 24usize];
226    ["Alignment of PJ_ENU"][::std::mem::align_of::<PJ_ENU>() - 8usize];
227    ["Offset of field: PJ_ENU::e"][::std::mem::offset_of!(PJ_ENU, e) - 0usize];
228    ["Offset of field: PJ_ENU::n"][::std::mem::offset_of!(PJ_ENU, n) - 8usize];
229    ["Offset of field: PJ_ENU::u"][::std::mem::offset_of!(PJ_ENU, u) - 16usize];
230};
231#[repr(C)]
232#[derive(Debug, Copy, Clone)]
233pub struct PJ_GEOD {
234    pub s: f64,
235    pub a1: f64,
236    pub a2: f64,
237}
238#[allow(clippy::unnecessary_operation, clippy::identity_op)]
239const _: () = {
240    ["Size of PJ_GEOD"][::std::mem::size_of::<PJ_GEOD>() - 24usize];
241    ["Alignment of PJ_GEOD"][::std::mem::align_of::<PJ_GEOD>() - 8usize];
242    ["Offset of field: PJ_GEOD::s"][::std::mem::offset_of!(PJ_GEOD, s) - 0usize];
243    ["Offset of field: PJ_GEOD::a1"][::std::mem::offset_of!(PJ_GEOD, a1) - 8usize];
244    ["Offset of field: PJ_GEOD::a2"][::std::mem::offset_of!(PJ_GEOD, a2) - 16usize];
245};
246#[repr(C)]
247#[derive(Debug, Copy, Clone)]
248pub struct PJ_UV {
249    pub u: f64,
250    pub v: f64,
251}
252#[allow(clippy::unnecessary_operation, clippy::identity_op)]
253const _: () = {
254    ["Size of PJ_UV"][::std::mem::size_of::<PJ_UV>() - 16usize];
255    ["Alignment of PJ_UV"][::std::mem::align_of::<PJ_UV>() - 8usize];
256    ["Offset of field: PJ_UV::u"][::std::mem::offset_of!(PJ_UV, u) - 0usize];
257    ["Offset of field: PJ_UV::v"][::std::mem::offset_of!(PJ_UV, v) - 8usize];
258};
259#[repr(C)]
260#[derive(Debug, Copy, Clone)]
261pub struct PJ_XY {
262    pub x: f64,
263    pub y: f64,
264}
265#[allow(clippy::unnecessary_operation, clippy::identity_op)]
266const _: () = {
267    ["Size of PJ_XY"][::std::mem::size_of::<PJ_XY>() - 16usize];
268    ["Alignment of PJ_XY"][::std::mem::align_of::<PJ_XY>() - 8usize];
269    ["Offset of field: PJ_XY::x"][::std::mem::offset_of!(PJ_XY, x) - 0usize];
270    ["Offset of field: PJ_XY::y"][::std::mem::offset_of!(PJ_XY, y) - 8usize];
271};
272#[repr(C)]
273#[derive(Debug, Copy, Clone)]
274pub struct PJ_LP {
275    pub lam: f64,
276    pub phi: f64,
277}
278#[allow(clippy::unnecessary_operation, clippy::identity_op)]
279const _: () = {
280    ["Size of PJ_LP"][::std::mem::size_of::<PJ_LP>() - 16usize];
281    ["Alignment of PJ_LP"][::std::mem::align_of::<PJ_LP>() - 8usize];
282    ["Offset of field: PJ_LP::lam"][::std::mem::offset_of!(PJ_LP, lam) - 0usize];
283    ["Offset of field: PJ_LP::phi"][::std::mem::offset_of!(PJ_LP, phi) - 8usize];
284};
285#[repr(C)]
286#[derive(Debug, Copy, Clone)]
287pub struct PJ_XYZ {
288    pub x: f64,
289    pub y: f64,
290    pub z: f64,
291}
292#[allow(clippy::unnecessary_operation, clippy::identity_op)]
293const _: () = {
294    ["Size of PJ_XYZ"][::std::mem::size_of::<PJ_XYZ>() - 24usize];
295    ["Alignment of PJ_XYZ"][::std::mem::align_of::<PJ_XYZ>() - 8usize];
296    ["Offset of field: PJ_XYZ::x"][::std::mem::offset_of!(PJ_XYZ, x) - 0usize];
297    ["Offset of field: PJ_XYZ::y"][::std::mem::offset_of!(PJ_XYZ, y) - 8usize];
298    ["Offset of field: PJ_XYZ::z"][::std::mem::offset_of!(PJ_XYZ, z) - 16usize];
299};
300#[repr(C)]
301#[derive(Debug, Copy, Clone)]
302pub struct PJ_UVW {
303    pub u: f64,
304    pub v: f64,
305    pub w: f64,
306}
307#[allow(clippy::unnecessary_operation, clippy::identity_op)]
308const _: () = {
309    ["Size of PJ_UVW"][::std::mem::size_of::<PJ_UVW>() - 24usize];
310    ["Alignment of PJ_UVW"][::std::mem::align_of::<PJ_UVW>() - 8usize];
311    ["Offset of field: PJ_UVW::u"][::std::mem::offset_of!(PJ_UVW, u) - 0usize];
312    ["Offset of field: PJ_UVW::v"][::std::mem::offset_of!(PJ_UVW, v) - 8usize];
313    ["Offset of field: PJ_UVW::w"][::std::mem::offset_of!(PJ_UVW, w) - 16usize];
314};
315#[repr(C)]
316#[derive(Debug, Copy, Clone)]
317pub struct PJ_LPZ {
318    pub lam: f64,
319    pub phi: f64,
320    pub z: f64,
321}
322#[allow(clippy::unnecessary_operation, clippy::identity_op)]
323const _: () = {
324    ["Size of PJ_LPZ"][::std::mem::size_of::<PJ_LPZ>() - 24usize];
325    ["Alignment of PJ_LPZ"][::std::mem::align_of::<PJ_LPZ>() - 8usize];
326    ["Offset of field: PJ_LPZ::lam"][::std::mem::offset_of!(PJ_LPZ, lam) - 0usize];
327    ["Offset of field: PJ_LPZ::phi"][::std::mem::offset_of!(PJ_LPZ, phi) - 8usize];
328    ["Offset of field: PJ_LPZ::z"][::std::mem::offset_of!(PJ_LPZ, z) - 16usize];
329};
330#[repr(C)]
331#[derive(Copy, Clone)]
332pub union PJ_COORD {
333    pub v: [f64; 4usize],
334    pub xyzt: PJ_XYZT,
335    pub uvwt: PJ_UVWT,
336    pub lpzt: PJ_LPZT,
337    pub geod: PJ_GEOD,
338    pub opk: PJ_OPK,
339    pub enu: PJ_ENU,
340    pub xyz: PJ_XYZ,
341    pub uvw: PJ_UVW,
342    pub lpz: PJ_LPZ,
343    pub xy: PJ_XY,
344    pub uv: PJ_UV,
345    pub lp: PJ_LP,
346}
347#[allow(clippy::unnecessary_operation, clippy::identity_op)]
348const _: () = {
349    ["Size of PJ_COORD"][::std::mem::size_of::<PJ_COORD>() - 32usize];
350    ["Alignment of PJ_COORD"][::std::mem::align_of::<PJ_COORD>() - 8usize];
351    ["Offset of field: PJ_COORD::v"][::std::mem::offset_of!(PJ_COORD, v) - 0usize];
352    ["Offset of field: PJ_COORD::xyzt"][::std::mem::offset_of!(PJ_COORD, xyzt) - 0usize];
353    ["Offset of field: PJ_COORD::uvwt"][::std::mem::offset_of!(PJ_COORD, uvwt) - 0usize];
354    ["Offset of field: PJ_COORD::lpzt"][::std::mem::offset_of!(PJ_COORD, lpzt) - 0usize];
355    ["Offset of field: PJ_COORD::geod"][::std::mem::offset_of!(PJ_COORD, geod) - 0usize];
356    ["Offset of field: PJ_COORD::opk"][::std::mem::offset_of!(PJ_COORD, opk) - 0usize];
357    ["Offset of field: PJ_COORD::enu"][::std::mem::offset_of!(PJ_COORD, enu) - 0usize];
358    ["Offset of field: PJ_COORD::xyz"][::std::mem::offset_of!(PJ_COORD, xyz) - 0usize];
359    ["Offset of field: PJ_COORD::uvw"][::std::mem::offset_of!(PJ_COORD, uvw) - 0usize];
360    ["Offset of field: PJ_COORD::lpz"][::std::mem::offset_of!(PJ_COORD, lpz) - 0usize];
361    ["Offset of field: PJ_COORD::xy"][::std::mem::offset_of!(PJ_COORD, xy) - 0usize];
362    ["Offset of field: PJ_COORD::uv"][::std::mem::offset_of!(PJ_COORD, uv) - 0usize];
363    ["Offset of field: PJ_COORD::lp"][::std::mem::offset_of!(PJ_COORD, lp) - 0usize];
364};
365#[repr(C)]
366#[derive(Debug, Copy, Clone)]
367pub struct PJ_INFO {
368    pub major: ::std::os::raw::c_int,
369    pub minor: ::std::os::raw::c_int,
370    pub patch: ::std::os::raw::c_int,
371    pub release: *const ::std::os::raw::c_char,
372    pub version: *const ::std::os::raw::c_char,
373    pub searchpath: *const ::std::os::raw::c_char,
374    pub paths: *const *const ::std::os::raw::c_char,
375    pub path_count: usize,
376}
377#[allow(clippy::unnecessary_operation, clippy::identity_op)]
378const _: () = {
379    ["Size of PJ_INFO"][::std::mem::size_of::<PJ_INFO>() - 56usize];
380    ["Alignment of PJ_INFO"][::std::mem::align_of::<PJ_INFO>() - 8usize];
381    ["Offset of field: PJ_INFO::major"][::std::mem::offset_of!(PJ_INFO, major) - 0usize];
382    ["Offset of field: PJ_INFO::minor"][::std::mem::offset_of!(PJ_INFO, minor) - 4usize];
383    ["Offset of field: PJ_INFO::patch"][::std::mem::offset_of!(PJ_INFO, patch) - 8usize];
384    ["Offset of field: PJ_INFO::release"][::std::mem::offset_of!(PJ_INFO, release) - 16usize];
385    ["Offset of field: PJ_INFO::version"][::std::mem::offset_of!(PJ_INFO, version) - 24usize];
386    ["Offset of field: PJ_INFO::searchpath"][::std::mem::offset_of!(PJ_INFO, searchpath) - 32usize];
387    ["Offset of field: PJ_INFO::paths"][::std::mem::offset_of!(PJ_INFO, paths) - 40usize];
388    ["Offset of field: PJ_INFO::path_count"][::std::mem::offset_of!(PJ_INFO, path_count) - 48usize];
389};
390#[repr(C)]
391#[derive(Debug, Copy, Clone)]
392pub struct PJ_PROJ_INFO {
393    pub id: *const ::std::os::raw::c_char,
394    pub description: *const ::std::os::raw::c_char,
395    pub definition: *const ::std::os::raw::c_char,
396    pub has_inverse: ::std::os::raw::c_int,
397    pub accuracy: f64,
398}
399#[allow(clippy::unnecessary_operation, clippy::identity_op)]
400const _: () = {
401    ["Size of PJ_PROJ_INFO"][::std::mem::size_of::<PJ_PROJ_INFO>() - 40usize];
402    ["Alignment of PJ_PROJ_INFO"][::std::mem::align_of::<PJ_PROJ_INFO>() - 8usize];
403    ["Offset of field: PJ_PROJ_INFO::id"][::std::mem::offset_of!(PJ_PROJ_INFO, id) - 0usize];
404    ["Offset of field: PJ_PROJ_INFO::description"]
405        [::std::mem::offset_of!(PJ_PROJ_INFO, description) - 8usize];
406    ["Offset of field: PJ_PROJ_INFO::definition"]
407        [::std::mem::offset_of!(PJ_PROJ_INFO, definition) - 16usize];
408    ["Offset of field: PJ_PROJ_INFO::has_inverse"]
409        [::std::mem::offset_of!(PJ_PROJ_INFO, has_inverse) - 24usize];
410    ["Offset of field: PJ_PROJ_INFO::accuracy"]
411        [::std::mem::offset_of!(PJ_PROJ_INFO, accuracy) - 32usize];
412};
413#[repr(C)]
414#[derive(Debug, Copy, Clone)]
415pub struct PJ_GRID_INFO {
416    pub gridname: [::std::os::raw::c_char; 32usize],
417    pub filename: [::std::os::raw::c_char; 260usize],
418    pub format: [::std::os::raw::c_char; 8usize],
419    pub lowerleft: PJ_LP,
420    pub upperright: PJ_LP,
421    pub n_lon: ::std::os::raw::c_int,
422    pub n_lat: ::std::os::raw::c_int,
423    pub cs_lon: f64,
424    pub cs_lat: f64,
425}
426#[allow(clippy::unnecessary_operation, clippy::identity_op)]
427const _: () = {
428    ["Size of PJ_GRID_INFO"][::std::mem::size_of::<PJ_GRID_INFO>() - 360usize];
429    ["Alignment of PJ_GRID_INFO"][::std::mem::align_of::<PJ_GRID_INFO>() - 8usize];
430    ["Offset of field: PJ_GRID_INFO::gridname"]
431        [::std::mem::offset_of!(PJ_GRID_INFO, gridname) - 0usize];
432    ["Offset of field: PJ_GRID_INFO::filename"]
433        [::std::mem::offset_of!(PJ_GRID_INFO, filename) - 32usize];
434    ["Offset of field: PJ_GRID_INFO::format"]
435        [::std::mem::offset_of!(PJ_GRID_INFO, format) - 292usize];
436    ["Offset of field: PJ_GRID_INFO::lowerleft"]
437        [::std::mem::offset_of!(PJ_GRID_INFO, lowerleft) - 304usize];
438    ["Offset of field: PJ_GRID_INFO::upperright"]
439        [::std::mem::offset_of!(PJ_GRID_INFO, upperright) - 320usize];
440    ["Offset of field: PJ_GRID_INFO::n_lon"]
441        [::std::mem::offset_of!(PJ_GRID_INFO, n_lon) - 336usize];
442    ["Offset of field: PJ_GRID_INFO::n_lat"]
443        [::std::mem::offset_of!(PJ_GRID_INFO, n_lat) - 340usize];
444    ["Offset of field: PJ_GRID_INFO::cs_lon"]
445        [::std::mem::offset_of!(PJ_GRID_INFO, cs_lon) - 344usize];
446    ["Offset of field: PJ_GRID_INFO::cs_lat"]
447        [::std::mem::offset_of!(PJ_GRID_INFO, cs_lat) - 352usize];
448};
449#[repr(C)]
450#[derive(Debug, Copy, Clone)]
451pub struct PJ_INIT_INFO {
452    pub name: [::std::os::raw::c_char; 32usize],
453    pub filename: [::std::os::raw::c_char; 260usize],
454    pub version: [::std::os::raw::c_char; 32usize],
455    pub origin: [::std::os::raw::c_char; 32usize],
456    pub lastupdate: [::std::os::raw::c_char; 16usize],
457}
458#[allow(clippy::unnecessary_operation, clippy::identity_op)]
459const _: () = {
460    ["Size of PJ_INIT_INFO"][::std::mem::size_of::<PJ_INIT_INFO>() - 372usize];
461    ["Alignment of PJ_INIT_INFO"][::std::mem::align_of::<PJ_INIT_INFO>() - 1usize];
462    ["Offset of field: PJ_INIT_INFO::name"][::std::mem::offset_of!(PJ_INIT_INFO, name) - 0usize];
463    ["Offset of field: PJ_INIT_INFO::filename"]
464        [::std::mem::offset_of!(PJ_INIT_INFO, filename) - 32usize];
465    ["Offset of field: PJ_INIT_INFO::version"]
466        [::std::mem::offset_of!(PJ_INIT_INFO, version) - 292usize];
467    ["Offset of field: PJ_INIT_INFO::origin"]
468        [::std::mem::offset_of!(PJ_INIT_INFO, origin) - 324usize];
469    ["Offset of field: PJ_INIT_INFO::lastupdate"]
470        [::std::mem::offset_of!(PJ_INIT_INFO, lastupdate) - 356usize];
471};
472pub const PJ_LOG_LEVEL_PJ_LOG_NONE: PJ_LOG_LEVEL = 0;
473pub const PJ_LOG_LEVEL_PJ_LOG_ERROR: PJ_LOG_LEVEL = 1;
474pub const PJ_LOG_LEVEL_PJ_LOG_DEBUG: PJ_LOG_LEVEL = 2;
475pub const PJ_LOG_LEVEL_PJ_LOG_TRACE: PJ_LOG_LEVEL = 3;
476pub const PJ_LOG_LEVEL_PJ_LOG_TELL: PJ_LOG_LEVEL = 4;
477pub const PJ_LOG_LEVEL_PJ_LOG_DEBUG_MAJOR: PJ_LOG_LEVEL = 2;
478pub const PJ_LOG_LEVEL_PJ_LOG_DEBUG_MINOR: PJ_LOG_LEVEL = 3;
479pub type PJ_LOG_LEVEL = ::std::os::raw::c_uint;
480pub type PJ_LOG_FUNCTION = ::std::option::Option<
481    unsafe extern "C" fn(
482        arg1: *mut ::std::os::raw::c_void,
483        arg2: ::std::os::raw::c_int,
484        arg3: *const ::std::os::raw::c_char,
485    ),
486>;
487#[repr(C)]
488#[derive(Debug, Copy, Clone)]
489pub struct pj_ctx {
490    _unused: [u8; 0],
491}
492pub type PJ_CONTEXT = pj_ctx;
493unsafe extern "C" {
494    pub fn proj_context_create() -> *mut PJ_CONTEXT;
495}
496unsafe extern "C" {
497    pub fn proj_context_destroy(ctx: *mut PJ_CONTEXT) -> *mut PJ_CONTEXT;
498}
499unsafe extern "C" {
500    pub fn proj_context_clone(ctx: *mut PJ_CONTEXT) -> *mut PJ_CONTEXT;
501}
502#[doc = " Callback to resolve a filename to a full path"]
503pub type proj_file_finder = ::std::option::Option<
504    unsafe extern "C" fn(
505        ctx: *mut PJ_CONTEXT,
506        arg1: *const ::std::os::raw::c_char,
507        user_data: *mut ::std::os::raw::c_void,
508    ) -> *const ::std::os::raw::c_char,
509>;
510unsafe extern "C" {
511    #[doc = " @endcond"]
512    pub fn proj_context_set_file_finder(
513        ctx: *mut PJ_CONTEXT,
514        finder: proj_file_finder,
515        user_data: *mut ::std::os::raw::c_void,
516    );
517}
518unsafe extern "C" {
519    pub fn proj_context_set_search_paths(
520        ctx: *mut PJ_CONTEXT,
521        count_paths: ::std::os::raw::c_int,
522        paths: *const *const ::std::os::raw::c_char,
523    );
524}
525unsafe extern "C" {
526    pub fn proj_context_set_ca_bundle_path(
527        ctx: *mut PJ_CONTEXT,
528        path: *const ::std::os::raw::c_char,
529    );
530}
531unsafe extern "C" {
532    #[doc = " @cond Doxygen_Suppress"]
533    pub fn proj_context_use_proj4_init_rules(ctx: *mut PJ_CONTEXT, enable: ::std::os::raw::c_int);
534}
535unsafe extern "C" {
536    pub fn proj_context_get_use_proj4_init_rules(
537        ctx: *mut PJ_CONTEXT,
538        from_legacy_code_path: ::std::os::raw::c_int,
539    ) -> ::std::os::raw::c_int;
540}
541#[repr(C)]
542#[derive(Debug, Copy, Clone)]
543pub struct PROJ_FILE_HANDLE {
544    _unused: [u8; 0],
545}
546#[doc = " Read-only access. Equivalent to \"rb\""]
547pub const PROJ_OPEN_ACCESS_PROJ_OPEN_ACCESS_READ_ONLY: PROJ_OPEN_ACCESS = 0;
548#[doc = " Read-update access. File should be created if not existing. Equivalent\nto \"r+b\""]
549pub const PROJ_OPEN_ACCESS_PROJ_OPEN_ACCESS_READ_UPDATE: PROJ_OPEN_ACCESS = 1;
550#[doc = " Create access. File should be truncated to 0-byte if already existing.\nEquivalent to \"w+b\""]
551pub const PROJ_OPEN_ACCESS_PROJ_OPEN_ACCESS_CREATE: PROJ_OPEN_ACCESS = 2;
552#[doc = " Open access / mode"]
553pub type PROJ_OPEN_ACCESS = ::std::os::raw::c_uint;
554#[doc = " File API callbacks"]
555#[repr(C)]
556#[derive(Debug, Copy, Clone)]
557pub struct PROJ_FILE_API {
558    #[doc = " Version of this structure. Should be set to 1 currently."]
559    pub version: ::std::os::raw::c_int,
560    #[doc = " Open file. Return NULL if error"]
561    pub open_cbk: ::std::option::Option<
562        unsafe extern "C" fn(
563            ctx: *mut PJ_CONTEXT,
564            filename: *const ::std::os::raw::c_char,
565            access: PROJ_OPEN_ACCESS,
566            user_data: *mut ::std::os::raw::c_void,
567        ) -> *mut PROJ_FILE_HANDLE,
568    >,
569    #[doc = " Read sizeBytes into buffer from current position and return number of\n bytes read"]
570    pub read_cbk: ::std::option::Option<
571        unsafe extern "C" fn(
572            ctx: *mut PJ_CONTEXT,
573            arg1: *mut PROJ_FILE_HANDLE,
574            buffer: *mut ::std::os::raw::c_void,
575            sizeBytes: usize,
576            user_data: *mut ::std::os::raw::c_void,
577        ) -> usize,
578    >,
579    #[doc = " Write sizeBytes into buffer from current position and return number of\n bytes written"]
580    pub write_cbk: ::std::option::Option<
581        unsafe extern "C" fn(
582            ctx: *mut PJ_CONTEXT,
583            arg1: *mut PROJ_FILE_HANDLE,
584            buffer: *const ::std::os::raw::c_void,
585            sizeBytes: usize,
586            user_data: *mut ::std::os::raw::c_void,
587        ) -> usize,
588    >,
589    #[doc = " Seek to offset using whence=SEEK_SET/SEEK_CUR/SEEK_END. Return TRUE in\n case of success"]
590    pub seek_cbk: ::std::option::Option<
591        unsafe extern "C" fn(
592            ctx: *mut PJ_CONTEXT,
593            arg1: *mut PROJ_FILE_HANDLE,
594            offset: ::std::os::raw::c_longlong,
595            whence: ::std::os::raw::c_int,
596            user_data: *mut ::std::os::raw::c_void,
597        ) -> ::std::os::raw::c_int,
598    >,
599    #[doc = " Return current file position"]
600    pub tell_cbk: ::std::option::Option<
601        unsafe extern "C" fn(
602            ctx: *mut PJ_CONTEXT,
603            arg1: *mut PROJ_FILE_HANDLE,
604            user_data: *mut ::std::os::raw::c_void,
605        ) -> ::std::os::raw::c_ulonglong,
606    >,
607    #[doc = " Close file"]
608    pub close_cbk: ::std::option::Option<
609        unsafe extern "C" fn(
610            ctx: *mut PJ_CONTEXT,
611            arg1: *mut PROJ_FILE_HANDLE,
612            user_data: *mut ::std::os::raw::c_void,
613        ),
614    >,
615    #[doc = " Return TRUE if a file exists"]
616    pub exists_cbk: ::std::option::Option<
617        unsafe extern "C" fn(
618            ctx: *mut PJ_CONTEXT,
619            filename: *const ::std::os::raw::c_char,
620            user_data: *mut ::std::os::raw::c_void,
621        ) -> ::std::os::raw::c_int,
622    >,
623    #[doc = " Return TRUE if directory exists or could be created"]
624    pub mkdir_cbk: ::std::option::Option<
625        unsafe extern "C" fn(
626            ctx: *mut PJ_CONTEXT,
627            filename: *const ::std::os::raw::c_char,
628            user_data: *mut ::std::os::raw::c_void,
629        ) -> ::std::os::raw::c_int,
630    >,
631    #[doc = " Return TRUE if file could be removed"]
632    pub unlink_cbk: ::std::option::Option<
633        unsafe extern "C" fn(
634            ctx: *mut PJ_CONTEXT,
635            filename: *const ::std::os::raw::c_char,
636            user_data: *mut ::std::os::raw::c_void,
637        ) -> ::std::os::raw::c_int,
638    >,
639    #[doc = " Return TRUE if file could be renamed"]
640    pub rename_cbk: ::std::option::Option<
641        unsafe extern "C" fn(
642            ctx: *mut PJ_CONTEXT,
643            oldPath: *const ::std::os::raw::c_char,
644            newPath: *const ::std::os::raw::c_char,
645            user_data: *mut ::std::os::raw::c_void,
646        ) -> ::std::os::raw::c_int,
647    >,
648}
649#[allow(clippy::unnecessary_operation, clippy::identity_op)]
650const _: () = {
651    ["Size of PROJ_FILE_API"][::std::mem::size_of::<PROJ_FILE_API>() - 88usize];
652    ["Alignment of PROJ_FILE_API"][::std::mem::align_of::<PROJ_FILE_API>() - 8usize];
653    ["Offset of field: PROJ_FILE_API::version"]
654        [::std::mem::offset_of!(PROJ_FILE_API, version) - 0usize];
655    ["Offset of field: PROJ_FILE_API::open_cbk"]
656        [::std::mem::offset_of!(PROJ_FILE_API, open_cbk) - 8usize];
657    ["Offset of field: PROJ_FILE_API::read_cbk"]
658        [::std::mem::offset_of!(PROJ_FILE_API, read_cbk) - 16usize];
659    ["Offset of field: PROJ_FILE_API::write_cbk"]
660        [::std::mem::offset_of!(PROJ_FILE_API, write_cbk) - 24usize];
661    ["Offset of field: PROJ_FILE_API::seek_cbk"]
662        [::std::mem::offset_of!(PROJ_FILE_API, seek_cbk) - 32usize];
663    ["Offset of field: PROJ_FILE_API::tell_cbk"]
664        [::std::mem::offset_of!(PROJ_FILE_API, tell_cbk) - 40usize];
665    ["Offset of field: PROJ_FILE_API::close_cbk"]
666        [::std::mem::offset_of!(PROJ_FILE_API, close_cbk) - 48usize];
667    ["Offset of field: PROJ_FILE_API::exists_cbk"]
668        [::std::mem::offset_of!(PROJ_FILE_API, exists_cbk) - 56usize];
669    ["Offset of field: PROJ_FILE_API::mkdir_cbk"]
670        [::std::mem::offset_of!(PROJ_FILE_API, mkdir_cbk) - 64usize];
671    ["Offset of field: PROJ_FILE_API::unlink_cbk"]
672        [::std::mem::offset_of!(PROJ_FILE_API, unlink_cbk) - 72usize];
673    ["Offset of field: PROJ_FILE_API::rename_cbk"]
674        [::std::mem::offset_of!(PROJ_FILE_API, rename_cbk) - 80usize];
675};
676unsafe extern "C" {
677    pub fn proj_context_set_fileapi(
678        ctx: *mut PJ_CONTEXT,
679        fileapi: *const PROJ_FILE_API,
680        user_data: *mut ::std::os::raw::c_void,
681    ) -> ::std::os::raw::c_int;
682}
683unsafe extern "C" {
684    pub fn proj_context_set_sqlite3_vfs_name(
685        ctx: *mut PJ_CONTEXT,
686        name: *const ::std::os::raw::c_char,
687    );
688}
689#[repr(C)]
690#[derive(Debug, Copy, Clone)]
691pub struct PROJ_NETWORK_HANDLE {
692    _unused: [u8; 0],
693}
694#[doc = " Network access: open callback\n\n Should try to read the size_to_read first bytes at the specified offset of\n the file given by URL url,\n and write them to buffer. *out_size_read should be updated with the actual\n amount of bytes read (== size_to_read if the file is larger than\n size_to_read). During this read, the implementation should make sure to store\n the HTTP headers from the server response to be able to respond to\n proj_network_get_header_value_cbk_type callback.\n\n error_string_max_size should be the maximum size that can be written into\n the out_error_string buffer (including terminating nul character).\n\n @return a non-NULL opaque handle in case of success."]
695pub type proj_network_open_cbk_type = ::std::option::Option<
696    unsafe extern "C" fn(
697        ctx: *mut PJ_CONTEXT,
698        url: *const ::std::os::raw::c_char,
699        offset: ::std::os::raw::c_ulonglong,
700        size_to_read: usize,
701        buffer: *mut ::std::os::raw::c_void,
702        out_size_read: *mut usize,
703        error_string_max_size: usize,
704        out_error_string: *mut ::std::os::raw::c_char,
705        user_data: *mut ::std::os::raw::c_void,
706    ) -> *mut PROJ_NETWORK_HANDLE,
707>;
708#[doc = " Network access: close callback"]
709pub type proj_network_close_cbk_type = ::std::option::Option<
710    unsafe extern "C" fn(
711        ctx: *mut PJ_CONTEXT,
712        handle: *mut PROJ_NETWORK_HANDLE,
713        user_data: *mut ::std::os::raw::c_void,
714    ),
715>;
716#[doc = " Network access: get HTTP headers"]
717pub type proj_network_get_header_value_cbk_type = ::std::option::Option<
718    unsafe extern "C" fn(
719        ctx: *mut PJ_CONTEXT,
720        handle: *mut PROJ_NETWORK_HANDLE,
721        header_name: *const ::std::os::raw::c_char,
722        user_data: *mut ::std::os::raw::c_void,
723    ) -> *const ::std::os::raw::c_char,
724>;
725#[doc = " Network access: read range\n\n Read size_to_read bytes from handle, starting at offset, into\n buffer.\n During this read, the implementation should make sure to store the HTTP\n headers from the server response to be able to respond to\n proj_network_get_header_value_cbk_type callback.\n\n error_string_max_size should be the maximum size that can be written into\n the out_error_string buffer (including terminating nul character).\n\n @return the number of bytes actually read (0 in case of error)"]
726pub type proj_network_read_range_type = ::std::option::Option<
727    unsafe extern "C" fn(
728        ctx: *mut PJ_CONTEXT,
729        handle: *mut PROJ_NETWORK_HANDLE,
730        offset: ::std::os::raw::c_ulonglong,
731        size_to_read: usize,
732        buffer: *mut ::std::os::raw::c_void,
733        error_string_max_size: usize,
734        out_error_string: *mut ::std::os::raw::c_char,
735        user_data: *mut ::std::os::raw::c_void,
736    ) -> usize,
737>;
738unsafe extern "C" {
739    pub fn proj_context_set_network_callbacks(
740        ctx: *mut PJ_CONTEXT,
741        open_cbk: proj_network_open_cbk_type,
742        close_cbk: proj_network_close_cbk_type,
743        get_header_value_cbk: proj_network_get_header_value_cbk_type,
744        read_range_cbk: proj_network_read_range_type,
745        user_data: *mut ::std::os::raw::c_void,
746    ) -> ::std::os::raw::c_int;
747}
748unsafe extern "C" {
749    pub fn proj_context_set_enable_network(
750        ctx: *mut PJ_CONTEXT,
751        enabled: ::std::os::raw::c_int,
752    ) -> ::std::os::raw::c_int;
753}
754unsafe extern "C" {
755    pub fn proj_context_is_network_enabled(ctx: *mut PJ_CONTEXT) -> ::std::os::raw::c_int;
756}
757unsafe extern "C" {
758    pub fn proj_context_set_url_endpoint(ctx: *mut PJ_CONTEXT, url: *const ::std::os::raw::c_char);
759}
760unsafe extern "C" {
761    pub fn proj_context_get_url_endpoint(ctx: *mut PJ_CONTEXT) -> *const ::std::os::raw::c_char;
762}
763unsafe extern "C" {
764    pub fn proj_context_get_user_writable_directory(
765        ctx: *mut PJ_CONTEXT,
766        create: ::std::os::raw::c_int,
767    ) -> *const ::std::os::raw::c_char;
768}
769unsafe extern "C" {
770    pub fn proj_context_set_user_writable_directory(
771        ctx: *mut PJ_CONTEXT,
772        path: *const ::std::os::raw::c_char,
773        create: ::std::os::raw::c_int,
774    );
775}
776unsafe extern "C" {
777    pub fn proj_grid_cache_set_enable(ctx: *mut PJ_CONTEXT, enabled: ::std::os::raw::c_int);
778}
779unsafe extern "C" {
780    pub fn proj_grid_cache_set_filename(
781        ctx: *mut PJ_CONTEXT,
782        fullname: *const ::std::os::raw::c_char,
783    );
784}
785unsafe extern "C" {
786    pub fn proj_grid_cache_set_max_size(ctx: *mut PJ_CONTEXT, max_size_MB: ::std::os::raw::c_int);
787}
788unsafe extern "C" {
789    pub fn proj_grid_cache_set_ttl(ctx: *mut PJ_CONTEXT, ttl_seconds: ::std::os::raw::c_int);
790}
791unsafe extern "C" {
792    pub fn proj_grid_cache_clear(ctx: *mut PJ_CONTEXT);
793}
794unsafe extern "C" {
795    pub fn proj_is_download_needed(
796        ctx: *mut PJ_CONTEXT,
797        url_or_filename: *const ::std::os::raw::c_char,
798        ignore_ttl_setting: ::std::os::raw::c_int,
799    ) -> ::std::os::raw::c_int;
800}
801unsafe extern "C" {
802    pub fn proj_download_file(
803        ctx: *mut PJ_CONTEXT,
804        url_or_filename: *const ::std::os::raw::c_char,
805        ignore_ttl_setting: ::std::os::raw::c_int,
806        progress_cbk: ::std::option::Option<
807            unsafe extern "C" fn(
808                arg1: *mut PJ_CONTEXT,
809                pct: f64,
810                user_data: *mut ::std::os::raw::c_void,
811            ) -> ::std::os::raw::c_int,
812        >,
813        user_data: *mut ::std::os::raw::c_void,
814    ) -> ::std::os::raw::c_int;
815}
816unsafe extern "C" {
817    #[doc = " @cond Doxygen_Suppress"]
818    pub fn proj_create(ctx: *mut PJ_CONTEXT, definition: *const ::std::os::raw::c_char) -> *mut PJ;
819}
820unsafe extern "C" {
821    pub fn proj_create_argv(
822        ctx: *mut PJ_CONTEXT,
823        argc: ::std::os::raw::c_int,
824        argv: *mut *mut ::std::os::raw::c_char,
825    ) -> *mut PJ;
826}
827unsafe extern "C" {
828    pub fn proj_create_crs_to_crs(
829        ctx: *mut PJ_CONTEXT,
830        source_crs: *const ::std::os::raw::c_char,
831        target_crs: *const ::std::os::raw::c_char,
832        area: *mut PJ_AREA,
833    ) -> *mut PJ;
834}
835unsafe extern "C" {
836    pub fn proj_create_crs_to_crs_from_pj(
837        ctx: *mut PJ_CONTEXT,
838        source_crs: *const PJ,
839        target_crs: *const PJ,
840        area: *mut PJ_AREA,
841        options: *const *const ::std::os::raw::c_char,
842    ) -> *mut PJ;
843}
844unsafe extern "C" {
845    #[doc = " @endcond"]
846    pub fn proj_normalize_for_visualization(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> *mut PJ;
847}
848unsafe extern "C" {
849    #[doc = " @cond Doxygen_Suppress"]
850    pub fn proj_assign_context(pj: *mut PJ, ctx: *mut PJ_CONTEXT);
851}
852unsafe extern "C" {
853    pub fn proj_destroy(P: *mut PJ) -> *mut PJ;
854}
855unsafe extern "C" {
856    pub fn proj_area_create() -> *mut PJ_AREA;
857}
858unsafe extern "C" {
859    pub fn proj_area_set_bbox(
860        area: *mut PJ_AREA,
861        west_lon_degree: f64,
862        south_lat_degree: f64,
863        east_lon_degree: f64,
864        north_lat_degree: f64,
865    );
866}
867unsafe extern "C" {
868    pub fn proj_area_set_name(area: *mut PJ_AREA, name: *const ::std::os::raw::c_char);
869}
870unsafe extern "C" {
871    pub fn proj_area_destroy(area: *mut PJ_AREA);
872}
873pub const PJ_DIRECTION_PJ_FWD: PJ_DIRECTION = 1;
874pub const PJ_DIRECTION_PJ_IDENT: PJ_DIRECTION = 0;
875pub const PJ_DIRECTION_PJ_INV: PJ_DIRECTION = -1;
876pub type PJ_DIRECTION = ::std::os::raw::c_int;
877unsafe extern "C" {
878    pub fn proj_angular_input(P: *mut PJ, dir: PJ_DIRECTION) -> ::std::os::raw::c_int;
879}
880unsafe extern "C" {
881    pub fn proj_angular_output(P: *mut PJ, dir: PJ_DIRECTION) -> ::std::os::raw::c_int;
882}
883unsafe extern "C" {
884    pub fn proj_degree_input(P: *mut PJ, dir: PJ_DIRECTION) -> ::std::os::raw::c_int;
885}
886unsafe extern "C" {
887    pub fn proj_degree_output(P: *mut PJ, dir: PJ_DIRECTION) -> ::std::os::raw::c_int;
888}
889unsafe extern "C" {
890    pub fn proj_trans(P: *mut PJ, direction: PJ_DIRECTION, coord: PJ_COORD) -> PJ_COORD;
891}
892unsafe extern "C" {
893    pub fn proj_trans_get_last_used_operation(P: *mut PJ) -> *mut PJ;
894}
895unsafe extern "C" {
896    pub fn proj_trans_array(
897        P: *mut PJ,
898        direction: PJ_DIRECTION,
899        n: usize,
900        coord: *mut PJ_COORD,
901    ) -> ::std::os::raw::c_int;
902}
903unsafe extern "C" {
904    pub fn proj_trans_generic(
905        P: *mut PJ,
906        direction: PJ_DIRECTION,
907        x: *mut f64,
908        sx: usize,
909        nx: usize,
910        y: *mut f64,
911        sy: usize,
912        ny: usize,
913        z: *mut f64,
914        sz: usize,
915        nz: usize,
916        t: *mut f64,
917        st: usize,
918        nt: usize,
919    ) -> usize;
920}
921unsafe extern "C" {
922    #[doc = " @endcond"]
923    pub fn proj_trans_bounds(
924        context: *mut PJ_CONTEXT,
925        P: *mut PJ,
926        direction: PJ_DIRECTION,
927        xmin: f64,
928        ymin: f64,
929        xmax: f64,
930        ymax: f64,
931        out_xmin: *mut f64,
932        out_ymin: *mut f64,
933        out_xmax: *mut f64,
934        out_ymax: *mut f64,
935        densify_pts: ::std::os::raw::c_int,
936    ) -> ::std::os::raw::c_int;
937}
938unsafe extern "C" {
939    pub fn proj_trans_bounds_3D(
940        context: *mut PJ_CONTEXT,
941        P: *mut PJ,
942        direction: PJ_DIRECTION,
943        xmin: f64,
944        ymin: f64,
945        zmin: f64,
946        xmax: f64,
947        ymax: f64,
948        zmax: f64,
949        out_xmin: *mut f64,
950        out_ymin: *mut f64,
951        out_zmin: *mut f64,
952        out_xmax: *mut f64,
953        out_ymax: *mut f64,
954        out_zmax: *mut f64,
955        densify_pts: ::std::os::raw::c_int,
956    ) -> ::std::os::raw::c_int;
957}
958unsafe extern "C" {
959    #[doc = " @cond Doxygen_Suppress"]
960    pub fn proj_coord(x: f64, y: f64, z: f64, t: f64) -> PJ_COORD;
961}
962unsafe extern "C" {
963    pub fn proj_roundtrip(
964        P: *mut PJ,
965        direction: PJ_DIRECTION,
966        n: ::std::os::raw::c_int,
967        coord: *mut PJ_COORD,
968    ) -> f64;
969}
970unsafe extern "C" {
971    pub fn proj_lp_dist(P: *const PJ, a: PJ_COORD, b: PJ_COORD) -> f64;
972}
973unsafe extern "C" {
974    pub fn proj_lpz_dist(P: *const PJ, a: PJ_COORD, b: PJ_COORD) -> f64;
975}
976unsafe extern "C" {
977    pub fn proj_xy_dist(a: PJ_COORD, b: PJ_COORD) -> f64;
978}
979unsafe extern "C" {
980    pub fn proj_xyz_dist(a: PJ_COORD, b: PJ_COORD) -> f64;
981}
982unsafe extern "C" {
983    pub fn proj_geod(P: *const PJ, a: PJ_COORD, b: PJ_COORD) -> PJ_COORD;
984}
985unsafe extern "C" {
986    pub fn proj_context_errno(ctx: *mut PJ_CONTEXT) -> ::std::os::raw::c_int;
987}
988unsafe extern "C" {
989    pub fn proj_errno(P: *const PJ) -> ::std::os::raw::c_int;
990}
991unsafe extern "C" {
992    pub fn proj_errno_set(P: *const PJ, err: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
993}
994unsafe extern "C" {
995    pub fn proj_errno_reset(P: *const PJ) -> ::std::os::raw::c_int;
996}
997unsafe extern "C" {
998    pub fn proj_errno_restore(P: *const PJ, err: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
999}
1000unsafe extern "C" {
1001    pub fn proj_errno_string(err: ::std::os::raw::c_int) -> *const ::std::os::raw::c_char;
1002}
1003unsafe extern "C" {
1004    pub fn proj_context_errno_string(
1005        ctx: *mut PJ_CONTEXT,
1006        err: ::std::os::raw::c_int,
1007    ) -> *const ::std::os::raw::c_char;
1008}
1009unsafe extern "C" {
1010    pub fn proj_log_level(ctx: *mut PJ_CONTEXT, log_level: PJ_LOG_LEVEL) -> PJ_LOG_LEVEL;
1011}
1012unsafe extern "C" {
1013    pub fn proj_log_func(
1014        ctx: *mut PJ_CONTEXT,
1015        app_data: *mut ::std::os::raw::c_void,
1016        logf: PJ_LOG_FUNCTION,
1017    );
1018}
1019unsafe extern "C" {
1020    pub fn proj_factors(P: *mut PJ, lp: PJ_COORD) -> PJ_FACTORS;
1021}
1022unsafe extern "C" {
1023    pub fn proj_info() -> PJ_INFO;
1024}
1025unsafe extern "C" {
1026    pub fn proj_pj_info(P: *mut PJ) -> PJ_PROJ_INFO;
1027}
1028unsafe extern "C" {
1029    pub fn proj_grid_info(gridname: *const ::std::os::raw::c_char) -> PJ_GRID_INFO;
1030}
1031unsafe extern "C" {
1032    pub fn proj_init_info(initname: *const ::std::os::raw::c_char) -> PJ_INIT_INFO;
1033}
1034unsafe extern "C" {
1035    pub fn proj_list_operations() -> *const PJ_OPERATIONS;
1036}
1037unsafe extern "C" {
1038    pub fn proj_list_ellps() -> *const PJ_ELLPS;
1039}
1040unsafe extern "C" {
1041    pub fn proj_list_units() -> *const PJ_UNITS;
1042}
1043unsafe extern "C" {
1044    pub fn proj_list_angular_units() -> *const PJ_UNITS;
1045}
1046unsafe extern "C" {
1047    pub fn proj_list_prime_meridians() -> *const PJ_PRIME_MERIDIANS;
1048}
1049unsafe extern "C" {
1050    pub fn proj_torad(angle_in_degrees: f64) -> f64;
1051}
1052unsafe extern "C" {
1053    pub fn proj_todeg(angle_in_radians: f64) -> f64;
1054}
1055unsafe extern "C" {
1056    pub fn proj_dmstor(
1057        is: *const ::std::os::raw::c_char,
1058        rs: *mut *mut ::std::os::raw::c_char,
1059    ) -> f64;
1060}
1061unsafe extern "C" {
1062    pub fn proj_rtodms(
1063        s: *mut ::std::os::raw::c_char,
1064        r: f64,
1065        pos: ::std::os::raw::c_int,
1066        neg: ::std::os::raw::c_int,
1067    ) -> *mut ::std::os::raw::c_char;
1068}
1069unsafe extern "C" {
1070    pub fn proj_rtodms2(
1071        s: *mut ::std::os::raw::c_char,
1072        sizeof_s: usize,
1073        r: f64,
1074        pos: ::std::os::raw::c_int,
1075        neg: ::std::os::raw::c_int,
1076    ) -> *mut ::std::os::raw::c_char;
1077}
1078unsafe extern "C" {
1079    pub fn proj_cleanup();
1080}
1081#[doc = " \\brief Type representing a NULL terminated list of NULL-terminate strings."]
1082pub type PROJ_STRING_LIST = *mut *mut ::std::os::raw::c_char;
1083#[doc = " \\ref WKT2_2019"]
1084pub const PJ_GUESSED_WKT_DIALECT_PJ_GUESSED_WKT2_2019: PJ_GUESSED_WKT_DIALECT = 0;
1085#[doc = " Deprecated alias for PJ_GUESSED_WKT2_2019"]
1086pub const PJ_GUESSED_WKT_DIALECT_PJ_GUESSED_WKT2_2018: PJ_GUESSED_WKT_DIALECT = 0;
1087#[doc = " \\ref WKT2_2015"]
1088pub const PJ_GUESSED_WKT_DIALECT_PJ_GUESSED_WKT2_2015: PJ_GUESSED_WKT_DIALECT = 1;
1089#[doc = " \\ref WKT1"]
1090pub const PJ_GUESSED_WKT_DIALECT_PJ_GUESSED_WKT1_GDAL: PJ_GUESSED_WKT_DIALECT = 2;
1091#[doc = " ESRI variant of WKT1"]
1092pub const PJ_GUESSED_WKT_DIALECT_PJ_GUESSED_WKT1_ESRI: PJ_GUESSED_WKT_DIALECT = 3;
1093#[doc = " Not WKT / unrecognized"]
1094pub const PJ_GUESSED_WKT_DIALECT_PJ_GUESSED_NOT_WKT: PJ_GUESSED_WKT_DIALECT = 4;
1095#[doc = " \\brief Guessed WKT \"dialect\"."]
1096pub type PJ_GUESSED_WKT_DIALECT = ::std::os::raw::c_uint;
1097pub const PJ_CATEGORY_PJ_CATEGORY_ELLIPSOID: PJ_CATEGORY = 0;
1098pub const PJ_CATEGORY_PJ_CATEGORY_PRIME_MERIDIAN: PJ_CATEGORY = 1;
1099pub const PJ_CATEGORY_PJ_CATEGORY_DATUM: PJ_CATEGORY = 2;
1100pub const PJ_CATEGORY_PJ_CATEGORY_CRS: PJ_CATEGORY = 3;
1101pub const PJ_CATEGORY_PJ_CATEGORY_COORDINATE_OPERATION: PJ_CATEGORY = 4;
1102pub const PJ_CATEGORY_PJ_CATEGORY_DATUM_ENSEMBLE: PJ_CATEGORY = 5;
1103#[doc = " \\brief Object category."]
1104pub type PJ_CATEGORY = ::std::os::raw::c_uint;
1105pub const PJ_TYPE_PJ_TYPE_UNKNOWN: PJ_TYPE = 0;
1106pub const PJ_TYPE_PJ_TYPE_ELLIPSOID: PJ_TYPE = 1;
1107pub const PJ_TYPE_PJ_TYPE_PRIME_MERIDIAN: PJ_TYPE = 2;
1108pub const PJ_TYPE_PJ_TYPE_GEODETIC_REFERENCE_FRAME: PJ_TYPE = 3;
1109pub const PJ_TYPE_PJ_TYPE_DYNAMIC_GEODETIC_REFERENCE_FRAME: PJ_TYPE = 4;
1110pub const PJ_TYPE_PJ_TYPE_VERTICAL_REFERENCE_FRAME: PJ_TYPE = 5;
1111pub const PJ_TYPE_PJ_TYPE_DYNAMIC_VERTICAL_REFERENCE_FRAME: PJ_TYPE = 6;
1112pub const PJ_TYPE_PJ_TYPE_DATUM_ENSEMBLE: PJ_TYPE = 7;
1113#[doc = " Abstract type, not returned by proj_get_type()"]
1114pub const PJ_TYPE_PJ_TYPE_CRS: PJ_TYPE = 8;
1115#[doc = " Abstract type, not returned by proj_get_type()"]
1116pub const PJ_TYPE_PJ_TYPE_GEODETIC_CRS: PJ_TYPE = 9;
1117#[doc = " Abstract type, not returned by proj_get_type()"]
1118pub const PJ_TYPE_PJ_TYPE_GEOCENTRIC_CRS: PJ_TYPE = 10;
1119#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1120pub const PJ_TYPE_PJ_TYPE_GEOGRAPHIC_CRS: PJ_TYPE = 11;
1121#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1122pub const PJ_TYPE_PJ_TYPE_GEOGRAPHIC_2D_CRS: PJ_TYPE = 12;
1123#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1124pub const PJ_TYPE_PJ_TYPE_GEOGRAPHIC_3D_CRS: PJ_TYPE = 13;
1125#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1126pub const PJ_TYPE_PJ_TYPE_VERTICAL_CRS: PJ_TYPE = 14;
1127#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1128pub const PJ_TYPE_PJ_TYPE_PROJECTED_CRS: PJ_TYPE = 15;
1129#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1130pub const PJ_TYPE_PJ_TYPE_COMPOUND_CRS: PJ_TYPE = 16;
1131#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1132pub const PJ_TYPE_PJ_TYPE_TEMPORAL_CRS: PJ_TYPE = 17;
1133#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1134pub const PJ_TYPE_PJ_TYPE_ENGINEERING_CRS: PJ_TYPE = 18;
1135#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1136pub const PJ_TYPE_PJ_TYPE_BOUND_CRS: PJ_TYPE = 19;
1137#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1138pub const PJ_TYPE_PJ_TYPE_OTHER_CRS: PJ_TYPE = 20;
1139#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1140pub const PJ_TYPE_PJ_TYPE_CONVERSION: PJ_TYPE = 21;
1141#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1142pub const PJ_TYPE_PJ_TYPE_TRANSFORMATION: PJ_TYPE = 22;
1143#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1144pub const PJ_TYPE_PJ_TYPE_CONCATENATED_OPERATION: PJ_TYPE = 23;
1145#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1146pub const PJ_TYPE_PJ_TYPE_OTHER_COORDINATE_OPERATION: PJ_TYPE = 24;
1147#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1148pub const PJ_TYPE_PJ_TYPE_TEMPORAL_DATUM: PJ_TYPE = 25;
1149#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1150pub const PJ_TYPE_PJ_TYPE_ENGINEERING_DATUM: PJ_TYPE = 26;
1151#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1152pub const PJ_TYPE_PJ_TYPE_PARAMETRIC_DATUM: PJ_TYPE = 27;
1153#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1154pub const PJ_TYPE_PJ_TYPE_DERIVED_PROJECTED_CRS: PJ_TYPE = 28;
1155#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1156pub const PJ_TYPE_PJ_TYPE_COORDINATE_METADATA: PJ_TYPE = 29;
1157#[doc = " \\brief Object type."]
1158pub type PJ_TYPE = ::std::os::raw::c_uint;
1159#[doc = " All properties are identical."]
1160pub const PJ_COMPARISON_CRITERION_PJ_COMP_STRICT: PJ_COMPARISON_CRITERION = 0;
1161#[doc = " The objects are equivalent for the purpose of coordinate\n operations. They can differ by the name of their objects,\n identifiers, other metadata.\n Parameters may be expressed in different units, provided that the\n value is (with some tolerance) the same once expressed in a\n common unit."]
1162pub const PJ_COMPARISON_CRITERION_PJ_COMP_EQUIVALENT: PJ_COMPARISON_CRITERION = 1;
1163#[doc = " Same as EQUIVALENT, relaxed with an exception that the axis order\n of the base CRS of a DerivedCRS/ProjectedCRS or the axis order of\n a GeographicCRS is ignored. Only to be used\n with DerivedCRS/ProjectedCRS/GeographicCRS"]
1164pub const PJ_COMPARISON_CRITERION_PJ_COMP_EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS:
1165    PJ_COMPARISON_CRITERION = 2;
1166#[doc = " Comparison criterion."]
1167pub type PJ_COMPARISON_CRITERION = ::std::os::raw::c_uint;
1168#[doc = " cf osgeo::proj::io::WKTFormatter::Convention::WKT2"]
1169pub const PJ_WKT_TYPE_PJ_WKT2_2015: PJ_WKT_TYPE = 0;
1170#[doc = " cf osgeo::proj::io::WKTFormatter::Convention::WKT2_SIMPLIFIED"]
1171pub const PJ_WKT_TYPE_PJ_WKT2_2015_SIMPLIFIED: PJ_WKT_TYPE = 1;
1172#[doc = " cf osgeo::proj::io::WKTFormatter::Convention::WKT2_2019"]
1173pub const PJ_WKT_TYPE_PJ_WKT2_2019: PJ_WKT_TYPE = 2;
1174#[doc = " Deprecated alias for PJ_WKT2_2019"]
1175pub const PJ_WKT_TYPE_PJ_WKT2_2018: PJ_WKT_TYPE = 2;
1176#[doc = " cf osgeo::proj::io::WKTFormatter::Convention::WKT2_2019_SIMPLIFIED"]
1177pub const PJ_WKT_TYPE_PJ_WKT2_2019_SIMPLIFIED: PJ_WKT_TYPE = 3;
1178#[doc = " Deprecated alias for PJ_WKT2_2019"]
1179pub const PJ_WKT_TYPE_PJ_WKT2_2018_SIMPLIFIED: PJ_WKT_TYPE = 3;
1180#[doc = " cf osgeo::proj::io::WKTFormatter::Convention::WKT1_GDAL"]
1181pub const PJ_WKT_TYPE_PJ_WKT1_GDAL: PJ_WKT_TYPE = 4;
1182#[doc = " cf osgeo::proj::io::WKTFormatter::Convention::WKT1_ESRI"]
1183pub const PJ_WKT_TYPE_PJ_WKT1_ESRI: PJ_WKT_TYPE = 5;
1184#[doc = " \\brief WKT version."]
1185pub type PJ_WKT_TYPE = ::std::os::raw::c_uint;
1186#[doc = " Ignore CRS extent"]
1187pub const PROJ_CRS_EXTENT_USE_PJ_CRS_EXTENT_NONE: PROJ_CRS_EXTENT_USE = 0;
1188#[doc = " Test coordinate operation extent against both CRS extent."]
1189pub const PROJ_CRS_EXTENT_USE_PJ_CRS_EXTENT_BOTH: PROJ_CRS_EXTENT_USE = 1;
1190#[doc = " Test coordinate operation extent against the intersection of both\nCRS extent."]
1191pub const PROJ_CRS_EXTENT_USE_PJ_CRS_EXTENT_INTERSECTION: PROJ_CRS_EXTENT_USE = 2;
1192#[doc = " Test coordinate operation against the smallest of both CRS extent."]
1193pub const PROJ_CRS_EXTENT_USE_PJ_CRS_EXTENT_SMALLEST: PROJ_CRS_EXTENT_USE = 3;
1194#[doc = " Specify how source and target CRS extent should be used to restrict\n candidate operations (only taken into account if no explicit area of\n interest is specified."]
1195pub type PROJ_CRS_EXTENT_USE = ::std::os::raw::c_uint;
1196#[doc = " Grid availability is only used for sorting results. Operations\n where some grids are missing will be sorted last."]
1197pub const PROJ_GRID_AVAILABILITY_USE_PROJ_GRID_AVAILABILITY_USED_FOR_SORTING:
1198    PROJ_GRID_AVAILABILITY_USE = 0;
1199#[doc = " Completely discard an operation if a required grid is missing."]
1200pub const PROJ_GRID_AVAILABILITY_USE_PROJ_GRID_AVAILABILITY_DISCARD_OPERATION_IF_MISSING_GRID:
1201    PROJ_GRID_AVAILABILITY_USE = 1;
1202#[doc = " Ignore grid availability at all. Results will be presented as if\n all grids were available."]
1203pub const PROJ_GRID_AVAILABILITY_USE_PROJ_GRID_AVAILABILITY_IGNORED: PROJ_GRID_AVAILABILITY_USE = 2;
1204#[doc = " Results will be presented as if grids known to PROJ (that is\n registered in the grid_alternatives table of its database) were\n available. Used typically when networking is enabled."]
1205pub const PROJ_GRID_AVAILABILITY_USE_PROJ_GRID_AVAILABILITY_KNOWN_AVAILABLE:
1206    PROJ_GRID_AVAILABILITY_USE = 3;
1207#[doc = " Describe how grid availability is used."]
1208pub type PROJ_GRID_AVAILABILITY_USE = ::std::os::raw::c_uint;
1209#[doc = " cf osgeo::proj::io::PROJStringFormatter::Convention::PROJ_5"]
1210pub const PJ_PROJ_STRING_TYPE_PJ_PROJ_5: PJ_PROJ_STRING_TYPE = 0;
1211#[doc = " cf osgeo::proj::io::PROJStringFormatter::Convention::PROJ_4"]
1212pub const PJ_PROJ_STRING_TYPE_PJ_PROJ_4: PJ_PROJ_STRING_TYPE = 1;
1213#[doc = " \\brief PROJ string version."]
1214pub type PJ_PROJ_STRING_TYPE = ::std::os::raw::c_uint;
1215#[doc = " The area of validity of transforms should strictly contain the\n are of interest."]
1216pub const PROJ_SPATIAL_CRITERION_PROJ_SPATIAL_CRITERION_STRICT_CONTAINMENT: PROJ_SPATIAL_CRITERION =
1217    0;
1218#[doc = " The area of validity of transforms should at least intersect the\n area of interest."]
1219pub const PROJ_SPATIAL_CRITERION_PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION:
1220    PROJ_SPATIAL_CRITERION = 1;
1221#[doc = " Spatial criterion to restrict candidate operations."]
1222pub type PROJ_SPATIAL_CRITERION = ::std::os::raw::c_uint;
1223#[doc = " Always search for intermediate CRS."]
1224pub const PROJ_INTERMEDIATE_CRS_USE_PROJ_INTERMEDIATE_CRS_USE_ALWAYS: PROJ_INTERMEDIATE_CRS_USE = 0;
1225#[doc = " Only attempt looking for intermediate CRS if there is no direct\n transformation available."]
1226pub const PROJ_INTERMEDIATE_CRS_USE_PROJ_INTERMEDIATE_CRS_USE_IF_NO_DIRECT_TRANSFORMATION:
1227    PROJ_INTERMEDIATE_CRS_USE = 1;
1228#[doc = " Only attempt looking for intermediate CRS if there is no direct\n transformation available."]
1229pub const PROJ_INTERMEDIATE_CRS_USE_PROJ_INTERMEDIATE_CRS_USE_NEVER: PROJ_INTERMEDIATE_CRS_USE = 2;
1230#[doc = " Describe if and how intermediate CRS should be used"]
1231pub type PROJ_INTERMEDIATE_CRS_USE = ::std::os::raw::c_uint;
1232pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_UNKNOWN: PJ_COORDINATE_SYSTEM_TYPE = 0;
1233pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_CARTESIAN: PJ_COORDINATE_SYSTEM_TYPE = 1;
1234pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_ELLIPSOIDAL: PJ_COORDINATE_SYSTEM_TYPE = 2;
1235pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_VERTICAL: PJ_COORDINATE_SYSTEM_TYPE = 3;
1236pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_SPHERICAL: PJ_COORDINATE_SYSTEM_TYPE = 4;
1237pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_ORDINAL: PJ_COORDINATE_SYSTEM_TYPE = 5;
1238pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_PARAMETRIC: PJ_COORDINATE_SYSTEM_TYPE = 6;
1239pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_DATETIMETEMPORAL: PJ_COORDINATE_SYSTEM_TYPE = 7;
1240pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_TEMPORALCOUNT: PJ_COORDINATE_SYSTEM_TYPE = 8;
1241pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_TEMPORALMEASURE: PJ_COORDINATE_SYSTEM_TYPE = 9;
1242#[doc = " Type of coordinate system."]
1243pub type PJ_COORDINATE_SYSTEM_TYPE = ::std::os::raw::c_uint;
1244#[doc = " \\brief Structure given overall description of a CRS.\n\n This structure may grow over time, and should not be directly allocated by\n client code."]
1245#[repr(C)]
1246#[derive(Debug, Copy, Clone)]
1247pub struct PROJ_CRS_INFO {
1248    #[doc = " Authority name."]
1249    pub auth_name: *mut ::std::os::raw::c_char,
1250    #[doc = " Object code."]
1251    pub code: *mut ::std::os::raw::c_char,
1252    #[doc = " Object name."]
1253    pub name: *mut ::std::os::raw::c_char,
1254    #[doc = " Object type."]
1255    pub type_: PJ_TYPE,
1256    #[doc = " Whether the object is deprecated"]
1257    pub deprecated: ::std::os::raw::c_int,
1258    #[doc = " Whereas the west_lon_degree, south_lat_degree, east_lon_degree and\n north_lat_degree fields are valid."]
1259    pub bbox_valid: ::std::os::raw::c_int,
1260    #[doc = " Western-most longitude of the area of use, in degrees."]
1261    pub west_lon_degree: f64,
1262    #[doc = " Southern-most latitude of the area of use, in degrees."]
1263    pub south_lat_degree: f64,
1264    #[doc = " Eastern-most longitude of the area of use, in degrees."]
1265    pub east_lon_degree: f64,
1266    #[doc = " Northern-most latitude of the area of use, in degrees."]
1267    pub north_lat_degree: f64,
1268    #[doc = " Name of the area of use."]
1269    pub area_name: *mut ::std::os::raw::c_char,
1270    #[doc = " Name of the projection method for a projected CRS. Might be NULL even\nfor projected CRS in some cases."]
1271    pub projection_method_name: *mut ::std::os::raw::c_char,
1272    #[doc = " Name of the celestial body of the CRS (e.g. \"Earth\").\n @since 8.1"]
1273    pub celestial_body_name: *mut ::std::os::raw::c_char,
1274}
1275#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1276const _: () = {
1277    ["Size of PROJ_CRS_INFO"][::std::mem::size_of::<PROJ_CRS_INFO>() - 96usize];
1278    ["Alignment of PROJ_CRS_INFO"][::std::mem::align_of::<PROJ_CRS_INFO>() - 8usize];
1279    ["Offset of field: PROJ_CRS_INFO::auth_name"]
1280        [::std::mem::offset_of!(PROJ_CRS_INFO, auth_name) - 0usize];
1281    ["Offset of field: PROJ_CRS_INFO::code"][::std::mem::offset_of!(PROJ_CRS_INFO, code) - 8usize];
1282    ["Offset of field: PROJ_CRS_INFO::name"][::std::mem::offset_of!(PROJ_CRS_INFO, name) - 16usize];
1283    ["Offset of field: PROJ_CRS_INFO::type_"]
1284        [::std::mem::offset_of!(PROJ_CRS_INFO, type_) - 24usize];
1285    ["Offset of field: PROJ_CRS_INFO::deprecated"]
1286        [::std::mem::offset_of!(PROJ_CRS_INFO, deprecated) - 28usize];
1287    ["Offset of field: PROJ_CRS_INFO::bbox_valid"]
1288        [::std::mem::offset_of!(PROJ_CRS_INFO, bbox_valid) - 32usize];
1289    ["Offset of field: PROJ_CRS_INFO::west_lon_degree"]
1290        [::std::mem::offset_of!(PROJ_CRS_INFO, west_lon_degree) - 40usize];
1291    ["Offset of field: PROJ_CRS_INFO::south_lat_degree"]
1292        [::std::mem::offset_of!(PROJ_CRS_INFO, south_lat_degree) - 48usize];
1293    ["Offset of field: PROJ_CRS_INFO::east_lon_degree"]
1294        [::std::mem::offset_of!(PROJ_CRS_INFO, east_lon_degree) - 56usize];
1295    ["Offset of field: PROJ_CRS_INFO::north_lat_degree"]
1296        [::std::mem::offset_of!(PROJ_CRS_INFO, north_lat_degree) - 64usize];
1297    ["Offset of field: PROJ_CRS_INFO::area_name"]
1298        [::std::mem::offset_of!(PROJ_CRS_INFO, area_name) - 72usize];
1299    ["Offset of field: PROJ_CRS_INFO::projection_method_name"]
1300        [::std::mem::offset_of!(PROJ_CRS_INFO, projection_method_name) - 80usize];
1301    ["Offset of field: PROJ_CRS_INFO::celestial_body_name"]
1302        [::std::mem::offset_of!(PROJ_CRS_INFO, celestial_body_name) - 88usize];
1303};
1304#[doc = " \\brief Structure describing optional parameters for proj_get_crs_list();\n\n This structure may grow over time, and should not be directly allocated by\n client code."]
1305#[repr(C)]
1306#[derive(Debug, Copy, Clone)]
1307pub struct PROJ_CRS_LIST_PARAMETERS {
1308    #[doc = " Array of allowed object types. Should be NULL if all types are allowed"]
1309    pub types: *const PJ_TYPE,
1310    #[doc = " Size of types. Should be 0 if all types are allowed"]
1311    pub typesCount: usize,
1312    #[doc = " If TRUE and bbox_valid == TRUE, then only CRS whose area of use\n entirely contains the specified bounding box will be returned.\n If FALSE and bbox_valid == TRUE, then only CRS whose area of use\n intersects the specified bounding box will be returned."]
1313    pub crs_area_of_use_contains_bbox: ::std::os::raw::c_int,
1314    #[doc = " To set to TRUE so that west_lon_degree, south_lat_degree,\n east_lon_degree and north_lat_degree fields are taken into account."]
1315    pub bbox_valid: ::std::os::raw::c_int,
1316    #[doc = " Western-most longitude of the area of use, in degrees."]
1317    pub west_lon_degree: f64,
1318    #[doc = " Southern-most latitude of the area of use, in degrees."]
1319    pub south_lat_degree: f64,
1320    #[doc = " Eastern-most longitude of the area of use, in degrees."]
1321    pub east_lon_degree: f64,
1322    #[doc = " Northern-most latitude of the area of use, in degrees."]
1323    pub north_lat_degree: f64,
1324    #[doc = " Whether deprecated objects are allowed. Default to FALSE."]
1325    pub allow_deprecated: ::std::os::raw::c_int,
1326    #[doc = " Celestial body of the CRS (e.g. \"Earth\"). The default value, NULL,\n  means no restriction\n @since 8.1"]
1327    pub celestial_body_name: *const ::std::os::raw::c_char,
1328}
1329#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1330const _: () = {
1331    ["Size of PROJ_CRS_LIST_PARAMETERS"]
1332        [::std::mem::size_of::<PROJ_CRS_LIST_PARAMETERS>() - 72usize];
1333    ["Alignment of PROJ_CRS_LIST_PARAMETERS"]
1334        [::std::mem::align_of::<PROJ_CRS_LIST_PARAMETERS>() - 8usize];
1335    ["Offset of field: PROJ_CRS_LIST_PARAMETERS::types"]
1336        [::std::mem::offset_of!(PROJ_CRS_LIST_PARAMETERS, types) - 0usize];
1337    ["Offset of field: PROJ_CRS_LIST_PARAMETERS::typesCount"]
1338        [::std::mem::offset_of!(PROJ_CRS_LIST_PARAMETERS, typesCount) - 8usize];
1339    ["Offset of field: PROJ_CRS_LIST_PARAMETERS::crs_area_of_use_contains_bbox"]
1340        [::std::mem::offset_of!(PROJ_CRS_LIST_PARAMETERS, crs_area_of_use_contains_bbox) - 16usize];
1341    ["Offset of field: PROJ_CRS_LIST_PARAMETERS::bbox_valid"]
1342        [::std::mem::offset_of!(PROJ_CRS_LIST_PARAMETERS, bbox_valid) - 20usize];
1343    ["Offset of field: PROJ_CRS_LIST_PARAMETERS::west_lon_degree"]
1344        [::std::mem::offset_of!(PROJ_CRS_LIST_PARAMETERS, west_lon_degree) - 24usize];
1345    ["Offset of field: PROJ_CRS_LIST_PARAMETERS::south_lat_degree"]
1346        [::std::mem::offset_of!(PROJ_CRS_LIST_PARAMETERS, south_lat_degree) - 32usize];
1347    ["Offset of field: PROJ_CRS_LIST_PARAMETERS::east_lon_degree"]
1348        [::std::mem::offset_of!(PROJ_CRS_LIST_PARAMETERS, east_lon_degree) - 40usize];
1349    ["Offset of field: PROJ_CRS_LIST_PARAMETERS::north_lat_degree"]
1350        [::std::mem::offset_of!(PROJ_CRS_LIST_PARAMETERS, north_lat_degree) - 48usize];
1351    ["Offset of field: PROJ_CRS_LIST_PARAMETERS::allow_deprecated"]
1352        [::std::mem::offset_of!(PROJ_CRS_LIST_PARAMETERS, allow_deprecated) - 56usize];
1353    ["Offset of field: PROJ_CRS_LIST_PARAMETERS::celestial_body_name"]
1354        [::std::mem::offset_of!(PROJ_CRS_LIST_PARAMETERS, celestial_body_name) - 64usize];
1355};
1356#[doc = " \\brief Structure given description of a unit.\n\n This structure may grow over time, and should not be directly allocated by\n client code.\n @since 7.1"]
1357#[repr(C)]
1358#[derive(Debug, Copy, Clone)]
1359pub struct PROJ_UNIT_INFO {
1360    #[doc = " Authority name."]
1361    pub auth_name: *mut ::std::os::raw::c_char,
1362    #[doc = " Object code."]
1363    pub code: *mut ::std::os::raw::c_char,
1364    #[doc = " Object name. For example \"metre\", \"US survey foot\", etc."]
1365    pub name: *mut ::std::os::raw::c_char,
1366    #[doc = " Category of the unit: one of \"linear\", \"linear_per_time\", \"angular\",\n \"angular_per_time\", \"scale\", \"scale_per_time\" or \"time\""]
1367    pub category: *mut ::std::os::raw::c_char,
1368    #[doc = " Conversion factor to apply to transform from that unit to the\n corresponding SI unit (metre for \"linear\", radian for \"angular\", etc.).\n It might be 0 in some cases to indicate no known conversion factor."]
1369    pub conv_factor: f64,
1370    #[doc = " PROJ short name, like \"m\", \"ft\", \"us-ft\", etc... Might be NULL"]
1371    pub proj_short_name: *mut ::std::os::raw::c_char,
1372    #[doc = " Whether the object is deprecated"]
1373    pub deprecated: ::std::os::raw::c_int,
1374}
1375#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1376const _: () = {
1377    ["Size of PROJ_UNIT_INFO"][::std::mem::size_of::<PROJ_UNIT_INFO>() - 56usize];
1378    ["Alignment of PROJ_UNIT_INFO"][::std::mem::align_of::<PROJ_UNIT_INFO>() - 8usize];
1379    ["Offset of field: PROJ_UNIT_INFO::auth_name"]
1380        [::std::mem::offset_of!(PROJ_UNIT_INFO, auth_name) - 0usize];
1381    ["Offset of field: PROJ_UNIT_INFO::code"]
1382        [::std::mem::offset_of!(PROJ_UNIT_INFO, code) - 8usize];
1383    ["Offset of field: PROJ_UNIT_INFO::name"]
1384        [::std::mem::offset_of!(PROJ_UNIT_INFO, name) - 16usize];
1385    ["Offset of field: PROJ_UNIT_INFO::category"]
1386        [::std::mem::offset_of!(PROJ_UNIT_INFO, category) - 24usize];
1387    ["Offset of field: PROJ_UNIT_INFO::conv_factor"]
1388        [::std::mem::offset_of!(PROJ_UNIT_INFO, conv_factor) - 32usize];
1389    ["Offset of field: PROJ_UNIT_INFO::proj_short_name"]
1390        [::std::mem::offset_of!(PROJ_UNIT_INFO, proj_short_name) - 40usize];
1391    ["Offset of field: PROJ_UNIT_INFO::deprecated"]
1392        [::std::mem::offset_of!(PROJ_UNIT_INFO, deprecated) - 48usize];
1393};
1394#[doc = " \\brief Structure given description of a celestial body.\n\n This structure may grow over time, and should not be directly allocated by\n client code.\n @since 8.1"]
1395#[repr(C)]
1396#[derive(Debug, Copy, Clone)]
1397pub struct PROJ_CELESTIAL_BODY_INFO {
1398    #[doc = " Authority name."]
1399    pub auth_name: *mut ::std::os::raw::c_char,
1400    #[doc = " Object name. For example \"Earth\""]
1401    pub name: *mut ::std::os::raw::c_char,
1402}
1403#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1404const _: () = {
1405    ["Size of PROJ_CELESTIAL_BODY_INFO"]
1406        [::std::mem::size_of::<PROJ_CELESTIAL_BODY_INFO>() - 16usize];
1407    ["Alignment of PROJ_CELESTIAL_BODY_INFO"]
1408        [::std::mem::align_of::<PROJ_CELESTIAL_BODY_INFO>() - 8usize];
1409    ["Offset of field: PROJ_CELESTIAL_BODY_INFO::auth_name"]
1410        [::std::mem::offset_of!(PROJ_CELESTIAL_BODY_INFO, auth_name) - 0usize];
1411    ["Offset of field: PROJ_CELESTIAL_BODY_INFO::name"]
1412        [::std::mem::offset_of!(PROJ_CELESTIAL_BODY_INFO, name) - 8usize];
1413};
1414#[repr(C)]
1415#[derive(Debug, Copy, Clone)]
1416pub struct PJ_OBJ_LIST {
1417    _unused: [u8; 0],
1418}
1419unsafe extern "C" {
1420    #[doc = " @endcond"]
1421    pub fn proj_string_list_destroy(list: PROJ_STRING_LIST);
1422}
1423unsafe extern "C" {
1424    pub fn proj_context_set_autoclose_database(
1425        ctx: *mut PJ_CONTEXT,
1426        autoclose: ::std::os::raw::c_int,
1427    );
1428}
1429unsafe extern "C" {
1430    pub fn proj_context_set_database_path(
1431        ctx: *mut PJ_CONTEXT,
1432        dbPath: *const ::std::os::raw::c_char,
1433        auxDbPaths: *const *const ::std::os::raw::c_char,
1434        options: *const *const ::std::os::raw::c_char,
1435    ) -> ::std::os::raw::c_int;
1436}
1437unsafe extern "C" {
1438    pub fn proj_context_get_database_path(ctx: *mut PJ_CONTEXT) -> *const ::std::os::raw::c_char;
1439}
1440unsafe extern "C" {
1441    pub fn proj_context_get_database_metadata(
1442        ctx: *mut PJ_CONTEXT,
1443        key: *const ::std::os::raw::c_char,
1444    ) -> *const ::std::os::raw::c_char;
1445}
1446unsafe extern "C" {
1447    pub fn proj_context_get_database_structure(
1448        ctx: *mut PJ_CONTEXT,
1449        options: *const *const ::std::os::raw::c_char,
1450    ) -> PROJ_STRING_LIST;
1451}
1452unsafe extern "C" {
1453    pub fn proj_context_guess_wkt_dialect(
1454        ctx: *mut PJ_CONTEXT,
1455        wkt: *const ::std::os::raw::c_char,
1456    ) -> PJ_GUESSED_WKT_DIALECT;
1457}
1458unsafe extern "C" {
1459    pub fn proj_create_from_wkt(
1460        ctx: *mut PJ_CONTEXT,
1461        wkt: *const ::std::os::raw::c_char,
1462        options: *const *const ::std::os::raw::c_char,
1463        out_warnings: *mut PROJ_STRING_LIST,
1464        out_grammar_errors: *mut PROJ_STRING_LIST,
1465    ) -> *mut PJ;
1466}
1467unsafe extern "C" {
1468    pub fn proj_create_from_database(
1469        ctx: *mut PJ_CONTEXT,
1470        auth_name: *const ::std::os::raw::c_char,
1471        code: *const ::std::os::raw::c_char,
1472        category: PJ_CATEGORY,
1473        usePROJAlternativeGridNames: ::std::os::raw::c_int,
1474        options: *const *const ::std::os::raw::c_char,
1475    ) -> *mut PJ;
1476}
1477unsafe extern "C" {
1478    pub fn proj_uom_get_info_from_database(
1479        ctx: *mut PJ_CONTEXT,
1480        auth_name: *const ::std::os::raw::c_char,
1481        code: *const ::std::os::raw::c_char,
1482        out_name: *mut *const ::std::os::raw::c_char,
1483        out_conv_factor: *mut f64,
1484        out_category: *mut *const ::std::os::raw::c_char,
1485    ) -> ::std::os::raw::c_int;
1486}
1487unsafe extern "C" {
1488    pub fn proj_grid_get_info_from_database(
1489        ctx: *mut PJ_CONTEXT,
1490        grid_name: *const ::std::os::raw::c_char,
1491        out_full_name: *mut *const ::std::os::raw::c_char,
1492        out_package_name: *mut *const ::std::os::raw::c_char,
1493        out_url: *mut *const ::std::os::raw::c_char,
1494        out_direct_download: *mut ::std::os::raw::c_int,
1495        out_open_license: *mut ::std::os::raw::c_int,
1496        out_available: *mut ::std::os::raw::c_int,
1497    ) -> ::std::os::raw::c_int;
1498}
1499unsafe extern "C" {
1500    pub fn proj_clone(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> *mut PJ;
1501}
1502unsafe extern "C" {
1503    pub fn proj_create_from_name(
1504        ctx: *mut PJ_CONTEXT,
1505        auth_name: *const ::std::os::raw::c_char,
1506        searchedName: *const ::std::os::raw::c_char,
1507        types: *const PJ_TYPE,
1508        typesCount: usize,
1509        approximateMatch: ::std::os::raw::c_int,
1510        limitResultCount: usize,
1511        options: *const *const ::std::os::raw::c_char,
1512    ) -> *mut PJ_OBJ_LIST;
1513}
1514unsafe extern "C" {
1515    pub fn proj_get_type(obj: *const PJ) -> PJ_TYPE;
1516}
1517unsafe extern "C" {
1518    pub fn proj_is_deprecated(obj: *const PJ) -> ::std::os::raw::c_int;
1519}
1520unsafe extern "C" {
1521    pub fn proj_get_non_deprecated(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> *mut PJ_OBJ_LIST;
1522}
1523unsafe extern "C" {
1524    pub fn proj_is_equivalent_to(
1525        obj: *const PJ,
1526        other: *const PJ,
1527        criterion: PJ_COMPARISON_CRITERION,
1528    ) -> ::std::os::raw::c_int;
1529}
1530unsafe extern "C" {
1531    pub fn proj_is_equivalent_to_with_ctx(
1532        ctx: *mut PJ_CONTEXT,
1533        obj: *const PJ,
1534        other: *const PJ,
1535        criterion: PJ_COMPARISON_CRITERION,
1536    ) -> ::std::os::raw::c_int;
1537}
1538unsafe extern "C" {
1539    pub fn proj_is_crs(obj: *const PJ) -> ::std::os::raw::c_int;
1540}
1541unsafe extern "C" {
1542    pub fn proj_get_name(obj: *const PJ) -> *const ::std::os::raw::c_char;
1543}
1544unsafe extern "C" {
1545    pub fn proj_get_id_auth_name(
1546        obj: *const PJ,
1547        index: ::std::os::raw::c_int,
1548    ) -> *const ::std::os::raw::c_char;
1549}
1550unsafe extern "C" {
1551    pub fn proj_get_id_code(
1552        obj: *const PJ,
1553        index: ::std::os::raw::c_int,
1554    ) -> *const ::std::os::raw::c_char;
1555}
1556unsafe extern "C" {
1557    pub fn proj_get_remarks(obj: *const PJ) -> *const ::std::os::raw::c_char;
1558}
1559unsafe extern "C" {
1560    pub fn proj_get_domain_count(obj: *const PJ) -> ::std::os::raw::c_int;
1561}
1562unsafe extern "C" {
1563    pub fn proj_get_scope(obj: *const PJ) -> *const ::std::os::raw::c_char;
1564}
1565unsafe extern "C" {
1566    pub fn proj_get_scope_ex(
1567        obj: *const PJ,
1568        domainIdx: ::std::os::raw::c_int,
1569    ) -> *const ::std::os::raw::c_char;
1570}
1571unsafe extern "C" {
1572    pub fn proj_get_area_of_use(
1573        ctx: *mut PJ_CONTEXT,
1574        obj: *const PJ,
1575        out_west_lon_degree: *mut f64,
1576        out_south_lat_degree: *mut f64,
1577        out_east_lon_degree: *mut f64,
1578        out_north_lat_degree: *mut f64,
1579        out_area_name: *mut *const ::std::os::raw::c_char,
1580    ) -> ::std::os::raw::c_int;
1581}
1582unsafe extern "C" {
1583    pub fn proj_get_area_of_use_ex(
1584        ctx: *mut PJ_CONTEXT,
1585        obj: *const PJ,
1586        domainIdx: ::std::os::raw::c_int,
1587        out_west_lon_degree: *mut f64,
1588        out_south_lat_degree: *mut f64,
1589        out_east_lon_degree: *mut f64,
1590        out_north_lat_degree: *mut f64,
1591        out_area_name: *mut *const ::std::os::raw::c_char,
1592    ) -> ::std::os::raw::c_int;
1593}
1594unsafe extern "C" {
1595    pub fn proj_as_wkt(
1596        ctx: *mut PJ_CONTEXT,
1597        obj: *const PJ,
1598        type_: PJ_WKT_TYPE,
1599        options: *const *const ::std::os::raw::c_char,
1600    ) -> *const ::std::os::raw::c_char;
1601}
1602unsafe extern "C" {
1603    pub fn proj_as_proj_string(
1604        ctx: *mut PJ_CONTEXT,
1605        obj: *const PJ,
1606        type_: PJ_PROJ_STRING_TYPE,
1607        options: *const *const ::std::os::raw::c_char,
1608    ) -> *const ::std::os::raw::c_char;
1609}
1610unsafe extern "C" {
1611    pub fn proj_as_projjson(
1612        ctx: *mut PJ_CONTEXT,
1613        obj: *const PJ,
1614        options: *const *const ::std::os::raw::c_char,
1615    ) -> *const ::std::os::raw::c_char;
1616}
1617unsafe extern "C" {
1618    pub fn proj_get_source_crs(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> *mut PJ;
1619}
1620unsafe extern "C" {
1621    pub fn proj_get_target_crs(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> *mut PJ;
1622}
1623unsafe extern "C" {
1624    pub fn proj_identify(
1625        ctx: *mut PJ_CONTEXT,
1626        obj: *const PJ,
1627        auth_name: *const ::std::os::raw::c_char,
1628        options: *const *const ::std::os::raw::c_char,
1629        out_confidence: *mut *mut ::std::os::raw::c_int,
1630    ) -> *mut PJ_OBJ_LIST;
1631}
1632unsafe extern "C" {
1633    pub fn proj_get_geoid_models_from_database(
1634        ctx: *mut PJ_CONTEXT,
1635        auth_name: *const ::std::os::raw::c_char,
1636        code: *const ::std::os::raw::c_char,
1637        options: *const *const ::std::os::raw::c_char,
1638    ) -> PROJ_STRING_LIST;
1639}
1640unsafe extern "C" {
1641    pub fn proj_int_list_destroy(list: *mut ::std::os::raw::c_int);
1642}
1643unsafe extern "C" {
1644    pub fn proj_get_authorities_from_database(ctx: *mut PJ_CONTEXT) -> PROJ_STRING_LIST;
1645}
1646unsafe extern "C" {
1647    pub fn proj_get_codes_from_database(
1648        ctx: *mut PJ_CONTEXT,
1649        auth_name: *const ::std::os::raw::c_char,
1650        type_: PJ_TYPE,
1651        allow_deprecated: ::std::os::raw::c_int,
1652    ) -> PROJ_STRING_LIST;
1653}
1654unsafe extern "C" {
1655    pub fn proj_get_celestial_body_list_from_database(
1656        ctx: *mut PJ_CONTEXT,
1657        auth_name: *const ::std::os::raw::c_char,
1658        out_result_count: *mut ::std::os::raw::c_int,
1659    ) -> *mut *mut PROJ_CELESTIAL_BODY_INFO;
1660}
1661unsafe extern "C" {
1662    pub fn proj_celestial_body_list_destroy(list: *mut *mut PROJ_CELESTIAL_BODY_INFO);
1663}
1664unsafe extern "C" {
1665    pub fn proj_get_crs_list_parameters_create() -> *mut PROJ_CRS_LIST_PARAMETERS;
1666}
1667unsafe extern "C" {
1668    pub fn proj_get_crs_list_parameters_destroy(params: *mut PROJ_CRS_LIST_PARAMETERS);
1669}
1670unsafe extern "C" {
1671    pub fn proj_get_crs_info_list_from_database(
1672        ctx: *mut PJ_CONTEXT,
1673        auth_name: *const ::std::os::raw::c_char,
1674        params: *const PROJ_CRS_LIST_PARAMETERS,
1675        out_result_count: *mut ::std::os::raw::c_int,
1676    ) -> *mut *mut PROJ_CRS_INFO;
1677}
1678unsafe extern "C" {
1679    pub fn proj_crs_info_list_destroy(list: *mut *mut PROJ_CRS_INFO);
1680}
1681unsafe extern "C" {
1682    pub fn proj_get_units_from_database(
1683        ctx: *mut PJ_CONTEXT,
1684        auth_name: *const ::std::os::raw::c_char,
1685        category: *const ::std::os::raw::c_char,
1686        allow_deprecated: ::std::os::raw::c_int,
1687        out_result_count: *mut ::std::os::raw::c_int,
1688    ) -> *mut *mut PROJ_UNIT_INFO;
1689}
1690unsafe extern "C" {
1691    pub fn proj_unit_list_destroy(list: *mut *mut PROJ_UNIT_INFO);
1692}
1693#[repr(C)]
1694#[derive(Debug, Copy, Clone)]
1695pub struct PJ_INSERT_SESSION {
1696    _unused: [u8; 0],
1697}
1698unsafe extern "C" {
1699    #[doc = " @endcond"]
1700    pub fn proj_insert_object_session_create(ctx: *mut PJ_CONTEXT) -> *mut PJ_INSERT_SESSION;
1701}
1702unsafe extern "C" {
1703    pub fn proj_insert_object_session_destroy(
1704        ctx: *mut PJ_CONTEXT,
1705        session: *mut PJ_INSERT_SESSION,
1706    );
1707}
1708unsafe extern "C" {
1709    pub fn proj_get_insert_statements(
1710        ctx: *mut PJ_CONTEXT,
1711        session: *mut PJ_INSERT_SESSION,
1712        object: *const PJ,
1713        authority: *const ::std::os::raw::c_char,
1714        code: *const ::std::os::raw::c_char,
1715        numeric_codes: ::std::os::raw::c_int,
1716        allowed_authorities: *const *const ::std::os::raw::c_char,
1717        options: *const *const ::std::os::raw::c_char,
1718    ) -> PROJ_STRING_LIST;
1719}
1720unsafe extern "C" {
1721    pub fn proj_suggests_code_for(
1722        ctx: *mut PJ_CONTEXT,
1723        object: *const PJ,
1724        authority: *const ::std::os::raw::c_char,
1725        numeric_code: ::std::os::raw::c_int,
1726        options: *const *const ::std::os::raw::c_char,
1727    ) -> *mut ::std::os::raw::c_char;
1728}
1729unsafe extern "C" {
1730    pub fn proj_string_destroy(str_: *mut ::std::os::raw::c_char);
1731}
1732#[repr(C)]
1733#[derive(Debug, Copy, Clone)]
1734pub struct PJ_OPERATION_FACTORY_CONTEXT {
1735    _unused: [u8; 0],
1736}
1737unsafe extern "C" {
1738    #[doc = " @endcond"]
1739    pub fn proj_create_operation_factory_context(
1740        ctx: *mut PJ_CONTEXT,
1741        authority: *const ::std::os::raw::c_char,
1742    ) -> *mut PJ_OPERATION_FACTORY_CONTEXT;
1743}
1744unsafe extern "C" {
1745    pub fn proj_operation_factory_context_destroy(ctx: *mut PJ_OPERATION_FACTORY_CONTEXT);
1746}
1747unsafe extern "C" {
1748    pub fn proj_operation_factory_context_set_desired_accuracy(
1749        ctx: *mut PJ_CONTEXT,
1750        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
1751        accuracy: f64,
1752    );
1753}
1754unsafe extern "C" {
1755    pub fn proj_operation_factory_context_set_area_of_interest(
1756        ctx: *mut PJ_CONTEXT,
1757        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
1758        west_lon_degree: f64,
1759        south_lat_degree: f64,
1760        east_lon_degree: f64,
1761        north_lat_degree: f64,
1762    );
1763}
1764unsafe extern "C" {
1765    pub fn proj_operation_factory_context_set_area_of_interest_name(
1766        ctx: *mut PJ_CONTEXT,
1767        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
1768        area_name: *const ::std::os::raw::c_char,
1769    );
1770}
1771unsafe extern "C" {
1772    pub fn proj_operation_factory_context_set_crs_extent_use(
1773        ctx: *mut PJ_CONTEXT,
1774        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
1775        use_: PROJ_CRS_EXTENT_USE,
1776    );
1777}
1778unsafe extern "C" {
1779    pub fn proj_operation_factory_context_set_spatial_criterion(
1780        ctx: *mut PJ_CONTEXT,
1781        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
1782        criterion: PROJ_SPATIAL_CRITERION,
1783    );
1784}
1785unsafe extern "C" {
1786    pub fn proj_operation_factory_context_set_grid_availability_use(
1787        ctx: *mut PJ_CONTEXT,
1788        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
1789        use_: PROJ_GRID_AVAILABILITY_USE,
1790    );
1791}
1792unsafe extern "C" {
1793    pub fn proj_operation_factory_context_set_use_proj_alternative_grid_names(
1794        ctx: *mut PJ_CONTEXT,
1795        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
1796        usePROJNames: ::std::os::raw::c_int,
1797    );
1798}
1799unsafe extern "C" {
1800    pub fn proj_operation_factory_context_set_allow_use_intermediate_crs(
1801        ctx: *mut PJ_CONTEXT,
1802        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
1803        use_: PROJ_INTERMEDIATE_CRS_USE,
1804    );
1805}
1806unsafe extern "C" {
1807    pub fn proj_operation_factory_context_set_allowed_intermediate_crs(
1808        ctx: *mut PJ_CONTEXT,
1809        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
1810        list_of_auth_name_codes: *const *const ::std::os::raw::c_char,
1811    );
1812}
1813unsafe extern "C" {
1814    pub fn proj_operation_factory_context_set_discard_superseded(
1815        ctx: *mut PJ_CONTEXT,
1816        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
1817        discard: ::std::os::raw::c_int,
1818    );
1819}
1820unsafe extern "C" {
1821    pub fn proj_operation_factory_context_set_allow_ballpark_transformations(
1822        ctx: *mut PJ_CONTEXT,
1823        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
1824        allow: ::std::os::raw::c_int,
1825    );
1826}
1827unsafe extern "C" {
1828    pub fn proj_create_operations(
1829        ctx: *mut PJ_CONTEXT,
1830        source_crs: *const PJ,
1831        target_crs: *const PJ,
1832        operationContext: *const PJ_OPERATION_FACTORY_CONTEXT,
1833    ) -> *mut PJ_OBJ_LIST;
1834}
1835unsafe extern "C" {
1836    pub fn proj_list_get_count(result: *const PJ_OBJ_LIST) -> ::std::os::raw::c_int;
1837}
1838unsafe extern "C" {
1839    pub fn proj_list_get(
1840        ctx: *mut PJ_CONTEXT,
1841        result: *const PJ_OBJ_LIST,
1842        index: ::std::os::raw::c_int,
1843    ) -> *mut PJ;
1844}
1845unsafe extern "C" {
1846    pub fn proj_list_destroy(result: *mut PJ_OBJ_LIST);
1847}
1848unsafe extern "C" {
1849    pub fn proj_get_suggested_operation(
1850        ctx: *mut PJ_CONTEXT,
1851        operations: *mut PJ_OBJ_LIST,
1852        direction: PJ_DIRECTION,
1853        coord: PJ_COORD,
1854    ) -> ::std::os::raw::c_int;
1855}
1856unsafe extern "C" {
1857    pub fn proj_crs_is_derived(ctx: *mut PJ_CONTEXT, crs: *const PJ) -> ::std::os::raw::c_int;
1858}
1859unsafe extern "C" {
1860    pub fn proj_crs_get_geodetic_crs(ctx: *mut PJ_CONTEXT, crs: *const PJ) -> *mut PJ;
1861}
1862unsafe extern "C" {
1863    pub fn proj_crs_get_horizontal_datum(ctx: *mut PJ_CONTEXT, crs: *const PJ) -> *mut PJ;
1864}
1865unsafe extern "C" {
1866    pub fn proj_crs_get_sub_crs(
1867        ctx: *mut PJ_CONTEXT,
1868        crs: *const PJ,
1869        index: ::std::os::raw::c_int,
1870    ) -> *mut PJ;
1871}
1872unsafe extern "C" {
1873    pub fn proj_crs_get_datum(ctx: *mut PJ_CONTEXT, crs: *const PJ) -> *mut PJ;
1874}
1875unsafe extern "C" {
1876    pub fn proj_crs_get_datum_ensemble(ctx: *mut PJ_CONTEXT, crs: *const PJ) -> *mut PJ;
1877}
1878unsafe extern "C" {
1879    pub fn proj_crs_get_datum_forced(ctx: *mut PJ_CONTEXT, crs: *const PJ) -> *mut PJ;
1880}
1881unsafe extern "C" {
1882    pub fn proj_crs_has_point_motion_operation(
1883        ctx: *mut PJ_CONTEXT,
1884        crs: *const PJ,
1885    ) -> ::std::os::raw::c_int;
1886}
1887unsafe extern "C" {
1888    pub fn proj_datum_ensemble_get_member_count(
1889        ctx: *mut PJ_CONTEXT,
1890        datum_ensemble: *const PJ,
1891    ) -> ::std::os::raw::c_int;
1892}
1893unsafe extern "C" {
1894    pub fn proj_datum_ensemble_get_accuracy(ctx: *mut PJ_CONTEXT, datum_ensemble: *const PJ)
1895        -> f64;
1896}
1897unsafe extern "C" {
1898    pub fn proj_datum_ensemble_get_member(
1899        ctx: *mut PJ_CONTEXT,
1900        datum_ensemble: *const PJ,
1901        member_index: ::std::os::raw::c_int,
1902    ) -> *mut PJ;
1903}
1904unsafe extern "C" {
1905    pub fn proj_dynamic_datum_get_frame_reference_epoch(
1906        ctx: *mut PJ_CONTEXT,
1907        datum: *const PJ,
1908    ) -> f64;
1909}
1910unsafe extern "C" {
1911    pub fn proj_crs_get_coordinate_system(ctx: *mut PJ_CONTEXT, crs: *const PJ) -> *mut PJ;
1912}
1913unsafe extern "C" {
1914    pub fn proj_cs_get_type(ctx: *mut PJ_CONTEXT, cs: *const PJ) -> PJ_COORDINATE_SYSTEM_TYPE;
1915}
1916unsafe extern "C" {
1917    pub fn proj_cs_get_axis_count(ctx: *mut PJ_CONTEXT, cs: *const PJ) -> ::std::os::raw::c_int;
1918}
1919unsafe extern "C" {
1920    pub fn proj_cs_get_axis_info(
1921        ctx: *mut PJ_CONTEXT,
1922        cs: *const PJ,
1923        index: ::std::os::raw::c_int,
1924        out_name: *mut *const ::std::os::raw::c_char,
1925        out_abbrev: *mut *const ::std::os::raw::c_char,
1926        out_direction: *mut *const ::std::os::raw::c_char,
1927        out_unit_conv_factor: *mut f64,
1928        out_unit_name: *mut *const ::std::os::raw::c_char,
1929        out_unit_auth_name: *mut *const ::std::os::raw::c_char,
1930        out_unit_code: *mut *const ::std::os::raw::c_char,
1931    ) -> ::std::os::raw::c_int;
1932}
1933unsafe extern "C" {
1934    pub fn proj_get_ellipsoid(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> *mut PJ;
1935}
1936unsafe extern "C" {
1937    pub fn proj_ellipsoid_get_parameters(
1938        ctx: *mut PJ_CONTEXT,
1939        ellipsoid: *const PJ,
1940        out_semi_major_metre: *mut f64,
1941        out_semi_minor_metre: *mut f64,
1942        out_is_semi_minor_computed: *mut ::std::os::raw::c_int,
1943        out_inv_flattening: *mut f64,
1944    ) -> ::std::os::raw::c_int;
1945}
1946unsafe extern "C" {
1947    pub fn proj_get_celestial_body_name(
1948        ctx: *mut PJ_CONTEXT,
1949        obj: *const PJ,
1950    ) -> *const ::std::os::raw::c_char;
1951}
1952unsafe extern "C" {
1953    pub fn proj_get_prime_meridian(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> *mut PJ;
1954}
1955unsafe extern "C" {
1956    pub fn proj_prime_meridian_get_parameters(
1957        ctx: *mut PJ_CONTEXT,
1958        prime_meridian: *const PJ,
1959        out_longitude: *mut f64,
1960        out_unit_conv_factor: *mut f64,
1961        out_unit_name: *mut *const ::std::os::raw::c_char,
1962    ) -> ::std::os::raw::c_int;
1963}
1964unsafe extern "C" {
1965    pub fn proj_crs_get_coordoperation(ctx: *mut PJ_CONTEXT, crs: *const PJ) -> *mut PJ;
1966}
1967unsafe extern "C" {
1968    pub fn proj_coordoperation_get_method_info(
1969        ctx: *mut PJ_CONTEXT,
1970        coordoperation: *const PJ,
1971        out_method_name: *mut *const ::std::os::raw::c_char,
1972        out_method_auth_name: *mut *const ::std::os::raw::c_char,
1973        out_method_code: *mut *const ::std::os::raw::c_char,
1974    ) -> ::std::os::raw::c_int;
1975}
1976unsafe extern "C" {
1977    pub fn proj_coordoperation_is_instantiable(
1978        ctx: *mut PJ_CONTEXT,
1979        coordoperation: *const PJ,
1980    ) -> ::std::os::raw::c_int;
1981}
1982unsafe extern "C" {
1983    pub fn proj_coordoperation_has_ballpark_transformation(
1984        ctx: *mut PJ_CONTEXT,
1985        coordoperation: *const PJ,
1986    ) -> ::std::os::raw::c_int;
1987}
1988unsafe extern "C" {
1989    pub fn proj_coordoperation_requires_per_coordinate_input_time(
1990        ctx: *mut PJ_CONTEXT,
1991        coordoperation: *const PJ,
1992    ) -> ::std::os::raw::c_int;
1993}
1994unsafe extern "C" {
1995    pub fn proj_coordoperation_get_param_count(
1996        ctx: *mut PJ_CONTEXT,
1997        coordoperation: *const PJ,
1998    ) -> ::std::os::raw::c_int;
1999}
2000unsafe extern "C" {
2001    pub fn proj_coordoperation_get_param_index(
2002        ctx: *mut PJ_CONTEXT,
2003        coordoperation: *const PJ,
2004        name: *const ::std::os::raw::c_char,
2005    ) -> ::std::os::raw::c_int;
2006}
2007unsafe extern "C" {
2008    pub fn proj_coordoperation_get_param(
2009        ctx: *mut PJ_CONTEXT,
2010        coordoperation: *const PJ,
2011        index: ::std::os::raw::c_int,
2012        out_name: *mut *const ::std::os::raw::c_char,
2013        out_auth_name: *mut *const ::std::os::raw::c_char,
2014        out_code: *mut *const ::std::os::raw::c_char,
2015        out_value: *mut f64,
2016        out_value_string: *mut *const ::std::os::raw::c_char,
2017        out_unit_conv_factor: *mut f64,
2018        out_unit_name: *mut *const ::std::os::raw::c_char,
2019        out_unit_auth_name: *mut *const ::std::os::raw::c_char,
2020        out_unit_code: *mut *const ::std::os::raw::c_char,
2021        out_unit_category: *mut *const ::std::os::raw::c_char,
2022    ) -> ::std::os::raw::c_int;
2023}
2024unsafe extern "C" {
2025    pub fn proj_coordoperation_get_grid_used_count(
2026        ctx: *mut PJ_CONTEXT,
2027        coordoperation: *const PJ,
2028    ) -> ::std::os::raw::c_int;
2029}
2030unsafe extern "C" {
2031    pub fn proj_coordoperation_get_grid_used(
2032        ctx: *mut PJ_CONTEXT,
2033        coordoperation: *const PJ,
2034        index: ::std::os::raw::c_int,
2035        out_short_name: *mut *const ::std::os::raw::c_char,
2036        out_full_name: *mut *const ::std::os::raw::c_char,
2037        out_package_name: *mut *const ::std::os::raw::c_char,
2038        out_url: *mut *const ::std::os::raw::c_char,
2039        out_direct_download: *mut ::std::os::raw::c_int,
2040        out_open_license: *mut ::std::os::raw::c_int,
2041        out_available: *mut ::std::os::raw::c_int,
2042    ) -> ::std::os::raw::c_int;
2043}
2044unsafe extern "C" {
2045    pub fn proj_coordoperation_get_accuracy(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> f64;
2046}
2047unsafe extern "C" {
2048    pub fn proj_coordoperation_get_towgs84_values(
2049        ctx: *mut PJ_CONTEXT,
2050        coordoperation: *const PJ,
2051        out_values: *mut f64,
2052        value_count: ::std::os::raw::c_int,
2053        emit_error_if_incompatible: ::std::os::raw::c_int,
2054    ) -> ::std::os::raw::c_int;
2055}
2056unsafe extern "C" {
2057    pub fn proj_coordoperation_create_inverse(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> *mut PJ;
2058}
2059unsafe extern "C" {
2060    pub fn proj_concatoperation_get_step_count(
2061        ctx: *mut PJ_CONTEXT,
2062        concatoperation: *const PJ,
2063    ) -> ::std::os::raw::c_int;
2064}
2065unsafe extern "C" {
2066    pub fn proj_concatoperation_get_step(
2067        ctx: *mut PJ_CONTEXT,
2068        concatoperation: *const PJ,
2069        i_step: ::std::os::raw::c_int,
2070    ) -> *mut PJ;
2071}
2072unsafe extern "C" {
2073    pub fn proj_coordinate_metadata_create(
2074        ctx: *mut PJ_CONTEXT,
2075        crs: *const PJ,
2076        epoch: f64,
2077    ) -> *mut PJ;
2078}
2079unsafe extern "C" {
2080    pub fn proj_coordinate_metadata_get_epoch(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> f64;
2081}
2082#[doc = " Angular unit of measure"]
2083pub const PJ_UNIT_TYPE_PJ_UT_ANGULAR: PJ_UNIT_TYPE = 0;
2084#[doc = " Linear unit of measure"]
2085pub const PJ_UNIT_TYPE_PJ_UT_LINEAR: PJ_UNIT_TYPE = 1;
2086#[doc = " Scale unit of measure"]
2087pub const PJ_UNIT_TYPE_PJ_UT_SCALE: PJ_UNIT_TYPE = 2;
2088#[doc = " Time unit of measure"]
2089pub const PJ_UNIT_TYPE_PJ_UT_TIME: PJ_UNIT_TYPE = 3;
2090#[doc = " Parametric unit of measure"]
2091pub const PJ_UNIT_TYPE_PJ_UT_PARAMETRIC: PJ_UNIT_TYPE = 4;
2092#[doc = " Type of unit of measure."]
2093pub type PJ_UNIT_TYPE = ::std::os::raw::c_uint;
2094#[doc = " \\brief Axis description."]
2095#[repr(C)]
2096#[derive(Debug, Copy, Clone)]
2097pub struct PJ_AXIS_DESCRIPTION {
2098    #[doc = " Axis name."]
2099    pub name: *mut ::std::os::raw::c_char,
2100    #[doc = " Axis abbreviation."]
2101    pub abbreviation: *mut ::std::os::raw::c_char,
2102    #[doc = " Axis direction."]
2103    pub direction: *mut ::std::os::raw::c_char,
2104    #[doc = " Axis unit name."]
2105    pub unit_name: *mut ::std::os::raw::c_char,
2106    #[doc = " Conversion factor to SI of the unit."]
2107    pub unit_conv_factor: f64,
2108    #[doc = " Type of unit"]
2109    pub unit_type: PJ_UNIT_TYPE,
2110}
2111#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2112const _: () = {
2113    ["Size of PJ_AXIS_DESCRIPTION"][::std::mem::size_of::<PJ_AXIS_DESCRIPTION>() - 48usize];
2114    ["Alignment of PJ_AXIS_DESCRIPTION"][::std::mem::align_of::<PJ_AXIS_DESCRIPTION>() - 8usize];
2115    ["Offset of field: PJ_AXIS_DESCRIPTION::name"]
2116        [::std::mem::offset_of!(PJ_AXIS_DESCRIPTION, name) - 0usize];
2117    ["Offset of field: PJ_AXIS_DESCRIPTION::abbreviation"]
2118        [::std::mem::offset_of!(PJ_AXIS_DESCRIPTION, abbreviation) - 8usize];
2119    ["Offset of field: PJ_AXIS_DESCRIPTION::direction"]
2120        [::std::mem::offset_of!(PJ_AXIS_DESCRIPTION, direction) - 16usize];
2121    ["Offset of field: PJ_AXIS_DESCRIPTION::unit_name"]
2122        [::std::mem::offset_of!(PJ_AXIS_DESCRIPTION, unit_name) - 24usize];
2123    ["Offset of field: PJ_AXIS_DESCRIPTION::unit_conv_factor"]
2124        [::std::mem::offset_of!(PJ_AXIS_DESCRIPTION, unit_conv_factor) - 32usize];
2125    ["Offset of field: PJ_AXIS_DESCRIPTION::unit_type"]
2126        [::std::mem::offset_of!(PJ_AXIS_DESCRIPTION, unit_type) - 40usize];
2127};
2128#[doc = " Easting-Norting"]
2129pub const PJ_CARTESIAN_CS_2D_TYPE_PJ_CART2D_EASTING_NORTHING: PJ_CARTESIAN_CS_2D_TYPE = 0;
2130#[doc = " Northing-Easting"]
2131pub const PJ_CARTESIAN_CS_2D_TYPE_PJ_CART2D_NORTHING_EASTING: PJ_CARTESIAN_CS_2D_TYPE = 1;
2132#[doc = " North Pole Easting/SOUTH-Norting/SOUTH"]
2133pub const PJ_CARTESIAN_CS_2D_TYPE_PJ_CART2D_NORTH_POLE_EASTING_SOUTH_NORTHING_SOUTH:
2134    PJ_CARTESIAN_CS_2D_TYPE = 2;
2135#[doc = " South Pole Easting/NORTH-Norting/NORTH"]
2136pub const PJ_CARTESIAN_CS_2D_TYPE_PJ_CART2D_SOUTH_POLE_EASTING_NORTH_NORTHING_NORTH:
2137    PJ_CARTESIAN_CS_2D_TYPE = 3;
2138#[doc = " Westing-southing"]
2139pub const PJ_CARTESIAN_CS_2D_TYPE_PJ_CART2D_WESTING_SOUTHING: PJ_CARTESIAN_CS_2D_TYPE = 4;
2140#[doc = " Type of Cartesian 2D coordinate system."]
2141pub type PJ_CARTESIAN_CS_2D_TYPE = ::std::os::raw::c_uint;
2142#[doc = " Longitude-Latitude"]
2143pub const PJ_ELLIPSOIDAL_CS_2D_TYPE_PJ_ELLPS2D_LONGITUDE_LATITUDE: PJ_ELLIPSOIDAL_CS_2D_TYPE = 0;
2144#[doc = " Latitude-Longitude"]
2145pub const PJ_ELLIPSOIDAL_CS_2D_TYPE_PJ_ELLPS2D_LATITUDE_LONGITUDE: PJ_ELLIPSOIDAL_CS_2D_TYPE = 1;
2146#[doc = " Type of Ellipsoidal 2D coordinate system."]
2147pub type PJ_ELLIPSOIDAL_CS_2D_TYPE = ::std::os::raw::c_uint;
2148#[doc = " Longitude-Latitude-Height(up)"]
2149pub const PJ_ELLIPSOIDAL_CS_3D_TYPE_PJ_ELLPS3D_LONGITUDE_LATITUDE_HEIGHT:
2150    PJ_ELLIPSOIDAL_CS_3D_TYPE = 0;
2151#[doc = " Latitude-Longitude-Height(up)"]
2152pub const PJ_ELLIPSOIDAL_CS_3D_TYPE_PJ_ELLPS3D_LATITUDE_LONGITUDE_HEIGHT:
2153    PJ_ELLIPSOIDAL_CS_3D_TYPE = 1;
2154#[doc = " Type of Ellipsoidal 3D coordinate system."]
2155pub type PJ_ELLIPSOIDAL_CS_3D_TYPE = ::std::os::raw::c_uint;
2156#[doc = " \\brief Description of a parameter value for a Conversion."]
2157#[repr(C)]
2158#[derive(Debug, Copy, Clone)]
2159pub struct PJ_PARAM_DESCRIPTION {
2160    #[doc = " Parameter name."]
2161    pub name: *const ::std::os::raw::c_char,
2162    #[doc = " Parameter authority name."]
2163    pub auth_name: *const ::std::os::raw::c_char,
2164    #[doc = " Parameter code."]
2165    pub code: *const ::std::os::raw::c_char,
2166    #[doc = " Parameter value."]
2167    pub value: f64,
2168    #[doc = " Name of unit in which parameter value is expressed."]
2169    pub unit_name: *const ::std::os::raw::c_char,
2170    #[doc = " Conversion factor to SI of the unit."]
2171    pub unit_conv_factor: f64,
2172    #[doc = " Type of unit"]
2173    pub unit_type: PJ_UNIT_TYPE,
2174}
2175#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2176const _: () = {
2177    ["Size of PJ_PARAM_DESCRIPTION"][::std::mem::size_of::<PJ_PARAM_DESCRIPTION>() - 56usize];
2178    ["Alignment of PJ_PARAM_DESCRIPTION"][::std::mem::align_of::<PJ_PARAM_DESCRIPTION>() - 8usize];
2179    ["Offset of field: PJ_PARAM_DESCRIPTION::name"]
2180        [::std::mem::offset_of!(PJ_PARAM_DESCRIPTION, name) - 0usize];
2181    ["Offset of field: PJ_PARAM_DESCRIPTION::auth_name"]
2182        [::std::mem::offset_of!(PJ_PARAM_DESCRIPTION, auth_name) - 8usize];
2183    ["Offset of field: PJ_PARAM_DESCRIPTION::code"]
2184        [::std::mem::offset_of!(PJ_PARAM_DESCRIPTION, code) - 16usize];
2185    ["Offset of field: PJ_PARAM_DESCRIPTION::value"]
2186        [::std::mem::offset_of!(PJ_PARAM_DESCRIPTION, value) - 24usize];
2187    ["Offset of field: PJ_PARAM_DESCRIPTION::unit_name"]
2188        [::std::mem::offset_of!(PJ_PARAM_DESCRIPTION, unit_name) - 32usize];
2189    ["Offset of field: PJ_PARAM_DESCRIPTION::unit_conv_factor"]
2190        [::std::mem::offset_of!(PJ_PARAM_DESCRIPTION, unit_conv_factor) - 40usize];
2191    ["Offset of field: PJ_PARAM_DESCRIPTION::unit_type"]
2192        [::std::mem::offset_of!(PJ_PARAM_DESCRIPTION, unit_type) - 48usize];
2193};
2194unsafe extern "C" {
2195    #[doc = " \\defgroup iso19111_advanced_functions Binding in C of advanced methods from\n the C++ API\n @{"]
2196    pub fn proj_create_cs(
2197        ctx: *mut PJ_CONTEXT,
2198        type_: PJ_COORDINATE_SYSTEM_TYPE,
2199        axis_count: ::std::os::raw::c_int,
2200        axis: *const PJ_AXIS_DESCRIPTION,
2201    ) -> *mut PJ;
2202}
2203unsafe extern "C" {
2204    pub fn proj_create_cartesian_2D_cs(
2205        ctx: *mut PJ_CONTEXT,
2206        type_: PJ_CARTESIAN_CS_2D_TYPE,
2207        unit_name: *const ::std::os::raw::c_char,
2208        unit_conv_factor: f64,
2209    ) -> *mut PJ;
2210}
2211unsafe extern "C" {
2212    pub fn proj_create_ellipsoidal_2D_cs(
2213        ctx: *mut PJ_CONTEXT,
2214        type_: PJ_ELLIPSOIDAL_CS_2D_TYPE,
2215        unit_name: *const ::std::os::raw::c_char,
2216        unit_conv_factor: f64,
2217    ) -> *mut PJ;
2218}
2219unsafe extern "C" {
2220    pub fn proj_create_ellipsoidal_3D_cs(
2221        ctx: *mut PJ_CONTEXT,
2222        type_: PJ_ELLIPSOIDAL_CS_3D_TYPE,
2223        horizontal_angular_unit_name: *const ::std::os::raw::c_char,
2224        horizontal_angular_unit_conv_factor: f64,
2225        vertical_linear_unit_name: *const ::std::os::raw::c_char,
2226        vertical_linear_unit_conv_factor: f64,
2227    ) -> *mut PJ;
2228}
2229unsafe extern "C" {
2230    pub fn proj_query_geodetic_crs_from_datum(
2231        ctx: *mut PJ_CONTEXT,
2232        crs_auth_name: *const ::std::os::raw::c_char,
2233        datum_auth_name: *const ::std::os::raw::c_char,
2234        datum_code: *const ::std::os::raw::c_char,
2235        crs_type: *const ::std::os::raw::c_char,
2236    ) -> *mut PJ_OBJ_LIST;
2237}
2238unsafe extern "C" {
2239    pub fn proj_create_geographic_crs(
2240        ctx: *mut PJ_CONTEXT,
2241        crs_name: *const ::std::os::raw::c_char,
2242        datum_name: *const ::std::os::raw::c_char,
2243        ellps_name: *const ::std::os::raw::c_char,
2244        semi_major_metre: f64,
2245        inv_flattening: f64,
2246        prime_meridian_name: *const ::std::os::raw::c_char,
2247        prime_meridian_offset: f64,
2248        pm_angular_units: *const ::std::os::raw::c_char,
2249        pm_units_conv: f64,
2250        ellipsoidal_cs: *const PJ,
2251    ) -> *mut PJ;
2252}
2253unsafe extern "C" {
2254    pub fn proj_create_geographic_crs_from_datum(
2255        ctx: *mut PJ_CONTEXT,
2256        crs_name: *const ::std::os::raw::c_char,
2257        datum_or_datum_ensemble: *const PJ,
2258        ellipsoidal_cs: *const PJ,
2259    ) -> *mut PJ;
2260}
2261unsafe extern "C" {
2262    pub fn proj_create_geocentric_crs(
2263        ctx: *mut PJ_CONTEXT,
2264        crs_name: *const ::std::os::raw::c_char,
2265        datum_name: *const ::std::os::raw::c_char,
2266        ellps_name: *const ::std::os::raw::c_char,
2267        semi_major_metre: f64,
2268        inv_flattening: f64,
2269        prime_meridian_name: *const ::std::os::raw::c_char,
2270        prime_meridian_offset: f64,
2271        angular_units: *const ::std::os::raw::c_char,
2272        angular_units_conv: f64,
2273        linear_units: *const ::std::os::raw::c_char,
2274        linear_units_conv: f64,
2275    ) -> *mut PJ;
2276}
2277unsafe extern "C" {
2278    pub fn proj_create_geocentric_crs_from_datum(
2279        ctx: *mut PJ_CONTEXT,
2280        crs_name: *const ::std::os::raw::c_char,
2281        datum_or_datum_ensemble: *const PJ,
2282        linear_units: *const ::std::os::raw::c_char,
2283        linear_units_conv: f64,
2284    ) -> *mut PJ;
2285}
2286unsafe extern "C" {
2287    pub fn proj_create_derived_geographic_crs(
2288        ctx: *mut PJ_CONTEXT,
2289        crs_name: *const ::std::os::raw::c_char,
2290        base_geographic_crs: *const PJ,
2291        conversion: *const PJ,
2292        ellipsoidal_cs: *const PJ,
2293    ) -> *mut PJ;
2294}
2295unsafe extern "C" {
2296    pub fn proj_is_derived_crs(ctx: *mut PJ_CONTEXT, crs: *const PJ) -> ::std::os::raw::c_int;
2297}
2298unsafe extern "C" {
2299    pub fn proj_alter_name(
2300        ctx: *mut PJ_CONTEXT,
2301        obj: *const PJ,
2302        name: *const ::std::os::raw::c_char,
2303    ) -> *mut PJ;
2304}
2305unsafe extern "C" {
2306    pub fn proj_alter_id(
2307        ctx: *mut PJ_CONTEXT,
2308        obj: *const PJ,
2309        auth_name: *const ::std::os::raw::c_char,
2310        code: *const ::std::os::raw::c_char,
2311    ) -> *mut PJ;
2312}
2313unsafe extern "C" {
2314    pub fn proj_crs_alter_geodetic_crs(
2315        ctx: *mut PJ_CONTEXT,
2316        obj: *const PJ,
2317        new_geod_crs: *const PJ,
2318    ) -> *mut PJ;
2319}
2320unsafe extern "C" {
2321    pub fn proj_crs_alter_cs_angular_unit(
2322        ctx: *mut PJ_CONTEXT,
2323        obj: *const PJ,
2324        angular_units: *const ::std::os::raw::c_char,
2325        angular_units_conv: f64,
2326        unit_auth_name: *const ::std::os::raw::c_char,
2327        unit_code: *const ::std::os::raw::c_char,
2328    ) -> *mut PJ;
2329}
2330unsafe extern "C" {
2331    pub fn proj_crs_alter_cs_linear_unit(
2332        ctx: *mut PJ_CONTEXT,
2333        obj: *const PJ,
2334        linear_units: *const ::std::os::raw::c_char,
2335        linear_units_conv: f64,
2336        unit_auth_name: *const ::std::os::raw::c_char,
2337        unit_code: *const ::std::os::raw::c_char,
2338    ) -> *mut PJ;
2339}
2340unsafe extern "C" {
2341    pub fn proj_crs_alter_parameters_linear_unit(
2342        ctx: *mut PJ_CONTEXT,
2343        obj: *const PJ,
2344        linear_units: *const ::std::os::raw::c_char,
2345        linear_units_conv: f64,
2346        unit_auth_name: *const ::std::os::raw::c_char,
2347        unit_code: *const ::std::os::raw::c_char,
2348        convert_to_new_unit: ::std::os::raw::c_int,
2349    ) -> *mut PJ;
2350}
2351unsafe extern "C" {
2352    pub fn proj_crs_promote_to_3D(
2353        ctx: *mut PJ_CONTEXT,
2354        crs_3D_name: *const ::std::os::raw::c_char,
2355        crs_2D: *const PJ,
2356    ) -> *mut PJ;
2357}
2358unsafe extern "C" {
2359    pub fn proj_crs_create_projected_3D_crs_from_2D(
2360        ctx: *mut PJ_CONTEXT,
2361        crs_name: *const ::std::os::raw::c_char,
2362        projected_2D_crs: *const PJ,
2363        geog_3D_crs: *const PJ,
2364    ) -> *mut PJ;
2365}
2366unsafe extern "C" {
2367    pub fn proj_crs_demote_to_2D(
2368        ctx: *mut PJ_CONTEXT,
2369        crs_2D_name: *const ::std::os::raw::c_char,
2370        crs_3D: *const PJ,
2371    ) -> *mut PJ;
2372}
2373unsafe extern "C" {
2374    pub fn proj_create_engineering_crs(
2375        ctx: *mut PJ_CONTEXT,
2376        crsName: *const ::std::os::raw::c_char,
2377    ) -> *mut PJ;
2378}
2379unsafe extern "C" {
2380    pub fn proj_create_vertical_crs(
2381        ctx: *mut PJ_CONTEXT,
2382        crs_name: *const ::std::os::raw::c_char,
2383        datum_name: *const ::std::os::raw::c_char,
2384        linear_units: *const ::std::os::raw::c_char,
2385        linear_units_conv: f64,
2386    ) -> *mut PJ;
2387}
2388unsafe extern "C" {
2389    pub fn proj_create_vertical_crs_ex(
2390        ctx: *mut PJ_CONTEXT,
2391        crs_name: *const ::std::os::raw::c_char,
2392        datum_name: *const ::std::os::raw::c_char,
2393        datum_auth_name: *const ::std::os::raw::c_char,
2394        datum_code: *const ::std::os::raw::c_char,
2395        linear_units: *const ::std::os::raw::c_char,
2396        linear_units_conv: f64,
2397        geoid_model_name: *const ::std::os::raw::c_char,
2398        geoid_model_auth_name: *const ::std::os::raw::c_char,
2399        geoid_model_code: *const ::std::os::raw::c_char,
2400        geoid_geog_crs: *const PJ,
2401        options: *const *const ::std::os::raw::c_char,
2402    ) -> *mut PJ;
2403}
2404unsafe extern "C" {
2405    pub fn proj_create_compound_crs(
2406        ctx: *mut PJ_CONTEXT,
2407        crs_name: *const ::std::os::raw::c_char,
2408        horiz_crs: *const PJ,
2409        vert_crs: *const PJ,
2410    ) -> *mut PJ;
2411}
2412unsafe extern "C" {
2413    pub fn proj_create_conversion(
2414        ctx: *mut PJ_CONTEXT,
2415        name: *const ::std::os::raw::c_char,
2416        auth_name: *const ::std::os::raw::c_char,
2417        code: *const ::std::os::raw::c_char,
2418        method_name: *const ::std::os::raw::c_char,
2419        method_auth_name: *const ::std::os::raw::c_char,
2420        method_code: *const ::std::os::raw::c_char,
2421        param_count: ::std::os::raw::c_int,
2422        params: *const PJ_PARAM_DESCRIPTION,
2423    ) -> *mut PJ;
2424}
2425unsafe extern "C" {
2426    pub fn proj_create_transformation(
2427        ctx: *mut PJ_CONTEXT,
2428        name: *const ::std::os::raw::c_char,
2429        auth_name: *const ::std::os::raw::c_char,
2430        code: *const ::std::os::raw::c_char,
2431        source_crs: *const PJ,
2432        target_crs: *const PJ,
2433        interpolation_crs: *const PJ,
2434        method_name: *const ::std::os::raw::c_char,
2435        method_auth_name: *const ::std::os::raw::c_char,
2436        method_code: *const ::std::os::raw::c_char,
2437        param_count: ::std::os::raw::c_int,
2438        params: *const PJ_PARAM_DESCRIPTION,
2439        accuracy: f64,
2440    ) -> *mut PJ;
2441}
2442unsafe extern "C" {
2443    pub fn proj_convert_conversion_to_other_method(
2444        ctx: *mut PJ_CONTEXT,
2445        conversion: *const PJ,
2446        new_method_epsg_code: ::std::os::raw::c_int,
2447        new_method_name: *const ::std::os::raw::c_char,
2448    ) -> *mut PJ;
2449}
2450unsafe extern "C" {
2451    pub fn proj_create_projected_crs(
2452        ctx: *mut PJ_CONTEXT,
2453        crs_name: *const ::std::os::raw::c_char,
2454        geodetic_crs: *const PJ,
2455        conversion: *const PJ,
2456        coordinate_system: *const PJ,
2457    ) -> *mut PJ;
2458}
2459unsafe extern "C" {
2460    pub fn proj_crs_create_bound_crs(
2461        ctx: *mut PJ_CONTEXT,
2462        base_crs: *const PJ,
2463        hub_crs: *const PJ,
2464        transformation: *const PJ,
2465    ) -> *mut PJ;
2466}
2467unsafe extern "C" {
2468    pub fn proj_crs_create_bound_crs_to_WGS84(
2469        ctx: *mut PJ_CONTEXT,
2470        crs: *const PJ,
2471        options: *const *const ::std::os::raw::c_char,
2472    ) -> *mut PJ;
2473}
2474unsafe extern "C" {
2475    pub fn proj_crs_create_bound_vertical_crs(
2476        ctx: *mut PJ_CONTEXT,
2477        vert_crs: *const PJ,
2478        hub_geographic_3D_crs: *const PJ,
2479        grid_name: *const ::std::os::raw::c_char,
2480    ) -> *mut PJ;
2481}
2482unsafe extern "C" {
2483    pub fn proj_create_conversion_utm(
2484        ctx: *mut PJ_CONTEXT,
2485        zone: ::std::os::raw::c_int,
2486        north: ::std::os::raw::c_int,
2487    ) -> *mut PJ;
2488}
2489unsafe extern "C" {
2490    pub fn proj_create_conversion_transverse_mercator(
2491        ctx: *mut PJ_CONTEXT,
2492        center_lat: f64,
2493        center_long: f64,
2494        scale: f64,
2495        false_easting: f64,
2496        false_northing: f64,
2497        ang_unit_name: *const ::std::os::raw::c_char,
2498        ang_unit_conv_factor: f64,
2499        linear_unit_name: *const ::std::os::raw::c_char,
2500        linear_unit_conv_factor: f64,
2501    ) -> *mut PJ;
2502}
2503unsafe extern "C" {
2504    pub fn proj_create_conversion_gauss_schreiber_transverse_mercator(
2505        ctx: *mut PJ_CONTEXT,
2506        center_lat: f64,
2507        center_long: f64,
2508        scale: f64,
2509        false_easting: f64,
2510        false_northing: f64,
2511        ang_unit_name: *const ::std::os::raw::c_char,
2512        ang_unit_conv_factor: f64,
2513        linear_unit_name: *const ::std::os::raw::c_char,
2514        linear_unit_conv_factor: f64,
2515    ) -> *mut PJ;
2516}
2517unsafe extern "C" {
2518    pub fn proj_create_conversion_transverse_mercator_south_oriented(
2519        ctx: *mut PJ_CONTEXT,
2520        center_lat: f64,
2521        center_long: f64,
2522        scale: f64,
2523        false_easting: f64,
2524        false_northing: f64,
2525        ang_unit_name: *const ::std::os::raw::c_char,
2526        ang_unit_conv_factor: f64,
2527        linear_unit_name: *const ::std::os::raw::c_char,
2528        linear_unit_conv_factor: f64,
2529    ) -> *mut PJ;
2530}
2531unsafe extern "C" {
2532    pub fn proj_create_conversion_two_point_equidistant(
2533        ctx: *mut PJ_CONTEXT,
2534        latitude_first_point: f64,
2535        longitude_first_point: f64,
2536        latitude_second_point: f64,
2537        longitude_secon_point: f64,
2538        false_easting: f64,
2539        false_northing: f64,
2540        ang_unit_name: *const ::std::os::raw::c_char,
2541        ang_unit_conv_factor: f64,
2542        linear_unit_name: *const ::std::os::raw::c_char,
2543        linear_unit_conv_factor: f64,
2544    ) -> *mut PJ;
2545}
2546unsafe extern "C" {
2547    pub fn proj_create_conversion_tunisia_mapping_grid(
2548        ctx: *mut PJ_CONTEXT,
2549        center_lat: f64,
2550        center_long: f64,
2551        false_easting: f64,
2552        false_northing: f64,
2553        ang_unit_name: *const ::std::os::raw::c_char,
2554        ang_unit_conv_factor: f64,
2555        linear_unit_name: *const ::std::os::raw::c_char,
2556        linear_unit_conv_factor: f64,
2557    ) -> *mut PJ;
2558}
2559unsafe extern "C" {
2560    pub fn proj_create_conversion_tunisia_mining_grid(
2561        ctx: *mut PJ_CONTEXT,
2562        center_lat: f64,
2563        center_long: f64,
2564        false_easting: f64,
2565        false_northing: f64,
2566        ang_unit_name: *const ::std::os::raw::c_char,
2567        ang_unit_conv_factor: f64,
2568        linear_unit_name: *const ::std::os::raw::c_char,
2569        linear_unit_conv_factor: f64,
2570    ) -> *mut PJ;
2571}
2572unsafe extern "C" {
2573    pub fn proj_create_conversion_albers_equal_area(
2574        ctx: *mut PJ_CONTEXT,
2575        latitude_false_origin: f64,
2576        longitude_false_origin: f64,
2577        latitude_first_parallel: f64,
2578        latitude_second_parallel: f64,
2579        easting_false_origin: f64,
2580        northing_false_origin: f64,
2581        ang_unit_name: *const ::std::os::raw::c_char,
2582        ang_unit_conv_factor: f64,
2583        linear_unit_name: *const ::std::os::raw::c_char,
2584        linear_unit_conv_factor: f64,
2585    ) -> *mut PJ;
2586}
2587unsafe extern "C" {
2588    pub fn proj_create_conversion_lambert_conic_conformal_1sp(
2589        ctx: *mut PJ_CONTEXT,
2590        center_lat: f64,
2591        center_long: f64,
2592        scale: f64,
2593        false_easting: f64,
2594        false_northing: f64,
2595        ang_unit_name: *const ::std::os::raw::c_char,
2596        ang_unit_conv_factor: f64,
2597        linear_unit_name: *const ::std::os::raw::c_char,
2598        linear_unit_conv_factor: f64,
2599    ) -> *mut PJ;
2600}
2601unsafe extern "C" {
2602    pub fn proj_create_conversion_lambert_conic_conformal_1sp_variant_b(
2603        ctx: *mut PJ_CONTEXT,
2604        latitude_nat_origin: f64,
2605        scale: f64,
2606        latitude_false_origin: f64,
2607        longitude_false_origin: f64,
2608        easting_false_origin: f64,
2609        northing_false_origin: f64,
2610        ang_unit_name: *const ::std::os::raw::c_char,
2611        ang_unit_conv_factor: f64,
2612        linear_unit_name: *const ::std::os::raw::c_char,
2613        linear_unit_conv_factor: f64,
2614    ) -> *mut PJ;
2615}
2616unsafe extern "C" {
2617    pub fn proj_create_conversion_lambert_conic_conformal_2sp(
2618        ctx: *mut PJ_CONTEXT,
2619        latitude_false_origin: f64,
2620        longitude_false_origin: f64,
2621        latitude_first_parallel: f64,
2622        latitude_second_parallel: f64,
2623        easting_false_origin: f64,
2624        northing_false_origin: f64,
2625        ang_unit_name: *const ::std::os::raw::c_char,
2626        ang_unit_conv_factor: f64,
2627        linear_unit_name: *const ::std::os::raw::c_char,
2628        linear_unit_conv_factor: f64,
2629    ) -> *mut PJ;
2630}
2631unsafe extern "C" {
2632    pub fn proj_create_conversion_lambert_conic_conformal_2sp_michigan(
2633        ctx: *mut PJ_CONTEXT,
2634        latitude_false_origin: f64,
2635        longitude_false_origin: f64,
2636        latitude_first_parallel: f64,
2637        latitude_second_parallel: f64,
2638        easting_false_origin: f64,
2639        northing_false_origin: f64,
2640        ellipsoid_scaling_factor: f64,
2641        ang_unit_name: *const ::std::os::raw::c_char,
2642        ang_unit_conv_factor: f64,
2643        linear_unit_name: *const ::std::os::raw::c_char,
2644        linear_unit_conv_factor: f64,
2645    ) -> *mut PJ;
2646}
2647unsafe extern "C" {
2648    pub fn proj_create_conversion_lambert_conic_conformal_2sp_belgium(
2649        ctx: *mut PJ_CONTEXT,
2650        latitude_false_origin: f64,
2651        longitude_false_origin: f64,
2652        latitude_first_parallel: f64,
2653        latitude_second_parallel: f64,
2654        easting_false_origin: f64,
2655        northing_false_origin: f64,
2656        ang_unit_name: *const ::std::os::raw::c_char,
2657        ang_unit_conv_factor: f64,
2658        linear_unit_name: *const ::std::os::raw::c_char,
2659        linear_unit_conv_factor: f64,
2660    ) -> *mut PJ;
2661}
2662unsafe extern "C" {
2663    pub fn proj_create_conversion_azimuthal_equidistant(
2664        ctx: *mut PJ_CONTEXT,
2665        latitude_nat_origin: f64,
2666        longitude_nat_origin: f64,
2667        false_easting: f64,
2668        false_northing: f64,
2669        ang_unit_name: *const ::std::os::raw::c_char,
2670        ang_unit_conv_factor: f64,
2671        linear_unit_name: *const ::std::os::raw::c_char,
2672        linear_unit_conv_factor: f64,
2673    ) -> *mut PJ;
2674}
2675unsafe extern "C" {
2676    pub fn proj_create_conversion_guam_projection(
2677        ctx: *mut PJ_CONTEXT,
2678        latitude_nat_origin: f64,
2679        longitude_nat_origin: f64,
2680        false_easting: f64,
2681        false_northing: f64,
2682        ang_unit_name: *const ::std::os::raw::c_char,
2683        ang_unit_conv_factor: f64,
2684        linear_unit_name: *const ::std::os::raw::c_char,
2685        linear_unit_conv_factor: f64,
2686    ) -> *mut PJ;
2687}
2688unsafe extern "C" {
2689    pub fn proj_create_conversion_bonne(
2690        ctx: *mut PJ_CONTEXT,
2691        latitude_nat_origin: f64,
2692        longitude_nat_origin: f64,
2693        false_easting: f64,
2694        false_northing: f64,
2695        ang_unit_name: *const ::std::os::raw::c_char,
2696        ang_unit_conv_factor: f64,
2697        linear_unit_name: *const ::std::os::raw::c_char,
2698        linear_unit_conv_factor: f64,
2699    ) -> *mut PJ;
2700}
2701unsafe extern "C" {
2702    pub fn proj_create_conversion_lambert_cylindrical_equal_area_spherical(
2703        ctx: *mut PJ_CONTEXT,
2704        latitude_first_parallel: f64,
2705        longitude_nat_origin: f64,
2706        false_easting: f64,
2707        false_northing: f64,
2708        ang_unit_name: *const ::std::os::raw::c_char,
2709        ang_unit_conv_factor: f64,
2710        linear_unit_name: *const ::std::os::raw::c_char,
2711        linear_unit_conv_factor: f64,
2712    ) -> *mut PJ;
2713}
2714unsafe extern "C" {
2715    pub fn proj_create_conversion_lambert_cylindrical_equal_area(
2716        ctx: *mut PJ_CONTEXT,
2717        latitude_first_parallel: f64,
2718        longitude_nat_origin: f64,
2719        false_easting: f64,
2720        false_northing: f64,
2721        ang_unit_name: *const ::std::os::raw::c_char,
2722        ang_unit_conv_factor: f64,
2723        linear_unit_name: *const ::std::os::raw::c_char,
2724        linear_unit_conv_factor: f64,
2725    ) -> *mut PJ;
2726}
2727unsafe extern "C" {
2728    pub fn proj_create_conversion_cassini_soldner(
2729        ctx: *mut PJ_CONTEXT,
2730        center_lat: f64,
2731        center_long: f64,
2732        false_easting: f64,
2733        false_northing: f64,
2734        ang_unit_name: *const ::std::os::raw::c_char,
2735        ang_unit_conv_factor: f64,
2736        linear_unit_name: *const ::std::os::raw::c_char,
2737        linear_unit_conv_factor: f64,
2738    ) -> *mut PJ;
2739}
2740unsafe extern "C" {
2741    pub fn proj_create_conversion_equidistant_conic(
2742        ctx: *mut PJ_CONTEXT,
2743        center_lat: f64,
2744        center_long: f64,
2745        latitude_first_parallel: f64,
2746        latitude_second_parallel: f64,
2747        false_easting: f64,
2748        false_northing: f64,
2749        ang_unit_name: *const ::std::os::raw::c_char,
2750        ang_unit_conv_factor: f64,
2751        linear_unit_name: *const ::std::os::raw::c_char,
2752        linear_unit_conv_factor: f64,
2753    ) -> *mut PJ;
2754}
2755unsafe extern "C" {
2756    pub fn proj_create_conversion_eckert_i(
2757        ctx: *mut PJ_CONTEXT,
2758        center_long: f64,
2759        false_easting: f64,
2760        false_northing: f64,
2761        ang_unit_name: *const ::std::os::raw::c_char,
2762        ang_unit_conv_factor: f64,
2763        linear_unit_name: *const ::std::os::raw::c_char,
2764        linear_unit_conv_factor: f64,
2765    ) -> *mut PJ;
2766}
2767unsafe extern "C" {
2768    pub fn proj_create_conversion_eckert_ii(
2769        ctx: *mut PJ_CONTEXT,
2770        center_long: f64,
2771        false_easting: f64,
2772        false_northing: f64,
2773        ang_unit_name: *const ::std::os::raw::c_char,
2774        ang_unit_conv_factor: f64,
2775        linear_unit_name: *const ::std::os::raw::c_char,
2776        linear_unit_conv_factor: f64,
2777    ) -> *mut PJ;
2778}
2779unsafe extern "C" {
2780    pub fn proj_create_conversion_eckert_iii(
2781        ctx: *mut PJ_CONTEXT,
2782        center_long: f64,
2783        false_easting: f64,
2784        false_northing: f64,
2785        ang_unit_name: *const ::std::os::raw::c_char,
2786        ang_unit_conv_factor: f64,
2787        linear_unit_name: *const ::std::os::raw::c_char,
2788        linear_unit_conv_factor: f64,
2789    ) -> *mut PJ;
2790}
2791unsafe extern "C" {
2792    pub fn proj_create_conversion_eckert_iv(
2793        ctx: *mut PJ_CONTEXT,
2794        center_long: f64,
2795        false_easting: f64,
2796        false_northing: f64,
2797        ang_unit_name: *const ::std::os::raw::c_char,
2798        ang_unit_conv_factor: f64,
2799        linear_unit_name: *const ::std::os::raw::c_char,
2800        linear_unit_conv_factor: f64,
2801    ) -> *mut PJ;
2802}
2803unsafe extern "C" {
2804    pub fn proj_create_conversion_eckert_v(
2805        ctx: *mut PJ_CONTEXT,
2806        center_long: f64,
2807        false_easting: f64,
2808        false_northing: f64,
2809        ang_unit_name: *const ::std::os::raw::c_char,
2810        ang_unit_conv_factor: f64,
2811        linear_unit_name: *const ::std::os::raw::c_char,
2812        linear_unit_conv_factor: f64,
2813    ) -> *mut PJ;
2814}
2815unsafe extern "C" {
2816    pub fn proj_create_conversion_eckert_vi(
2817        ctx: *mut PJ_CONTEXT,
2818        center_long: f64,
2819        false_easting: f64,
2820        false_northing: f64,
2821        ang_unit_name: *const ::std::os::raw::c_char,
2822        ang_unit_conv_factor: f64,
2823        linear_unit_name: *const ::std::os::raw::c_char,
2824        linear_unit_conv_factor: f64,
2825    ) -> *mut PJ;
2826}
2827unsafe extern "C" {
2828    pub fn proj_create_conversion_equidistant_cylindrical(
2829        ctx: *mut PJ_CONTEXT,
2830        latitude_first_parallel: f64,
2831        longitude_nat_origin: f64,
2832        false_easting: f64,
2833        false_northing: f64,
2834        ang_unit_name: *const ::std::os::raw::c_char,
2835        ang_unit_conv_factor: f64,
2836        linear_unit_name: *const ::std::os::raw::c_char,
2837        linear_unit_conv_factor: f64,
2838    ) -> *mut PJ;
2839}
2840unsafe extern "C" {
2841    pub fn proj_create_conversion_equidistant_cylindrical_spherical(
2842        ctx: *mut PJ_CONTEXT,
2843        latitude_first_parallel: f64,
2844        longitude_nat_origin: f64,
2845        false_easting: f64,
2846        false_northing: f64,
2847        ang_unit_name: *const ::std::os::raw::c_char,
2848        ang_unit_conv_factor: f64,
2849        linear_unit_name: *const ::std::os::raw::c_char,
2850        linear_unit_conv_factor: f64,
2851    ) -> *mut PJ;
2852}
2853unsafe extern "C" {
2854    pub fn proj_create_conversion_gall(
2855        ctx: *mut PJ_CONTEXT,
2856        center_long: f64,
2857        false_easting: f64,
2858        false_northing: f64,
2859        ang_unit_name: *const ::std::os::raw::c_char,
2860        ang_unit_conv_factor: f64,
2861        linear_unit_name: *const ::std::os::raw::c_char,
2862        linear_unit_conv_factor: f64,
2863    ) -> *mut PJ;
2864}
2865unsafe extern "C" {
2866    pub fn proj_create_conversion_goode_homolosine(
2867        ctx: *mut PJ_CONTEXT,
2868        center_long: f64,
2869        false_easting: f64,
2870        false_northing: f64,
2871        ang_unit_name: *const ::std::os::raw::c_char,
2872        ang_unit_conv_factor: f64,
2873        linear_unit_name: *const ::std::os::raw::c_char,
2874        linear_unit_conv_factor: f64,
2875    ) -> *mut PJ;
2876}
2877unsafe extern "C" {
2878    pub fn proj_create_conversion_interrupted_goode_homolosine(
2879        ctx: *mut PJ_CONTEXT,
2880        center_long: f64,
2881        false_easting: f64,
2882        false_northing: f64,
2883        ang_unit_name: *const ::std::os::raw::c_char,
2884        ang_unit_conv_factor: f64,
2885        linear_unit_name: *const ::std::os::raw::c_char,
2886        linear_unit_conv_factor: f64,
2887    ) -> *mut PJ;
2888}
2889unsafe extern "C" {
2890    pub fn proj_create_conversion_geostationary_satellite_sweep_x(
2891        ctx: *mut PJ_CONTEXT,
2892        center_long: f64,
2893        height: f64,
2894        false_easting: f64,
2895        false_northing: f64,
2896        ang_unit_name: *const ::std::os::raw::c_char,
2897        ang_unit_conv_factor: f64,
2898        linear_unit_name: *const ::std::os::raw::c_char,
2899        linear_unit_conv_factor: f64,
2900    ) -> *mut PJ;
2901}
2902unsafe extern "C" {
2903    pub fn proj_create_conversion_geostationary_satellite_sweep_y(
2904        ctx: *mut PJ_CONTEXT,
2905        center_long: f64,
2906        height: f64,
2907        false_easting: f64,
2908        false_northing: f64,
2909        ang_unit_name: *const ::std::os::raw::c_char,
2910        ang_unit_conv_factor: f64,
2911        linear_unit_name: *const ::std::os::raw::c_char,
2912        linear_unit_conv_factor: f64,
2913    ) -> *mut PJ;
2914}
2915unsafe extern "C" {
2916    pub fn proj_create_conversion_gnomonic(
2917        ctx: *mut PJ_CONTEXT,
2918        center_lat: f64,
2919        center_long: f64,
2920        false_easting: f64,
2921        false_northing: f64,
2922        ang_unit_name: *const ::std::os::raw::c_char,
2923        ang_unit_conv_factor: f64,
2924        linear_unit_name: *const ::std::os::raw::c_char,
2925        linear_unit_conv_factor: f64,
2926    ) -> *mut PJ;
2927}
2928unsafe extern "C" {
2929    pub fn proj_create_conversion_hotine_oblique_mercator_variant_a(
2930        ctx: *mut PJ_CONTEXT,
2931        latitude_projection_centre: f64,
2932        longitude_projection_centre: f64,
2933        azimuth_initial_line: f64,
2934        angle_from_rectified_to_skrew_grid: f64,
2935        scale: f64,
2936        false_easting: f64,
2937        false_northing: f64,
2938        ang_unit_name: *const ::std::os::raw::c_char,
2939        ang_unit_conv_factor: f64,
2940        linear_unit_name: *const ::std::os::raw::c_char,
2941        linear_unit_conv_factor: f64,
2942    ) -> *mut PJ;
2943}
2944unsafe extern "C" {
2945    pub fn proj_create_conversion_hotine_oblique_mercator_variant_b(
2946        ctx: *mut PJ_CONTEXT,
2947        latitude_projection_centre: f64,
2948        longitude_projection_centre: f64,
2949        azimuth_initial_line: f64,
2950        angle_from_rectified_to_skrew_grid: f64,
2951        scale: f64,
2952        easting_projection_centre: f64,
2953        northing_projection_centre: f64,
2954        ang_unit_name: *const ::std::os::raw::c_char,
2955        ang_unit_conv_factor: f64,
2956        linear_unit_name: *const ::std::os::raw::c_char,
2957        linear_unit_conv_factor: f64,
2958    ) -> *mut PJ;
2959}
2960unsafe extern "C" {
2961    pub fn proj_create_conversion_hotine_oblique_mercator_two_point_natural_origin(
2962        ctx: *mut PJ_CONTEXT,
2963        latitude_projection_centre: f64,
2964        latitude_point1: f64,
2965        longitude_point1: f64,
2966        latitude_point2: f64,
2967        longitude_point2: f64,
2968        scale: f64,
2969        easting_projection_centre: f64,
2970        northing_projection_centre: f64,
2971        ang_unit_name: *const ::std::os::raw::c_char,
2972        ang_unit_conv_factor: f64,
2973        linear_unit_name: *const ::std::os::raw::c_char,
2974        linear_unit_conv_factor: f64,
2975    ) -> *mut PJ;
2976}
2977unsafe extern "C" {
2978    pub fn proj_create_conversion_laborde_oblique_mercator(
2979        ctx: *mut PJ_CONTEXT,
2980        latitude_projection_centre: f64,
2981        longitude_projection_centre: f64,
2982        azimuth_initial_line: f64,
2983        scale: f64,
2984        false_easting: f64,
2985        false_northing: f64,
2986        ang_unit_name: *const ::std::os::raw::c_char,
2987        ang_unit_conv_factor: f64,
2988        linear_unit_name: *const ::std::os::raw::c_char,
2989        linear_unit_conv_factor: f64,
2990    ) -> *mut PJ;
2991}
2992unsafe extern "C" {
2993    pub fn proj_create_conversion_international_map_world_polyconic(
2994        ctx: *mut PJ_CONTEXT,
2995        center_long: f64,
2996        latitude_first_parallel: f64,
2997        latitude_second_parallel: f64,
2998        false_easting: f64,
2999        false_northing: f64,
3000        ang_unit_name: *const ::std::os::raw::c_char,
3001        ang_unit_conv_factor: f64,
3002        linear_unit_name: *const ::std::os::raw::c_char,
3003        linear_unit_conv_factor: f64,
3004    ) -> *mut PJ;
3005}
3006unsafe extern "C" {
3007    pub fn proj_create_conversion_krovak_north_oriented(
3008        ctx: *mut PJ_CONTEXT,
3009        latitude_projection_centre: f64,
3010        longitude_of_origin: f64,
3011        colatitude_cone_axis: f64,
3012        latitude_pseudo_standard_parallel: f64,
3013        scale_factor_pseudo_standard_parallel: f64,
3014        false_easting: f64,
3015        false_northing: f64,
3016        ang_unit_name: *const ::std::os::raw::c_char,
3017        ang_unit_conv_factor: f64,
3018        linear_unit_name: *const ::std::os::raw::c_char,
3019        linear_unit_conv_factor: f64,
3020    ) -> *mut PJ;
3021}
3022unsafe extern "C" {
3023    pub fn proj_create_conversion_krovak(
3024        ctx: *mut PJ_CONTEXT,
3025        latitude_projection_centre: f64,
3026        longitude_of_origin: f64,
3027        colatitude_cone_axis: f64,
3028        latitude_pseudo_standard_parallel: f64,
3029        scale_factor_pseudo_standard_parallel: f64,
3030        false_easting: f64,
3031        false_northing: f64,
3032        ang_unit_name: *const ::std::os::raw::c_char,
3033        ang_unit_conv_factor: f64,
3034        linear_unit_name: *const ::std::os::raw::c_char,
3035        linear_unit_conv_factor: f64,
3036    ) -> *mut PJ;
3037}
3038unsafe extern "C" {
3039    pub fn proj_create_conversion_lambert_azimuthal_equal_area(
3040        ctx: *mut PJ_CONTEXT,
3041        latitude_nat_origin: f64,
3042        longitude_nat_origin: f64,
3043        false_easting: f64,
3044        false_northing: f64,
3045        ang_unit_name: *const ::std::os::raw::c_char,
3046        ang_unit_conv_factor: f64,
3047        linear_unit_name: *const ::std::os::raw::c_char,
3048        linear_unit_conv_factor: f64,
3049    ) -> *mut PJ;
3050}
3051unsafe extern "C" {
3052    pub fn proj_create_conversion_miller_cylindrical(
3053        ctx: *mut PJ_CONTEXT,
3054        center_long: f64,
3055        false_easting: f64,
3056        false_northing: f64,
3057        ang_unit_name: *const ::std::os::raw::c_char,
3058        ang_unit_conv_factor: f64,
3059        linear_unit_name: *const ::std::os::raw::c_char,
3060        linear_unit_conv_factor: f64,
3061    ) -> *mut PJ;
3062}
3063unsafe extern "C" {
3064    pub fn proj_create_conversion_mercator_variant_a(
3065        ctx: *mut PJ_CONTEXT,
3066        center_lat: f64,
3067        center_long: f64,
3068        scale: f64,
3069        false_easting: f64,
3070        false_northing: f64,
3071        ang_unit_name: *const ::std::os::raw::c_char,
3072        ang_unit_conv_factor: f64,
3073        linear_unit_name: *const ::std::os::raw::c_char,
3074        linear_unit_conv_factor: f64,
3075    ) -> *mut PJ;
3076}
3077unsafe extern "C" {
3078    pub fn proj_create_conversion_mercator_variant_b(
3079        ctx: *mut PJ_CONTEXT,
3080        latitude_first_parallel: f64,
3081        center_long: f64,
3082        false_easting: f64,
3083        false_northing: f64,
3084        ang_unit_name: *const ::std::os::raw::c_char,
3085        ang_unit_conv_factor: f64,
3086        linear_unit_name: *const ::std::os::raw::c_char,
3087        linear_unit_conv_factor: f64,
3088    ) -> *mut PJ;
3089}
3090unsafe extern "C" {
3091    pub fn proj_create_conversion_popular_visualisation_pseudo_mercator(
3092        ctx: *mut PJ_CONTEXT,
3093        center_lat: f64,
3094        center_long: f64,
3095        false_easting: f64,
3096        false_northing: f64,
3097        ang_unit_name: *const ::std::os::raw::c_char,
3098        ang_unit_conv_factor: f64,
3099        linear_unit_name: *const ::std::os::raw::c_char,
3100        linear_unit_conv_factor: f64,
3101    ) -> *mut PJ;
3102}
3103unsafe extern "C" {
3104    pub fn proj_create_conversion_mollweide(
3105        ctx: *mut PJ_CONTEXT,
3106        center_long: f64,
3107        false_easting: f64,
3108        false_northing: f64,
3109        ang_unit_name: *const ::std::os::raw::c_char,
3110        ang_unit_conv_factor: f64,
3111        linear_unit_name: *const ::std::os::raw::c_char,
3112        linear_unit_conv_factor: f64,
3113    ) -> *mut PJ;
3114}
3115unsafe extern "C" {
3116    pub fn proj_create_conversion_new_zealand_mapping_grid(
3117        ctx: *mut PJ_CONTEXT,
3118        center_lat: f64,
3119        center_long: f64,
3120        false_easting: f64,
3121        false_northing: f64,
3122        ang_unit_name: *const ::std::os::raw::c_char,
3123        ang_unit_conv_factor: f64,
3124        linear_unit_name: *const ::std::os::raw::c_char,
3125        linear_unit_conv_factor: f64,
3126    ) -> *mut PJ;
3127}
3128unsafe extern "C" {
3129    pub fn proj_create_conversion_oblique_stereographic(
3130        ctx: *mut PJ_CONTEXT,
3131        center_lat: f64,
3132        center_long: f64,
3133        scale: f64,
3134        false_easting: f64,
3135        false_northing: f64,
3136        ang_unit_name: *const ::std::os::raw::c_char,
3137        ang_unit_conv_factor: f64,
3138        linear_unit_name: *const ::std::os::raw::c_char,
3139        linear_unit_conv_factor: f64,
3140    ) -> *mut PJ;
3141}
3142unsafe extern "C" {
3143    pub fn proj_create_conversion_orthographic(
3144        ctx: *mut PJ_CONTEXT,
3145        center_lat: f64,
3146        center_long: f64,
3147        false_easting: f64,
3148        false_northing: f64,
3149        ang_unit_name: *const ::std::os::raw::c_char,
3150        ang_unit_conv_factor: f64,
3151        linear_unit_name: *const ::std::os::raw::c_char,
3152        linear_unit_conv_factor: f64,
3153    ) -> *mut PJ;
3154}
3155unsafe extern "C" {
3156    pub fn proj_create_conversion_local_orthographic(
3157        ctx: *mut PJ_CONTEXT,
3158        center_lat: f64,
3159        center_long: f64,
3160        azimuth: f64,
3161        scale: f64,
3162        false_easting: f64,
3163        false_northing: f64,
3164        ang_unit_name: *const ::std::os::raw::c_char,
3165        ang_unit_conv_factor: f64,
3166        linear_unit_name: *const ::std::os::raw::c_char,
3167        linear_unit_conv_factor: f64,
3168    ) -> *mut PJ;
3169}
3170unsafe extern "C" {
3171    pub fn proj_create_conversion_american_polyconic(
3172        ctx: *mut PJ_CONTEXT,
3173        center_lat: f64,
3174        center_long: f64,
3175        false_easting: f64,
3176        false_northing: f64,
3177        ang_unit_name: *const ::std::os::raw::c_char,
3178        ang_unit_conv_factor: f64,
3179        linear_unit_name: *const ::std::os::raw::c_char,
3180        linear_unit_conv_factor: f64,
3181    ) -> *mut PJ;
3182}
3183unsafe extern "C" {
3184    pub fn proj_create_conversion_polar_stereographic_variant_a(
3185        ctx: *mut PJ_CONTEXT,
3186        center_lat: f64,
3187        center_long: f64,
3188        scale: f64,
3189        false_easting: f64,
3190        false_northing: f64,
3191        ang_unit_name: *const ::std::os::raw::c_char,
3192        ang_unit_conv_factor: f64,
3193        linear_unit_name: *const ::std::os::raw::c_char,
3194        linear_unit_conv_factor: f64,
3195    ) -> *mut PJ;
3196}
3197unsafe extern "C" {
3198    pub fn proj_create_conversion_polar_stereographic_variant_b(
3199        ctx: *mut PJ_CONTEXT,
3200        latitude_standard_parallel: f64,
3201        longitude_of_origin: f64,
3202        false_easting: f64,
3203        false_northing: f64,
3204        ang_unit_name: *const ::std::os::raw::c_char,
3205        ang_unit_conv_factor: f64,
3206        linear_unit_name: *const ::std::os::raw::c_char,
3207        linear_unit_conv_factor: f64,
3208    ) -> *mut PJ;
3209}
3210unsafe extern "C" {
3211    pub fn proj_create_conversion_robinson(
3212        ctx: *mut PJ_CONTEXT,
3213        center_long: f64,
3214        false_easting: f64,
3215        false_northing: f64,
3216        ang_unit_name: *const ::std::os::raw::c_char,
3217        ang_unit_conv_factor: f64,
3218        linear_unit_name: *const ::std::os::raw::c_char,
3219        linear_unit_conv_factor: f64,
3220    ) -> *mut PJ;
3221}
3222unsafe extern "C" {
3223    pub fn proj_create_conversion_sinusoidal(
3224        ctx: *mut PJ_CONTEXT,
3225        center_long: f64,
3226        false_easting: f64,
3227        false_northing: f64,
3228        ang_unit_name: *const ::std::os::raw::c_char,
3229        ang_unit_conv_factor: f64,
3230        linear_unit_name: *const ::std::os::raw::c_char,
3231        linear_unit_conv_factor: f64,
3232    ) -> *mut PJ;
3233}
3234unsafe extern "C" {
3235    pub fn proj_create_conversion_stereographic(
3236        ctx: *mut PJ_CONTEXT,
3237        center_lat: f64,
3238        center_long: f64,
3239        scale: f64,
3240        false_easting: f64,
3241        false_northing: f64,
3242        ang_unit_name: *const ::std::os::raw::c_char,
3243        ang_unit_conv_factor: f64,
3244        linear_unit_name: *const ::std::os::raw::c_char,
3245        linear_unit_conv_factor: f64,
3246    ) -> *mut PJ;
3247}
3248unsafe extern "C" {
3249    pub fn proj_create_conversion_van_der_grinten(
3250        ctx: *mut PJ_CONTEXT,
3251        center_long: f64,
3252        false_easting: f64,
3253        false_northing: f64,
3254        ang_unit_name: *const ::std::os::raw::c_char,
3255        ang_unit_conv_factor: f64,
3256        linear_unit_name: *const ::std::os::raw::c_char,
3257        linear_unit_conv_factor: f64,
3258    ) -> *mut PJ;
3259}
3260unsafe extern "C" {
3261    pub fn proj_create_conversion_wagner_i(
3262        ctx: *mut PJ_CONTEXT,
3263        center_long: f64,
3264        false_easting: f64,
3265        false_northing: f64,
3266        ang_unit_name: *const ::std::os::raw::c_char,
3267        ang_unit_conv_factor: f64,
3268        linear_unit_name: *const ::std::os::raw::c_char,
3269        linear_unit_conv_factor: f64,
3270    ) -> *mut PJ;
3271}
3272unsafe extern "C" {
3273    pub fn proj_create_conversion_wagner_ii(
3274        ctx: *mut PJ_CONTEXT,
3275        center_long: f64,
3276        false_easting: f64,
3277        false_northing: f64,
3278        ang_unit_name: *const ::std::os::raw::c_char,
3279        ang_unit_conv_factor: f64,
3280        linear_unit_name: *const ::std::os::raw::c_char,
3281        linear_unit_conv_factor: f64,
3282    ) -> *mut PJ;
3283}
3284unsafe extern "C" {
3285    pub fn proj_create_conversion_wagner_iii(
3286        ctx: *mut PJ_CONTEXT,
3287        latitude_true_scale: f64,
3288        center_long: f64,
3289        false_easting: f64,
3290        false_northing: f64,
3291        ang_unit_name: *const ::std::os::raw::c_char,
3292        ang_unit_conv_factor: f64,
3293        linear_unit_name: *const ::std::os::raw::c_char,
3294        linear_unit_conv_factor: f64,
3295    ) -> *mut PJ;
3296}
3297unsafe extern "C" {
3298    pub fn proj_create_conversion_wagner_iv(
3299        ctx: *mut PJ_CONTEXT,
3300        center_long: f64,
3301        false_easting: f64,
3302        false_northing: f64,
3303        ang_unit_name: *const ::std::os::raw::c_char,
3304        ang_unit_conv_factor: f64,
3305        linear_unit_name: *const ::std::os::raw::c_char,
3306        linear_unit_conv_factor: f64,
3307    ) -> *mut PJ;
3308}
3309unsafe extern "C" {
3310    pub fn proj_create_conversion_wagner_v(
3311        ctx: *mut PJ_CONTEXT,
3312        center_long: f64,
3313        false_easting: f64,
3314        false_northing: f64,
3315        ang_unit_name: *const ::std::os::raw::c_char,
3316        ang_unit_conv_factor: f64,
3317        linear_unit_name: *const ::std::os::raw::c_char,
3318        linear_unit_conv_factor: f64,
3319    ) -> *mut PJ;
3320}
3321unsafe extern "C" {
3322    pub fn proj_create_conversion_wagner_vi(
3323        ctx: *mut PJ_CONTEXT,
3324        center_long: f64,
3325        false_easting: f64,
3326        false_northing: f64,
3327        ang_unit_name: *const ::std::os::raw::c_char,
3328        ang_unit_conv_factor: f64,
3329        linear_unit_name: *const ::std::os::raw::c_char,
3330        linear_unit_conv_factor: f64,
3331    ) -> *mut PJ;
3332}
3333unsafe extern "C" {
3334    pub fn proj_create_conversion_wagner_vii(
3335        ctx: *mut PJ_CONTEXT,
3336        center_long: f64,
3337        false_easting: f64,
3338        false_northing: f64,
3339        ang_unit_name: *const ::std::os::raw::c_char,
3340        ang_unit_conv_factor: f64,
3341        linear_unit_name: *const ::std::os::raw::c_char,
3342        linear_unit_conv_factor: f64,
3343    ) -> *mut PJ;
3344}
3345unsafe extern "C" {
3346    pub fn proj_create_conversion_quadrilateralized_spherical_cube(
3347        ctx: *mut PJ_CONTEXT,
3348        center_lat: f64,
3349        center_long: f64,
3350        false_easting: f64,
3351        false_northing: f64,
3352        ang_unit_name: *const ::std::os::raw::c_char,
3353        ang_unit_conv_factor: f64,
3354        linear_unit_name: *const ::std::os::raw::c_char,
3355        linear_unit_conv_factor: f64,
3356    ) -> *mut PJ;
3357}
3358unsafe extern "C" {
3359    pub fn proj_create_conversion_spherical_cross_track_height(
3360        ctx: *mut PJ_CONTEXT,
3361        peg_point_lat: f64,
3362        peg_point_long: f64,
3363        peg_point_heading: f64,
3364        peg_point_height: f64,
3365        ang_unit_name: *const ::std::os::raw::c_char,
3366        ang_unit_conv_factor: f64,
3367        linear_unit_name: *const ::std::os::raw::c_char,
3368        linear_unit_conv_factor: f64,
3369    ) -> *mut PJ;
3370}
3371unsafe extern "C" {
3372    pub fn proj_create_conversion_equal_earth(
3373        ctx: *mut PJ_CONTEXT,
3374        center_long: f64,
3375        false_easting: f64,
3376        false_northing: f64,
3377        ang_unit_name: *const ::std::os::raw::c_char,
3378        ang_unit_conv_factor: f64,
3379        linear_unit_name: *const ::std::os::raw::c_char,
3380        linear_unit_conv_factor: f64,
3381    ) -> *mut PJ;
3382}
3383unsafe extern "C" {
3384    pub fn proj_create_conversion_vertical_perspective(
3385        ctx: *mut PJ_CONTEXT,
3386        topo_origin_lat: f64,
3387        topo_origin_long: f64,
3388        topo_origin_height: f64,
3389        view_point_height: f64,
3390        false_easting: f64,
3391        false_northing: f64,
3392        ang_unit_name: *const ::std::os::raw::c_char,
3393        ang_unit_conv_factor: f64,
3394        linear_unit_name: *const ::std::os::raw::c_char,
3395        linear_unit_conv_factor: f64,
3396    ) -> *mut PJ;
3397}
3398unsafe extern "C" {
3399    pub fn proj_create_conversion_pole_rotation_grib_convention(
3400        ctx: *mut PJ_CONTEXT,
3401        south_pole_lat_in_unrotated_crs: f64,
3402        south_pole_long_in_unrotated_crs: f64,
3403        axis_rotation: f64,
3404        ang_unit_name: *const ::std::os::raw::c_char,
3405        ang_unit_conv_factor: f64,
3406    ) -> *mut PJ;
3407}
3408unsafe extern "C" {
3409    pub fn proj_create_conversion_pole_rotation_netcdf_cf_convention(
3410        ctx: *mut PJ_CONTEXT,
3411        grid_north_pole_latitude: f64,
3412        grid_north_pole_longitude: f64,
3413        north_pole_grid_longitude: f64,
3414        ang_unit_name: *const ::std::os::raw::c_char,
3415        ang_unit_conv_factor: f64,
3416    ) -> *mut PJ;
3417}