diff --git a/src/Makefile_Efl.am b/src/Makefile_Efl.am index d8683e1362..3fa30839cb 100644 --- a/src/Makefile_Efl.am +++ b/src/Makefile_Efl.am @@ -23,6 +23,9 @@ efl_eolian_files = \ lib/efl/interfaces/efl_gfx_filter.eo \ lib/efl/interfaces/efl_model_base.eo \ lib/efl/interfaces/efl_animator.eo \ + lib/efl/interfaces/efl_vpath.eo \ + lib/efl/interfaces/efl_vpath_manager.eo \ + lib/efl/interfaces/efl_vpath_file.eo \ $(efl_eolian_legacy_files) \ $(NULL) @@ -55,7 +58,10 @@ lib_LTLIBRARIES += lib/efl/libefl.la lib_efl_libefl_la_SOURCES = \ lib/efl/interfaces/efl_interfaces_main.c \ lib/efl/interfaces/efl_model_common.c \ -lib/efl/interfaces/efl_gfx_shape.c +lib/efl/interfaces/efl_gfx_shape.c \ +lib/efl/interfaces/efl_vpath.c \ +lib/efl/interfaces/efl_vpath_file.c \ +lib/efl/interfaces/efl_vpath_manager.c lib_efl_libefl_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl -I$(top_srcdir)/src/lib/efl @EFL_CFLAGS@ -DEFL_GFX_FILTER_BETA lib_efl_libefl_la_LIBADD = @EFL_LIBS@ diff --git a/src/lib/efl/Efl.h b/src/lib/efl/Efl.h index 2cb0bd7a0c..02fbe1da3b 100644 --- a/src/lib/efl/Efl.h +++ b/src/lib/efl/Efl.h @@ -50,6 +50,10 @@ typedef struct tm Efl_Time; #include +#include "interfaces/efl_vpath_file.eo.h" +#include "interfaces/efl_vpath.eo.h" +#include "interfaces/efl_vpath_manager.eo.h" + /* Data types */ #include "interfaces/efl_gfx_types.eot.h" typedef Efl_Gfx_Path_Command_Type Efl_Gfx_Path_Command; diff --git a/src/lib/efl/interfaces/efl_vpath.c b/src/lib/efl/interfaces/efl_vpath.c new file mode 100644 index 0000000000..28ecd109b9 --- /dev/null +++ b/src/lib/efl/interfaces/efl_vpath.c @@ -0,0 +1,18 @@ +#define EFL_BETA_API_SUPPORT + +#include "Efl.h" + +typedef struct _Efl_Vpath_Data Efl_Vpath_Data; + +struct _Efl_Vpath_Data +{ + int dummy; +}; + +EOLIAN static Efl_Vpath_File * +_efl_vpath_fetch(Eo *obj EINA_UNUSED, Efl_Vpath_Data *pd EINA_UNUSED, const char *path EINA_UNUSED) +{ + return NULL; +} + +#include "interfaces/efl_vpath.eo.c" diff --git a/src/lib/efl/interfaces/efl_vpath.eo b/src/lib/efl/interfaces/efl_vpath.eo new file mode 100644 index 0000000000..2e7dd6abad --- /dev/null +++ b/src/lib/efl/interfaces/efl_vpath.eo @@ -0,0 +1,15 @@ +class Efl.Vpath (Eo.Base) +{ + legacy_prefix: null; + eo_prefix: efl_vpath; + methods { + fetch { + params { + path: const(char)*; [[ The input virtual file path to fetch ]] + } + return: own(Efl.Vpath_File *); [[ An object representing the file ]] + } + } + events { + } +} diff --git a/src/lib/efl/interfaces/efl_vpath_file.c b/src/lib/efl/interfaces/efl_vpath_file.c new file mode 100644 index 0000000000..dffd44c275 --- /dev/null +++ b/src/lib/efl/interfaces/efl_vpath_file.c @@ -0,0 +1,32 @@ +#define EFL_BETA_API_SUPPORT + +#include "Efl.h" + +typedef struct _Efl_Vpath_File_Data Efl_Vpath_File_Data; + +struct _Efl_Vpath_File_Data +{ + const char *path; + const char *result; +}; + +EOLIAN static void +_efl_vpath_file_path_set(Eo *obj EINA_UNUSED, Efl_Vpath_File_Data *pd, const char *path) +{ + eina_stringshare_replace(&(pd->path), path); + // XXX: begin resolve or fetch +} + +EOLIAN static const char * +_efl_vpath_file_path_get(Eo *obj EINA_UNUSED, Efl_Vpath_File_Data *pd) +{ + return pd->path; +} + +EOLIAN static const char * +_efl_vpath_file_result_get(Eo *obj EINA_UNUSED, Efl_Vpath_File_Data *pd) +{ + return pd->result; +} + +#include "interfaces/efl_vpath_file.eo.c" diff --git a/src/lib/efl/interfaces/efl_vpath_file.eo b/src/lib/efl/interfaces/efl_vpath_file.eo new file mode 100644 index 0000000000..ff338cab33 --- /dev/null +++ b/src/lib/efl/interfaces/efl_vpath_file.eo @@ -0,0 +1,24 @@ +class Efl.Vpath_File (Eo.Base) +{ + legacy_prefix: null; + eo_prefix: efl_vpath_file; + methods { + @property path { + set {} + get {} + values { + path: const(char)*; [[ The input virtual path to a file ]] + } + } + @property result { + get {} + values { + path: const(char)*; [[ The resulting destination file ]] + } + } + } + events { + fetched; [[ File successfully mapped/fetched ]] + failed; [[ File fetch or mapping failed ]] + } +} diff --git a/src/lib/efl/interfaces/efl_vpath_manager.c b/src/lib/efl/interfaces/efl_vpath_manager.c new file mode 100644 index 0000000000..7905d817ef --- /dev/null +++ b/src/lib/efl/interfaces/efl_vpath_manager.c @@ -0,0 +1,28 @@ +#define EFL_BETA_API_SUPPORT + +#include "Efl.h" + +typedef struct _Efl_Vpath_Manager_Data Efl_Vpath_Manager_Data; + +struct _Efl_Vpath_Manager_Data +{ + Eina_List *list; +}; + +EOLIAN static Efl_Vpath_File * +_efl_vpath_manager_fetch(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED, const char *path EINA_UNUSED) +{ + return NULL; +} + +EOLIAN static void +_efl_vpath_manager_register(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED, int priority EINA_UNUSED, Efl_Vpath *vpath EINA_UNUSED) +{ +} + +EOLIAN static void +_efl_vpath_manager_unregister(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED, Efl_Vpath *vpath EINA_UNUSED) +{ +} + +#include "interfaces/efl_vpath_manager.eo.c" diff --git a/src/lib/efl/interfaces/efl_vpath_manager.eo b/src/lib/efl/interfaces/efl_vpath_manager.eo new file mode 100644 index 0000000000..728e092a77 --- /dev/null +++ b/src/lib/efl/interfaces/efl_vpath_manager.eo @@ -0,0 +1,24 @@ +class Efl.Vpath_Manager () +{ + legacy_prefix: null; + eo_prefix: efl_vpath_manager; + methods { + fetch @class { + params { + path: const(char)*; [[ The input virtual file path to fetch ]] + } + return: own(Efl.Vpath_File *); [[ An object representing the file ]] + } + register @class { + params { + priority: int; [[ Search order - higher values tired first ]] + vpath: Efl.Vpath * @nonull; [[ A Vpath implementation object ]] + } + } + unregister @class { + params { + vpath: Efl.Vpath * @nonull; [[ A Vpath implementation object ]] + } + } + } +}