aboutsummaryrefslogtreecommitdiff
path: root/src/proj_internal.h
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2020-01-22 14:09:14 +0100
committerGitHub <noreply@github.com>2020-01-22 14:09:14 +0100
commitc5fb54168665d41503ef3a08f0534da58949b632 (patch)
tree19e2adc8809290881a6a13ec6001013d03170c7d /src/proj_internal.h
parenta6390b59ae2bad2a763e7ab3341ee4c80e708b3d (diff)
parent66fd99a8831955034cb25c8468ecfe1f9d3a7d62 (diff)
downloadPROJ-c5fb54168665d41503ef3a08f0534da58949b632.tar.gz
PROJ-c5fb54168665d41503ef3a08f0534da58949b632.zip
Merge pull request #1839 from rouault/rfc4_utf8
[RFC4_dev] Use Win32 Unicode APIs and expect all strings to be UTF-8 (fixes #1765)
Diffstat (limited to 'src/proj_internal.h')
-rw-r--r--src/proj_internal.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/proj_internal.h b/src/proj_internal.h
index ce7b9d74..15b98859 100644
--- a/src/proj_internal.h
+++ b/src/proj_internal.h
@@ -685,6 +685,23 @@ struct projGridChunkCache
int ttl = 86400; // 1 day
};
+struct projFileApiCallbackAndData
+{
+ PROJ_FILE_HANDLE* (*open_cbk)(PJ_CONTEXT *ctx, const char *filename, PROJ_OPEN_ACCESS access, void* user_data) = nullptr;
+ size_t (*read_cbk)(PJ_CONTEXT *ctx, PROJ_FILE_HANDLE*, void* buffer, size_t size, void* user_data) = nullptr;
+ size_t (*write_cbk)(PJ_CONTEXT *ctx, PROJ_FILE_HANDLE*, const void* buffer, size_t size, void* user_data) = nullptr;
+ int (*seek_cbk)(PJ_CONTEXT *ctx, PROJ_FILE_HANDLE*, long long offset, int whence, void* user_data) = nullptr;
+ unsigned long long (*tell_cbk)(PJ_CONTEXT *ctx, PROJ_FILE_HANDLE*, void* user_data) = nullptr;
+ void (*close_cbk)(PJ_CONTEXT *ctx, PROJ_FILE_HANDLE*, void* user_data) = nullptr;
+
+ int (*exists_cbk)(PJ_CONTEXT *ctx, const char *filename, void* user_data) = nullptr;
+ int (*mkdir_cbk)(PJ_CONTEXT *ctx, const char *filename, void* user_data) = nullptr;
+ int (*unlink_cbk)(PJ_CONTEXT *ctx, const char *filename, void* user_data) = nullptr;
+ int (*rename_cbk)(PJ_CONTEXT *ctx, const char *oldPath, const char *newPath, void* user_data) = nullptr;
+
+ void* user_data = nullptr;
+};
+
/* proj thread context */
struct projCtx_t {
int last_errno = 0;
@@ -696,6 +713,7 @@ struct projCtx_t {
int use_proj4_init_rules = -1; /* -1 = unknown, 0 = no, 1 = yes */
int epsg_file_exists = -1; /* -1 = unknown, 0 = no, 1 = yes */
+ std::string env_var_proj_lib{}; // content of PROJ_LIB environment variable. Use Filemanager::getProjLibEnvVar() to access
std::vector<std::string> search_paths{};
const char **c_compat_paths = nullptr; // same, but for projinfo usage
@@ -706,6 +724,9 @@ struct projCtx_t {
projNetworkCallbacksAndData networking{};
bool defer_grid_opening = false; // set by pj_obj_create()
+ projFileApiCallbackAndData fileApi{};
+ std::string custom_sqlite3_vfs_name{};
+
bool iniFileLoaded = false;
std::string endpoint{};