From 244a24104ded3a4573aeffa32160af21f76cbce6 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 15 Dec 2020 00:51:46 +0100 Subject: Revise error codes to have a reduced set exposed in the public API. Fixes #2482 And also add proj_context_errno_string() Revise gie 'expect failure errno XXXX' strings --- src/transformations/molodensky.cpp | 54 ++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 26 deletions(-) (limited to 'src/transformations/molodensky.cpp') diff --git a/src/transformations/molodensky.cpp b/src/transformations/molodensky.cpp index bf5960d2..4a6584a9 100644 --- a/src/transformations/molodensky.cpp +++ b/src/transformations/molodensky.cpp @@ -245,7 +245,7 @@ static PJ_XYZ forward_3d(PJ_LPZ lpz, PJ *P) { lpz = calc_standard_params(lpz, P); } if( lpz.lam == HUGE_VAL ) { - proj_errno_set(P, PJD_ERR_TOLERANCE_CONDITION); + proj_errno_set(P, PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN); return proj_coord_error().xyz; } @@ -277,7 +277,7 @@ static PJ_LPZ reverse_3d(PJ_XYZ xyz, PJ *P) { lpz = calc_standard_params(point.lpz, P); if( lpz.lam == HUGE_VAL ) { - proj_errno_set(P, PJD_ERR_TOLERANCE_CONDITION); + proj_errno_set(P, PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN); return proj_coord_error().lpz; } @@ -297,10 +297,9 @@ static PJ_COORD reverse_4d(PJ_COORD obs, PJ *P) { PJ *TRANSFORMATION(molodensky,1) { - int count_required_params = 0; struct pj_opaque_molodensky *Q = static_cast(calloc(1, sizeof(struct pj_opaque_molodensky))); if (nullptr==Q) - return pj_default_destructor(P, ENOMEM); + return pj_default_destructor(P, PROJ_ERR_INVALID_OP /*ENOMEM*/); P->opaque = (void *) Q; P->fwd4d = forward_4d; @@ -314,39 +313,42 @@ PJ *TRANSFORMATION(molodensky,1) { P->right = PJ_IO_UNITS_RADIANS; /* read args */ - if (pj_param(P->ctx, P->params, "tdx").i) { - count_required_params ++; - Q->dx = pj_param(P->ctx, P->params, "ddx").f; + if (!pj_param(P->ctx, P->params, "tdx").i) + { + proj_log_error (P, _("molodensky: missing dx")); + return pj_default_destructor (P, PROJ_ERR_INVALID_OP_MISSING_ARG); } + Q->dx = pj_param(P->ctx, P->params, "ddx").f; - if (pj_param(P->ctx, P->params, "tdy").i) { - count_required_params ++; - Q->dy = pj_param(P->ctx, P->params, "ddy").f; + if (!pj_param(P->ctx, P->params, "tdy").i) + { + proj_log_error (P, _("molodensky: missing dy")); + return pj_default_destructor (P, PROJ_ERR_INVALID_OP_MISSING_ARG); } + Q->dy = pj_param(P->ctx, P->params, "ddy").f; - if (pj_param(P->ctx, P->params, "tdz").i) { - count_required_params ++; - Q->dz = pj_param(P->ctx, P->params, "ddz").f; + if (!pj_param(P->ctx, P->params, "tdz").i) + { + proj_log_error (P, _("molodensky: missing dz")); + return pj_default_destructor (P, PROJ_ERR_INVALID_OP_MISSING_ARG); } + Q->dz = pj_param(P->ctx, P->params, "ddz").f; - if (pj_param(P->ctx, P->params, "tda").i) { - count_required_params ++; - Q->da = pj_param(P->ctx, P->params, "dda").f; + if (!pj_param(P->ctx, P->params, "tda").i) + { + proj_log_error (P, _("molodensky: missing da")); + return pj_default_destructor (P, PROJ_ERR_INVALID_OP_MISSING_ARG); } + Q->da = pj_param(P->ctx, P->params, "dda").f; - if (pj_param(P->ctx, P->params, "tdf").i) { - count_required_params ++; - Q->df = pj_param(P->ctx, P->params, "ddf").f; + if (!pj_param(P->ctx, P->params, "tdf").i) + { + proj_log_error (P, _("molodensky: missing df")); + return pj_default_destructor (P, PROJ_ERR_INVALID_OP_MISSING_ARG); } + Q->df = pj_param(P->ctx, P->params, "ddf").f; Q->abridged = pj_param(P->ctx, P->params, "tabridged").i; - /* We want all parameters (except +abridged) to be set */ - if (count_required_params == 0) - return pj_default_destructor(P, PJD_ERR_NO_ARGS); - - if (count_required_params != 5) - return pj_default_destructor(P, PJD_ERR_MISSING_ARGS); - return P; } -- cgit v1.2.3 From df96a13d2c9b70bc18cec1b08eea5b2b068127d7 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 15 Dec 2020 15:32:40 +0100 Subject: Various operations: remove explicit short name prefixing in log messages now that it is automatically added --- src/transformations/molodensky.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/transformations/molodensky.cpp') diff --git a/src/transformations/molodensky.cpp b/src/transformations/molodensky.cpp index 4a6584a9..2d173ac6 100644 --- a/src/transformations/molodensky.cpp +++ b/src/transformations/molodensky.cpp @@ -315,35 +315,35 @@ PJ *TRANSFORMATION(molodensky,1) { /* read args */ if (!pj_param(P->ctx, P->params, "tdx").i) { - proj_log_error (P, _("molodensky: missing dx")); + proj_log_error (P, _("missing dx")); return pj_default_destructor (P, PROJ_ERR_INVALID_OP_MISSING_ARG); } Q->dx = pj_param(P->ctx, P->params, "ddx").f; if (!pj_param(P->ctx, P->params, "tdy").i) { - proj_log_error (P, _("molodensky: missing dy")); + proj_log_error (P, _("missing dy")); return pj_default_destructor (P, PROJ_ERR_INVALID_OP_MISSING_ARG); } Q->dy = pj_param(P->ctx, P->params, "ddy").f; if (!pj_param(P->ctx, P->params, "tdz").i) { - proj_log_error (P, _("molodensky: missing dz")); + proj_log_error (P, _("missing dz")); return pj_default_destructor (P, PROJ_ERR_INVALID_OP_MISSING_ARG); } Q->dz = pj_param(P->ctx, P->params, "ddz").f; if (!pj_param(P->ctx, P->params, "tda").i) { - proj_log_error (P, _("molodensky: missing da")); + proj_log_error (P, _("missing da")); return pj_default_destructor (P, PROJ_ERR_INVALID_OP_MISSING_ARG); } Q->da = pj_param(P->ctx, P->params, "dda").f; if (!pj_param(P->ctx, P->params, "tdf").i) { - proj_log_error (P, _("molodensky: missing df")); + proj_log_error (P, _("missing df")); return pj_default_destructor (P, PROJ_ERR_INVALID_OP_MISSING_ARG); } Q->df = pj_param(P->ctx, P->params, "ddf").f; -- cgit v1.2.3 From a27c0255e7b8e6aab1b91e49fd7870d1ee4e1a80 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 15 Dec 2020 17:53:29 +0100 Subject: Remap ENOMEM from PROJ_ERR_INVALID_OP to PROJ_ERR_OTHER --- src/transformations/molodensky.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/transformations/molodensky.cpp') diff --git a/src/transformations/molodensky.cpp b/src/transformations/molodensky.cpp index 2d173ac6..70cf987b 100644 --- a/src/transformations/molodensky.cpp +++ b/src/transformations/molodensky.cpp @@ -299,7 +299,7 @@ static PJ_COORD reverse_4d(PJ_COORD obs, PJ *P) { PJ *TRANSFORMATION(molodensky,1) { struct pj_opaque_molodensky *Q = static_cast(calloc(1, sizeof(struct pj_opaque_molodensky))); if (nullptr==Q) - return pj_default_destructor(P, PROJ_ERR_INVALID_OP /*ENOMEM*/); + return pj_default_destructor(P, PROJ_ERR_OTHER /*ENOMEM*/); P->opaque = (void *) Q; P->fwd4d = forward_4d; -- cgit v1.2.3