From 223c0a0fdce07cd2c8c81d71f905e40834ae9486 Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Sun, 26 May 2019 18:35:48 +0200 Subject: [PATCH] eolian: add runtime API to get file format version This is useful for FFI based bindings (like the Lua or Python ones) and so on. --- src/bindings/luajit/eolian.lua | 2 ++ src/lib/eolian/Eolian.h | 9 +++++++++ src/lib/eolian/eolian.c | 4 ++++ 3 files changed, 15 insertions(+) diff --git a/src/bindings/luajit/eolian.lua b/src/bindings/luajit/eolian.lua index 5e60c89771..07959789ea 100644 --- a/src/bindings/luajit/eolian.lua +++ b/src/bindings/luajit/eolian.lua @@ -290,6 +290,7 @@ ffi.cdef [[ int eolian_init(void); int eolian_shutdown(void); + unsigned short eolian_file_format_version_get(void); Eolian_State *eolian_state_new(void); void eolian_state_free(Eolian_State *state); Eolian_Panic_Cb eolian_state_panic_cb_set(Eolian_State *state, Eolian_Panic_Cb cb); @@ -491,6 +492,7 @@ local init = function() eolian = util.lib_load("eolian") eina = util.lib_load("eina") eolian.eolian_init() + M.file_format_version = eolian.eolian_file_format_version_get() end local shutdown = function() diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h index a612f3af1c..80ccd1ef94 100644 --- a/src/lib/eolian/Eolian.h +++ b/src/lib/eolian/Eolian.h @@ -485,6 +485,15 @@ EAPI int eolian_init(void); */ EAPI int eolian_shutdown(void); +/* + * @brief Get the Eolian file format version. + * + * This is the same as the #EOLIAN_FILE_FORMAT_VERSION macro, but allows + * retrieval of the version at runtime, so it can be used by FFI based + * bindings in dynamic languages to do runtime checks and so on. + */ +EAPI unsigned short eolian_file_format_version_get(void); + /* * @brief Create a new Eolian state. * diff --git a/src/lib/eolian/eolian.c b/src/lib/eolian/eolian.c index 4a38fb90db..81067ebf44 100644 --- a/src/lib/eolian/eolian.c +++ b/src/lib/eolian/eolian.c @@ -68,3 +68,7 @@ EAPI int eolian_shutdown(void) return _eolian_init_counter; } +EAPI unsigned short eolian_file_format_version_get(void) +{ + return EOLIAN_FILE_FORMAT_VERSION; +}