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.68.1 */
5
6pub const PROJ_VERSION_MAJOR: u32 = 9;
7pub const PROJ_VERSION_MINOR: u32 = 4;
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    #[doc = " @cond Doxygen_Suppress"]
940    pub fn proj_coord(x: f64, y: f64, z: f64, t: f64) -> PJ_COORD;
941}
942unsafe extern "C" {
943    pub fn proj_roundtrip(
944        P: *mut PJ,
945        direction: PJ_DIRECTION,
946        n: ::std::os::raw::c_int,
947        coord: *mut PJ_COORD,
948    ) -> f64;
949}
950unsafe extern "C" {
951    pub fn proj_lp_dist(P: *const PJ, a: PJ_COORD, b: PJ_COORD) -> f64;
952}
953unsafe extern "C" {
954    pub fn proj_lpz_dist(P: *const PJ, a: PJ_COORD, b: PJ_COORD) -> f64;
955}
956unsafe extern "C" {
957    pub fn proj_xy_dist(a: PJ_COORD, b: PJ_COORD) -> f64;
958}
959unsafe extern "C" {
960    pub fn proj_xyz_dist(a: PJ_COORD, b: PJ_COORD) -> f64;
961}
962unsafe extern "C" {
963    pub fn proj_geod(P: *const PJ, a: PJ_COORD, b: PJ_COORD) -> PJ_COORD;
964}
965unsafe extern "C" {
966    pub fn proj_context_errno(ctx: *mut PJ_CONTEXT) -> ::std::os::raw::c_int;
967}
968unsafe extern "C" {
969    pub fn proj_errno(P: *const PJ) -> ::std::os::raw::c_int;
970}
971unsafe extern "C" {
972    pub fn proj_errno_set(P: *const PJ, err: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
973}
974unsafe extern "C" {
975    pub fn proj_errno_reset(P: *const PJ) -> ::std::os::raw::c_int;
976}
977unsafe extern "C" {
978    pub fn proj_errno_restore(P: *const PJ, err: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
979}
980unsafe extern "C" {
981    pub fn proj_errno_string(err: ::std::os::raw::c_int) -> *const ::std::os::raw::c_char;
982}
983unsafe extern "C" {
984    pub fn proj_context_errno_string(
985        ctx: *mut PJ_CONTEXT,
986        err: ::std::os::raw::c_int,
987    ) -> *const ::std::os::raw::c_char;
988}
989unsafe extern "C" {
990    pub fn proj_log_level(ctx: *mut PJ_CONTEXT, log_level: PJ_LOG_LEVEL) -> PJ_LOG_LEVEL;
991}
992unsafe extern "C" {
993    pub fn proj_log_func(
994        ctx: *mut PJ_CONTEXT,
995        app_data: *mut ::std::os::raw::c_void,
996        logf: PJ_LOG_FUNCTION,
997    );
998}
999unsafe extern "C" {
1000    pub fn proj_factors(P: *mut PJ, lp: PJ_COORD) -> PJ_FACTORS;
1001}
1002unsafe extern "C" {
1003    pub fn proj_info() -> PJ_INFO;
1004}
1005unsafe extern "C" {
1006    pub fn proj_pj_info(P: *mut PJ) -> PJ_PROJ_INFO;
1007}
1008unsafe extern "C" {
1009    pub fn proj_grid_info(gridname: *const ::std::os::raw::c_char) -> PJ_GRID_INFO;
1010}
1011unsafe extern "C" {
1012    pub fn proj_init_info(initname: *const ::std::os::raw::c_char) -> PJ_INIT_INFO;
1013}
1014unsafe extern "C" {
1015    pub fn proj_list_operations() -> *const PJ_OPERATIONS;
1016}
1017unsafe extern "C" {
1018    pub fn proj_list_ellps() -> *const PJ_ELLPS;
1019}
1020unsafe extern "C" {
1021    pub fn proj_list_units() -> *const PJ_UNITS;
1022}
1023unsafe extern "C" {
1024    pub fn proj_list_angular_units() -> *const PJ_UNITS;
1025}
1026unsafe extern "C" {
1027    pub fn proj_list_prime_meridians() -> *const PJ_PRIME_MERIDIANS;
1028}
1029unsafe extern "C" {
1030    pub fn proj_torad(angle_in_degrees: f64) -> f64;
1031}
1032unsafe extern "C" {
1033    pub fn proj_todeg(angle_in_radians: f64) -> f64;
1034}
1035unsafe extern "C" {
1036    pub fn proj_dmstor(
1037        is: *const ::std::os::raw::c_char,
1038        rs: *mut *mut ::std::os::raw::c_char,
1039    ) -> f64;
1040}
1041unsafe extern "C" {
1042    pub fn proj_rtodms(
1043        s: *mut ::std::os::raw::c_char,
1044        r: f64,
1045        pos: ::std::os::raw::c_int,
1046        neg: ::std::os::raw::c_int,
1047    ) -> *mut ::std::os::raw::c_char;
1048}
1049unsafe extern "C" {
1050    pub fn proj_rtodms2(
1051        s: *mut ::std::os::raw::c_char,
1052        sizeof_s: usize,
1053        r: f64,
1054        pos: ::std::os::raw::c_int,
1055        neg: ::std::os::raw::c_int,
1056    ) -> *mut ::std::os::raw::c_char;
1057}
1058unsafe extern "C" {
1059    pub fn proj_cleanup();
1060}
1061#[doc = " \\brief Type representing a NULL terminated list of NULL-terminate strings."]
1062pub type PROJ_STRING_LIST = *mut *mut ::std::os::raw::c_char;
1063#[doc = " \\ref WKT2_2019"]
1064pub const PJ_GUESSED_WKT_DIALECT_PJ_GUESSED_WKT2_2019: PJ_GUESSED_WKT_DIALECT = 0;
1065#[doc = " Deprecated alias for PJ_GUESSED_WKT2_2019"]
1066pub const PJ_GUESSED_WKT_DIALECT_PJ_GUESSED_WKT2_2018: PJ_GUESSED_WKT_DIALECT = 0;
1067#[doc = " \\ref WKT2_2015"]
1068pub const PJ_GUESSED_WKT_DIALECT_PJ_GUESSED_WKT2_2015: PJ_GUESSED_WKT_DIALECT = 1;
1069#[doc = " \\ref WKT1"]
1070pub const PJ_GUESSED_WKT_DIALECT_PJ_GUESSED_WKT1_GDAL: PJ_GUESSED_WKT_DIALECT = 2;
1071#[doc = " ESRI variant of WKT1"]
1072pub const PJ_GUESSED_WKT_DIALECT_PJ_GUESSED_WKT1_ESRI: PJ_GUESSED_WKT_DIALECT = 3;
1073#[doc = " Not WKT / unrecognized"]
1074pub const PJ_GUESSED_WKT_DIALECT_PJ_GUESSED_NOT_WKT: PJ_GUESSED_WKT_DIALECT = 4;
1075#[doc = " \\brief Guessed WKT \"dialect\"."]
1076pub type PJ_GUESSED_WKT_DIALECT = ::std::os::raw::c_uint;
1077pub const PJ_CATEGORY_PJ_CATEGORY_ELLIPSOID: PJ_CATEGORY = 0;
1078pub const PJ_CATEGORY_PJ_CATEGORY_PRIME_MERIDIAN: PJ_CATEGORY = 1;
1079pub const PJ_CATEGORY_PJ_CATEGORY_DATUM: PJ_CATEGORY = 2;
1080pub const PJ_CATEGORY_PJ_CATEGORY_CRS: PJ_CATEGORY = 3;
1081pub const PJ_CATEGORY_PJ_CATEGORY_COORDINATE_OPERATION: PJ_CATEGORY = 4;
1082pub const PJ_CATEGORY_PJ_CATEGORY_DATUM_ENSEMBLE: PJ_CATEGORY = 5;
1083#[doc = " \\brief Object category."]
1084pub type PJ_CATEGORY = ::std::os::raw::c_uint;
1085pub const PJ_TYPE_PJ_TYPE_UNKNOWN: PJ_TYPE = 0;
1086pub const PJ_TYPE_PJ_TYPE_ELLIPSOID: PJ_TYPE = 1;
1087pub const PJ_TYPE_PJ_TYPE_PRIME_MERIDIAN: PJ_TYPE = 2;
1088pub const PJ_TYPE_PJ_TYPE_GEODETIC_REFERENCE_FRAME: PJ_TYPE = 3;
1089pub const PJ_TYPE_PJ_TYPE_DYNAMIC_GEODETIC_REFERENCE_FRAME: PJ_TYPE = 4;
1090pub const PJ_TYPE_PJ_TYPE_VERTICAL_REFERENCE_FRAME: PJ_TYPE = 5;
1091pub const PJ_TYPE_PJ_TYPE_DYNAMIC_VERTICAL_REFERENCE_FRAME: PJ_TYPE = 6;
1092pub const PJ_TYPE_PJ_TYPE_DATUM_ENSEMBLE: PJ_TYPE = 7;
1093#[doc = " Abstract type, not returned by proj_get_type()"]
1094pub const PJ_TYPE_PJ_TYPE_CRS: PJ_TYPE = 8;
1095#[doc = " Abstract type, not returned by proj_get_type()"]
1096pub const PJ_TYPE_PJ_TYPE_GEODETIC_CRS: PJ_TYPE = 9;
1097#[doc = " Abstract type, not returned by proj_get_type()"]
1098pub const PJ_TYPE_PJ_TYPE_GEOCENTRIC_CRS: PJ_TYPE = 10;
1099#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1100pub const PJ_TYPE_PJ_TYPE_GEOGRAPHIC_CRS: PJ_TYPE = 11;
1101#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1102pub const PJ_TYPE_PJ_TYPE_GEOGRAPHIC_2D_CRS: PJ_TYPE = 12;
1103#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1104pub const PJ_TYPE_PJ_TYPE_GEOGRAPHIC_3D_CRS: PJ_TYPE = 13;
1105#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1106pub const PJ_TYPE_PJ_TYPE_VERTICAL_CRS: PJ_TYPE = 14;
1107#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1108pub const PJ_TYPE_PJ_TYPE_PROJECTED_CRS: PJ_TYPE = 15;
1109#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1110pub const PJ_TYPE_PJ_TYPE_COMPOUND_CRS: PJ_TYPE = 16;
1111#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1112pub const PJ_TYPE_PJ_TYPE_TEMPORAL_CRS: PJ_TYPE = 17;
1113#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1114pub const PJ_TYPE_PJ_TYPE_ENGINEERING_CRS: PJ_TYPE = 18;
1115#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1116pub const PJ_TYPE_PJ_TYPE_BOUND_CRS: PJ_TYPE = 19;
1117#[doc = " proj_get_type() will never return that type, but\n PJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_TYPE_GEOGRAPHIC_3D_CRS."]
1118pub const PJ_TYPE_PJ_TYPE_OTHER_CRS: PJ_TYPE = 20;
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_CONVERSION: PJ_TYPE = 21;
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_TRANSFORMATION: PJ_TYPE = 22;
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_CONCATENATED_OPERATION: PJ_TYPE = 23;
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_OTHER_COORDINATE_OPERATION: PJ_TYPE = 24;
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_TEMPORAL_DATUM: PJ_TYPE = 25;
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_ENGINEERING_DATUM: PJ_TYPE = 26;
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_PARAMETRIC_DATUM: PJ_TYPE = 27;
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_DERIVED_PROJECTED_CRS: PJ_TYPE = 28;
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_COORDINATE_METADATA: PJ_TYPE = 29;
1137#[doc = " \\brief Object type."]
1138pub type PJ_TYPE = ::std::os::raw::c_uint;
1139#[doc = " All properties are identical."]
1140pub const PJ_COMPARISON_CRITERION_PJ_COMP_STRICT: PJ_COMPARISON_CRITERION = 0;
1141#[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."]
1142pub const PJ_COMPARISON_CRITERION_PJ_COMP_EQUIVALENT: PJ_COMPARISON_CRITERION = 1;
1143#[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"]
1144pub const PJ_COMPARISON_CRITERION_PJ_COMP_EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS:
1145    PJ_COMPARISON_CRITERION = 2;
1146#[doc = " Comparison criterion."]
1147pub type PJ_COMPARISON_CRITERION = ::std::os::raw::c_uint;
1148#[doc = " cf osgeo::proj::io::WKTFormatter::Convention::WKT2"]
1149pub const PJ_WKT_TYPE_PJ_WKT2_2015: PJ_WKT_TYPE = 0;
1150#[doc = " cf osgeo::proj::io::WKTFormatter::Convention::WKT2_SIMPLIFIED"]
1151pub const PJ_WKT_TYPE_PJ_WKT2_2015_SIMPLIFIED: PJ_WKT_TYPE = 1;
1152#[doc = " cf osgeo::proj::io::WKTFormatter::Convention::WKT2_2019"]
1153pub const PJ_WKT_TYPE_PJ_WKT2_2019: PJ_WKT_TYPE = 2;
1154#[doc = " Deprecated alias for PJ_WKT2_2019"]
1155pub const PJ_WKT_TYPE_PJ_WKT2_2018: PJ_WKT_TYPE = 2;
1156#[doc = " cf osgeo::proj::io::WKTFormatter::Convention::WKT2_2019_SIMPLIFIED"]
1157pub const PJ_WKT_TYPE_PJ_WKT2_2019_SIMPLIFIED: PJ_WKT_TYPE = 3;
1158#[doc = " Deprecated alias for PJ_WKT2_2019"]
1159pub const PJ_WKT_TYPE_PJ_WKT2_2018_SIMPLIFIED: PJ_WKT_TYPE = 3;
1160#[doc = " cf osgeo::proj::io::WKTFormatter::Convention::WKT1_GDAL"]
1161pub const PJ_WKT_TYPE_PJ_WKT1_GDAL: PJ_WKT_TYPE = 4;
1162#[doc = " cf osgeo::proj::io::WKTFormatter::Convention::WKT1_ESRI"]
1163pub const PJ_WKT_TYPE_PJ_WKT1_ESRI: PJ_WKT_TYPE = 5;
1164#[doc = " \\brief WKT version."]
1165pub type PJ_WKT_TYPE = ::std::os::raw::c_uint;
1166#[doc = " Ignore CRS extent"]
1167pub const PROJ_CRS_EXTENT_USE_PJ_CRS_EXTENT_NONE: PROJ_CRS_EXTENT_USE = 0;
1168#[doc = " Test coordinate operation extent against both CRS extent."]
1169pub const PROJ_CRS_EXTENT_USE_PJ_CRS_EXTENT_BOTH: PROJ_CRS_EXTENT_USE = 1;
1170#[doc = " Test coordinate operation extent against the intersection of both\nCRS extent."]
1171pub const PROJ_CRS_EXTENT_USE_PJ_CRS_EXTENT_INTERSECTION: PROJ_CRS_EXTENT_USE = 2;
1172#[doc = " Test coordinate operation against the smallest of both CRS extent."]
1173pub const PROJ_CRS_EXTENT_USE_PJ_CRS_EXTENT_SMALLEST: PROJ_CRS_EXTENT_USE = 3;
1174#[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."]
1175pub type PROJ_CRS_EXTENT_USE = ::std::os::raw::c_uint;
1176#[doc = " Grid availability is only used for sorting results. Operations\n where some grids are missing will be sorted last."]
1177pub const PROJ_GRID_AVAILABILITY_USE_PROJ_GRID_AVAILABILITY_USED_FOR_SORTING:
1178    PROJ_GRID_AVAILABILITY_USE = 0;
1179#[doc = " Completely discard an operation if a required grid is missing."]
1180pub const PROJ_GRID_AVAILABILITY_USE_PROJ_GRID_AVAILABILITY_DISCARD_OPERATION_IF_MISSING_GRID:
1181    PROJ_GRID_AVAILABILITY_USE = 1;
1182#[doc = " Ignore grid availability at all. Results will be presented as if\n all grids were available."]
1183pub const PROJ_GRID_AVAILABILITY_USE_PROJ_GRID_AVAILABILITY_IGNORED: PROJ_GRID_AVAILABILITY_USE = 2;
1184#[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."]
1185pub const PROJ_GRID_AVAILABILITY_USE_PROJ_GRID_AVAILABILITY_KNOWN_AVAILABLE:
1186    PROJ_GRID_AVAILABILITY_USE = 3;
1187#[doc = " Describe how grid availability is used."]
1188pub type PROJ_GRID_AVAILABILITY_USE = ::std::os::raw::c_uint;
1189#[doc = " cf osgeo::proj::io::PROJStringFormatter::Convention::PROJ_5"]
1190pub const PJ_PROJ_STRING_TYPE_PJ_PROJ_5: PJ_PROJ_STRING_TYPE = 0;
1191#[doc = " cf osgeo::proj::io::PROJStringFormatter::Convention::PROJ_4"]
1192pub const PJ_PROJ_STRING_TYPE_PJ_PROJ_4: PJ_PROJ_STRING_TYPE = 1;
1193#[doc = " \\brief PROJ string version."]
1194pub type PJ_PROJ_STRING_TYPE = ::std::os::raw::c_uint;
1195#[doc = " The area of validity of transforms should strictly contain the\n are of interest."]
1196pub const PROJ_SPATIAL_CRITERION_PROJ_SPATIAL_CRITERION_STRICT_CONTAINMENT: PROJ_SPATIAL_CRITERION =
1197    0;
1198#[doc = " The area of validity of transforms should at least intersect the\n area of interest."]
1199pub const PROJ_SPATIAL_CRITERION_PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION:
1200    PROJ_SPATIAL_CRITERION = 1;
1201#[doc = " Spatial criterion to restrict candidate operations."]
1202pub type PROJ_SPATIAL_CRITERION = ::std::os::raw::c_uint;
1203#[doc = " Always search for intermediate CRS."]
1204pub const PROJ_INTERMEDIATE_CRS_USE_PROJ_INTERMEDIATE_CRS_USE_ALWAYS: PROJ_INTERMEDIATE_CRS_USE = 0;
1205#[doc = " Only attempt looking for intermediate CRS if there is no direct\n transformation available."]
1206pub const PROJ_INTERMEDIATE_CRS_USE_PROJ_INTERMEDIATE_CRS_USE_IF_NO_DIRECT_TRANSFORMATION:
1207    PROJ_INTERMEDIATE_CRS_USE = 1;
1208#[doc = " Only attempt looking for intermediate CRS if there is no direct\n transformation available."]
1209pub const PROJ_INTERMEDIATE_CRS_USE_PROJ_INTERMEDIATE_CRS_USE_NEVER: PROJ_INTERMEDIATE_CRS_USE = 2;
1210#[doc = " Describe if and how intermediate CRS should be used"]
1211pub type PROJ_INTERMEDIATE_CRS_USE = ::std::os::raw::c_uint;
1212pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_UNKNOWN: PJ_COORDINATE_SYSTEM_TYPE = 0;
1213pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_CARTESIAN: PJ_COORDINATE_SYSTEM_TYPE = 1;
1214pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_ELLIPSOIDAL: PJ_COORDINATE_SYSTEM_TYPE = 2;
1215pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_VERTICAL: PJ_COORDINATE_SYSTEM_TYPE = 3;
1216pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_SPHERICAL: PJ_COORDINATE_SYSTEM_TYPE = 4;
1217pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_ORDINAL: PJ_COORDINATE_SYSTEM_TYPE = 5;
1218pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_PARAMETRIC: PJ_COORDINATE_SYSTEM_TYPE = 6;
1219pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_DATETIMETEMPORAL: PJ_COORDINATE_SYSTEM_TYPE = 7;
1220pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_TEMPORALCOUNT: PJ_COORDINATE_SYSTEM_TYPE = 8;
1221pub const PJ_COORDINATE_SYSTEM_TYPE_PJ_CS_TYPE_TEMPORALMEASURE: PJ_COORDINATE_SYSTEM_TYPE = 9;
1222#[doc = " Type of coordinate system."]
1223pub type PJ_COORDINATE_SYSTEM_TYPE = ::std::os::raw::c_uint;
1224#[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."]
1225#[repr(C)]
1226#[derive(Debug, Copy, Clone)]
1227pub struct PROJ_CRS_INFO {
1228    #[doc = " Authority name."]
1229    pub auth_name: *mut ::std::os::raw::c_char,
1230    #[doc = " Object code."]
1231    pub code: *mut ::std::os::raw::c_char,
1232    #[doc = " Object name."]
1233    pub name: *mut ::std::os::raw::c_char,
1234    #[doc = " Object type."]
1235    pub type_: PJ_TYPE,
1236    #[doc = " Whether the object is deprecated"]
1237    pub deprecated: ::std::os::raw::c_int,
1238    #[doc = " Whereas the west_lon_degree, south_lat_degree, east_lon_degree and\n north_lat_degree fields are valid."]
1239    pub bbox_valid: ::std::os::raw::c_int,
1240    #[doc = " Western-most longitude of the area of use, in degrees."]
1241    pub west_lon_degree: f64,
1242    #[doc = " Southern-most latitude of the area of use, in degrees."]
1243    pub south_lat_degree: f64,
1244    #[doc = " Eastern-most longitude of the area of use, in degrees."]
1245    pub east_lon_degree: f64,
1246    #[doc = " Northern-most latitude of the area of use, in degrees."]
1247    pub north_lat_degree: f64,
1248    #[doc = " Name of the area of use."]
1249    pub area_name: *mut ::std::os::raw::c_char,
1250    #[doc = " Name of the projection method for a projected CRS. Might be NULL even\nfor projected CRS in some cases."]
1251    pub projection_method_name: *mut ::std::os::raw::c_char,
1252    #[doc = " Name of the celestial body of the CRS (e.g. \"Earth\").\n @since 8.1"]
1253    pub celestial_body_name: *mut ::std::os::raw::c_char,
1254}
1255#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1256const _: () = {
1257    ["Size of PROJ_CRS_INFO"][::std::mem::size_of::<PROJ_CRS_INFO>() - 96usize];
1258    ["Alignment of PROJ_CRS_INFO"][::std::mem::align_of::<PROJ_CRS_INFO>() - 8usize];
1259    ["Offset of field: PROJ_CRS_INFO::auth_name"]
1260        [::std::mem::offset_of!(PROJ_CRS_INFO, auth_name) - 0usize];
1261    ["Offset of field: PROJ_CRS_INFO::code"][::std::mem::offset_of!(PROJ_CRS_INFO, code) - 8usize];
1262    ["Offset of field: PROJ_CRS_INFO::name"][::std::mem::offset_of!(PROJ_CRS_INFO, name) - 16usize];
1263    ["Offset of field: PROJ_CRS_INFO::type_"]
1264        [::std::mem::offset_of!(PROJ_CRS_INFO, type_) - 24usize];
1265    ["Offset of field: PROJ_CRS_INFO::deprecated"]
1266        [::std::mem::offset_of!(PROJ_CRS_INFO, deprecated) - 28usize];
1267    ["Offset of field: PROJ_CRS_INFO::bbox_valid"]
1268        [::std::mem::offset_of!(PROJ_CRS_INFO, bbox_valid) - 32usize];
1269    ["Offset of field: PROJ_CRS_INFO::west_lon_degree"]
1270        [::std::mem::offset_of!(PROJ_CRS_INFO, west_lon_degree) - 40usize];
1271    ["Offset of field: PROJ_CRS_INFO::south_lat_degree"]
1272        [::std::mem::offset_of!(PROJ_CRS_INFO, south_lat_degree) - 48usize];
1273    ["Offset of field: PROJ_CRS_INFO::east_lon_degree"]
1274        [::std::mem::offset_of!(PROJ_CRS_INFO, east_lon_degree) - 56usize];
1275    ["Offset of field: PROJ_CRS_INFO::north_lat_degree"]
1276        [::std::mem::offset_of!(PROJ_CRS_INFO, north_lat_degree) - 64usize];
1277    ["Offset of field: PROJ_CRS_INFO::area_name"]
1278        [::std::mem::offset_of!(PROJ_CRS_INFO, area_name) - 72usize];
1279    ["Offset of field: PROJ_CRS_INFO::projection_method_name"]
1280        [::std::mem::offset_of!(PROJ_CRS_INFO, projection_method_name) - 80usize];
1281    ["Offset of field: PROJ_CRS_INFO::celestial_body_name"]
1282        [::std::mem::offset_of!(PROJ_CRS_INFO, celestial_body_name) - 88usize];
1283};
1284#[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."]
1285#[repr(C)]
1286#[derive(Debug, Copy, Clone)]
1287pub struct PROJ_CRS_LIST_PARAMETERS {
1288    #[doc = " Array of allowed object types. Should be NULL if all types are allowed"]
1289    pub types: *const PJ_TYPE,
1290    #[doc = " Size of types. Should be 0 if all types are allowed"]
1291    pub typesCount: usize,
1292    #[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."]
1293    pub crs_area_of_use_contains_bbox: ::std::os::raw::c_int,
1294    #[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."]
1295    pub bbox_valid: ::std::os::raw::c_int,
1296    #[doc = " Western-most longitude of the area of use, in degrees."]
1297    pub west_lon_degree: f64,
1298    #[doc = " Southern-most latitude of the area of use, in degrees."]
1299    pub south_lat_degree: f64,
1300    #[doc = " Eastern-most longitude of the area of use, in degrees."]
1301    pub east_lon_degree: f64,
1302    #[doc = " Northern-most latitude of the area of use, in degrees."]
1303    pub north_lat_degree: f64,
1304    #[doc = " Whether deprecated objects are allowed. Default to FALSE."]
1305    pub allow_deprecated: ::std::os::raw::c_int,
1306    #[doc = " Celestial body of the CRS (e.g. \"Earth\"). The default value, NULL,\n  means no restriction\n @since 8.1"]
1307    pub celestial_body_name: *const ::std::os::raw::c_char,
1308}
1309#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1310const _: () = {
1311    ["Size of PROJ_CRS_LIST_PARAMETERS"]
1312        [::std::mem::size_of::<PROJ_CRS_LIST_PARAMETERS>() - 72usize];
1313    ["Alignment of PROJ_CRS_LIST_PARAMETERS"]
1314        [::std::mem::align_of::<PROJ_CRS_LIST_PARAMETERS>() - 8usize];
1315    ["Offset of field: PROJ_CRS_LIST_PARAMETERS::types"]
1316        [::std::mem::offset_of!(PROJ_CRS_LIST_PARAMETERS, types) - 0usize];
1317    ["Offset of field: PROJ_CRS_LIST_PARAMETERS::typesCount"]
1318        [::std::mem::offset_of!(PROJ_CRS_LIST_PARAMETERS, typesCount) - 8usize];
1319    ["Offset of field: PROJ_CRS_LIST_PARAMETERS::crs_area_of_use_contains_bbox"]
1320        [::std::mem::offset_of!(PROJ_CRS_LIST_PARAMETERS, crs_area_of_use_contains_bbox) - 16usize];
1321    ["Offset of field: PROJ_CRS_LIST_PARAMETERS::bbox_valid"]
1322        [::std::mem::offset_of!(PROJ_CRS_LIST_PARAMETERS, bbox_valid) - 20usize];
1323    ["Offset of field: PROJ_CRS_LIST_PARAMETERS::west_lon_degree"]
1324        [::std::mem::offset_of!(PROJ_CRS_LIST_PARAMETERS, west_lon_degree) - 24usize];
1325    ["Offset of field: PROJ_CRS_LIST_PARAMETERS::south_lat_degree"]
1326        [::std::mem::offset_of!(PROJ_CRS_LIST_PARAMETERS, south_lat_degree) - 32usize];
1327    ["Offset of field: PROJ_CRS_LIST_PARAMETERS::east_lon_degree"]
1328        [::std::mem::offset_of!(PROJ_CRS_LIST_PARAMETERS, east_lon_degree) - 40usize];
1329    ["Offset of field: PROJ_CRS_LIST_PARAMETERS::north_lat_degree"]
1330        [::std::mem::offset_of!(PROJ_CRS_LIST_PARAMETERS, north_lat_degree) - 48usize];
1331    ["Offset of field: PROJ_CRS_LIST_PARAMETERS::allow_deprecated"]
1332        [::std::mem::offset_of!(PROJ_CRS_LIST_PARAMETERS, allow_deprecated) - 56usize];
1333    ["Offset of field: PROJ_CRS_LIST_PARAMETERS::celestial_body_name"]
1334        [::std::mem::offset_of!(PROJ_CRS_LIST_PARAMETERS, celestial_body_name) - 64usize];
1335};
1336#[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"]
1337#[repr(C)]
1338#[derive(Debug, Copy, Clone)]
1339pub struct PROJ_UNIT_INFO {
1340    #[doc = " Authority name."]
1341    pub auth_name: *mut ::std::os::raw::c_char,
1342    #[doc = " Object code."]
1343    pub code: *mut ::std::os::raw::c_char,
1344    #[doc = " Object name. For example \"metre\", \"US survey foot\", etc."]
1345    pub name: *mut ::std::os::raw::c_char,
1346    #[doc = " Category of the unit: one of \"linear\", \"linear_per_time\", \"angular\",\n \"angular_per_time\", \"scale\", \"scale_per_time\" or \"time\""]
1347    pub category: *mut ::std::os::raw::c_char,
1348    #[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."]
1349    pub conv_factor: f64,
1350    #[doc = " PROJ short name, like \"m\", \"ft\", \"us-ft\", etc... Might be NULL"]
1351    pub proj_short_name: *mut ::std::os::raw::c_char,
1352    #[doc = " Whether the object is deprecated"]
1353    pub deprecated: ::std::os::raw::c_int,
1354}
1355#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1356const _: () = {
1357    ["Size of PROJ_UNIT_INFO"][::std::mem::size_of::<PROJ_UNIT_INFO>() - 56usize];
1358    ["Alignment of PROJ_UNIT_INFO"][::std::mem::align_of::<PROJ_UNIT_INFO>() - 8usize];
1359    ["Offset of field: PROJ_UNIT_INFO::auth_name"]
1360        [::std::mem::offset_of!(PROJ_UNIT_INFO, auth_name) - 0usize];
1361    ["Offset of field: PROJ_UNIT_INFO::code"]
1362        [::std::mem::offset_of!(PROJ_UNIT_INFO, code) - 8usize];
1363    ["Offset of field: PROJ_UNIT_INFO::name"]
1364        [::std::mem::offset_of!(PROJ_UNIT_INFO, name) - 16usize];
1365    ["Offset of field: PROJ_UNIT_INFO::category"]
1366        [::std::mem::offset_of!(PROJ_UNIT_INFO, category) - 24usize];
1367    ["Offset of field: PROJ_UNIT_INFO::conv_factor"]
1368        [::std::mem::offset_of!(PROJ_UNIT_INFO, conv_factor) - 32usize];
1369    ["Offset of field: PROJ_UNIT_INFO::proj_short_name"]
1370        [::std::mem::offset_of!(PROJ_UNIT_INFO, proj_short_name) - 40usize];
1371    ["Offset of field: PROJ_UNIT_INFO::deprecated"]
1372        [::std::mem::offset_of!(PROJ_UNIT_INFO, deprecated) - 48usize];
1373};
1374#[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"]
1375#[repr(C)]
1376#[derive(Debug, Copy, Clone)]
1377pub struct PROJ_CELESTIAL_BODY_INFO {
1378    #[doc = " Authority name."]
1379    pub auth_name: *mut ::std::os::raw::c_char,
1380    #[doc = " Object name. For example \"Earth\""]
1381    pub name: *mut ::std::os::raw::c_char,
1382}
1383#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1384const _: () = {
1385    ["Size of PROJ_CELESTIAL_BODY_INFO"]
1386        [::std::mem::size_of::<PROJ_CELESTIAL_BODY_INFO>() - 16usize];
1387    ["Alignment of PROJ_CELESTIAL_BODY_INFO"]
1388        [::std::mem::align_of::<PROJ_CELESTIAL_BODY_INFO>() - 8usize];
1389    ["Offset of field: PROJ_CELESTIAL_BODY_INFO::auth_name"]
1390        [::std::mem::offset_of!(PROJ_CELESTIAL_BODY_INFO, auth_name) - 0usize];
1391    ["Offset of field: PROJ_CELESTIAL_BODY_INFO::name"]
1392        [::std::mem::offset_of!(PROJ_CELESTIAL_BODY_INFO, name) - 8usize];
1393};
1394#[repr(C)]
1395#[derive(Debug, Copy, Clone)]
1396pub struct PJ_OBJ_LIST {
1397    _unused: [u8; 0],
1398}
1399unsafe extern "C" {
1400    #[doc = " @endcond"]
1401    pub fn proj_string_list_destroy(list: PROJ_STRING_LIST);
1402}
1403unsafe extern "C" {
1404    pub fn proj_context_set_autoclose_database(
1405        ctx: *mut PJ_CONTEXT,
1406        autoclose: ::std::os::raw::c_int,
1407    );
1408}
1409unsafe extern "C" {
1410    pub fn proj_context_set_database_path(
1411        ctx: *mut PJ_CONTEXT,
1412        dbPath: *const ::std::os::raw::c_char,
1413        auxDbPaths: *const *const ::std::os::raw::c_char,
1414        options: *const *const ::std::os::raw::c_char,
1415    ) -> ::std::os::raw::c_int;
1416}
1417unsafe extern "C" {
1418    pub fn proj_context_get_database_path(ctx: *mut PJ_CONTEXT) -> *const ::std::os::raw::c_char;
1419}
1420unsafe extern "C" {
1421    pub fn proj_context_get_database_metadata(
1422        ctx: *mut PJ_CONTEXT,
1423        key: *const ::std::os::raw::c_char,
1424    ) -> *const ::std::os::raw::c_char;
1425}
1426unsafe extern "C" {
1427    pub fn proj_context_get_database_structure(
1428        ctx: *mut PJ_CONTEXT,
1429        options: *const *const ::std::os::raw::c_char,
1430    ) -> PROJ_STRING_LIST;
1431}
1432unsafe extern "C" {
1433    pub fn proj_context_guess_wkt_dialect(
1434        ctx: *mut PJ_CONTEXT,
1435        wkt: *const ::std::os::raw::c_char,
1436    ) -> PJ_GUESSED_WKT_DIALECT;
1437}
1438unsafe extern "C" {
1439    pub fn proj_create_from_wkt(
1440        ctx: *mut PJ_CONTEXT,
1441        wkt: *const ::std::os::raw::c_char,
1442        options: *const *const ::std::os::raw::c_char,
1443        out_warnings: *mut PROJ_STRING_LIST,
1444        out_grammar_errors: *mut PROJ_STRING_LIST,
1445    ) -> *mut PJ;
1446}
1447unsafe extern "C" {
1448    pub fn proj_create_from_database(
1449        ctx: *mut PJ_CONTEXT,
1450        auth_name: *const ::std::os::raw::c_char,
1451        code: *const ::std::os::raw::c_char,
1452        category: PJ_CATEGORY,
1453        usePROJAlternativeGridNames: ::std::os::raw::c_int,
1454        options: *const *const ::std::os::raw::c_char,
1455    ) -> *mut PJ;
1456}
1457unsafe extern "C" {
1458    pub fn proj_uom_get_info_from_database(
1459        ctx: *mut PJ_CONTEXT,
1460        auth_name: *const ::std::os::raw::c_char,
1461        code: *const ::std::os::raw::c_char,
1462        out_name: *mut *const ::std::os::raw::c_char,
1463        out_conv_factor: *mut f64,
1464        out_category: *mut *const ::std::os::raw::c_char,
1465    ) -> ::std::os::raw::c_int;
1466}
1467unsafe extern "C" {
1468    pub fn proj_grid_get_info_from_database(
1469        ctx: *mut PJ_CONTEXT,
1470        grid_name: *const ::std::os::raw::c_char,
1471        out_full_name: *mut *const ::std::os::raw::c_char,
1472        out_package_name: *mut *const ::std::os::raw::c_char,
1473        out_url: *mut *const ::std::os::raw::c_char,
1474        out_direct_download: *mut ::std::os::raw::c_int,
1475        out_open_license: *mut ::std::os::raw::c_int,
1476        out_available: *mut ::std::os::raw::c_int,
1477    ) -> ::std::os::raw::c_int;
1478}
1479unsafe extern "C" {
1480    pub fn proj_clone(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> *mut PJ;
1481}
1482unsafe extern "C" {
1483    pub fn proj_create_from_name(
1484        ctx: *mut PJ_CONTEXT,
1485        auth_name: *const ::std::os::raw::c_char,
1486        searchedName: *const ::std::os::raw::c_char,
1487        types: *const PJ_TYPE,
1488        typesCount: usize,
1489        approximateMatch: ::std::os::raw::c_int,
1490        limitResultCount: usize,
1491        options: *const *const ::std::os::raw::c_char,
1492    ) -> *mut PJ_OBJ_LIST;
1493}
1494unsafe extern "C" {
1495    pub fn proj_get_type(obj: *const PJ) -> PJ_TYPE;
1496}
1497unsafe extern "C" {
1498    pub fn proj_is_deprecated(obj: *const PJ) -> ::std::os::raw::c_int;
1499}
1500unsafe extern "C" {
1501    pub fn proj_get_non_deprecated(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> *mut PJ_OBJ_LIST;
1502}
1503unsafe extern "C" {
1504    pub fn proj_is_equivalent_to(
1505        obj: *const PJ,
1506        other: *const PJ,
1507        criterion: PJ_COMPARISON_CRITERION,
1508    ) -> ::std::os::raw::c_int;
1509}
1510unsafe extern "C" {
1511    pub fn proj_is_equivalent_to_with_ctx(
1512        ctx: *mut PJ_CONTEXT,
1513        obj: *const PJ,
1514        other: *const PJ,
1515        criterion: PJ_COMPARISON_CRITERION,
1516    ) -> ::std::os::raw::c_int;
1517}
1518unsafe extern "C" {
1519    pub fn proj_is_crs(obj: *const PJ) -> ::std::os::raw::c_int;
1520}
1521unsafe extern "C" {
1522    pub fn proj_get_name(obj: *const PJ) -> *const ::std::os::raw::c_char;
1523}
1524unsafe extern "C" {
1525    pub fn proj_get_id_auth_name(
1526        obj: *const PJ,
1527        index: ::std::os::raw::c_int,
1528    ) -> *const ::std::os::raw::c_char;
1529}
1530unsafe extern "C" {
1531    pub fn proj_get_id_code(
1532        obj: *const PJ,
1533        index: ::std::os::raw::c_int,
1534    ) -> *const ::std::os::raw::c_char;
1535}
1536unsafe extern "C" {
1537    pub fn proj_get_remarks(obj: *const PJ) -> *const ::std::os::raw::c_char;
1538}
1539unsafe extern "C" {
1540    pub fn proj_get_domain_count(obj: *const PJ) -> ::std::os::raw::c_int;
1541}
1542unsafe extern "C" {
1543    pub fn proj_get_scope(obj: *const PJ) -> *const ::std::os::raw::c_char;
1544}
1545unsafe extern "C" {
1546    pub fn proj_get_scope_ex(
1547        obj: *const PJ,
1548        domainIdx: ::std::os::raw::c_int,
1549    ) -> *const ::std::os::raw::c_char;
1550}
1551unsafe extern "C" {
1552    pub fn proj_get_area_of_use(
1553        ctx: *mut PJ_CONTEXT,
1554        obj: *const PJ,
1555        out_west_lon_degree: *mut f64,
1556        out_south_lat_degree: *mut f64,
1557        out_east_lon_degree: *mut f64,
1558        out_north_lat_degree: *mut f64,
1559        out_area_name: *mut *const ::std::os::raw::c_char,
1560    ) -> ::std::os::raw::c_int;
1561}
1562unsafe extern "C" {
1563    pub fn proj_get_area_of_use_ex(
1564        ctx: *mut PJ_CONTEXT,
1565        obj: *const PJ,
1566        domainIdx: ::std::os::raw::c_int,
1567        out_west_lon_degree: *mut f64,
1568        out_south_lat_degree: *mut f64,
1569        out_east_lon_degree: *mut f64,
1570        out_north_lat_degree: *mut f64,
1571        out_area_name: *mut *const ::std::os::raw::c_char,
1572    ) -> ::std::os::raw::c_int;
1573}
1574unsafe extern "C" {
1575    pub fn proj_as_wkt(
1576        ctx: *mut PJ_CONTEXT,
1577        obj: *const PJ,
1578        type_: PJ_WKT_TYPE,
1579        options: *const *const ::std::os::raw::c_char,
1580    ) -> *const ::std::os::raw::c_char;
1581}
1582unsafe extern "C" {
1583    pub fn proj_as_proj_string(
1584        ctx: *mut PJ_CONTEXT,
1585        obj: *const PJ,
1586        type_: PJ_PROJ_STRING_TYPE,
1587        options: *const *const ::std::os::raw::c_char,
1588    ) -> *const ::std::os::raw::c_char;
1589}
1590unsafe extern "C" {
1591    pub fn proj_as_projjson(
1592        ctx: *mut PJ_CONTEXT,
1593        obj: *const PJ,
1594        options: *const *const ::std::os::raw::c_char,
1595    ) -> *const ::std::os::raw::c_char;
1596}
1597unsafe extern "C" {
1598    pub fn proj_get_source_crs(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> *mut PJ;
1599}
1600unsafe extern "C" {
1601    pub fn proj_get_target_crs(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> *mut PJ;
1602}
1603unsafe extern "C" {
1604    pub fn proj_identify(
1605        ctx: *mut PJ_CONTEXT,
1606        obj: *const PJ,
1607        auth_name: *const ::std::os::raw::c_char,
1608        options: *const *const ::std::os::raw::c_char,
1609        out_confidence: *mut *mut ::std::os::raw::c_int,
1610    ) -> *mut PJ_OBJ_LIST;
1611}
1612unsafe extern "C" {
1613    pub fn proj_get_geoid_models_from_database(
1614        ctx: *mut PJ_CONTEXT,
1615        auth_name: *const ::std::os::raw::c_char,
1616        code: *const ::std::os::raw::c_char,
1617        options: *const *const ::std::os::raw::c_char,
1618    ) -> PROJ_STRING_LIST;
1619}
1620unsafe extern "C" {
1621    pub fn proj_int_list_destroy(list: *mut ::std::os::raw::c_int);
1622}
1623unsafe extern "C" {
1624    pub fn proj_get_authorities_from_database(ctx: *mut PJ_CONTEXT) -> PROJ_STRING_LIST;
1625}
1626unsafe extern "C" {
1627    pub fn proj_get_codes_from_database(
1628        ctx: *mut PJ_CONTEXT,
1629        auth_name: *const ::std::os::raw::c_char,
1630        type_: PJ_TYPE,
1631        allow_deprecated: ::std::os::raw::c_int,
1632    ) -> PROJ_STRING_LIST;
1633}
1634unsafe extern "C" {
1635    pub fn proj_get_celestial_body_list_from_database(
1636        ctx: *mut PJ_CONTEXT,
1637        auth_name: *const ::std::os::raw::c_char,
1638        out_result_count: *mut ::std::os::raw::c_int,
1639    ) -> *mut *mut PROJ_CELESTIAL_BODY_INFO;
1640}
1641unsafe extern "C" {
1642    pub fn proj_celestial_body_list_destroy(list: *mut *mut PROJ_CELESTIAL_BODY_INFO);
1643}
1644unsafe extern "C" {
1645    pub fn proj_get_crs_list_parameters_create() -> *mut PROJ_CRS_LIST_PARAMETERS;
1646}
1647unsafe extern "C" {
1648    pub fn proj_get_crs_list_parameters_destroy(params: *mut PROJ_CRS_LIST_PARAMETERS);
1649}
1650unsafe extern "C" {
1651    pub fn proj_get_crs_info_list_from_database(
1652        ctx: *mut PJ_CONTEXT,
1653        auth_name: *const ::std::os::raw::c_char,
1654        params: *const PROJ_CRS_LIST_PARAMETERS,
1655        out_result_count: *mut ::std::os::raw::c_int,
1656    ) -> *mut *mut PROJ_CRS_INFO;
1657}
1658unsafe extern "C" {
1659    pub fn proj_crs_info_list_destroy(list: *mut *mut PROJ_CRS_INFO);
1660}
1661unsafe extern "C" {
1662    pub fn proj_get_units_from_database(
1663        ctx: *mut PJ_CONTEXT,
1664        auth_name: *const ::std::os::raw::c_char,
1665        category: *const ::std::os::raw::c_char,
1666        allow_deprecated: ::std::os::raw::c_int,
1667        out_result_count: *mut ::std::os::raw::c_int,
1668    ) -> *mut *mut PROJ_UNIT_INFO;
1669}
1670unsafe extern "C" {
1671    pub fn proj_unit_list_destroy(list: *mut *mut PROJ_UNIT_INFO);
1672}
1673#[repr(C)]
1674#[derive(Debug, Copy, Clone)]
1675pub struct PJ_INSERT_SESSION {
1676    _unused: [u8; 0],
1677}
1678unsafe extern "C" {
1679    #[doc = " @endcond"]
1680    pub fn proj_insert_object_session_create(ctx: *mut PJ_CONTEXT) -> *mut PJ_INSERT_SESSION;
1681}
1682unsafe extern "C" {
1683    pub fn proj_insert_object_session_destroy(
1684        ctx: *mut PJ_CONTEXT,
1685        session: *mut PJ_INSERT_SESSION,
1686    );
1687}
1688unsafe extern "C" {
1689    pub fn proj_get_insert_statements(
1690        ctx: *mut PJ_CONTEXT,
1691        session: *mut PJ_INSERT_SESSION,
1692        object: *const PJ,
1693        authority: *const ::std::os::raw::c_char,
1694        code: *const ::std::os::raw::c_char,
1695        numeric_codes: ::std::os::raw::c_int,
1696        allowed_authorities: *const *const ::std::os::raw::c_char,
1697        options: *const *const ::std::os::raw::c_char,
1698    ) -> PROJ_STRING_LIST;
1699}
1700unsafe extern "C" {
1701    pub fn proj_suggests_code_for(
1702        ctx: *mut PJ_CONTEXT,
1703        object: *const PJ,
1704        authority: *const ::std::os::raw::c_char,
1705        numeric_code: ::std::os::raw::c_int,
1706        options: *const *const ::std::os::raw::c_char,
1707    ) -> *mut ::std::os::raw::c_char;
1708}
1709unsafe extern "C" {
1710    pub fn proj_string_destroy(str_: *mut ::std::os::raw::c_char);
1711}
1712#[repr(C)]
1713#[derive(Debug, Copy, Clone)]
1714pub struct PJ_OPERATION_FACTORY_CONTEXT {
1715    _unused: [u8; 0],
1716}
1717unsafe extern "C" {
1718    #[doc = " @endcond"]
1719    pub fn proj_create_operation_factory_context(
1720        ctx: *mut PJ_CONTEXT,
1721        authority: *const ::std::os::raw::c_char,
1722    ) -> *mut PJ_OPERATION_FACTORY_CONTEXT;
1723}
1724unsafe extern "C" {
1725    pub fn proj_operation_factory_context_destroy(ctx: *mut PJ_OPERATION_FACTORY_CONTEXT);
1726}
1727unsafe extern "C" {
1728    pub fn proj_operation_factory_context_set_desired_accuracy(
1729        ctx: *mut PJ_CONTEXT,
1730        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
1731        accuracy: f64,
1732    );
1733}
1734unsafe extern "C" {
1735    pub fn proj_operation_factory_context_set_area_of_interest(
1736        ctx: *mut PJ_CONTEXT,
1737        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
1738        west_lon_degree: f64,
1739        south_lat_degree: f64,
1740        east_lon_degree: f64,
1741        north_lat_degree: f64,
1742    );
1743}
1744unsafe extern "C" {
1745    pub fn proj_operation_factory_context_set_area_of_interest_name(
1746        ctx: *mut PJ_CONTEXT,
1747        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
1748        area_name: *const ::std::os::raw::c_char,
1749    );
1750}
1751unsafe extern "C" {
1752    pub fn proj_operation_factory_context_set_crs_extent_use(
1753        ctx: *mut PJ_CONTEXT,
1754        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
1755        use_: PROJ_CRS_EXTENT_USE,
1756    );
1757}
1758unsafe extern "C" {
1759    pub fn proj_operation_factory_context_set_spatial_criterion(
1760        ctx: *mut PJ_CONTEXT,
1761        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
1762        criterion: PROJ_SPATIAL_CRITERION,
1763    );
1764}
1765unsafe extern "C" {
1766    pub fn proj_operation_factory_context_set_grid_availability_use(
1767        ctx: *mut PJ_CONTEXT,
1768        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
1769        use_: PROJ_GRID_AVAILABILITY_USE,
1770    );
1771}
1772unsafe extern "C" {
1773    pub fn proj_operation_factory_context_set_use_proj_alternative_grid_names(
1774        ctx: *mut PJ_CONTEXT,
1775        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
1776        usePROJNames: ::std::os::raw::c_int,
1777    );
1778}
1779unsafe extern "C" {
1780    pub fn proj_operation_factory_context_set_allow_use_intermediate_crs(
1781        ctx: *mut PJ_CONTEXT,
1782        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
1783        use_: PROJ_INTERMEDIATE_CRS_USE,
1784    );
1785}
1786unsafe extern "C" {
1787    pub fn proj_operation_factory_context_set_allowed_intermediate_crs(
1788        ctx: *mut PJ_CONTEXT,
1789        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
1790        list_of_auth_name_codes: *const *const ::std::os::raw::c_char,
1791    );
1792}
1793unsafe extern "C" {
1794    pub fn proj_operation_factory_context_set_discard_superseded(
1795        ctx: *mut PJ_CONTEXT,
1796        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
1797        discard: ::std::os::raw::c_int,
1798    );
1799}
1800unsafe extern "C" {
1801    pub fn proj_operation_factory_context_set_allow_ballpark_transformations(
1802        ctx: *mut PJ_CONTEXT,
1803        factory_ctx: *mut PJ_OPERATION_FACTORY_CONTEXT,
1804        allow: ::std::os::raw::c_int,
1805    );
1806}
1807unsafe extern "C" {
1808    pub fn proj_create_operations(
1809        ctx: *mut PJ_CONTEXT,
1810        source_crs: *const PJ,
1811        target_crs: *const PJ,
1812        operationContext: *const PJ_OPERATION_FACTORY_CONTEXT,
1813    ) -> *mut PJ_OBJ_LIST;
1814}
1815unsafe extern "C" {
1816    pub fn proj_list_get_count(result: *const PJ_OBJ_LIST) -> ::std::os::raw::c_int;
1817}
1818unsafe extern "C" {
1819    pub fn proj_list_get(
1820        ctx: *mut PJ_CONTEXT,
1821        result: *const PJ_OBJ_LIST,
1822        index: ::std::os::raw::c_int,
1823    ) -> *mut PJ;
1824}
1825unsafe extern "C" {
1826    pub fn proj_list_destroy(result: *mut PJ_OBJ_LIST);
1827}
1828unsafe extern "C" {
1829    pub fn proj_get_suggested_operation(
1830        ctx: *mut PJ_CONTEXT,
1831        operations: *mut PJ_OBJ_LIST,
1832        direction: PJ_DIRECTION,
1833        coord: PJ_COORD,
1834    ) -> ::std::os::raw::c_int;
1835}
1836unsafe extern "C" {
1837    pub fn proj_crs_is_derived(ctx: *mut PJ_CONTEXT, crs: *const PJ) -> ::std::os::raw::c_int;
1838}
1839unsafe extern "C" {
1840    pub fn proj_crs_get_geodetic_crs(ctx: *mut PJ_CONTEXT, crs: *const PJ) -> *mut PJ;
1841}
1842unsafe extern "C" {
1843    pub fn proj_crs_get_horizontal_datum(ctx: *mut PJ_CONTEXT, crs: *const PJ) -> *mut PJ;
1844}
1845unsafe extern "C" {
1846    pub fn proj_crs_get_sub_crs(
1847        ctx: *mut PJ_CONTEXT,
1848        crs: *const PJ,
1849        index: ::std::os::raw::c_int,
1850    ) -> *mut PJ;
1851}
1852unsafe extern "C" {
1853    pub fn proj_crs_get_datum(ctx: *mut PJ_CONTEXT, crs: *const PJ) -> *mut PJ;
1854}
1855unsafe extern "C" {
1856    pub fn proj_crs_get_datum_ensemble(ctx: *mut PJ_CONTEXT, crs: *const PJ) -> *mut PJ;
1857}
1858unsafe extern "C" {
1859    pub fn proj_crs_get_datum_forced(ctx: *mut PJ_CONTEXT, crs: *const PJ) -> *mut PJ;
1860}
1861unsafe extern "C" {
1862    pub fn proj_crs_has_point_motion_operation(
1863        ctx: *mut PJ_CONTEXT,
1864        crs: *const PJ,
1865    ) -> ::std::os::raw::c_int;
1866}
1867unsafe extern "C" {
1868    pub fn proj_datum_ensemble_get_member_count(
1869        ctx: *mut PJ_CONTEXT,
1870        datum_ensemble: *const PJ,
1871    ) -> ::std::os::raw::c_int;
1872}
1873unsafe extern "C" {
1874    pub fn proj_datum_ensemble_get_accuracy(ctx: *mut PJ_CONTEXT, datum_ensemble: *const PJ)
1875        -> f64;
1876}
1877unsafe extern "C" {
1878    pub fn proj_datum_ensemble_get_member(
1879        ctx: *mut PJ_CONTEXT,
1880        datum_ensemble: *const PJ,
1881        member_index: ::std::os::raw::c_int,
1882    ) -> *mut PJ;
1883}
1884unsafe extern "C" {
1885    pub fn proj_dynamic_datum_get_frame_reference_epoch(
1886        ctx: *mut PJ_CONTEXT,
1887        datum: *const PJ,
1888    ) -> f64;
1889}
1890unsafe extern "C" {
1891    pub fn proj_crs_get_coordinate_system(ctx: *mut PJ_CONTEXT, crs: *const PJ) -> *mut PJ;
1892}
1893unsafe extern "C" {
1894    pub fn proj_cs_get_type(ctx: *mut PJ_CONTEXT, cs: *const PJ) -> PJ_COORDINATE_SYSTEM_TYPE;
1895}
1896unsafe extern "C" {
1897    pub fn proj_cs_get_axis_count(ctx: *mut PJ_CONTEXT, cs: *const PJ) -> ::std::os::raw::c_int;
1898}
1899unsafe extern "C" {
1900    pub fn proj_cs_get_axis_info(
1901        ctx: *mut PJ_CONTEXT,
1902        cs: *const PJ,
1903        index: ::std::os::raw::c_int,
1904        out_name: *mut *const ::std::os::raw::c_char,
1905        out_abbrev: *mut *const ::std::os::raw::c_char,
1906        out_direction: *mut *const ::std::os::raw::c_char,
1907        out_unit_conv_factor: *mut f64,
1908        out_unit_name: *mut *const ::std::os::raw::c_char,
1909        out_unit_auth_name: *mut *const ::std::os::raw::c_char,
1910        out_unit_code: *mut *const ::std::os::raw::c_char,
1911    ) -> ::std::os::raw::c_int;
1912}
1913unsafe extern "C" {
1914    pub fn proj_get_ellipsoid(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> *mut PJ;
1915}
1916unsafe extern "C" {
1917    pub fn proj_ellipsoid_get_parameters(
1918        ctx: *mut PJ_CONTEXT,
1919        ellipsoid: *const PJ,
1920        out_semi_major_metre: *mut f64,
1921        out_semi_minor_metre: *mut f64,
1922        out_is_semi_minor_computed: *mut ::std::os::raw::c_int,
1923        out_inv_flattening: *mut f64,
1924    ) -> ::std::os::raw::c_int;
1925}
1926unsafe extern "C" {
1927    pub fn proj_get_celestial_body_name(
1928        ctx: *mut PJ_CONTEXT,
1929        obj: *const PJ,
1930    ) -> *const ::std::os::raw::c_char;
1931}
1932unsafe extern "C" {
1933    pub fn proj_get_prime_meridian(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> *mut PJ;
1934}
1935unsafe extern "C" {
1936    pub fn proj_prime_meridian_get_parameters(
1937        ctx: *mut PJ_CONTEXT,
1938        prime_meridian: *const PJ,
1939        out_longitude: *mut f64,
1940        out_unit_conv_factor: *mut f64,
1941        out_unit_name: *mut *const ::std::os::raw::c_char,
1942    ) -> ::std::os::raw::c_int;
1943}
1944unsafe extern "C" {
1945    pub fn proj_crs_get_coordoperation(ctx: *mut PJ_CONTEXT, crs: *const PJ) -> *mut PJ;
1946}
1947unsafe extern "C" {
1948    pub fn proj_coordoperation_get_method_info(
1949        ctx: *mut PJ_CONTEXT,
1950        coordoperation: *const PJ,
1951        out_method_name: *mut *const ::std::os::raw::c_char,
1952        out_method_auth_name: *mut *const ::std::os::raw::c_char,
1953        out_method_code: *mut *const ::std::os::raw::c_char,
1954    ) -> ::std::os::raw::c_int;
1955}
1956unsafe extern "C" {
1957    pub fn proj_coordoperation_is_instantiable(
1958        ctx: *mut PJ_CONTEXT,
1959        coordoperation: *const PJ,
1960    ) -> ::std::os::raw::c_int;
1961}
1962unsafe extern "C" {
1963    pub fn proj_coordoperation_has_ballpark_transformation(
1964        ctx: *mut PJ_CONTEXT,
1965        coordoperation: *const PJ,
1966    ) -> ::std::os::raw::c_int;
1967}
1968unsafe extern "C" {
1969    pub fn proj_coordoperation_requires_per_coordinate_input_time(
1970        ctx: *mut PJ_CONTEXT,
1971        coordoperation: *const PJ,
1972    ) -> ::std::os::raw::c_int;
1973}
1974unsafe extern "C" {
1975    pub fn proj_coordoperation_get_param_count(
1976        ctx: *mut PJ_CONTEXT,
1977        coordoperation: *const PJ,
1978    ) -> ::std::os::raw::c_int;
1979}
1980unsafe extern "C" {
1981    pub fn proj_coordoperation_get_param_index(
1982        ctx: *mut PJ_CONTEXT,
1983        coordoperation: *const PJ,
1984        name: *const ::std::os::raw::c_char,
1985    ) -> ::std::os::raw::c_int;
1986}
1987unsafe extern "C" {
1988    pub fn proj_coordoperation_get_param(
1989        ctx: *mut PJ_CONTEXT,
1990        coordoperation: *const PJ,
1991        index: ::std::os::raw::c_int,
1992        out_name: *mut *const ::std::os::raw::c_char,
1993        out_auth_name: *mut *const ::std::os::raw::c_char,
1994        out_code: *mut *const ::std::os::raw::c_char,
1995        out_value: *mut f64,
1996        out_value_string: *mut *const ::std::os::raw::c_char,
1997        out_unit_conv_factor: *mut f64,
1998        out_unit_name: *mut *const ::std::os::raw::c_char,
1999        out_unit_auth_name: *mut *const ::std::os::raw::c_char,
2000        out_unit_code: *mut *const ::std::os::raw::c_char,
2001        out_unit_category: *mut *const ::std::os::raw::c_char,
2002    ) -> ::std::os::raw::c_int;
2003}
2004unsafe extern "C" {
2005    pub fn proj_coordoperation_get_grid_used_count(
2006        ctx: *mut PJ_CONTEXT,
2007        coordoperation: *const PJ,
2008    ) -> ::std::os::raw::c_int;
2009}
2010unsafe extern "C" {
2011    pub fn proj_coordoperation_get_grid_used(
2012        ctx: *mut PJ_CONTEXT,
2013        coordoperation: *const PJ,
2014        index: ::std::os::raw::c_int,
2015        out_short_name: *mut *const ::std::os::raw::c_char,
2016        out_full_name: *mut *const ::std::os::raw::c_char,
2017        out_package_name: *mut *const ::std::os::raw::c_char,
2018        out_url: *mut *const ::std::os::raw::c_char,
2019        out_direct_download: *mut ::std::os::raw::c_int,
2020        out_open_license: *mut ::std::os::raw::c_int,
2021        out_available: *mut ::std::os::raw::c_int,
2022    ) -> ::std::os::raw::c_int;
2023}
2024unsafe extern "C" {
2025    pub fn proj_coordoperation_get_accuracy(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> f64;
2026}
2027unsafe extern "C" {
2028    pub fn proj_coordoperation_get_towgs84_values(
2029        ctx: *mut PJ_CONTEXT,
2030        coordoperation: *const PJ,
2031        out_values: *mut f64,
2032        value_count: ::std::os::raw::c_int,
2033        emit_error_if_incompatible: ::std::os::raw::c_int,
2034    ) -> ::std::os::raw::c_int;
2035}
2036unsafe extern "C" {
2037    pub fn proj_coordoperation_create_inverse(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> *mut PJ;
2038}
2039unsafe extern "C" {
2040    pub fn proj_concatoperation_get_step_count(
2041        ctx: *mut PJ_CONTEXT,
2042        concatoperation: *const PJ,
2043    ) -> ::std::os::raw::c_int;
2044}
2045unsafe extern "C" {
2046    pub fn proj_concatoperation_get_step(
2047        ctx: *mut PJ_CONTEXT,
2048        concatoperation: *const PJ,
2049        i_step: ::std::os::raw::c_int,
2050    ) -> *mut PJ;
2051}
2052unsafe extern "C" {
2053    pub fn proj_coordinate_metadata_create(
2054        ctx: *mut PJ_CONTEXT,
2055        crs: *const PJ,
2056        epoch: f64,
2057    ) -> *mut PJ;
2058}
2059unsafe extern "C" {
2060    pub fn proj_coordinate_metadata_get_epoch(ctx: *mut PJ_CONTEXT, obj: *const PJ) -> f64;
2061}
2062#[doc = " Angular unit of measure"]
2063pub const PJ_UNIT_TYPE_PJ_UT_ANGULAR: PJ_UNIT_TYPE = 0;
2064#[doc = " Linear unit of measure"]
2065pub const PJ_UNIT_TYPE_PJ_UT_LINEAR: PJ_UNIT_TYPE = 1;
2066#[doc = " Scale unit of measure"]
2067pub const PJ_UNIT_TYPE_PJ_UT_SCALE: PJ_UNIT_TYPE = 2;
2068#[doc = " Time unit of measure"]
2069pub const PJ_UNIT_TYPE_PJ_UT_TIME: PJ_UNIT_TYPE = 3;
2070#[doc = " Parametric unit of measure"]
2071pub const PJ_UNIT_TYPE_PJ_UT_PARAMETRIC: PJ_UNIT_TYPE = 4;
2072#[doc = " Type of unit of measure."]
2073pub type PJ_UNIT_TYPE = ::std::os::raw::c_uint;
2074#[doc = " \\brief Axis description."]
2075#[repr(C)]
2076#[derive(Debug, Copy, Clone)]
2077pub struct PJ_AXIS_DESCRIPTION {
2078    #[doc = " Axis name."]
2079    pub name: *mut ::std::os::raw::c_char,
2080    #[doc = " Axis abbreviation."]
2081    pub abbreviation: *mut ::std::os::raw::c_char,
2082    #[doc = " Axis direction."]
2083    pub direction: *mut ::std::os::raw::c_char,
2084    #[doc = " Axis unit name."]
2085    pub unit_name: *mut ::std::os::raw::c_char,
2086    #[doc = " Conversion factor to SI of the unit."]
2087    pub unit_conv_factor: f64,
2088    #[doc = " Type of unit"]
2089    pub unit_type: PJ_UNIT_TYPE,
2090}
2091#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2092const _: () = {
2093    ["Size of PJ_AXIS_DESCRIPTION"][::std::mem::size_of::<PJ_AXIS_DESCRIPTION>() - 48usize];
2094    ["Alignment of PJ_AXIS_DESCRIPTION"][::std::mem::align_of::<PJ_AXIS_DESCRIPTION>() - 8usize];
2095    ["Offset of field: PJ_AXIS_DESCRIPTION::name"]
2096        [::std::mem::offset_of!(PJ_AXIS_DESCRIPTION, name) - 0usize];
2097    ["Offset of field: PJ_AXIS_DESCRIPTION::abbreviation"]
2098        [::std::mem::offset_of!(PJ_AXIS_DESCRIPTION, abbreviation) - 8usize];
2099    ["Offset of field: PJ_AXIS_DESCRIPTION::direction"]
2100        [::std::mem::offset_of!(PJ_AXIS_DESCRIPTION, direction) - 16usize];
2101    ["Offset of field: PJ_AXIS_DESCRIPTION::unit_name"]
2102        [::std::mem::offset_of!(PJ_AXIS_DESCRIPTION, unit_name) - 24usize];
2103    ["Offset of field: PJ_AXIS_DESCRIPTION::unit_conv_factor"]
2104        [::std::mem::offset_of!(PJ_AXIS_DESCRIPTION, unit_conv_factor) - 32usize];
2105    ["Offset of field: PJ_AXIS_DESCRIPTION::unit_type"]
2106        [::std::mem::offset_of!(PJ_AXIS_DESCRIPTION, unit_type) - 40usize];
2107};
2108#[doc = " Easting-Norting"]
2109pub const PJ_CARTESIAN_CS_2D_TYPE_PJ_CART2D_EASTING_NORTHING: PJ_CARTESIAN_CS_2D_TYPE = 0;
2110#[doc = " Northing-Easting"]
2111pub const PJ_CARTESIAN_CS_2D_TYPE_PJ_CART2D_NORTHING_EASTING: PJ_CARTESIAN_CS_2D_TYPE = 1;
2112#[doc = " North Pole Easting/SOUTH-Norting/SOUTH"]
2113pub const PJ_CARTESIAN_CS_2D_TYPE_PJ_CART2D_NORTH_POLE_EASTING_SOUTH_NORTHING_SOUTH:
2114    PJ_CARTESIAN_CS_2D_TYPE = 2;
2115#[doc = " South Pole Easting/NORTH-Norting/NORTH"]
2116pub const PJ_CARTESIAN_CS_2D_TYPE_PJ_CART2D_SOUTH_POLE_EASTING_NORTH_NORTHING_NORTH:
2117    PJ_CARTESIAN_CS_2D_TYPE = 3;
2118#[doc = " Westing-southing"]
2119pub const PJ_CARTESIAN_CS_2D_TYPE_PJ_CART2D_WESTING_SOUTHING: PJ_CARTESIAN_CS_2D_TYPE = 4;
2120#[doc = " Type of Cartesian 2D coordinate system."]
2121pub type PJ_CARTESIAN_CS_2D_TYPE = ::std::os::raw::c_uint;
2122#[doc = " Longitude-Latitude"]
2123pub const PJ_ELLIPSOIDAL_CS_2D_TYPE_PJ_ELLPS2D_LONGITUDE_LATITUDE: PJ_ELLIPSOIDAL_CS_2D_TYPE = 0;
2124#[doc = " Latitude-Longitude"]
2125pub const PJ_ELLIPSOIDAL_CS_2D_TYPE_PJ_ELLPS2D_LATITUDE_LONGITUDE: PJ_ELLIPSOIDAL_CS_2D_TYPE = 1;
2126#[doc = " Type of Ellipsoidal 2D coordinate system."]
2127pub type PJ_ELLIPSOIDAL_CS_2D_TYPE = ::std::os::raw::c_uint;
2128#[doc = " Longitude-Latitude-Height(up)"]
2129pub const PJ_ELLIPSOIDAL_CS_3D_TYPE_PJ_ELLPS3D_LONGITUDE_LATITUDE_HEIGHT:
2130    PJ_ELLIPSOIDAL_CS_3D_TYPE = 0;
2131#[doc = " Latitude-Longitude-Height(up)"]
2132pub const PJ_ELLIPSOIDAL_CS_3D_TYPE_PJ_ELLPS3D_LATITUDE_LONGITUDE_HEIGHT:
2133    PJ_ELLIPSOIDAL_CS_3D_TYPE = 1;
2134#[doc = " Type of Ellipsoidal 3D coordinate system."]
2135pub type PJ_ELLIPSOIDAL_CS_3D_TYPE = ::std::os::raw::c_uint;
2136#[doc = " \\brief Description of a parameter value for a Conversion."]
2137#[repr(C)]
2138#[derive(Debug, Copy, Clone)]
2139pub struct PJ_PARAM_DESCRIPTION {
2140    #[doc = " Parameter name."]
2141    pub name: *const ::std::os::raw::c_char,
2142    #[doc = " Parameter authority name."]
2143    pub auth_name: *const ::std::os::raw::c_char,
2144    #[doc = " Parameter code."]
2145    pub code: *const ::std::os::raw::c_char,
2146    #[doc = " Parameter value."]
2147    pub value: f64,
2148    #[doc = " Name of unit in which parameter value is expressed."]
2149    pub unit_name: *const ::std::os::raw::c_char,
2150    #[doc = " Conversion factor to SI of the unit."]
2151    pub unit_conv_factor: f64,
2152    #[doc = " Type of unit"]
2153    pub unit_type: PJ_UNIT_TYPE,
2154}
2155#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2156const _: () = {
2157    ["Size of PJ_PARAM_DESCRIPTION"][::std::mem::size_of::<PJ_PARAM_DESCRIPTION>() - 56usize];
2158    ["Alignment of PJ_PARAM_DESCRIPTION"][::std::mem::align_of::<PJ_PARAM_DESCRIPTION>() - 8usize];
2159    ["Offset of field: PJ_PARAM_DESCRIPTION::name"]
2160        [::std::mem::offset_of!(PJ_PARAM_DESCRIPTION, name) - 0usize];
2161    ["Offset of field: PJ_PARAM_DESCRIPTION::auth_name"]
2162        [::std::mem::offset_of!(PJ_PARAM_DESCRIPTION, auth_name) - 8usize];
2163    ["Offset of field: PJ_PARAM_DESCRIPTION::code"]
2164        [::std::mem::offset_of!(PJ_PARAM_DESCRIPTION, code) - 16usize];
2165    ["Offset of field: PJ_PARAM_DESCRIPTION::value"]
2166        [::std::mem::offset_of!(PJ_PARAM_DESCRIPTION, value) - 24usize];
2167    ["Offset of field: PJ_PARAM_DESCRIPTION::unit_name"]
2168        [::std::mem::offset_of!(PJ_PARAM_DESCRIPTION, unit_name) - 32usize];
2169    ["Offset of field: PJ_PARAM_DESCRIPTION::unit_conv_factor"]
2170        [::std::mem::offset_of!(PJ_PARAM_DESCRIPTION, unit_conv_factor) - 40usize];
2171    ["Offset of field: PJ_PARAM_DESCRIPTION::unit_type"]
2172        [::std::mem::offset_of!(PJ_PARAM_DESCRIPTION, unit_type) - 48usize];
2173};
2174unsafe extern "C" {
2175    #[doc = " \\defgroup iso19111_advanced_functions Binding in C of advanced methods from\n the C++ API\n @{"]
2176    pub fn proj_create_cs(
2177        ctx: *mut PJ_CONTEXT,
2178        type_: PJ_COORDINATE_SYSTEM_TYPE,
2179        axis_count: ::std::os::raw::c_int,
2180        axis: *const PJ_AXIS_DESCRIPTION,
2181    ) -> *mut PJ;
2182}
2183unsafe extern "C" {
2184    pub fn proj_create_cartesian_2D_cs(
2185        ctx: *mut PJ_CONTEXT,
2186        type_: PJ_CARTESIAN_CS_2D_TYPE,
2187        unit_name: *const ::std::os::raw::c_char,
2188        unit_conv_factor: f64,
2189    ) -> *mut PJ;
2190}
2191unsafe extern "C" {
2192    pub fn proj_create_ellipsoidal_2D_cs(
2193        ctx: *mut PJ_CONTEXT,
2194        type_: PJ_ELLIPSOIDAL_CS_2D_TYPE,
2195        unit_name: *const ::std::os::raw::c_char,
2196        unit_conv_factor: f64,
2197    ) -> *mut PJ;
2198}
2199unsafe extern "C" {
2200    pub fn proj_create_ellipsoidal_3D_cs(
2201        ctx: *mut PJ_CONTEXT,
2202        type_: PJ_ELLIPSOIDAL_CS_3D_TYPE,
2203        horizontal_angular_unit_name: *const ::std::os::raw::c_char,
2204        horizontal_angular_unit_conv_factor: f64,
2205        vertical_linear_unit_name: *const ::std::os::raw::c_char,
2206        vertical_linear_unit_conv_factor: f64,
2207    ) -> *mut PJ;
2208}
2209unsafe extern "C" {
2210    pub fn proj_query_geodetic_crs_from_datum(
2211        ctx: *mut PJ_CONTEXT,
2212        crs_auth_name: *const ::std::os::raw::c_char,
2213        datum_auth_name: *const ::std::os::raw::c_char,
2214        datum_code: *const ::std::os::raw::c_char,
2215        crs_type: *const ::std::os::raw::c_char,
2216    ) -> *mut PJ_OBJ_LIST;
2217}
2218unsafe extern "C" {
2219    pub fn proj_create_geographic_crs(
2220        ctx: *mut PJ_CONTEXT,
2221        crs_name: *const ::std::os::raw::c_char,
2222        datum_name: *const ::std::os::raw::c_char,
2223        ellps_name: *const ::std::os::raw::c_char,
2224        semi_major_metre: f64,
2225        inv_flattening: f64,
2226        prime_meridian_name: *const ::std::os::raw::c_char,
2227        prime_meridian_offset: f64,
2228        pm_angular_units: *const ::std::os::raw::c_char,
2229        pm_units_conv: f64,
2230        ellipsoidal_cs: *const PJ,
2231    ) -> *mut PJ;
2232}
2233unsafe extern "C" {
2234    pub fn proj_create_geographic_crs_from_datum(
2235        ctx: *mut PJ_CONTEXT,
2236        crs_name: *const ::std::os::raw::c_char,
2237        datum_or_datum_ensemble: *const PJ,
2238        ellipsoidal_cs: *const PJ,
2239    ) -> *mut PJ;
2240}
2241unsafe extern "C" {
2242    pub fn proj_create_geocentric_crs(
2243        ctx: *mut PJ_CONTEXT,
2244        crs_name: *const ::std::os::raw::c_char,
2245        datum_name: *const ::std::os::raw::c_char,
2246        ellps_name: *const ::std::os::raw::c_char,
2247        semi_major_metre: f64,
2248        inv_flattening: f64,
2249        prime_meridian_name: *const ::std::os::raw::c_char,
2250        prime_meridian_offset: f64,
2251        angular_units: *const ::std::os::raw::c_char,
2252        angular_units_conv: f64,
2253        linear_units: *const ::std::os::raw::c_char,
2254        linear_units_conv: f64,
2255    ) -> *mut PJ;
2256}
2257unsafe extern "C" {
2258    pub fn proj_create_geocentric_crs_from_datum(
2259        ctx: *mut PJ_CONTEXT,
2260        crs_name: *const ::std::os::raw::c_char,
2261        datum_or_datum_ensemble: *const PJ,
2262        linear_units: *const ::std::os::raw::c_char,
2263        linear_units_conv: f64,
2264    ) -> *mut PJ;
2265}
2266unsafe extern "C" {
2267    pub fn proj_create_derived_geographic_crs(
2268        ctx: *mut PJ_CONTEXT,
2269        crs_name: *const ::std::os::raw::c_char,
2270        base_geographic_crs: *const PJ,
2271        conversion: *const PJ,
2272        ellipsoidal_cs: *const PJ,
2273    ) -> *mut PJ;
2274}
2275unsafe extern "C" {
2276    pub fn proj_is_derived_crs(ctx: *mut PJ_CONTEXT, crs: *const PJ) -> ::std::os::raw::c_int;
2277}
2278unsafe extern "C" {
2279    pub fn proj_alter_name(
2280        ctx: *mut PJ_CONTEXT,
2281        obj: *const PJ,
2282        name: *const ::std::os::raw::c_char,
2283    ) -> *mut PJ;
2284}
2285unsafe extern "C" {
2286    pub fn proj_alter_id(
2287        ctx: *mut PJ_CONTEXT,
2288        obj: *const PJ,
2289        auth_name: *const ::std::os::raw::c_char,
2290        code: *const ::std::os::raw::c_char,
2291    ) -> *mut PJ;
2292}
2293unsafe extern "C" {
2294    pub fn proj_crs_alter_geodetic_crs(
2295        ctx: *mut PJ_CONTEXT,
2296        obj: *const PJ,
2297        new_geod_crs: *const PJ,
2298    ) -> *mut PJ;
2299}
2300unsafe extern "C" {
2301    pub fn proj_crs_alter_cs_angular_unit(
2302        ctx: *mut PJ_CONTEXT,
2303        obj: *const PJ,
2304        angular_units: *const ::std::os::raw::c_char,
2305        angular_units_conv: f64,
2306        unit_auth_name: *const ::std::os::raw::c_char,
2307        unit_code: *const ::std::os::raw::c_char,
2308    ) -> *mut PJ;
2309}
2310unsafe extern "C" {
2311    pub fn proj_crs_alter_cs_linear_unit(
2312        ctx: *mut PJ_CONTEXT,
2313        obj: *const PJ,
2314        linear_units: *const ::std::os::raw::c_char,
2315        linear_units_conv: f64,
2316        unit_auth_name: *const ::std::os::raw::c_char,
2317        unit_code: *const ::std::os::raw::c_char,
2318    ) -> *mut PJ;
2319}
2320unsafe extern "C" {
2321    pub fn proj_crs_alter_parameters_linear_unit(
2322        ctx: *mut PJ_CONTEXT,
2323        obj: *const PJ,
2324        linear_units: *const ::std::os::raw::c_char,
2325        linear_units_conv: f64,
2326        unit_auth_name: *const ::std::os::raw::c_char,
2327        unit_code: *const ::std::os::raw::c_char,
2328        convert_to_new_unit: ::std::os::raw::c_int,
2329    ) -> *mut PJ;
2330}
2331unsafe extern "C" {
2332    pub fn proj_crs_promote_to_3D(
2333        ctx: *mut PJ_CONTEXT,
2334        crs_3D_name: *const ::std::os::raw::c_char,
2335        crs_2D: *const PJ,
2336    ) -> *mut PJ;
2337}
2338unsafe extern "C" {
2339    pub fn proj_crs_create_projected_3D_crs_from_2D(
2340        ctx: *mut PJ_CONTEXT,
2341        crs_name: *const ::std::os::raw::c_char,
2342        projected_2D_crs: *const PJ,
2343        geog_3D_crs: *const PJ,
2344    ) -> *mut PJ;
2345}
2346unsafe extern "C" {
2347    pub fn proj_crs_demote_to_2D(
2348        ctx: *mut PJ_CONTEXT,
2349        crs_2D_name: *const ::std::os::raw::c_char,
2350        crs_3D: *const PJ,
2351    ) -> *mut PJ;
2352}
2353unsafe extern "C" {
2354    pub fn proj_create_engineering_crs(
2355        ctx: *mut PJ_CONTEXT,
2356        crsName: *const ::std::os::raw::c_char,
2357    ) -> *mut PJ;
2358}
2359unsafe extern "C" {
2360    pub fn proj_create_vertical_crs(
2361        ctx: *mut PJ_CONTEXT,
2362        crs_name: *const ::std::os::raw::c_char,
2363        datum_name: *const ::std::os::raw::c_char,
2364        linear_units: *const ::std::os::raw::c_char,
2365        linear_units_conv: f64,
2366    ) -> *mut PJ;
2367}
2368unsafe extern "C" {
2369    pub fn proj_create_vertical_crs_ex(
2370        ctx: *mut PJ_CONTEXT,
2371        crs_name: *const ::std::os::raw::c_char,
2372        datum_name: *const ::std::os::raw::c_char,
2373        datum_auth_name: *const ::std::os::raw::c_char,
2374        datum_code: *const ::std::os::raw::c_char,
2375        linear_units: *const ::std::os::raw::c_char,
2376        linear_units_conv: f64,
2377        geoid_model_name: *const ::std::os::raw::c_char,
2378        geoid_model_auth_name: *const ::std::os::raw::c_char,
2379        geoid_model_code: *const ::std::os::raw::c_char,
2380        geoid_geog_crs: *const PJ,
2381        options: *const *const ::std::os::raw::c_char,
2382    ) -> *mut PJ;
2383}
2384unsafe extern "C" {
2385    pub fn proj_create_compound_crs(
2386        ctx: *mut PJ_CONTEXT,
2387        crs_name: *const ::std::os::raw::c_char,
2388        horiz_crs: *const PJ,
2389        vert_crs: *const PJ,
2390    ) -> *mut PJ;
2391}
2392unsafe extern "C" {
2393    pub fn proj_create_conversion(
2394        ctx: *mut PJ_CONTEXT,
2395        name: *const ::std::os::raw::c_char,
2396        auth_name: *const ::std::os::raw::c_char,
2397        code: *const ::std::os::raw::c_char,
2398        method_name: *const ::std::os::raw::c_char,
2399        method_auth_name: *const ::std::os::raw::c_char,
2400        method_code: *const ::std::os::raw::c_char,
2401        param_count: ::std::os::raw::c_int,
2402        params: *const PJ_PARAM_DESCRIPTION,
2403    ) -> *mut PJ;
2404}
2405unsafe extern "C" {
2406    pub fn proj_create_transformation(
2407        ctx: *mut PJ_CONTEXT,
2408        name: *const ::std::os::raw::c_char,
2409        auth_name: *const ::std::os::raw::c_char,
2410        code: *const ::std::os::raw::c_char,
2411        source_crs: *const PJ,
2412        target_crs: *const PJ,
2413        interpolation_crs: *const PJ,
2414        method_name: *const ::std::os::raw::c_char,
2415        method_auth_name: *const ::std::os::raw::c_char,
2416        method_code: *const ::std::os::raw::c_char,
2417        param_count: ::std::os::raw::c_int,
2418        params: *const PJ_PARAM_DESCRIPTION,
2419        accuracy: f64,
2420    ) -> *mut PJ;
2421}
2422unsafe extern "C" {
2423    pub fn proj_convert_conversion_to_other_method(
2424        ctx: *mut PJ_CONTEXT,
2425        conversion: *const PJ,
2426        new_method_epsg_code: ::std::os::raw::c_int,
2427        new_method_name: *const ::std::os::raw::c_char,
2428    ) -> *mut PJ;
2429}
2430unsafe extern "C" {
2431    pub fn proj_create_projected_crs(
2432        ctx: *mut PJ_CONTEXT,
2433        crs_name: *const ::std::os::raw::c_char,
2434        geodetic_crs: *const PJ,
2435        conversion: *const PJ,
2436        coordinate_system: *const PJ,
2437    ) -> *mut PJ;
2438}
2439unsafe extern "C" {
2440    pub fn proj_crs_create_bound_crs(
2441        ctx: *mut PJ_CONTEXT,
2442        base_crs: *const PJ,
2443        hub_crs: *const PJ,
2444        transformation: *const PJ,
2445    ) -> *mut PJ;
2446}
2447unsafe extern "C" {
2448    pub fn proj_crs_create_bound_crs_to_WGS84(
2449        ctx: *mut PJ_CONTEXT,
2450        crs: *const PJ,
2451        options: *const *const ::std::os::raw::c_char,
2452    ) -> *mut PJ;
2453}
2454unsafe extern "C" {
2455    pub fn proj_crs_create_bound_vertical_crs(
2456        ctx: *mut PJ_CONTEXT,
2457        vert_crs: *const PJ,
2458        hub_geographic_3D_crs: *const PJ,
2459        grid_name: *const ::std::os::raw::c_char,
2460    ) -> *mut PJ;
2461}
2462unsafe extern "C" {
2463    pub fn proj_create_conversion_utm(
2464        ctx: *mut PJ_CONTEXT,
2465        zone: ::std::os::raw::c_int,
2466        north: ::std::os::raw::c_int,
2467    ) -> *mut PJ;
2468}
2469unsafe extern "C" {
2470    pub fn proj_create_conversion_transverse_mercator(
2471        ctx: *mut PJ_CONTEXT,
2472        center_lat: f64,
2473        center_long: f64,
2474        scale: f64,
2475        false_easting: f64,
2476        false_northing: f64,
2477        ang_unit_name: *const ::std::os::raw::c_char,
2478        ang_unit_conv_factor: f64,
2479        linear_unit_name: *const ::std::os::raw::c_char,
2480        linear_unit_conv_factor: f64,
2481    ) -> *mut PJ;
2482}
2483unsafe extern "C" {
2484    pub fn proj_create_conversion_gauss_schreiber_transverse_mercator(
2485        ctx: *mut PJ_CONTEXT,
2486        center_lat: f64,
2487        center_long: f64,
2488        scale: f64,
2489        false_easting: f64,
2490        false_northing: f64,
2491        ang_unit_name: *const ::std::os::raw::c_char,
2492        ang_unit_conv_factor: f64,
2493        linear_unit_name: *const ::std::os::raw::c_char,
2494        linear_unit_conv_factor: f64,
2495    ) -> *mut PJ;
2496}
2497unsafe extern "C" {
2498    pub fn proj_create_conversion_transverse_mercator_south_oriented(
2499        ctx: *mut PJ_CONTEXT,
2500        center_lat: f64,
2501        center_long: f64,
2502        scale: f64,
2503        false_easting: f64,
2504        false_northing: f64,
2505        ang_unit_name: *const ::std::os::raw::c_char,
2506        ang_unit_conv_factor: f64,
2507        linear_unit_name: *const ::std::os::raw::c_char,
2508        linear_unit_conv_factor: f64,
2509    ) -> *mut PJ;
2510}
2511unsafe extern "C" {
2512    pub fn proj_create_conversion_two_point_equidistant(
2513        ctx: *mut PJ_CONTEXT,
2514        latitude_first_point: f64,
2515        longitude_first_point: f64,
2516        latitude_second_point: f64,
2517        longitude_secon_point: f64,
2518        false_easting: f64,
2519        false_northing: f64,
2520        ang_unit_name: *const ::std::os::raw::c_char,
2521        ang_unit_conv_factor: f64,
2522        linear_unit_name: *const ::std::os::raw::c_char,
2523        linear_unit_conv_factor: f64,
2524    ) -> *mut PJ;
2525}
2526unsafe extern "C" {
2527    pub fn proj_create_conversion_tunisia_mapping_grid(
2528        ctx: *mut PJ_CONTEXT,
2529        center_lat: f64,
2530        center_long: f64,
2531        false_easting: f64,
2532        false_northing: f64,
2533        ang_unit_name: *const ::std::os::raw::c_char,
2534        ang_unit_conv_factor: f64,
2535        linear_unit_name: *const ::std::os::raw::c_char,
2536        linear_unit_conv_factor: f64,
2537    ) -> *mut PJ;
2538}
2539unsafe extern "C" {
2540    pub fn proj_create_conversion_tunisia_mining_grid(
2541        ctx: *mut PJ_CONTEXT,
2542        center_lat: f64,
2543        center_long: f64,
2544        false_easting: f64,
2545        false_northing: f64,
2546        ang_unit_name: *const ::std::os::raw::c_char,
2547        ang_unit_conv_factor: f64,
2548        linear_unit_name: *const ::std::os::raw::c_char,
2549        linear_unit_conv_factor: f64,
2550    ) -> *mut PJ;
2551}
2552unsafe extern "C" {
2553    pub fn proj_create_conversion_albers_equal_area(
2554        ctx: *mut PJ_CONTEXT,
2555        latitude_false_origin: f64,
2556        longitude_false_origin: f64,
2557        latitude_first_parallel: f64,
2558        latitude_second_parallel: f64,
2559        easting_false_origin: f64,
2560        northing_false_origin: f64,
2561        ang_unit_name: *const ::std::os::raw::c_char,
2562        ang_unit_conv_factor: f64,
2563        linear_unit_name: *const ::std::os::raw::c_char,
2564        linear_unit_conv_factor: f64,
2565    ) -> *mut PJ;
2566}
2567unsafe extern "C" {
2568    pub fn proj_create_conversion_lambert_conic_conformal_1sp(
2569        ctx: *mut PJ_CONTEXT,
2570        center_lat: f64,
2571        center_long: f64,
2572        scale: f64,
2573        false_easting: f64,
2574        false_northing: f64,
2575        ang_unit_name: *const ::std::os::raw::c_char,
2576        ang_unit_conv_factor: f64,
2577        linear_unit_name: *const ::std::os::raw::c_char,
2578        linear_unit_conv_factor: f64,
2579    ) -> *mut PJ;
2580}
2581unsafe extern "C" {
2582    pub fn proj_create_conversion_lambert_conic_conformal_1sp_variant_b(
2583        ctx: *mut PJ_CONTEXT,
2584        latitude_nat_origin: f64,
2585        scale: f64,
2586        latitude_false_origin: f64,
2587        longitude_false_origin: f64,
2588        easting_false_origin: f64,
2589        northing_false_origin: f64,
2590        ang_unit_name: *const ::std::os::raw::c_char,
2591        ang_unit_conv_factor: f64,
2592        linear_unit_name: *const ::std::os::raw::c_char,
2593        linear_unit_conv_factor: f64,
2594    ) -> *mut PJ;
2595}
2596unsafe extern "C" {
2597    pub fn proj_create_conversion_lambert_conic_conformal_2sp(
2598        ctx: *mut PJ_CONTEXT,
2599        latitude_false_origin: f64,
2600        longitude_false_origin: f64,
2601        latitude_first_parallel: f64,
2602        latitude_second_parallel: f64,
2603        easting_false_origin: f64,
2604        northing_false_origin: f64,
2605        ang_unit_name: *const ::std::os::raw::c_char,
2606        ang_unit_conv_factor: f64,
2607        linear_unit_name: *const ::std::os::raw::c_char,
2608        linear_unit_conv_factor: f64,
2609    ) -> *mut PJ;
2610}
2611unsafe extern "C" {
2612    pub fn proj_create_conversion_lambert_conic_conformal_2sp_michigan(
2613        ctx: *mut PJ_CONTEXT,
2614        latitude_false_origin: f64,
2615        longitude_false_origin: f64,
2616        latitude_first_parallel: f64,
2617        latitude_second_parallel: f64,
2618        easting_false_origin: f64,
2619        northing_false_origin: f64,
2620        ellipsoid_scaling_factor: f64,
2621        ang_unit_name: *const ::std::os::raw::c_char,
2622        ang_unit_conv_factor: f64,
2623        linear_unit_name: *const ::std::os::raw::c_char,
2624        linear_unit_conv_factor: f64,
2625    ) -> *mut PJ;
2626}
2627unsafe extern "C" {
2628    pub fn proj_create_conversion_lambert_conic_conformal_2sp_belgium(
2629        ctx: *mut PJ_CONTEXT,
2630        latitude_false_origin: f64,
2631        longitude_false_origin: f64,
2632        latitude_first_parallel: f64,
2633        latitude_second_parallel: f64,
2634        easting_false_origin: f64,
2635        northing_false_origin: f64,
2636        ang_unit_name: *const ::std::os::raw::c_char,
2637        ang_unit_conv_factor: f64,
2638        linear_unit_name: *const ::std::os::raw::c_char,
2639        linear_unit_conv_factor: f64,
2640    ) -> *mut PJ;
2641}
2642unsafe extern "C" {
2643    pub fn proj_create_conversion_azimuthal_equidistant(
2644        ctx: *mut PJ_CONTEXT,
2645        latitude_nat_origin: f64,
2646        longitude_nat_origin: f64,
2647        false_easting: f64,
2648        false_northing: f64,
2649        ang_unit_name: *const ::std::os::raw::c_char,
2650        ang_unit_conv_factor: f64,
2651        linear_unit_name: *const ::std::os::raw::c_char,
2652        linear_unit_conv_factor: f64,
2653    ) -> *mut PJ;
2654}
2655unsafe extern "C" {
2656    pub fn proj_create_conversion_guam_projection(
2657        ctx: *mut PJ_CONTEXT,
2658        latitude_nat_origin: f64,
2659        longitude_nat_origin: f64,
2660        false_easting: f64,
2661        false_northing: f64,
2662        ang_unit_name: *const ::std::os::raw::c_char,
2663        ang_unit_conv_factor: f64,
2664        linear_unit_name: *const ::std::os::raw::c_char,
2665        linear_unit_conv_factor: f64,
2666    ) -> *mut PJ;
2667}
2668unsafe extern "C" {
2669    pub fn proj_create_conversion_bonne(
2670        ctx: *mut PJ_CONTEXT,
2671        latitude_nat_origin: f64,
2672        longitude_nat_origin: f64,
2673        false_easting: f64,
2674        false_northing: f64,
2675        ang_unit_name: *const ::std::os::raw::c_char,
2676        ang_unit_conv_factor: f64,
2677        linear_unit_name: *const ::std::os::raw::c_char,
2678        linear_unit_conv_factor: f64,
2679    ) -> *mut PJ;
2680}
2681unsafe extern "C" {
2682    pub fn proj_create_conversion_lambert_cylindrical_equal_area_spherical(
2683        ctx: *mut PJ_CONTEXT,
2684        latitude_first_parallel: f64,
2685        longitude_nat_origin: f64,
2686        false_easting: f64,
2687        false_northing: f64,
2688        ang_unit_name: *const ::std::os::raw::c_char,
2689        ang_unit_conv_factor: f64,
2690        linear_unit_name: *const ::std::os::raw::c_char,
2691        linear_unit_conv_factor: f64,
2692    ) -> *mut PJ;
2693}
2694unsafe extern "C" {
2695    pub fn proj_create_conversion_lambert_cylindrical_equal_area(
2696        ctx: *mut PJ_CONTEXT,
2697        latitude_first_parallel: f64,
2698        longitude_nat_origin: f64,
2699        false_easting: f64,
2700        false_northing: f64,
2701        ang_unit_name: *const ::std::os::raw::c_char,
2702        ang_unit_conv_factor: f64,
2703        linear_unit_name: *const ::std::os::raw::c_char,
2704        linear_unit_conv_factor: f64,
2705    ) -> *mut PJ;
2706}
2707unsafe extern "C" {
2708    pub fn proj_create_conversion_cassini_soldner(
2709        ctx: *mut PJ_CONTEXT,
2710        center_lat: f64,
2711        center_long: f64,
2712        false_easting: f64,
2713        false_northing: f64,
2714        ang_unit_name: *const ::std::os::raw::c_char,
2715        ang_unit_conv_factor: f64,
2716        linear_unit_name: *const ::std::os::raw::c_char,
2717        linear_unit_conv_factor: f64,
2718    ) -> *mut PJ;
2719}
2720unsafe extern "C" {
2721    pub fn proj_create_conversion_equidistant_conic(
2722        ctx: *mut PJ_CONTEXT,
2723        center_lat: f64,
2724        center_long: f64,
2725        latitude_first_parallel: f64,
2726        latitude_second_parallel: f64,
2727        false_easting: f64,
2728        false_northing: f64,
2729        ang_unit_name: *const ::std::os::raw::c_char,
2730        ang_unit_conv_factor: f64,
2731        linear_unit_name: *const ::std::os::raw::c_char,
2732        linear_unit_conv_factor: f64,
2733    ) -> *mut PJ;
2734}
2735unsafe extern "C" {
2736    pub fn proj_create_conversion_eckert_i(
2737        ctx: *mut PJ_CONTEXT,
2738        center_long: f64,
2739        false_easting: f64,
2740        false_northing: f64,
2741        ang_unit_name: *const ::std::os::raw::c_char,
2742        ang_unit_conv_factor: f64,
2743        linear_unit_name: *const ::std::os::raw::c_char,
2744        linear_unit_conv_factor: f64,
2745    ) -> *mut PJ;
2746}
2747unsafe extern "C" {
2748    pub fn proj_create_conversion_eckert_ii(
2749        ctx: *mut PJ_CONTEXT,
2750        center_long: f64,
2751        false_easting: f64,
2752        false_northing: f64,
2753        ang_unit_name: *const ::std::os::raw::c_char,
2754        ang_unit_conv_factor: f64,
2755        linear_unit_name: *const ::std::os::raw::c_char,
2756        linear_unit_conv_factor: f64,
2757    ) -> *mut PJ;
2758}
2759unsafe extern "C" {
2760    pub fn proj_create_conversion_eckert_iii(
2761        ctx: *mut PJ_CONTEXT,
2762        center_long: f64,
2763        false_easting: f64,
2764        false_northing: f64,
2765        ang_unit_name: *const ::std::os::raw::c_char,
2766        ang_unit_conv_factor: f64,
2767        linear_unit_name: *const ::std::os::raw::c_char,
2768        linear_unit_conv_factor: f64,
2769    ) -> *mut PJ;
2770}
2771unsafe extern "C" {
2772    pub fn proj_create_conversion_eckert_iv(
2773        ctx: *mut PJ_CONTEXT,
2774        center_long: f64,
2775        false_easting: f64,
2776        false_northing: f64,
2777        ang_unit_name: *const ::std::os::raw::c_char,
2778        ang_unit_conv_factor: f64,
2779        linear_unit_name: *const ::std::os::raw::c_char,
2780        linear_unit_conv_factor: f64,
2781    ) -> *mut PJ;
2782}
2783unsafe extern "C" {
2784    pub fn proj_create_conversion_eckert_v(
2785        ctx: *mut PJ_CONTEXT,
2786        center_long: f64,
2787        false_easting: f64,
2788        false_northing: f64,
2789        ang_unit_name: *const ::std::os::raw::c_char,
2790        ang_unit_conv_factor: f64,
2791        linear_unit_name: *const ::std::os::raw::c_char,
2792        linear_unit_conv_factor: f64,
2793    ) -> *mut PJ;
2794}
2795unsafe extern "C" {
2796    pub fn proj_create_conversion_eckert_vi(
2797        ctx: *mut PJ_CONTEXT,
2798        center_long: f64,
2799        false_easting: f64,
2800        false_northing: f64,
2801        ang_unit_name: *const ::std::os::raw::c_char,
2802        ang_unit_conv_factor: f64,
2803        linear_unit_name: *const ::std::os::raw::c_char,
2804        linear_unit_conv_factor: f64,
2805    ) -> *mut PJ;
2806}
2807unsafe extern "C" {
2808    pub fn proj_create_conversion_equidistant_cylindrical(
2809        ctx: *mut PJ_CONTEXT,
2810        latitude_first_parallel: f64,
2811        longitude_nat_origin: f64,
2812        false_easting: f64,
2813        false_northing: f64,
2814        ang_unit_name: *const ::std::os::raw::c_char,
2815        ang_unit_conv_factor: f64,
2816        linear_unit_name: *const ::std::os::raw::c_char,
2817        linear_unit_conv_factor: f64,
2818    ) -> *mut PJ;
2819}
2820unsafe extern "C" {
2821    pub fn proj_create_conversion_equidistant_cylindrical_spherical(
2822        ctx: *mut PJ_CONTEXT,
2823        latitude_first_parallel: f64,
2824        longitude_nat_origin: f64,
2825        false_easting: f64,
2826        false_northing: f64,
2827        ang_unit_name: *const ::std::os::raw::c_char,
2828        ang_unit_conv_factor: f64,
2829        linear_unit_name: *const ::std::os::raw::c_char,
2830        linear_unit_conv_factor: f64,
2831    ) -> *mut PJ;
2832}
2833unsafe extern "C" {
2834    pub fn proj_create_conversion_gall(
2835        ctx: *mut PJ_CONTEXT,
2836        center_long: f64,
2837        false_easting: f64,
2838        false_northing: f64,
2839        ang_unit_name: *const ::std::os::raw::c_char,
2840        ang_unit_conv_factor: f64,
2841        linear_unit_name: *const ::std::os::raw::c_char,
2842        linear_unit_conv_factor: f64,
2843    ) -> *mut PJ;
2844}
2845unsafe extern "C" {
2846    pub fn proj_create_conversion_goode_homolosine(
2847        ctx: *mut PJ_CONTEXT,
2848        center_long: f64,
2849        false_easting: f64,
2850        false_northing: f64,
2851        ang_unit_name: *const ::std::os::raw::c_char,
2852        ang_unit_conv_factor: f64,
2853        linear_unit_name: *const ::std::os::raw::c_char,
2854        linear_unit_conv_factor: f64,
2855    ) -> *mut PJ;
2856}
2857unsafe extern "C" {
2858    pub fn proj_create_conversion_interrupted_goode_homolosine(
2859        ctx: *mut PJ_CONTEXT,
2860        center_long: f64,
2861        false_easting: f64,
2862        false_northing: f64,
2863        ang_unit_name: *const ::std::os::raw::c_char,
2864        ang_unit_conv_factor: f64,
2865        linear_unit_name: *const ::std::os::raw::c_char,
2866        linear_unit_conv_factor: f64,
2867    ) -> *mut PJ;
2868}
2869unsafe extern "C" {
2870    pub fn proj_create_conversion_geostationary_satellite_sweep_x(
2871        ctx: *mut PJ_CONTEXT,
2872        center_long: f64,
2873        height: f64,
2874        false_easting: f64,
2875        false_northing: f64,
2876        ang_unit_name: *const ::std::os::raw::c_char,
2877        ang_unit_conv_factor: f64,
2878        linear_unit_name: *const ::std::os::raw::c_char,
2879        linear_unit_conv_factor: f64,
2880    ) -> *mut PJ;
2881}
2882unsafe extern "C" {
2883    pub fn proj_create_conversion_geostationary_satellite_sweep_y(
2884        ctx: *mut PJ_CONTEXT,
2885        center_long: f64,
2886        height: f64,
2887        false_easting: f64,
2888        false_northing: f64,
2889        ang_unit_name: *const ::std::os::raw::c_char,
2890        ang_unit_conv_factor: f64,
2891        linear_unit_name: *const ::std::os::raw::c_char,
2892        linear_unit_conv_factor: f64,
2893    ) -> *mut PJ;
2894}
2895unsafe extern "C" {
2896    pub fn proj_create_conversion_gnomonic(
2897        ctx: *mut PJ_CONTEXT,
2898        center_lat: f64,
2899        center_long: f64,
2900        false_easting: f64,
2901        false_northing: f64,
2902        ang_unit_name: *const ::std::os::raw::c_char,
2903        ang_unit_conv_factor: f64,
2904        linear_unit_name: *const ::std::os::raw::c_char,
2905        linear_unit_conv_factor: f64,
2906    ) -> *mut PJ;
2907}
2908unsafe extern "C" {
2909    pub fn proj_create_conversion_hotine_oblique_mercator_variant_a(
2910        ctx: *mut PJ_CONTEXT,
2911        latitude_projection_centre: f64,
2912        longitude_projection_centre: f64,
2913        azimuth_initial_line: f64,
2914        angle_from_rectified_to_skrew_grid: f64,
2915        scale: f64,
2916        false_easting: f64,
2917        false_northing: f64,
2918        ang_unit_name: *const ::std::os::raw::c_char,
2919        ang_unit_conv_factor: f64,
2920        linear_unit_name: *const ::std::os::raw::c_char,
2921        linear_unit_conv_factor: f64,
2922    ) -> *mut PJ;
2923}
2924unsafe extern "C" {
2925    pub fn proj_create_conversion_hotine_oblique_mercator_variant_b(
2926        ctx: *mut PJ_CONTEXT,
2927        latitude_projection_centre: f64,
2928        longitude_projection_centre: f64,
2929        azimuth_initial_line: f64,
2930        angle_from_rectified_to_skrew_grid: f64,
2931        scale: f64,
2932        easting_projection_centre: f64,
2933        northing_projection_centre: f64,
2934        ang_unit_name: *const ::std::os::raw::c_char,
2935        ang_unit_conv_factor: f64,
2936        linear_unit_name: *const ::std::os::raw::c_char,
2937        linear_unit_conv_factor: f64,
2938    ) -> *mut PJ;
2939}
2940unsafe extern "C" {
2941    pub fn proj_create_conversion_hotine_oblique_mercator_two_point_natural_origin(
2942        ctx: *mut PJ_CONTEXT,
2943        latitude_projection_centre: f64,
2944        latitude_point1: f64,
2945        longitude_point1: f64,
2946        latitude_point2: f64,
2947        longitude_point2: f64,
2948        scale: f64,
2949        easting_projection_centre: f64,
2950        northing_projection_centre: f64,
2951        ang_unit_name: *const ::std::os::raw::c_char,
2952        ang_unit_conv_factor: f64,
2953        linear_unit_name: *const ::std::os::raw::c_char,
2954        linear_unit_conv_factor: f64,
2955    ) -> *mut PJ;
2956}
2957unsafe extern "C" {
2958    pub fn proj_create_conversion_laborde_oblique_mercator(
2959        ctx: *mut PJ_CONTEXT,
2960        latitude_projection_centre: f64,
2961        longitude_projection_centre: f64,
2962        azimuth_initial_line: f64,
2963        scale: f64,
2964        false_easting: f64,
2965        false_northing: f64,
2966        ang_unit_name: *const ::std::os::raw::c_char,
2967        ang_unit_conv_factor: f64,
2968        linear_unit_name: *const ::std::os::raw::c_char,
2969        linear_unit_conv_factor: f64,
2970    ) -> *mut PJ;
2971}
2972unsafe extern "C" {
2973    pub fn proj_create_conversion_international_map_world_polyconic(
2974        ctx: *mut PJ_CONTEXT,
2975        center_long: f64,
2976        latitude_first_parallel: f64,
2977        latitude_second_parallel: f64,
2978        false_easting: f64,
2979        false_northing: f64,
2980        ang_unit_name: *const ::std::os::raw::c_char,
2981        ang_unit_conv_factor: f64,
2982        linear_unit_name: *const ::std::os::raw::c_char,
2983        linear_unit_conv_factor: f64,
2984    ) -> *mut PJ;
2985}
2986unsafe extern "C" {
2987    pub fn proj_create_conversion_krovak_north_oriented(
2988        ctx: *mut PJ_CONTEXT,
2989        latitude_projection_centre: f64,
2990        longitude_of_origin: f64,
2991        colatitude_cone_axis: f64,
2992        latitude_pseudo_standard_parallel: f64,
2993        scale_factor_pseudo_standard_parallel: f64,
2994        false_easting: f64,
2995        false_northing: f64,
2996        ang_unit_name: *const ::std::os::raw::c_char,
2997        ang_unit_conv_factor: f64,
2998        linear_unit_name: *const ::std::os::raw::c_char,
2999        linear_unit_conv_factor: f64,
3000    ) -> *mut PJ;
3001}
3002unsafe extern "C" {
3003    pub fn proj_create_conversion_krovak(
3004        ctx: *mut PJ_CONTEXT,
3005        latitude_projection_centre: f64,
3006        longitude_of_origin: f64,
3007        colatitude_cone_axis: f64,
3008        latitude_pseudo_standard_parallel: f64,
3009        scale_factor_pseudo_standard_parallel: f64,
3010        false_easting: f64,
3011        false_northing: f64,
3012        ang_unit_name: *const ::std::os::raw::c_char,
3013        ang_unit_conv_factor: f64,
3014        linear_unit_name: *const ::std::os::raw::c_char,
3015        linear_unit_conv_factor: f64,
3016    ) -> *mut PJ;
3017}
3018unsafe extern "C" {
3019    pub fn proj_create_conversion_lambert_azimuthal_equal_area(
3020        ctx: *mut PJ_CONTEXT,
3021        latitude_nat_origin: f64,
3022        longitude_nat_origin: f64,
3023        false_easting: f64,
3024        false_northing: f64,
3025        ang_unit_name: *const ::std::os::raw::c_char,
3026        ang_unit_conv_factor: f64,
3027        linear_unit_name: *const ::std::os::raw::c_char,
3028        linear_unit_conv_factor: f64,
3029    ) -> *mut PJ;
3030}
3031unsafe extern "C" {
3032    pub fn proj_create_conversion_miller_cylindrical(
3033        ctx: *mut PJ_CONTEXT,
3034        center_long: f64,
3035        false_easting: f64,
3036        false_northing: f64,
3037        ang_unit_name: *const ::std::os::raw::c_char,
3038        ang_unit_conv_factor: f64,
3039        linear_unit_name: *const ::std::os::raw::c_char,
3040        linear_unit_conv_factor: f64,
3041    ) -> *mut PJ;
3042}
3043unsafe extern "C" {
3044    pub fn proj_create_conversion_mercator_variant_a(
3045        ctx: *mut PJ_CONTEXT,
3046        center_lat: f64,
3047        center_long: f64,
3048        scale: f64,
3049        false_easting: f64,
3050        false_northing: f64,
3051        ang_unit_name: *const ::std::os::raw::c_char,
3052        ang_unit_conv_factor: f64,
3053        linear_unit_name: *const ::std::os::raw::c_char,
3054        linear_unit_conv_factor: f64,
3055    ) -> *mut PJ;
3056}
3057unsafe extern "C" {
3058    pub fn proj_create_conversion_mercator_variant_b(
3059        ctx: *mut PJ_CONTEXT,
3060        latitude_first_parallel: f64,
3061        center_long: f64,
3062        false_easting: f64,
3063        false_northing: f64,
3064        ang_unit_name: *const ::std::os::raw::c_char,
3065        ang_unit_conv_factor: f64,
3066        linear_unit_name: *const ::std::os::raw::c_char,
3067        linear_unit_conv_factor: f64,
3068    ) -> *mut PJ;
3069}
3070unsafe extern "C" {
3071    pub fn proj_create_conversion_popular_visualisation_pseudo_mercator(
3072        ctx: *mut PJ_CONTEXT,
3073        center_lat: f64,
3074        center_long: f64,
3075        false_easting: f64,
3076        false_northing: f64,
3077        ang_unit_name: *const ::std::os::raw::c_char,
3078        ang_unit_conv_factor: f64,
3079        linear_unit_name: *const ::std::os::raw::c_char,
3080        linear_unit_conv_factor: f64,
3081    ) -> *mut PJ;
3082}
3083unsafe extern "C" {
3084    pub fn proj_create_conversion_mollweide(
3085        ctx: *mut PJ_CONTEXT,
3086        center_long: f64,
3087        false_easting: f64,
3088        false_northing: f64,
3089        ang_unit_name: *const ::std::os::raw::c_char,
3090        ang_unit_conv_factor: f64,
3091        linear_unit_name: *const ::std::os::raw::c_char,
3092        linear_unit_conv_factor: f64,
3093    ) -> *mut PJ;
3094}
3095unsafe extern "C" {
3096    pub fn proj_create_conversion_new_zealand_mapping_grid(
3097        ctx: *mut PJ_CONTEXT,
3098        center_lat: f64,
3099        center_long: f64,
3100        false_easting: f64,
3101        false_northing: f64,
3102        ang_unit_name: *const ::std::os::raw::c_char,
3103        ang_unit_conv_factor: f64,
3104        linear_unit_name: *const ::std::os::raw::c_char,
3105        linear_unit_conv_factor: f64,
3106    ) -> *mut PJ;
3107}
3108unsafe extern "C" {
3109    pub fn proj_create_conversion_oblique_stereographic(
3110        ctx: *mut PJ_CONTEXT,
3111        center_lat: f64,
3112        center_long: f64,
3113        scale: f64,
3114        false_easting: f64,
3115        false_northing: f64,
3116        ang_unit_name: *const ::std::os::raw::c_char,
3117        ang_unit_conv_factor: f64,
3118        linear_unit_name: *const ::std::os::raw::c_char,
3119        linear_unit_conv_factor: f64,
3120    ) -> *mut PJ;
3121}
3122unsafe extern "C" {
3123    pub fn proj_create_conversion_orthographic(
3124        ctx: *mut PJ_CONTEXT,
3125        center_lat: f64,
3126        center_long: f64,
3127        false_easting: f64,
3128        false_northing: f64,
3129        ang_unit_name: *const ::std::os::raw::c_char,
3130        ang_unit_conv_factor: f64,
3131        linear_unit_name: *const ::std::os::raw::c_char,
3132        linear_unit_conv_factor: f64,
3133    ) -> *mut PJ;
3134}
3135unsafe extern "C" {
3136    pub fn proj_create_conversion_local_orthographic(
3137        ctx: *mut PJ_CONTEXT,
3138        center_lat: f64,
3139        center_long: f64,
3140        azimuth: f64,
3141        scale: f64,
3142        false_easting: f64,
3143        false_northing: f64,
3144        ang_unit_name: *const ::std::os::raw::c_char,
3145        ang_unit_conv_factor: f64,
3146        linear_unit_name: *const ::std::os::raw::c_char,
3147        linear_unit_conv_factor: f64,
3148    ) -> *mut PJ;
3149}
3150unsafe extern "C" {
3151    pub fn proj_create_conversion_american_polyconic(
3152        ctx: *mut PJ_CONTEXT,
3153        center_lat: f64,
3154        center_long: f64,
3155        false_easting: f64,
3156        false_northing: f64,
3157        ang_unit_name: *const ::std::os::raw::c_char,
3158        ang_unit_conv_factor: f64,
3159        linear_unit_name: *const ::std::os::raw::c_char,
3160        linear_unit_conv_factor: f64,
3161    ) -> *mut PJ;
3162}
3163unsafe extern "C" {
3164    pub fn proj_create_conversion_polar_stereographic_variant_a(
3165        ctx: *mut PJ_CONTEXT,
3166        center_lat: f64,
3167        center_long: f64,
3168        scale: f64,
3169        false_easting: f64,
3170        false_northing: f64,
3171        ang_unit_name: *const ::std::os::raw::c_char,
3172        ang_unit_conv_factor: f64,
3173        linear_unit_name: *const ::std::os::raw::c_char,
3174        linear_unit_conv_factor: f64,
3175    ) -> *mut PJ;
3176}
3177unsafe extern "C" {
3178    pub fn proj_create_conversion_polar_stereographic_variant_b(
3179        ctx: *mut PJ_CONTEXT,
3180        latitude_standard_parallel: f64,
3181        longitude_of_origin: f64,
3182        false_easting: f64,
3183        false_northing: f64,
3184        ang_unit_name: *const ::std::os::raw::c_char,
3185        ang_unit_conv_factor: f64,
3186        linear_unit_name: *const ::std::os::raw::c_char,
3187        linear_unit_conv_factor: f64,
3188    ) -> *mut PJ;
3189}
3190unsafe extern "C" {
3191    pub fn proj_create_conversion_robinson(
3192        ctx: *mut PJ_CONTEXT,
3193        center_long: f64,
3194        false_easting: f64,
3195        false_northing: f64,
3196        ang_unit_name: *const ::std::os::raw::c_char,
3197        ang_unit_conv_factor: f64,
3198        linear_unit_name: *const ::std::os::raw::c_char,
3199        linear_unit_conv_factor: f64,
3200    ) -> *mut PJ;
3201}
3202unsafe extern "C" {
3203    pub fn proj_create_conversion_sinusoidal(
3204        ctx: *mut PJ_CONTEXT,
3205        center_long: f64,
3206        false_easting: f64,
3207        false_northing: f64,
3208        ang_unit_name: *const ::std::os::raw::c_char,
3209        ang_unit_conv_factor: f64,
3210        linear_unit_name: *const ::std::os::raw::c_char,
3211        linear_unit_conv_factor: f64,
3212    ) -> *mut PJ;
3213}
3214unsafe extern "C" {
3215    pub fn proj_create_conversion_stereographic(
3216        ctx: *mut PJ_CONTEXT,
3217        center_lat: f64,
3218        center_long: f64,
3219        scale: f64,
3220        false_easting: f64,
3221        false_northing: f64,
3222        ang_unit_name: *const ::std::os::raw::c_char,
3223        ang_unit_conv_factor: f64,
3224        linear_unit_name: *const ::std::os::raw::c_char,
3225        linear_unit_conv_factor: f64,
3226    ) -> *mut PJ;
3227}
3228unsafe extern "C" {
3229    pub fn proj_create_conversion_van_der_grinten(
3230        ctx: *mut PJ_CONTEXT,
3231        center_long: f64,
3232        false_easting: f64,
3233        false_northing: f64,
3234        ang_unit_name: *const ::std::os::raw::c_char,
3235        ang_unit_conv_factor: f64,
3236        linear_unit_name: *const ::std::os::raw::c_char,
3237        linear_unit_conv_factor: f64,
3238    ) -> *mut PJ;
3239}
3240unsafe extern "C" {
3241    pub fn proj_create_conversion_wagner_i(
3242        ctx: *mut PJ_CONTEXT,
3243        center_long: f64,
3244        false_easting: f64,
3245        false_northing: f64,
3246        ang_unit_name: *const ::std::os::raw::c_char,
3247        ang_unit_conv_factor: f64,
3248        linear_unit_name: *const ::std::os::raw::c_char,
3249        linear_unit_conv_factor: f64,
3250    ) -> *mut PJ;
3251}
3252unsafe extern "C" {
3253    pub fn proj_create_conversion_wagner_ii(
3254        ctx: *mut PJ_CONTEXT,
3255        center_long: f64,
3256        false_easting: f64,
3257        false_northing: f64,
3258        ang_unit_name: *const ::std::os::raw::c_char,
3259        ang_unit_conv_factor: f64,
3260        linear_unit_name: *const ::std::os::raw::c_char,
3261        linear_unit_conv_factor: f64,
3262    ) -> *mut PJ;
3263}
3264unsafe extern "C" {
3265    pub fn proj_create_conversion_wagner_iii(
3266        ctx: *mut PJ_CONTEXT,
3267        latitude_true_scale: f64,
3268        center_long: f64,
3269        false_easting: f64,
3270        false_northing: f64,
3271        ang_unit_name: *const ::std::os::raw::c_char,
3272        ang_unit_conv_factor: f64,
3273        linear_unit_name: *const ::std::os::raw::c_char,
3274        linear_unit_conv_factor: f64,
3275    ) -> *mut PJ;
3276}
3277unsafe extern "C" {
3278    pub fn proj_create_conversion_wagner_iv(
3279        ctx: *mut PJ_CONTEXT,
3280        center_long: f64,
3281        false_easting: f64,
3282        false_northing: f64,
3283        ang_unit_name: *const ::std::os::raw::c_char,
3284        ang_unit_conv_factor: f64,
3285        linear_unit_name: *const ::std::os::raw::c_char,
3286        linear_unit_conv_factor: f64,
3287    ) -> *mut PJ;
3288}
3289unsafe extern "C" {
3290    pub fn proj_create_conversion_wagner_v(
3291        ctx: *mut PJ_CONTEXT,
3292        center_long: f64,
3293        false_easting: f64,
3294        false_northing: f64,
3295        ang_unit_name: *const ::std::os::raw::c_char,
3296        ang_unit_conv_factor: f64,
3297        linear_unit_name: *const ::std::os::raw::c_char,
3298        linear_unit_conv_factor: f64,
3299    ) -> *mut PJ;
3300}
3301unsafe extern "C" {
3302    pub fn proj_create_conversion_wagner_vi(
3303        ctx: *mut PJ_CONTEXT,
3304        center_long: f64,
3305        false_easting: f64,
3306        false_northing: f64,
3307        ang_unit_name: *const ::std::os::raw::c_char,
3308        ang_unit_conv_factor: f64,
3309        linear_unit_name: *const ::std::os::raw::c_char,
3310        linear_unit_conv_factor: f64,
3311    ) -> *mut PJ;
3312}
3313unsafe extern "C" {
3314    pub fn proj_create_conversion_wagner_vii(
3315        ctx: *mut PJ_CONTEXT,
3316        center_long: f64,
3317        false_easting: f64,
3318        false_northing: f64,
3319        ang_unit_name: *const ::std::os::raw::c_char,
3320        ang_unit_conv_factor: f64,
3321        linear_unit_name: *const ::std::os::raw::c_char,
3322        linear_unit_conv_factor: f64,
3323    ) -> *mut PJ;
3324}
3325unsafe extern "C" {
3326    pub fn proj_create_conversion_quadrilateralized_spherical_cube(
3327        ctx: *mut PJ_CONTEXT,
3328        center_lat: f64,
3329        center_long: f64,
3330        false_easting: f64,
3331        false_northing: f64,
3332        ang_unit_name: *const ::std::os::raw::c_char,
3333        ang_unit_conv_factor: f64,
3334        linear_unit_name: *const ::std::os::raw::c_char,
3335        linear_unit_conv_factor: f64,
3336    ) -> *mut PJ;
3337}
3338unsafe extern "C" {
3339    pub fn proj_create_conversion_spherical_cross_track_height(
3340        ctx: *mut PJ_CONTEXT,
3341        peg_point_lat: f64,
3342        peg_point_long: f64,
3343        peg_point_heading: f64,
3344        peg_point_height: f64,
3345        ang_unit_name: *const ::std::os::raw::c_char,
3346        ang_unit_conv_factor: f64,
3347        linear_unit_name: *const ::std::os::raw::c_char,
3348        linear_unit_conv_factor: f64,
3349    ) -> *mut PJ;
3350}
3351unsafe extern "C" {
3352    pub fn proj_create_conversion_equal_earth(
3353        ctx: *mut PJ_CONTEXT,
3354        center_long: f64,
3355        false_easting: f64,
3356        false_northing: f64,
3357        ang_unit_name: *const ::std::os::raw::c_char,
3358        ang_unit_conv_factor: f64,
3359        linear_unit_name: *const ::std::os::raw::c_char,
3360        linear_unit_conv_factor: f64,
3361    ) -> *mut PJ;
3362}
3363unsafe extern "C" {
3364    pub fn proj_create_conversion_vertical_perspective(
3365        ctx: *mut PJ_CONTEXT,
3366        topo_origin_lat: f64,
3367        topo_origin_long: f64,
3368        topo_origin_height: f64,
3369        view_point_height: f64,
3370        false_easting: f64,
3371        false_northing: f64,
3372        ang_unit_name: *const ::std::os::raw::c_char,
3373        ang_unit_conv_factor: f64,
3374        linear_unit_name: *const ::std::os::raw::c_char,
3375        linear_unit_conv_factor: f64,
3376    ) -> *mut PJ;
3377}
3378unsafe extern "C" {
3379    pub fn proj_create_conversion_pole_rotation_grib_convention(
3380        ctx: *mut PJ_CONTEXT,
3381        south_pole_lat_in_unrotated_crs: f64,
3382        south_pole_long_in_unrotated_crs: f64,
3383        axis_rotation: f64,
3384        ang_unit_name: *const ::std::os::raw::c_char,
3385        ang_unit_conv_factor: f64,
3386    ) -> *mut PJ;
3387}
3388unsafe extern "C" {
3389    pub fn proj_create_conversion_pole_rotation_netcdf_cf_convention(
3390        ctx: *mut PJ_CONTEXT,
3391        grid_north_pole_latitude: f64,
3392        grid_north_pole_longitude: f64,
3393        north_pole_grid_longitude: f64,
3394        ang_unit_name: *const ::std::os::raw::c_char,
3395        ang_unit_conv_factor: f64,
3396    ) -> *mut PJ;
3397}