| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- // Boost.Geometry
- // This file is manually converted from PROJ4
- // This file was modified by Oracle on 2017, 2018.
- // Modifications copyright (c) 2017-2018, Oracle and/or its affiliates.
- // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
- // Use, modification and distribution is subject to the Boost Software License,
- // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- // This file is converted from PROJ4, http://trac.osgeo.org/proj
- // PROJ4 is originally written by Gerald Evenden (then of the USGS)
- // PROJ4 is maintained by Frank Warmerdam
- // This file was converted to Geometry Library by Adam Wulkiewicz
- // Original copyright notice:
- // None
- /* list of projection system pj_errno values */
- #ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_STRERRNO_HPP
- #define BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_STRERRNO_HPP
- #include <cerrno>
- #include <cstring>
- #include <sstream>
- #include <string>
- namespace boost { namespace geometry { namespace projections
- {
- namespace detail
- {
- static const char *
- pj_err_list[] = {
- "no arguments in initialization list", /* -1 */
- "no options found in 'init' file", /* -2 */
- "no colon in init= string", /* -3 */
- "projection not named", /* -4 */
- "unknown projection id", /* -5 */
- "effective eccentricity = 1.", /* -6 */
- "unknown unit conversion id", /* -7 */
- "invalid boolean param argument", /* -8 */
- "unknown elliptical parameter name", /* -9 */
- "reciprocal flattening (1/f) = 0", /* -10 */
- "|radius reference latitude| > 90", /* -11 */
- "squared eccentricity < 0", /* -12 */
- "major axis or radius = 0 or not given", /* -13 */
- "latitude or longitude exceeded limits", /* -14 */
- "invalid x or y", /* -15 */
- "improperly formed DMS value", /* -16 */
- "non-convergent inverse meridional dist", /* -17 */
- "non-convergent inverse phi2", /* -18 */
- "acos/asin: |arg| >1.+1e-14", /* -19 */
- "tolerance condition error", /* -20 */
- "conic lat_1 = -lat_2", /* -21 */
- "lat_1 >= 90", /* -22 */
- "lat_1 = 0", /* -23 */
- "lat_ts >= 90", /* -24 */
- "no distance between control points", /* -25 */
- "projection not selected to be rotated", /* -26 */
- "W <= 0 or M <= 0", /* -27 */
- "lsat not in 1-5 range", /* -28 */
- "path not in range", /* -29 */
- "h <= 0", /* -30 */
- "k <= 0", /* -31 */
- "lat_0 = 0 or 90 or alpha = 90", /* -32 */
- "lat_1=lat_2 or lat_1=0 or lat_2=90", /* -33 */
- "elliptical usage required", /* -34 */
- "invalid UTM zone number", /* -35 */
- "arg(s) out of range for Tcheby eval", /* -36 */
- "failed to find projection to be rotated", /* -37 */
- "failed to load datum shift file", /* -38 */
- "both n & m must be spec'd and > 0", /* -39 */
- "n <= 0, n > 1 or not specified", /* -40 */
- "lat_1 or lat_2 not specified", /* -41 */
- "|lat_1| == |lat_2|", /* -42 */
- "lat_0 is pi/2 from mean lat", /* -43 */
- "unparseable coordinate system definition", /* -44 */
- "geocentric transformation missing z or ellps", /* -45 */
- "unknown prime meridian conversion id", /* -46 */
- "illegal axis orientation combination", /* -47 */
- "point not within available datum shift grids", /* -48 */
- "invalid sweep axis, choose x or y", /* -49 */
- "malformed pipeline", /* -50 */
- "unit conversion factor must be > 0", /* -51 */
- "invalid scale", /* -52 */
- "non-convergent computation", /* -53 */
- "missing required arguments", /* -54 */
- "lat_0 = 0", /* -55 */
- "ellipsoidal usage unsupported", /* -56 */
- "only one +init allowed for non-pipeline operations", /* -57 */
- "argument not numerical or out of range", /* -58 */
- /* When adding error messages, remember to update ID defines in
- projects.h, and transient_error array in pj_transform */
- };
- inline std::string pj_generic_strerrno(std::string const& msg, int err)
- {
- std::stringstream ss;
- ss << msg << " (" << err << ")";
- return ss.str();
- }
- inline std::string pj_strerrno(int err) {
- if (0==err)
- {
- return "";
- }
- else if (err > 0)
- {
- // std::strerror function may be not thread-safe
- //return std::strerror(err);
- switch(err)
- {
- #ifdef EINVAL
- case EINVAL:
- return "Invalid argument";
- #endif
- #ifdef EDOM
- case EDOM:
- return "Math argument out of domain of func";
- #endif
- #ifdef ERANGE
- case ERANGE:
- return "Math result not representable";
- #endif
- default:
- return pj_generic_strerrno("system error", err);
- }
- }
- else /*if (err < 0)*/
- {
- size_t adjusted_err = - err - 1;
- if (adjusted_err < (sizeof(pj_err_list) / sizeof(char *)))
- {
- return(pj_err_list[adjusted_err]);
- }
- else
- {
- return pj_generic_strerrno("invalid projection system error", err);
- }
- }
- }
- } // namespace detail
- }}} // namespace boost::geometry::projections
- #endif // BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_STRERRNO_HPP
|