| 116 | |
| 117 | |
| 118 | PJ *PROJECTION(cass) { |
| 119 | |
| 120 | /* Spheroidal? */ |
| 121 | if (0==P->es) { |
| 122 | P->inv = cass_s_inverse; |
| 123 | P->fwd = cass_s_forward; |
| 124 | return P; |
| 125 | } |
| 126 | |
| 127 | /* otherwise it's ellipsoidal */ |
| 128 | auto Q = static_cast<struct cass_data*>(calloc (1, sizeof (struct cass_data))); |
| 129 | P->opaque = Q; |
| 130 | if (nullptr==P->opaque) |
| 131 | return pj_default_destructor (P, PROJ_ERR_OTHER /*ENOMEM*/); |
| 132 | P->destructor = destructor; |
| 133 | |
| 134 | Q->en = pj_enfn (P->es); |
| 135 | if (nullptr==Q->en) |
| 136 | return pj_default_destructor (P, PROJ_ERR_OTHER /*ENOMEM*/); |
| 137 | |
| 138 | Q->m0 = pj_mlfn (P->phi0, sin (P->phi0), cos (P->phi0), Q->en); |
| 139 | if (pj_param_exists(P->params, "hyperbolic")) |
| 140 | Q->hyperbolic = true; |
| 141 | P->inv = cass_e_inverse; |
| 142 | P->fwd = cass_e_forward; |
| 143 | |
| 144 | return P; |
| 145 | } |
nothing calls this directly
no test coverage detected