From 084f5f6cb39b3732c4cd930ebffcff86cdb24932 Mon Sep 17 00:00:00 2001 From: "Alan D. Snow" Date: Mon, 19 Oct 2020 10:20:27 -0500 Subject: C API: add proj_context_clone() (#2383) Fixes #2382 --- src/4D_api.cpp | 2 +- src/ctx.cpp | 13 +++++++++++++ src/proj.h | 1 + src/proj_symbol_rename.h | 7 +++++++ 4 files changed, 22 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/4D_api.cpp b/src/4D_api.cpp index 3c6ab802..0c26840d 100644 --- a/src/4D_api.cpp +++ b/src/4D_api.cpp @@ -1448,7 +1448,7 @@ int proj_errno_reset (const PJ *P) { } -/* Create a new context */ +/* Create a new context based on the default context */ PJ_CONTEXT *proj_context_create (void) { return pj_ctx_alloc (); } diff --git a/src/ctx.cpp b/src/ctx.cpp index 5575d3aa..6dbe0de5 100644 --- a/src/ctx.cpp +++ b/src/ctx.cpp @@ -225,6 +225,19 @@ projCtx pj_ctx_alloc() return new (std::nothrow) projCtx_t(*pj_get_default_ctx()); } +/************************************************************************/ +/* proj_context_clone() */ +/* Create a new context based on a custom context */ +/************************************************************************/ + +PJ_CONTEXT *proj_context_clone (PJ_CONTEXT *ctx) +{ + if (nullptr==ctx) + return pj_ctx_alloc (); + + return new (std::nothrow) projCtx_t(*ctx); +} + /************************************************************************/ /* pj_ctx_free() */ /************************************************************************/ diff --git a/src/proj.h b/src/proj.h index b758663a..c98fcc1f 100644 --- a/src/proj.h +++ b/src/proj.h @@ -361,6 +361,7 @@ typedef struct projCtx_t PJ_CONTEXT; #endif PJ_CONTEXT PROJ_DLL *proj_context_create (void); PJ_CONTEXT PROJ_DLL *proj_context_destroy (PJ_CONTEXT *ctx); +PJ_CONTEXT PROJ_DLL *proj_context_clone (PJ_CONTEXT *ctx); /** Callback to resolve a filename to a full path */ typedef const char* (*proj_file_finder) (PJ_CONTEXT *ctx, const char*, void* user_data); diff --git a/src/proj_symbol_rename.h b/src/proj_symbol_rename.h index cb6fcd23..7fbe4242 100644 --- a/src/proj_symbol_rename.h +++ b/src/proj_symbol_rename.h @@ -97,6 +97,7 @@ #define proj_clone internal_proj_clone #define proj_concatoperation_get_step internal_proj_concatoperation_get_step #define proj_concatoperation_get_step_count internal_proj_concatoperation_get_step_count +#define proj_context_clone internal_proj_context_clone #define proj_context_create internal_proj_context_create #define proj_context_destroy internal_proj_context_destroy #define proj_context_errno internal_proj_context_errno @@ -235,6 +236,8 @@ #define proj_crs_get_coordinate_system internal_proj_crs_get_coordinate_system #define proj_crs_get_coordoperation internal_proj_crs_get_coordoperation #define proj_crs_get_datum internal_proj_crs_get_datum +#define proj_crs_get_datum_ensemble internal_proj_crs_get_datum_ensemble +#define proj_crs_get_datum_forced internal_proj_crs_get_datum_forced #define proj_crs_get_geodetic_crs internal_proj_crs_get_geodetic_crs #define proj_crs_get_horizontal_datum internal_proj_crs_get_horizontal_datum #define proj_crs_get_sub_crs internal_proj_crs_get_sub_crs @@ -243,11 +246,15 @@ #define proj_cs_get_axis_count internal_proj_cs_get_axis_count #define proj_cs_get_axis_info internal_proj_cs_get_axis_info #define proj_cs_get_type internal_proj_cs_get_type +#define proj_datum_ensemble_get_accuracy internal_proj_datum_ensemble_get_accuracy +#define proj_datum_ensemble_get_member internal_proj_datum_ensemble_get_member +#define proj_datum_ensemble_get_member_count internal_proj_datum_ensemble_get_member_count #define proj_degree_input internal_proj_degree_input #define proj_degree_output internal_proj_degree_output #define proj_destroy internal_proj_destroy #define proj_dmstor internal_proj_dmstor #define proj_download_file internal_proj_download_file +#define proj_dynamic_datum_get_frame_reference_epoch internal_proj_dynamic_datum_get_frame_reference_epoch #define proj_ellipsoid_get_parameters internal_proj_ellipsoid_get_parameters #define proj_errno internal_proj_errno #define proj_errno_reset internal_proj_errno_reset -- cgit v1.2.3