diff options
| author | Thomas Knudsen <lastname DOT firstname AT gmail DOT com> | 2016-04-20 18:10:00 +0200 |
|---|---|---|
| committer | Thomas Knudsen <lastname DOT firstname AT gmail DOT com> | 2016-04-20 18:10:00 +0200 |
| commit | 9687e69b177933c2894adc842f6aa507fc70ca16 (patch) | |
| tree | 6a5d39f832dfb33e21cec718b86852e65fde997f /src | |
| parent | 7a4841d9424e259f6cba2f173ebfb8225e21bb88 (diff) | |
| download | PROJ-9687e69b177933c2894adc842f6aa507fc70ca16.tar.gz PROJ-9687e69b177933c2894adc842f6aa507fc70ca16.zip | |
Portability cleanups for the code in PR #5
Eliminated load time non-constant initializers, mixed code/declarations
and C++ style comments.
A lot of non-constant initializers remain in PJ_healpix. Should probably
be handled before next release.
Diffstat (limited to 'src')
| -rw-r--r-- | src/PJ_goode.c | 18 | ||||
| -rw-r--r-- | src/PJ_healpix.c | 4 | ||||
| -rw-r--r-- | src/PJ_igh.c | 96 | ||||
| -rw-r--r-- | src/PJ_imw_p.c | 5 | ||||
| -rw-r--r-- | src/PJ_isea.c | 2 | ||||
| -rw-r--r-- | src/PJ_krovak.c | 7 |
6 files changed, 67 insertions, 65 deletions
diff --git a/src/PJ_goode.c b/src/PJ_goode.c index d577f901..48fc9ad5 100644 --- a/src/PJ_goode.c +++ b/src/PJ_goode.c @@ -6,9 +6,11 @@ PROJ_HEAD(goode, "Goode Homolosine") "\n\tPCyl, Sph."; #define Y_COR 0.05280
#define PHI_LIM 0.71093078197902358062
+C_NAMESPACE PJ *pj_sinu(PJ *), *pj_moll(PJ *);
+
struct pj_opaque {
- struct PJconsts *sinu; \
- struct PJconsts *moll;
+ PJ *sinu;
+ PJ *moll;
};
@@ -101,11 +103,7 @@ int pj_goode_selftest (void) { };
XY s_fwd_expect[] = {
- { 223368.11902663155, 111701.07212763709
},
- { 223368.11902663155, -111701.07212763709
},
- {-223368.11902663155, 111701.07212763709
},
- {-223368.11902663155, -111701.07212763709
},
- };
+ { 223368.11902663155, 111701.07212763709},
{ 223368.11902663155, -111701.07212763709},
{-223368.11902663155, 111701.07212763709},
{-223368.11902663155, -111701.07212763709},
};
XY inv_in[] = {
{ 200, 100},
@@ -115,11 +113,7 @@ int pj_goode_selftest (void) { };
LP s_inv_expect[] = {
- { 0.0017904931100023887, 0.00089524655489191132
},
- { 0.0017904931100023887, -0.00089524655489191132
},
- {-0.0017904931100023887, 0.00089524655489191132
},
- {-0.0017904931100023887, -0.00089524655489191132
},
- };
+ { 0.0017904931100023887, 0.00089524655489191132},
{ 0.0017904931100023887, -0.00089524655489191132},
{-0.0017904931100023887, 0.00089524655489191132},
{-0.0017904931100023887, -0.00089524655489191132},
};
return pj_generic_selftest (0, s_args, tolerance_xy, tolerance_lp, 4, 4, fwd_in, 0, s_fwd_expect, inv_in, 0, s_inv_expect);
}
diff --git a/src/PJ_healpix.c b/src/PJ_healpix.c index ae5aa5be..f6fe624b 100644 --- a/src/PJ_healpix.c +++ b/src/PJ_healpix.c @@ -554,9 +554,9 @@ static XY s_rhealpix_forward(LP lp, PJ *P) { /* sphere */ static XY e_rhealpix_forward(LP lp, PJ *P) { /* ellipsoid */ struct pj_opaque *Q = P->opaque; - + XY xy; lp.phi = auth_lat(P, lp.phi, 0); - XY xy = healpix_sphere(lp); + xy = healpix_sphere(lp); return combine_caps(xy.x, xy.y, Q->north_square, Q->south_square, 0); } diff --git a/src/PJ_igh.c b/src/PJ_igh.c index f82f4f3f..533c3aa0 100644 --- a/src/PJ_igh.c +++ b/src/PJ_igh.c @@ -4,7 +4,14 @@ PROJ_HEAD(igh, "Interrupted Goode Homolosine") "\n\tPCyl, Sph."; C_NAMESPACE PJ *pj_sinu(PJ *), *pj_moll(PJ *); -static const double d4044118 = (40 + 44/60. + 11.8/3600.) * DEG_TO_RAD; // 40d 44' 11.8" [degrees] + +/* 40d 44' 11.8" [degrees] */ +/* +static const double d4044118 = (40 + 44/60. + 11.8/3600.) * DEG_TO_RAD; +has been replaced by this define, to eliminate portability issue: +Initializer element not computable at load time +*/ +#define d4044118 ((40 + 44/60. + 11.8/3600.) * DEG_TO_RAD) static const double d10 = 10 * DEG_TO_RAD; static const double d20 = 20 * DEG_TO_RAD; @@ -19,7 +26,7 @@ static const double d140 = 140 * DEG_TO_RAD; static const double d160 = 160 * DEG_TO_RAD; static const double d180 = 180 * DEG_TO_RAD; -static const double EPSLN = 1.e-10; // allow a little 'slack' on zone edge positions +static const double EPSLN = 1.e-10; /* allow a little 'slack' on zone edge positions */ struct pj_opaque { struct PJconsts* pj[12]; \ @@ -32,23 +39,23 @@ static XY s_forward (LP lp, PJ *P) { /* Spheroidal, forward */ struct pj_opaque *Q = P->opaque; int z; - if (lp.phi >= d4044118) { // 1|2 + if (lp.phi >= d4044118) { /* 1|2 */ z = (lp.lam <= -d40 ? 1: 2); } - else if (lp.phi >= 0) { // 3|4 + else if (lp.phi >= 0) { /* 3|4 */ z = (lp.lam <= -d40 ? 3: 4); } - else if (lp.phi >= -d4044118) { // 5|6|7|8 - if (lp.lam <= -d100) z = 5; // 5 - else if (lp.lam <= -d20) z = 6; // 6 - else if (lp.lam <= d80) z = 7; // 7 - else z = 8; // 8 + else if (lp.phi >= -d4044118) { /* 5|6|7|8 */ + if (lp.lam <= -d100) z = 5; /* 5 */ + else if (lp.lam <= -d20) z = 6; /* 6 */ + else if (lp.lam <= d80) z = 7; /* 7 */ + else z = 8; /* 8 */ } - else { // 9|10|11|12 - if (lp.lam <= -d100) z = 9; // 9 - else if (lp.lam <= -d20) z = 10; // 10 - else if (lp.lam <= d80) z = 11; // 11 - else z = 12; // 12 + else { /* 9|10|11|12 */ + if (lp.lam <= -d100) z = 9; /* 9 */ + else if (lp.lam <= -d20) z = 10; /* 10 */ + else if (lp.lam <= d80) z = 11; /* 11 */ + else z = 12; /* 12 */ } lp.lam -= Q->pj[z-1]->lam0; @@ -63,26 +70,26 @@ static XY s_forward (LP lp, PJ *P) { /* Spheroidal, forward */ static LP s_inverse (XY xy, PJ *P) { /* Spheroidal, inverse */ LP lp = {0.0,0.0}; struct pj_opaque *Q = P->opaque; - const double y90 = Q->dy0 + sqrt(2); // lt=90 corresponds to y=y0+sqrt(2) + const double y90 = Q->dy0 + sqrt(2); /* lt=90 corresponds to y=y0+sqrt(2) */ int z = 0; - if (xy.y > y90+EPSLN || xy.y < -y90+EPSLN) // 0 + if (xy.y > y90+EPSLN || xy.y < -y90+EPSLN) /* 0 */ z = 0; - else if (xy.y >= d4044118) // 1|2 + else if (xy.y >= d4044118) /* 1|2 */ z = (xy.x <= -d40? 1: 2); - else if (xy.y >= 0) // 3|4 + else if (xy.y >= 0) /* 3|4 */ z = (xy.x <= -d40? 3: 4); - else if (xy.y >= -d4044118) { // 5|6|7|8 - if (xy.x <= -d100) z = 5; // 5 - else if (xy.x <= -d20) z = 6; // 6 - else if (xy.x <= d80) z = 7; // 7 - else z = 8; // 8 + else if (xy.y >= -d4044118) { /* 5|6|7|8 */ + if (xy.x <= -d100) z = 5; /* 5 */ + else if (xy.x <= -d20) z = 6; /* 6 */ + else if (xy.x <= d80) z = 7; /* 7 */ + else z = 8; /* 8 */ } - else { // 9|10|11|12 - if (xy.x <= -d100) z = 9; // 9 - else if (xy.x <= -d20) z = 10; // 10 - else if (xy.x <= d80) z = 11; // 11 - else z = 12; // 12 + else { /* 9|10|11|12 */ + if (xy.x <= -d100) z = 9; /* 9 */ + else if (xy.x <= -d20) z = 10; /* 10 */ + else if (xy.x <= d80) z = 11; /* 11 */ + else z = 12; /* 12 */ } if (z) { @@ -113,7 +120,7 @@ static LP s_inverse (XY xy, PJ *P) { /* Spheroidal, inverse */ case 11: ok = (lp.lam >= -d20-EPSLN && lp.lam <= d80+EPSLN); break; case 12: ok = (lp.lam >= d80-EPSLN && lp.lam <= d180+EPSLN); break; } - z = (!ok? 0: z); // projectable? + z = (!ok? 0: z); /* projectable? */ } if (!z) lp.lam = HUGE_VAL; @@ -124,12 +131,12 @@ static LP s_inverse (XY xy, PJ *P) { /* Spheroidal, inverse */ static void *freeup_new (PJ *P) { /* Destructor */ + int i; if (0==P) return 0; if (0==P->opaque) return pj_dealloc (P); - int i; for (i = 0; i < 12; ++i) { if (P->opaque->pj[i]) pj_dealloc(P->opaque->pj[i]); @@ -146,11 +153,6 @@ static void freeup (PJ *P) { } -PJ *PROJECTION(igh) { - struct pj_opaque *Q = pj_calloc (1, sizeof (struct pj_opaque)); - if (0==Q) - return freeup_new (P); - P->opaque = Q; /* Zones: @@ -179,11 +181,17 @@ PJ *PROJECTION(igh) { Q->pj[n-1]->y0 = y_0; \ Q->pj[n-1]->lam0 = lon_0; + +PJ *PROJECTION(igh) { + XY xy1, xy3; LP lp = { 0, d4044118 }; - XY xy1; - XY xy3; + struct pj_opaque *Q = pj_calloc (1, sizeof (struct pj_opaque)); + if (0==Q) + return freeup_new (P); + P->opaque = Q; + - // sinusoidal zones + /* sinusoidal zones */ SETUP(3, sinu, -d100, 0, -d100); SETUP(4, sinu, d30, 0, d30); SETUP(5, sinu, -d160, 0, -d160); @@ -191,18 +199,18 @@ PJ *PROJECTION(igh) { SETUP(7, sinu, d20, 0, d20); SETUP(8, sinu, d140, 0, d140); - // mollweide zones + /* mollweide zones */ SETUP(1, moll, -d100, 0, -d100); - // y0 ? - xy1 = Q->pj[0]->fwd(lp, Q->pj[0]); // zone 1 - xy3 = Q->pj[2]->fwd(lp, Q->pj[2]); // zone 3 - // y0 + xy1.y = xy3.y for lt = 40d44'11.8" + /* y0 ? */ + xy1 = Q->pj[0]->fwd(lp, Q->pj[0]); /* zone 1 */ + xy3 = Q->pj[2]->fwd(lp, Q->pj[2]); /* zone 3 */ + /* y0 + xy1.y = xy3.y for lt = 40d44'11.8" */ Q->dy0 = xy3.y - xy1.y; Q->pj[0]->y0 = Q->dy0; - // mollweide zones (cont'd) + /* mollweide zones (cont'd) */ SETUP( 2, moll, d30, Q->dy0, d30); SETUP( 9, moll, -d160, -Q->dy0, -d160); SETUP(10, moll, -d60, -Q->dy0, -d60); diff --git a/src/PJ_imw_p.c b/src/PJ_imw_p.c index 10a06a44..a1675a90 100644 --- a/src/PJ_imw_p.c +++ b/src/PJ_imw_p.c @@ -137,14 +137,13 @@ static void freeup (PJ *P) { PJ *PROJECTION(imw_p) { + double del, sig, s, t, x1, x2, T2, y1, m1, m2, y2; + int i; struct pj_opaque *Q = pj_calloc (1, sizeof (struct pj_opaque)); if (0==Q) return freeup_new (P); P->opaque = Q; - double del, sig, s, t, x1, x2, T2, y1, m1, m2, y2; - int i; - if (!(Q->en = pj_enfn(P->es))) E_ERROR_0; if( (i = phi12(P, &del, &sig)) != 0) E_ERROR(i); diff --git a/src/PJ_isea.c b/src/PJ_isea.c index f1bc89a7..ba9d3c62 100644 --- a/src/PJ_isea.c +++ b/src/PJ_isea.c @@ -1061,12 +1061,12 @@ static void freeup (PJ *P) { PJ *PROJECTION(isea) {
+ char *opt;
struct pj_opaque *Q = pj_calloc (1, sizeof (struct pj_opaque));
if (0==Q)
return freeup_new (P);
P->opaque = Q;
- char *opt;
P->fwd = s_forward;
isea_grid_init(&Q->dgg);
diff --git a/src/PJ_krovak.c b/src/PJ_krovak.c index bb714189..86616b4c 100644 --- a/src/PJ_krovak.c +++ b/src/PJ_krovak.c @@ -66,7 +66,7 @@ struct pj_opaque { static XY e_forward (LP lp, PJ *P) { /* Ellipsoidal, forward */ XY xy = {0.0,0.0}; - struct pj_opaque *Q = P->opaque; + /* calculate xy from lat/lon */ /* Constants, identical to inverse transform function */ @@ -131,7 +131,7 @@ static XY e_forward (LP lp, PJ *P) { /* Ellipsoidal, forward */ static LP e_inverse (XY xy, PJ *P) { /* Ellipsoidal, inverse */ LP lp = {0.0,0.0}; - struct pj_opaque *Q = P->opaque; + /* calculate lat/lon from xy */ /* Constants, identisch wie in der Umkehrfunktion */ @@ -227,6 +227,7 @@ static void freeup (PJ *P) { PJ *PROJECTION(krovak) { + double ts; struct pj_opaque *Q = pj_calloc (1, sizeof (struct pj_opaque)); if (0==Q) return freeup_new (P); @@ -234,7 +235,7 @@ PJ *PROJECTION(krovak) { P->pfree = freeup; P->descr = des_krovak; - double ts; + /* read some Parameters, * here Latitude Truescale */ |
