commit 7cab3c2049907fb0be76784c796143fb22dcafea Author: Björn Esser Date: Mon Dec 11 17:01:20 2017 +0100 geojson: Adaptions for json-c v0.13 Index: gdal-2.2.3-fedora/ogr/ogrsf_frmts/geojson/ogrgeojsonwriter.cpp =================================================================== --- gdal-2.2.3-fedora.orig/ogr/ogrsf_frmts/geojson/ogrgeojsonwriter.cpp +++ gdal-2.2.3-fedora/ogr/ogrsf_frmts/geojson/ogrgeojsonwriter.cpp @@ -27,12 +27,18 @@ * DEALINGS IN THE SOFTWARE. ****************************************************************************/ +#define JSON_C_VER_013 (13 << 8) + #include "ogrgeojsonwriter.h" #include "ogrgeojsonutils.h" #include "ogr_geojson.h" #include "ogrgeojsonreader.h" #include // JSON-C + +#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013) #include +#endif + #include #include #include @@ -1381,13 +1387,26 @@ static int OGR_json_double_with_precisio { // TODO(schwehr): Explain this casting. const int nPrecision = +#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013) static_cast(reinterpret_cast(jso->_userdata)); +#else + static_cast(reinterpret_cast(json_object_get_userdata(jso))); +#endif char szBuffer[75] = {}; +#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013) OGRFormatDouble( szBuffer, sizeof(szBuffer), jso->o.c_double, '.', (nPrecision < 0) ? 15 : nPrecision ); +#else + OGRFormatDouble( szBuffer, sizeof(szBuffer), json_object_get_double(jso), '.', + (nPrecision < 0) ? 15 : nPrecision ); +#endif if( szBuffer[0] == 't' /*oobig */ ) { +#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013) CPLsnprintf(szBuffer, sizeof(szBuffer), "%.18g", jso->o.c_double); +#else + CPLsnprintf(szBuffer, sizeof(szBuffer), "%.18g", json_object_get_double(jso)); +#endif } return printbuf_memappend(pb, szBuffer, static_cast(strlen(szBuffer))); } @@ -1417,11 +1436,23 @@ OGR_json_double_with_significant_figures { char szBuffer[75] = {}; int nSize = 0; +#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013) if( CPLIsNan(jso->o.c_double)) +#else + if( CPLIsNan(json_object_get_double(jso))) +#endif nSize = CPLsnprintf(szBuffer, sizeof(szBuffer), "NaN"); +#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013) else if( CPLIsInf(jso->o.c_double) ) +#else + else if( CPLIsInf(json_object_get_double(jso)) ) +#endif { +#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013) if( jso->o.c_double > 0 ) +#else + if( json_object_get_double(jso) > 0 ) +#endif nSize = CPLsnprintf(szBuffer, sizeof(szBuffer), "Infinity"); else nSize = CPLsnprintf(szBuffer, sizeof(szBuffer), "-Infinity"); @@ -1429,13 +1460,22 @@ OGR_json_double_with_significant_figures else { char szFormatting[32] = {}; +#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013) const int nSignificantFigures = (int) (GUIntptr_t) jso->_userdata; +#else + const int nSignificantFigures = (int) (GUIntptr_t) json_object_get_userdata(jso); +#endif const int nInitialSignificantFigures = nSignificantFigures >= 0 ? nSignificantFigures : 17; CPLsnprintf(szFormatting, sizeof(szFormatting), "%%.%dg", nInitialSignificantFigures); +#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013) nSize = CPLsnprintf(szBuffer, sizeof(szBuffer), szFormatting, jso->o.c_double); +#else + nSize = CPLsnprintf(szBuffer, sizeof(szBuffer), + szFormatting, json_object_get_double(jso)); +#endif const char* pszDot = NULL; if( nSize+2 < static_cast(sizeof(szBuffer)) && (pszDot = strchr(szBuffer, '.')) == NULL ) @@ -1456,8 +1496,13 @@ OGR_json_double_with_significant_figures { CPLsnprintf(szFormatting, sizeof(szFormatting), "%%.%dg", nInitialSignificantFigures- i); +#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013) nSize = CPLsnprintf(szBuffer, sizeof(szBuffer), szFormatting, jso->o.c_double); +#else + nSize = CPLsnprintf(szBuffer, sizeof(szBuffer), + szFormatting, json_object_get_double(jso)); +#endif pszDot = strchr(szBuffer, '.'); if( pszDot != NULL && strstr(pszDot, "999999") == NULL && @@ -1471,8 +1516,13 @@ OGR_json_double_with_significant_figures { CPLsnprintf(szFormatting, sizeof(szFormatting), "%%.%dg", nInitialSignificantFigures); +#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013) nSize = CPLsnprintf(szBuffer, sizeof(szBuffer), szFormatting, jso->o.c_double); +#else + nSize = CPLsnprintf(szBuffer, sizeof(szBuffer), + szFormatting, json_object_get_double(jso)); +#endif if( nSize+2 < static_cast(sizeof(szBuffer)) && strchr(szBuffer, '.') == NULL ) {