1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
/******************************************************************************
*
* Project: GDAL
* Purpose: Includes json-c header
* Author: Even Rouault <even dot rouault at spatialys dot com>
*
******************************************************************************
* Copyright (c) 2016, Even Rouault <even dot rouault at spatialys dot com>
*
* SPDX-License-Identifier: MIT
*****************************************************************************/
#ifndef OGR_JSON_HEADER_H
#define OGR_JSON_HEADER_H
#if ((__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2)) && \
!defined(_MSC_VER))
#pragma GCC system_header
#endif
#ifdef _MSC_VER
#pragma warning(push)
// json_inttypes.h(18,1): warning C4005: 'PRId64': macro redefinition.
#pragma warning(disable : 4005)
#endif
#include <json.h>
#ifdef _MSC_VER
#pragma warning(pop)
#endif
#undef json_object_object_foreachC
#define json_object_object_foreachC(obj, iter) \
for (iter.entry = json_object_get_object(obj)->head; \
(iter.entry \
? (iter.key = (char *)iter.entry->k, \
iter.val = (struct json_object *)iter.entry->v, iter.entry) \
: nullptr) != nullptr; \
iter.entry = iter.entry->next)
/*! @cond Doxygen_Suppress */
#if defined(__cplusplus) && !defined(CPL_SUPRESS_CPLUSPLUS)
extern "C++"
{
#ifndef DOXYGEN_SKIP
#include <memory>
#endif
struct JsonObjectReleaser
{
void operator()(json_object *poObj) const
{
json_object_put(poObj);
}
};
using JsonObjectUniquePtr =
std::unique_ptr<json_object, JsonObjectReleaser>;
} // extern "C++"
#endif /* def __cplusplus && !CPL_SUPRESS_CPLUSPLUS */
/*! @endcond */
#endif /* OGR_JSON_HEADER_H */
|