aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas Knudsen <lastname DOT firstname AT gmail DOT com>2016-04-20 18:10:00 +0200
committerThomas Knudsen <lastname DOT firstname AT gmail DOT com>2016-04-20 18:10:00 +0200
commit9687e69b177933c2894adc842f6aa507fc70ca16 (patch)
tree6a5d39f832dfb33e21cec718b86852e65fde997f /src
parent7a4841d9424e259f6cba2f173ebfb8225e21bb88 (diff)
downloadPROJ-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.c18
-rw-r--r--src/PJ_healpix.c4
-rw-r--r--src/PJ_igh.c96
-rw-r--r--src/PJ_imw_p.c5
-rw-r--r--src/PJ_isea.c2
-rw-r--r--src/PJ_krovak.c7
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 */