aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlan D. Snow <alansnow21@gmail.com>2020-10-19 10:20:27 -0500
committerGitHub <noreply@github.com>2020-10-19 17:20:27 +0200
commit084f5f6cb39b3732c4cd930ebffcff86cdb24932 (patch)
treeb6e3d9bd87eecafbfe0f6f2634c4db9d00bc8e05 /src
parent85137d93549f2bb3dfe4fcfd371a0f1925e26417 (diff)
downloadPROJ-084f5f6cb39b3732c4cd930ebffcff86cdb24932.tar.gz
PROJ-084f5f6cb39b3732c4cd930ebffcff86cdb24932.zip
C API: add proj_context_clone() (#2383)
Fixes #2382
Diffstat (limited to 'src')
-rw-r--r--src/4D_api.cpp2
-rw-r--r--src/ctx.cpp13
-rw-r--r--src/proj.h1
-rw-r--r--src/proj_symbol_rename.h7
4 files changed, 22 insertions, 1 deletions
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
@@ -226,6 +226,19 @@ projCtx pj_ctx_alloc()
}
/************************************************************************/
+/* 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