eio: Rename EAPI macro to EIO_API in Eio library

Summary:
Patch from a series of patches to rename EAPI symbols to specific
library DSOs.

=  The Rationale =

This patch is from a series of patches to rename EAPI symbols to
specific library DSOs.

EAPI was designed to be able to pass
`__attribute__ ((visibility ("default")))` for symbols with
GCC, which would mean that even if -fvisibility=hidden was used
when compiling the library, the needed symbols would get exported.

MSVC __almost__ works like GCC (or mingw) in which you can
declare everything as export and it will just work (slower, but
it will work). But there's a caveat: global variables will not
work the same way for MSVC, but works for mingw and GCC.

For global variables (as opposed to functions), MSVC requires
correct DSO visibility for MSVC: instead of declaring a symbol as
export for everything, you need to declare it as import when
importing from another DSO and export when defining it locally.

With current EAPI definitions, we get the following example
working in mingw and MSVC (observe it doesn't define any global
variables as exported symbols).

Example 1:
dll1:
```
EAPI void foo(void);

EAPI void bar()
{
  foo();
}
```
dll2:
```
EAPI void foo()
{
  printf ("foo\n");
}
```

This works fine with API defined as __declspec(dllexport) in both
cases and for gcc defining as
`__atttribute__((visibility("default")))`.

However, the following:
Example 2:

dll1:

```
EAPI extern int foo;
EAPI void foobar(void);

EAPI void bar()
{
  foo = 5;
  foobar();
}
```

dll2:

```
EAPI int foo = 0;
EAPI void foobar()
{
  printf ("foo %d\n", foo);
}
```

This will work on mingw but will not work for MSVC. And that's why
LIBAPI is the only solution that works for MSVC.

Co-authored-by: João Paulo Taylor Ienczak Zanette <jpaulotiz@gmail.com>
Co-authored-by: Lucas Cavalcante de Sousa <lucks.sousa@gmail.com>
Co-authored-by: Ricardo Campos <ricardo.campos@expertise.dev>

Reviewers: vtorri, woohyun, lucas, jptiz

Reviewed By: vtorri, lucas

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D12210
This commit is contained in:
Felipe Magno de Almeida 2020-12-14 11:43:38 -03:00
parent a43c2dad50
commit 4e5b01f8a0
16 changed files with 158 additions and 167 deletions

View File

@ -32,41 +32,34 @@
#include <Eet.h>
#include <Efl_Config.h>
#ifdef EAPI
# undef EAPI
#endif
#ifdef EAPI_WEAK
# undef EAPI_WEAK
#ifdef EIO_API
#error EIO_API should not be already defined
#endif
#ifdef _WIN32
# ifdef EFL_BUILD
# ifdef DLL_EXPORT
# define EAPI __declspec(dllexport)
# ifndef EIO_STATIC
# ifdef EIO_BUILD
# define EIO_API __declspec(dllexport)
# else
# define EAPI
# define EIO_API __declspec(dllimport)
# endif
# else
# define EAPI __declspec(dllimport)
# define EIO_API
# endif
# define EIO_API_WEAK
#elif defined(__GNUC__)
# if __GNUC__ >= 4
# define EIO_API __attribute__ ((visibility("default")))
# define EIO_API_WEAK __attribute__ ((weak))
# else
# define EIO_API
# define EIO_API_WEAK
# endif
# define EAPI_WEAK
#else
# ifdef __GNUC__
# if __GNUC__ >= 4
# define EAPI __attribute__ ((visibility("default")))
# define EAPI_WEAK __attribute__ ((weak))
# else
# define EAPI
# define EAPI_WEAK
# endif
# else
# define EAPI
# define EAPI_WEAK
# endif
# define EIO_API
# define EIO_API_WEAK
#endif
#ifdef __cplusplus
extern "C" {
#endif
@ -133,7 +126,7 @@ static inline Eina_Bool eio_file_is_lnk(const Eina_Stat *stat);
* @param interval The interval (in seconds) to poll
* @since 1.21
*/
EAPI void eio_monitoring_interval_set(double interval);
EIO_API void eio_monitoring_interval_set(double interval);
#include "eio_inline_helper.x"
@ -144,7 +137,4 @@ EAPI void eio_monitoring_interval_set(double interval);
}
#endif
#undef EAPI
#define EAPI
#endif

View File

@ -18,7 +18,7 @@ extern "C" {
* Eio Version Information
* @ingroup Eio
*/
EAPI extern Eio_Version *eio_version;
EIO_API extern Eio_Version *eio_version;
/**
* @file
@ -206,7 +206,7 @@ struct _Eio_Progress
* @see eio_file_direct_ls()
* @see eio_file_stat_ls()
*/
EAPI Eio_File *eio_file_ls(const char *dir,
EIO_API Eio_File *eio_file_ls(const char *dir,
Eio_Filter_Cb filter_cb,
Eio_Main_Cb main_cb,
Eio_Done_Cb done_cb,
@ -241,7 +241,7 @@ EAPI Eio_File *eio_file_ls(const char *dir,
* @see eina_file_direct_ls()
* @see ecore_thread_feedback_run()
*/
EAPI Eio_File *eio_file_direct_ls(const char *dir,
EIO_API Eio_File *eio_file_direct_ls(const char *dir,
Eio_Filter_Direct_Cb filter_cb,
Eio_Main_Direct_Cb main_cb,
Eio_Done_Cb done_cb,
@ -272,7 +272,7 @@ EAPI Eio_File *eio_file_direct_ls(const char *dir,
* @see eina_file_stat_ls()
* @see ecore_thread_feedback_run()
*/
EAPI Eio_File *eio_file_stat_ls(const char *dir,
EIO_API Eio_File *eio_file_stat_ls(const char *dir,
Eio_Filter_Direct_Cb filter_cb,
Eio_Main_Direct_Cb main_cb,
Eio_Done_Cb done_cb,
@ -301,7 +301,7 @@ EAPI Eio_File *eio_file_stat_ls(const char *dir,
* @see eina_file_stat_ls()
* @see ecore_thread_feedback_run()
*/
EAPI Eio_File *eio_dir_stat_ls(const char *dir,
EIO_API Eio_File *eio_dir_stat_ls(const char *dir,
Eio_Filter_Direct_Cb filter_cb,
Eio_Main_Direct_Cb main_cb,
Eio_Done_Cb done_cb,
@ -329,7 +329,7 @@ EAPI Eio_File *eio_dir_stat_ls(const char *dir,
* @see eina_file_direct_ls()
* @see ecore_thread_feedback_run()
*/
EAPI Eio_File *eio_dir_direct_ls(const char *dir,
EIO_API Eio_File *eio_dir_direct_ls(const char *dir,
Eio_Filter_Dir_Cb filter_cb,
Eio_Main_Direct_Cb main_cb,
Eio_Done_Cb done_cb,
@ -346,7 +346,7 @@ EAPI Eio_File *eio_dir_direct_ls(const char *dir,
*
* eio_file_direct_stat calls stat in another thread. This prevents any blocking in your apps.
*/
EAPI Eio_File *eio_file_direct_stat(const char *path,
EIO_API Eio_File *eio_file_direct_stat(const char *path,
Eio_Stat_Cb done_cb,
Eio_Error_Cb error_cb,
const void *data);
@ -380,7 +380,7 @@ EAPI Eio_File *eio_file_direct_stat(const char *path,
* Set a new permission of a path changing it to the mode passed as argument.
* It's equivalent to the chmod command.
*/
EAPI Eio_File *eio_file_chmod(const char *path,
EIO_API Eio_File *eio_file_chmod(const char *path,
mode_t mode,
Eio_Done_Cb done_cb,
Eio_Error_Cb error_cb,
@ -402,7 +402,7 @@ EAPI Eio_File *eio_file_chmod(const char *path,
* @note Some platforms (including Windows) do not support chown(). In that
* case, this function returns @c NULL.
*/
EAPI Eio_File *eio_file_chown(const char *path,
EIO_API Eio_File *eio_file_chown(const char *path,
const char *user,
const char *group,
Eio_Done_Cb done_cb,
@ -419,7 +419,7 @@ EAPI Eio_File *eio_file_chown(const char *path,
*
* This function will erase a file.
*/
EAPI Eio_File *eio_file_unlink(const char *path,
EIO_API Eio_File *eio_file_unlink(const char *path,
Eio_Done_Cb done_cb,
Eio_Error_Cb error_cb,
const void *data);
@ -435,7 +435,7 @@ EAPI Eio_File *eio_file_unlink(const char *path,
*
* Creates a new directory using the mode provided.
*/
EAPI Eio_File *eio_file_mkdir(const char *path,
EIO_API Eio_File *eio_file_mkdir(const char *path,
mode_t mode,
Eio_Done_Cb done_cb,
Eio_Error_Cb error_cb,
@ -457,7 +457,7 @@ EAPI Eio_File *eio_file_mkdir(const char *path,
* if possible, if not it will fallback to mmap/write. It will try to preserve
* access rights, but not user/group identification.
*/
EAPI Eio_File *eio_file_move(const char *source,
EIO_API Eio_File *eio_file_move(const char *source,
const char *dest,
Eio_Progress_Cb progress_cb,
Eio_Done_Cb done_cb,
@ -479,7 +479,7 @@ EAPI Eio_File *eio_file_move(const char *source,
* if possible, if not it will fallback to mmap/write. It will try to preserve
* access rights, but not user/group identification.
*/
EAPI Eio_File *eio_file_copy(const char *source,
EIO_API Eio_File *eio_file_copy(const char *source,
const char *dest,
Eio_Progress_Cb progress_cb,
Eio_Done_Cb done_cb,
@ -509,7 +509,7 @@ EAPI Eio_File *eio_file_copy(const char *source,
*
* @note if a rename occurs, the filter callback will not be called.
*/
EAPI Eio_File *eio_dir_move(const char *source,
EIO_API Eio_File *eio_dir_move(const char *source,
const char *dest,
Eio_Filter_Direct_Cb filter_cb,
Eio_Progress_Cb progress_cb,
@ -537,7 +537,7 @@ EAPI Eio_File *eio_dir_move(const char *source,
* want to pass the file to the main_cb or not. Return EINA_TRUE to pass it to
* the main_cb or EINA_FALSE to ignore it.
*/
EAPI Eio_File *eio_dir_copy(const char *source,
EIO_API Eio_File *eio_dir_copy(const char *source,
const char *dest,
Eio_Filter_Direct_Cb filter_cb,
Eio_Progress_Cb progress_cb,
@ -562,7 +562,7 @@ EAPI Eio_File *eio_dir_copy(const char *source,
* want to pass the file to the main_cb or not. Return EINA_TRUE to pass it to
* the main_cb or EINA_FALSE to ignore it.
*/
EAPI Eio_File *eio_dir_unlink(const char *path,
EIO_API Eio_File *eio_dir_unlink(const char *path,
Eio_Filter_Direct_Cb filter_cb,
Eio_Progress_Cb progress_cb,
Eio_Done_Cb done_cb,
@ -593,7 +593,7 @@ EAPI Eio_File *eio_dir_unlink(const char *path,
* @param data Unmodified user data passed to callbacks
* @return A reference to the I/O operation.
*/
EAPI Eio_File *eio_file_xattr(const char *path,
EIO_API Eio_File *eio_file_xattr(const char *path,
Eio_Filter_Cb filter_cb,
Eio_Main_Cb main_cb,
Eio_Done_Cb done_cb,
@ -614,7 +614,7 @@ EAPI Eio_File *eio_file_xattr(const char *path,
* eio_file_xattr_int_set calls eina_xattr_int_set from another thread. This prevents blocking in your apps. If
* the writing succeeded, the done_cb will be called even if a cancel was requested, but came too late.
*/
EAPI Eio_File *eio_file_xattr_int_set(const char *path,
EIO_API Eio_File *eio_file_xattr_int_set(const char *path,
const char *attribute,
int xattr_int,
Eina_Xattr_Flags flags,
@ -636,7 +636,7 @@ EAPI Eio_File *eio_file_xattr_int_set(const char *path,
* eio_file_xattr_double_set calls eina_xattr_double_set from another thread. This prevents blocking in your apps. If
* the writing succeeded, the done_cb will be called even if a cancel was requested, but came too late.
*/
EAPI Eio_File *eio_file_xattr_double_set(const char *path,
EIO_API Eio_File *eio_file_xattr_double_set(const char *path,
const char *attribute,
double xattr_double,
Eina_Xattr_Flags flags,
@ -657,7 +657,7 @@ EAPI Eio_File *eio_file_xattr_double_set(const char *path,
* eio_file_xattr_string_set calls eina_xattr_string_set from another thread. This prevents blocking in your apps. If
* the writing succeeded, the done_cb will be called even if a cancel was requested, but came too late.
*/
EAPI Eio_File *eio_file_xattr_string_set(const char *path,
EIO_API Eio_File *eio_file_xattr_string_set(const char *path,
const char *attribute,
const char *xattr_string,
Eina_Xattr_Flags flags,
@ -679,7 +679,7 @@ EAPI Eio_File *eio_file_xattr_string_set(const char *path,
* eio_file_xattr_set calls setxattr from another thread. This prevents blocking in your apps. If
* the writing succeeded, the done_cb will be called even if a cancel was requested, but came too late.
*/
EAPI Eio_File *eio_file_xattr_set(const char *path,
EIO_API Eio_File *eio_file_xattr_set(const char *path,
const char *attribute,
const char *xattr_data,
unsigned int xattr_size,
@ -699,7 +699,7 @@ EAPI Eio_File *eio_file_xattr_set(const char *path,
*
* eio_file_xattr_get calls getxattr from another thread. This prevents blocking in your apps.
*/
EAPI Eio_File *eio_file_xattr_get(const char *path,
EIO_API Eio_File *eio_file_xattr_get(const char *path,
const char *attribute,
Eio_Done_Data_Cb done_cb,
Eio_Error_Cb error_cb,
@ -715,7 +715,7 @@ EAPI Eio_File *eio_file_xattr_get(const char *path,
*
* eio_file_xattr_int_get calls eina_xattr_int_get from another thread. This prevents blocking in your apps.
*/
EAPI Eio_File *eio_file_xattr_int_get(const char *path,
EIO_API Eio_File *eio_file_xattr_int_get(const char *path,
const char *attribute,
Eio_Done_Int_Cb done_cb,
Eio_Error_Cb error_cb,
@ -731,7 +731,7 @@ EAPI Eio_File *eio_file_xattr_int_get(const char *path,
*
* eio_file_xattr_double_get calls eina_xattr_double_get from another thread. This prevents blocking in your apps.
*/
EAPI Eio_File *eio_file_xattr_double_get(const char *path,
EIO_API Eio_File *eio_file_xattr_double_get(const char *path,
const char *attribute,
Eio_Done_Double_Cb done_cb,
Eio_Error_Cb error_cb,
@ -747,7 +747,7 @@ EAPI Eio_File *eio_file_xattr_double_get(const char *path,
*
* eio_file_xattr_string_get calls eina_xattr_string_get from another thread. This prevents blocking in your apps.
*/
EAPI Eio_File *eio_file_xattr_string_get(const char *path,
EIO_API Eio_File *eio_file_xattr_string_get(const char *path,
const char *attribute,
Eio_Done_String_Cb done_cb,
Eio_Error_Cb error_cb,
@ -774,13 +774,13 @@ EAPI Eio_File *eio_file_xattr_string_get(const char *path,
* @brief Initialize eio and all its required submodule.
* @return the current number of eio users.
*/
EAPI int eio_init(void);
EIO_API int eio_init(void);
/**
* @brief Shutdown eio and all its submodule if possible.
* @return the number of pending users of eio.
*/
EAPI int eio_shutdown(void);
EIO_API int eio_shutdown(void);
/**
* @brief Set the limit to the maximum amount of memory used
@ -798,7 +798,7 @@ EAPI int eio_shutdown(void);
* the thread might stall.
* @since 1.10
*/
EAPI void eio_memory_burst_limit_set(size_t limit);
EIO_API void eio_memory_burst_limit_set(size_t limit);
/**
* @brief Get the actual limit to the maximum amount of memory used
@ -807,7 +807,7 @@ EAPI void eio_memory_burst_limit_set(size_t limit);
* @since 1.10
* @see eio_memory_burst_limit_set
*/
EAPI size_t eio_memory_burst_limit_get(void);
EIO_API size_t eio_memory_burst_limit_get(void);
/**
* @brief Return the container during EIO operation
@ -817,7 +817,7 @@ EAPI size_t eio_memory_burst_limit_get(void);
* This is only available and make sense in the thread callback, not in
* the mainloop.
*/
EAPI void *eio_file_container_get(Eio_File *ls);
EIO_API void *eio_file_container_get(Eio_File *ls);
/**
* @brief Cancel any Eio_File.
@ -827,7 +827,7 @@ EAPI void *eio_file_container_get(Eio_File *ls);
* This will cancel any kind of I/O operation and cleanup the mess. This means
* that it could take time to cancel an I/O.
*/
EAPI Eina_Bool eio_file_cancel(Eio_File *ls);
EIO_API Eina_Bool eio_file_cancel(Eio_File *ls);
/**
* @brief Check if an Eio_File operation has been cancelled.
@ -836,7 +836,7 @@ EAPI Eina_Bool eio_file_cancel(Eio_File *ls);
*
* In case of an error it also return EINA_TRUE.
*/
EAPI Eina_Bool eio_file_check(Eio_File *ls);
EIO_API Eina_Bool eio_file_check(Eio_File *ls);
/**
* @brief Associate data with the current filtered file.
@ -851,7 +851,7 @@ EAPI Eina_Bool eio_file_check(Eio_File *ls);
* This function can only be safely called from within the filter callback.
* If you don't need to copy the key around you can use @ref eio_file_associate_direct_add
*/
EAPI Eina_Bool eio_file_associate_add(Eio_File *ls,
EIO_API Eina_Bool eio_file_associate_add(Eio_File *ls,
const char *key,
const void *data, Eina_Free_Cb free_cb);
@ -867,7 +867,7 @@ EAPI Eina_Bool eio_file_associate_add(Eio_File *ls,
* If you need eio to make a proper copy of the @p key to be safe use
* @ref eio_file_associate_add instead.
*/
EAPI Eina_Bool eio_file_associate_direct_add(Eio_File *ls,
EIO_API Eina_Bool eio_file_associate_direct_add(Eio_File *ls,
const char *key,
const void *data, Eina_Free_Cb free_cb);
@ -877,7 +877,7 @@ EAPI Eina_Bool eio_file_associate_direct_add(Eio_File *ls,
* @param key The key pointing to the data to retrieve.
* @return the data associated with the key or @p NULL if not found.
*/
EAPI void *eio_file_associate_find(Eio_File *ls, const char *key);
EIO_API void *eio_file_associate_find(Eio_File *ls, const char *key);
/**
* @}
@ -909,7 +909,7 @@ EAPI void *eio_file_associate_find(Eio_File *ls, const char *key);
* @return Pointer to the file if successful or NULL otherwise.
*
*/
EAPI Eio_File *eio_file_open(const char *name, Eina_Bool shared,
EIO_API Eio_File *eio_file_open(const char *name, Eina_Bool shared,
Eio_Open_Cb open_cb,
Eio_Error_Cb error_cb,
const void *data);
@ -922,7 +922,7 @@ EAPI Eio_File *eio_file_open(const char *name, Eina_Bool shared,
* @param data Unmodified user data passed to callbacks
* @return Pointer to the file if successful or NULL otherwise.
*/
EAPI Eio_File *eio_file_close(Eina_File *f,
EIO_API Eio_File *eio_file_close(Eina_File *f,
Eio_Done_Cb done_cb,
Eio_Error_Cb error_cb,
const void *data);
@ -939,7 +939,7 @@ EAPI Eio_File *eio_file_close(Eina_File *f,
*
* The container of the Eio_File is the Eina_File.
*/
EAPI Eio_File *eio_file_map_all(Eina_File *f,
EIO_API Eio_File *eio_file_map_all(Eina_File *f,
Eina_File_Populate rule,
Eio_Filter_Map_Cb filter_cb,
Eio_Map_Cb map_cb,
@ -960,7 +960,7 @@ EAPI Eio_File *eio_file_map_all(Eina_File *f,
*
* The container of the Eio_File is the Eina_File.
*/
EAPI Eio_File *eio_file_map_new(Eina_File *f,
EIO_API Eio_File *eio_file_map_new(Eina_File *f,
Eina_File_Populate rule,
unsigned long int offset,
unsigned long int length,
@ -994,7 +994,7 @@ EAPI Eio_File *eio_file_map_new(Eina_File *f,
*
* This function calls eet_open() from another thread using Ecore_Thread.
*/
EAPI Eio_File *eio_eet_open(const char *filename,
EIO_API Eio_File *eio_eet_open(const char *filename,
Eet_File_Mode mode,
Eio_Eet_Open_Cb eet_cb,
Eio_Error_Cb error_cb,
@ -1011,7 +1011,7 @@ EAPI Eio_File *eio_eet_open(const char *filename,
* using Ecore_Thread. You should assume that the Eet_File is dead after this
* function is called.
*/
EAPI Eio_File *eio_eet_close(Eet_File *ef,
EIO_API Eio_File *eio_eet_close(Eet_File *ef,
Eio_Done_Cb done_cb,
Eio_Eet_Error_Cb error_cb,
const void *data);
@ -1027,7 +1027,7 @@ EAPI Eio_File *eio_eet_close(Eet_File *ef,
* This function will call eet_sync() from another thread. As long as the done_cb or
* error_cb haven't be called, you must keep @p ef open.
*/
EAPI Eio_File *eio_eet_sync(Eet_File *ef,
EIO_API Eio_File *eio_eet_sync(Eet_File *ef,
Eio_Done_Cb done_cb,
Eio_Eet_Error_Cb error_cb,
const void *data);
@ -1046,7 +1046,7 @@ EAPI Eio_File *eio_eet_sync(Eet_File *ef,
* @param user_data Private data given to each callback.
* @return NULL in case of a failure.
*/
EAPI Eio_File *eio_eet_data_write_cipher(Eet_File *ef,
EIO_API Eio_File *eio_eet_data_write_cipher(Eet_File *ef,
Eet_Data_Descriptor *edd,
const char *name,
const char *cipher_key,
@ -1067,7 +1067,7 @@ EAPI Eio_File *eio_eet_data_write_cipher(Eet_File *ef,
* @param data Unmodified user data passed to callbacks
* @return NULL in case of a failure.
*/
EAPI Eio_File *eio_eet_data_read_cipher(Eet_File *ef,
EIO_API Eio_File *eio_eet_data_read_cipher(Eet_File *ef,
Eet_Data_Descriptor *edd,
const char *name,
const char *cipher_key,
@ -1092,7 +1092,7 @@ EAPI Eio_File *eio_eet_data_read_cipher(Eet_File *ef,
* @param user_data Private data given to each callback.
* @return NULL in case of a failure.
*/
EAPI Eio_File *eio_eet_data_image_write_cipher(Eet_File *ef,
EIO_API Eio_File *eio_eet_data_image_write_cipher(Eet_File *ef,
const char *name,
const char *cipher_key,
void *write_data,
@ -1115,7 +1115,7 @@ EAPI Eio_File *eio_eet_data_image_write_cipher(Eet_File *ef,
* @param data Unmodified user data passed to callbacks
* @return NULL in case of a failure.
*/
EAPI Eio_File *eio_eet_read_direct(Eet_File *ef,
EIO_API Eio_File *eio_eet_read_direct(Eet_File *ef,
const char *name,
Eio_Done_Data_Cb done_cb,
Eio_Error_Cb error_cb,
@ -1131,7 +1131,7 @@ EAPI Eio_File *eio_eet_read_direct(Eet_File *ef,
* @param data Unmodified user data passed to callbacks
* @return NULL in case of a failure.
*/
EAPI Eio_File *eio_eet_read_cipher(Eet_File *ef,
EIO_API Eio_File *eio_eet_read_cipher(Eet_File *ef,
const char *name,
const char *cipher_key,
Eio_Done_Read_Cb done_cb,
@ -1151,7 +1151,7 @@ EAPI Eio_File *eio_eet_read_cipher(Eet_File *ef,
* @param user_data Private data given to each callback.
* @return NULL in case of a failure.
*/
EAPI Eio_File *eio_eet_write_cipher(Eet_File *ef,
EIO_API Eio_File *eio_eet_write_cipher(Eet_File *ef,
const char *name,
void *write_data,
int size,
@ -1178,17 +1178,17 @@ EAPI Eio_File *eio_eet_write_cipher(Eet_File *ef,
* @{
*/
EAPI extern int EIO_MONITOR_FILE_CREATED; /**< A new file was created in a watched directory */
EAPI extern int EIO_MONITOR_FILE_DELETED; /**< A watched file was deleted, or a file in a watched directory was deleted */
EAPI extern int EIO_MONITOR_FILE_MODIFIED; /**< A file was modified in a watched directory */
EAPI extern int EIO_MONITOR_FILE_CLOSED; /**< A file was closed in a watched directory. This event is never sent on Windows and OSX, or for non-fallback monitors */
EAPI extern int EIO_MONITOR_DIRECTORY_CREATED; /**< A new directory was created in a watched directory */
EAPI extern int EIO_MONITOR_DIRECTORY_DELETED; /**< A directory has been deleted: this can be either a watched directory or one of its subdirectories */
EAPI extern int EIO_MONITOR_DIRECTORY_MODIFIED; /**< A directory has been modified in a watched directory */
EAPI extern int EIO_MONITOR_DIRECTORY_CLOSED; /**< A directory has been closed in a watched directory. This event is never sent on Windows and OSX, or for non-fallback monitors */
EAPI extern int EIO_MONITOR_SELF_RENAME; /**< The monitored path has been renamed, an error could happen just after if the renamed path doesn't exist. This event is never sent on OSX, or for non-fallback monitors */
EAPI extern int EIO_MONITOR_SELF_DELETED; /**< The monitored path has been removed. This event is never sent on OSX */
EAPI extern int EIO_MONITOR_ERROR; /**< During operation the monitor failed and will no longer work. eio_monitor_del must be called on it. */
EIO_API extern int EIO_MONITOR_FILE_CREATED; /**< A new file was created in a watched directory */
EIO_API extern int EIO_MONITOR_FILE_DELETED; /**< A watched file was deleted, or a file in a watched directory was deleted */
EIO_API extern int EIO_MONITOR_FILE_MODIFIED; /**< A file was modified in a watched directory */
EIO_API extern int EIO_MONITOR_FILE_CLOSED; /**< A file was closed in a watched directory. This event is never sent on Windows and OSX, or for non-fallback monitors */
EIO_API extern int EIO_MONITOR_DIRECTORY_CREATED; /**< A new directory was created in a watched directory */
EIO_API extern int EIO_MONITOR_DIRECTORY_DELETED; /**< A directory has been deleted: this can be either a watched directory or one of its subdirectories */
EIO_API extern int EIO_MONITOR_DIRECTORY_MODIFIED; /**< A directory has been modified in a watched directory */
EIO_API extern int EIO_MONITOR_DIRECTORY_CLOSED; /**< A directory has been closed in a watched directory. This event is never sent on Windows and OSX, or for non-fallback monitors */
EIO_API extern int EIO_MONITOR_SELF_RENAME; /**< The monitored path has been renamed, an error could happen just after if the renamed path doesn't exist. This event is never sent on OSX, or for non-fallback monitors */
EIO_API extern int EIO_MONITOR_SELF_DELETED; /**< The monitored path has been removed. This event is never sent on OSX */
EIO_API extern int EIO_MONITOR_ERROR; /**< During operation the monitor failed and will no longer work. eio_monitor_del must be called on it. */
typedef struct _Eio_Monitor Eio_Monitor;
@ -1217,7 +1217,7 @@ struct _Eio_Monitor_Event
* list of files to monitor. It utilizes the inotify mechanism
* introduced in kernel 2.6.13 for passive monitoring.
*/
EAPI Eio_Monitor *eio_monitor_add(const char *path);
EIO_API Eio_Monitor *eio_monitor_add(const char *path);
/**
* @brief Adds a file/directory to monitor
@ -1230,7 +1230,7 @@ EAPI Eio_Monitor *eio_monitor_add(const char *path);
* This function is just like eio_monitor_add(), however the string passed by
* argument must be created using eina_stringshare_add().
*/
EAPI Eio_Monitor *eio_monitor_stringshared_add(const char *path);
EIO_API Eio_Monitor *eio_monitor_stringshared_add(const char *path);
/**
* @brief Deletes a path from the watched list
@ -1238,7 +1238,7 @@ EAPI Eio_Monitor *eio_monitor_stringshared_add(const char *path);
* It can only be an Eio_Monitor returned to you from calling
* eio_monitor_add() or eio_monitor_stringshared_add()
*/
EAPI void eio_monitor_del(Eio_Monitor *monitor);
EIO_API void eio_monitor_del(Eio_Monitor *monitor);
/**
* @brief returns the path being watched by the given
@ -1246,7 +1246,7 @@ EAPI void eio_monitor_del(Eio_Monitor *monitor);
* @param monitor Eio_Monitor to return the path of
* @return The stringshared path belonging to @p monitor
*/
EAPI const char *eio_monitor_path_get(Eio_Monitor *monitor);
EIO_API const char *eio_monitor_path_get(Eio_Monitor *monitor);
#ifdef EFL_BETA_API_SUPPORT
/**
@ -1259,7 +1259,7 @@ EAPI const char *eio_monitor_path_get(Eio_Monitor *monitor);
*
* @since 1.21
*/
EAPI Eina_Bool eio_monitor_fallback_check(const Eio_Monitor *monitor);
EIO_API Eina_Bool eio_monitor_fallback_check(const Eio_Monitor *monitor);
/**
* @brief Check if a monitor has the context about a file or not
@ -1276,7 +1276,7 @@ EAPI Eina_Bool eio_monitor_fallback_check(const Eio_Monitor *monitor);
*
* @since 1.23
*/
EAPI Eina_Bool eio_monitor_has_context(const Eio_Monitor *monitor, const char *path);
EIO_API Eina_Bool eio_monitor_has_context(const Eio_Monitor *monitor, const char *path);
#endif
/**
* @}

View File

@ -845,7 +845,7 @@ _eio_dir_stat_error(void *data, Ecore_Thread *thread EINA_UNUSED)
*============================================================================*/
EAPI Eio_File *
EIO_API Eio_File *
eio_dir_copy(const char *source,
const char *dest,
Eio_Filter_Direct_Cb filter_cb,
@ -886,7 +886,7 @@ eio_dir_copy(const char *source,
return &copy->progress.common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_dir_move(const char *source,
const char *dest,
Eio_Filter_Direct_Cb filter_cb,
@ -927,7 +927,7 @@ eio_dir_move(const char *source,
return &move->progress.common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_dir_unlink(const char *path,
Eio_Filter_Direct_Cb filter_cb,
Eio_Progress_Cb progress_cb,
@ -1014,7 +1014,7 @@ _eio_dir_stat_internal_ls(const char *dir,
return &async->ls.common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_dir_stat_ls(const char *dir,
Eio_Filter_Direct_Cb filter_cb,
Eio_Main_Direct_Cb main_cb,
@ -1082,7 +1082,7 @@ _eio_dir_direct_internal_ls(const char *dir,
return &async->ls.common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_dir_direct_ls(const char *dir,
Eio_Filter_Dir_Cb filter_cb,
Eio_Main_Direct_Cb main_cb,

View File

@ -307,7 +307,7 @@ _eio_eet_read_cipher_end(void *data, Ecore_Thread *thread EINA_UNUSED)
* API *
*============================================================================*/
EAPI Eio_File *
EIO_API Eio_File *
eio_eet_open(const char *filename,
Eet_File_Mode mode,
Eio_Eet_Open_Cb eet_cb,
@ -339,7 +339,7 @@ eio_eet_open(const char *filename,
return &eet->common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_eet_close(Eet_File *ef,
Eio_Done_Cb done_cb,
Eio_Eet_Error_Cb error_cb,
@ -369,7 +369,7 @@ eio_eet_close(Eet_File *ef,
return &eet->common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_eet_flush(Eet_File *ef,
Eio_Done_Cb done_cb,
Eio_Eet_Error_Cb error_cb,
@ -399,7 +399,7 @@ eio_eet_flush(Eet_File *ef,
return &eet->common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_eet_sync(Eet_File *ef,
Eio_Done_Cb done_cb,
Eio_Eet_Error_Cb error_cb,
@ -408,7 +408,7 @@ eio_eet_sync(Eet_File *ef,
return eio_eet_flush(ef, done_cb, error_cb, data);
}
EAPI Eio_File *
EIO_API Eio_File *
eio_eet_data_write_cipher(Eet_File *ef,
Eet_Data_Descriptor *edd,
const char *name,
@ -450,7 +450,7 @@ eio_eet_data_write_cipher(Eet_File *ef,
return &ew->common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_eet_data_read_cipher(Eet_File *ef,
Eet_Data_Descriptor *edd,
const char *name,
@ -488,7 +488,7 @@ eio_eet_data_read_cipher(Eet_File *ef,
return &er->common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_eet_data_image_write_cipher(Eet_File *ef,
const char *name,
const char *cipher_key,
@ -537,7 +537,7 @@ eio_eet_data_image_write_cipher(Eet_File *ef,
return &eiw->common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_eet_read_direct(Eet_File *ef,
const char *name,
Eio_Done_Data_Cb done_cb,
@ -572,7 +572,7 @@ eio_eet_read_direct(Eet_File *ef,
return &er->common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_eet_read_cipher(Eet_File *ef,
const char *name,
const char *cipher_key,
@ -607,7 +607,7 @@ eio_eet_read_cipher(Eet_File *ef,
return &er->common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_eet_write_cipher(Eet_File *ef,
const char *name,
void *write_data,

View File

@ -573,7 +573,7 @@ _eio_file_internal_ls(const char *dir,
return &async->ls.common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_file_ls(const char *dir,
Eio_Filter_Cb filter_cb,
Eio_Main_Cb main_cb,
@ -641,7 +641,7 @@ _eio_file_direct_internal_ls(const char *dir,
return &async->ls.common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_file_direct_ls(const char *dir,
Eio_Filter_Direct_Cb filter_cb,
Eio_Main_Direct_Cb main_cb,
@ -709,7 +709,7 @@ _eio_file_stat_internal_ls(const char *dir,
return &async->ls.common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_file_stat_ls(const char *dir,
Eio_Filter_Direct_Cb filter_cb,
Eio_Main_Direct_Cb main_cb,
@ -734,7 +734,7 @@ _eio_file_stat_ls(const char *dir,
return _eio_file_stat_internal_ls(dir, NULL, NULL, main_internal_cb, done_cb, error_cb, data);
}
EAPI Eina_Bool
EIO_API Eina_Bool
eio_file_cancel(Eio_File *ls)
{
if (!ls) return EINA_FALSE;
@ -748,21 +748,21 @@ eio_file_cancel(Eio_File *ls)
return ecore_thread_cancel(ls->thread);
}
EAPI Eina_Bool
EIO_API Eina_Bool
eio_file_check(Eio_File *ls)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(ls, EINA_TRUE);
return ecore_thread_check(ls->thread);
}
EAPI void *
EIO_API void *
eio_file_container_get(Eio_File *ls)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(ls, NULL);
return ls->container;
}
EAPI Eina_Bool
EIO_API Eina_Bool
eio_file_associate_add(Eio_File *ls,
const char *key,
const void *data, Eina_Free_Cb free_cb)
@ -778,7 +778,7 @@ eio_file_associate_add(Eio_File *ls,
eio_associate_malloc(data, free_cb));
}
EAPI Eina_Bool
EIO_API Eina_Bool
eio_file_associate_direct_add(Eio_File *ls,
const char *key,
const void *data, Eina_Free_Cb free_cb)
@ -794,7 +794,7 @@ eio_file_associate_direct_add(Eio_File *ls,
eio_associate_malloc(data, free_cb));
}
EAPI void *
EIO_API void *
eio_file_associate_find(Eio_File *ls, const char *key)
{
Eio_File_Associate *search;
@ -809,7 +809,7 @@ eio_file_associate_find(Eio_File *ls, const char *key)
return search->data;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_file_copy(const char *source,
const char *dest,
Eio_Progress_Cb progress_cb,
@ -845,7 +845,7 @@ eio_file_copy(const char *source,
return &copy->common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_file_move(const char *source,
const char *dest,
Eio_Progress_Cb progress_cb,

View File

@ -24,7 +24,7 @@
*============================================================================*/
static Eio_Version _version = { VMAJ, VMIN, VMIC, VREV };
EAPI Eio_Version *eio_version = &_version;
EIO_API Eio_Version *eio_version = &_version;
/**
* @cond LOCAL
@ -272,7 +272,7 @@ eio_file_unregister(Eio_File *common)
* API *
*============================================================================*/
EAPI int
EIO_API int
eio_init(void)
{
if (++_eio_init_count != 1)
@ -336,7 +336,7 @@ shutdown_eina:
return --_eio_init_count;
}
EAPI int
EIO_API int
eio_shutdown(void)
{
Eio_File_Direct_Info *info;
@ -409,7 +409,7 @@ eio_shutdown(void)
return _eio_init_count;
}
EAPI void
EIO_API void
eio_memory_burst_limit_set(size_t limit)
{
eina_lock_take(&(memory_pool_mutex));
@ -422,7 +422,7 @@ eio_memory_burst_limit_set(size_t limit)
eina_lock_release(&(memory_pool_mutex));
}
EAPI size_t
EIO_API size_t
eio_memory_burst_limit_get(void)
{
return memory_pool_limit;

View File

@ -179,7 +179,7 @@ _eio_file_map_cancel(void *data, Ecore_Thread *thread EINA_UNUSED)
* API *
*============================================================================*/
EAPI Eio_File *
EIO_API Eio_File *
eio_file_open(const char *name, Eina_Bool shared,
Eio_Open_Cb open_cb,
Eio_Error_Cb error_cb,
@ -211,7 +211,7 @@ eio_file_open(const char *name, Eina_Bool shared,
return &map->common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_file_close(Eina_File *f,
Eio_Done_Cb done_cb,
Eio_Error_Cb error_cb,
@ -241,7 +241,7 @@ eio_file_close(Eina_File *f,
return &map->common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_file_map_all(Eina_File *f,
Eina_File_Populate rule,
Eio_Filter_Map_Cb filter_cb,
@ -277,7 +277,7 @@ eio_file_map_all(Eina_File *f,
return &map->common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_file_map_new(Eina_File *f,
Eina_File_Populate rule,
unsigned long int offset,

View File

@ -302,19 +302,19 @@ _eio_monitor_rename(Eio_Monitor *monitor, const char *newpath)
* API *
*============================================================================*/
EAPI int EIO_MONITOR_ERROR;
EAPI int EIO_MONITOR_FILE_CREATED;
EAPI int EIO_MONITOR_FILE_DELETED;
EAPI int EIO_MONITOR_FILE_MODIFIED;
EAPI int EIO_MONITOR_FILE_CLOSED;
EAPI int EIO_MONITOR_DIRECTORY_CREATED;
EAPI int EIO_MONITOR_DIRECTORY_DELETED;
EAPI int EIO_MONITOR_DIRECTORY_MODIFIED;
EAPI int EIO_MONITOR_DIRECTORY_CLOSED;
EAPI int EIO_MONITOR_SELF_RENAME;
EAPI int EIO_MONITOR_SELF_DELETED;
EIO_API int EIO_MONITOR_ERROR;
EIO_API int EIO_MONITOR_FILE_CREATED;
EIO_API int EIO_MONITOR_FILE_DELETED;
EIO_API int EIO_MONITOR_FILE_MODIFIED;
EIO_API int EIO_MONITOR_FILE_CLOSED;
EIO_API int EIO_MONITOR_DIRECTORY_CREATED;
EIO_API int EIO_MONITOR_DIRECTORY_DELETED;
EIO_API int EIO_MONITOR_DIRECTORY_MODIFIED;
EIO_API int EIO_MONITOR_DIRECTORY_CLOSED;
EIO_API int EIO_MONITOR_SELF_RENAME;
EIO_API int EIO_MONITOR_SELF_DELETED;
EAPI Eio_Monitor *
EIO_API Eio_Monitor *
eio_monitor_add(const char *path)
{
const char *tmp;
@ -327,7 +327,7 @@ eio_monitor_add(const char *path)
return ret;
}
EAPI Eio_Monitor *
EIO_API Eio_Monitor *
eio_monitor_stringshared_add(const char *path)
{
Eio_Monitor *monitor;
@ -397,7 +397,7 @@ eio_monitor_stringshared_add(const char *path)
return monitor;
}
EAPI void
EIO_API void
eio_monitor_del(Eio_Monitor *monitor)
{
if (!monitor) return;
@ -405,7 +405,7 @@ eio_monitor_del(Eio_Monitor *monitor)
_eio_monitor_free(monitor);
}
EAPI const char *
EIO_API const char *
eio_monitor_path_get(Eio_Monitor *monitor)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(monitor, NULL);
@ -413,7 +413,7 @@ eio_monitor_path_get(Eio_Monitor *monitor)
}
EAPI Eina_Bool
EIO_API Eina_Bool
eio_monitor_has_context(const Eio_Monitor *monitor, const char *path)
{
if (monitor->fallback)

View File

@ -407,7 +407,7 @@ eio_monitor_fallback_del(Eio_Monitor *monitor)
*============================================================================*/
EAPI void
EIO_API void
eio_monitoring_interval_set(double interval)
{
Eina_Iterator *it;
@ -422,7 +422,7 @@ eio_monitoring_interval_set(double interval)
eina_iterator_free(it);
}
EAPI Eina_Bool
EIO_API Eina_Bool
eio_monitor_fallback_check(const Eio_Monitor *monitor)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(monitor, EINA_FALSE);

View File

@ -418,7 +418,7 @@ eio_file_container_set(Eio_File *common, void *container)
* API *
*============================================================================*/
EAPI Eio_File *
EIO_API Eio_File *
eio_file_direct_stat(const char *path,
Eio_Stat_Cb done_cb,
Eio_Error_Cb error_cb,
@ -450,7 +450,7 @@ eio_file_direct_stat(const char *path,
return &s->common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_file_direct_lstat(const char *path,
Eio_Stat_Cb done_cb,
Eio_Error_Cb error_cb,
@ -480,7 +480,7 @@ eio_file_direct_lstat(const char *path,
return &s->common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_file_unlink(const char *path,
Eio_Done_Cb done_cb,
Eio_Error_Cb error_cb,
@ -509,7 +509,7 @@ eio_file_unlink(const char *path,
return &l->common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_file_mkdir(const char *path,
mode_t mode,
Eio_Done_Cb done_cb,
@ -540,7 +540,7 @@ eio_file_mkdir(const char *path,
return &r->common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_file_chmod(const char *path,
mode_t mode,
Eio_Done_Cb done_cb,
@ -571,7 +571,7 @@ eio_file_chmod(const char *path,
return &r->common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_file_chown(const char *path,
const char *user,
const char *group,

View File

@ -349,7 +349,7 @@ _eio_file_internal_xattr(const char *path,
return &async->ls.common;
}
EAPI Eio_File *
EIO_API Eio_File *
eio_file_xattr(const char *path,
Eio_Filter_Cb filter_cb,
Eio_Main_Cb main_cb,
@ -374,7 +374,7 @@ _eio_file_xattr(const char *path,
return _eio_file_internal_xattr(path, NULL, NULL, main_internal_cb, done_cb, error_cb, data);
}
EAPI Eio_File *
EIO_API Eio_File *
eio_file_xattr_get(const char *path,
const char *attribute,
Eio_Done_Data_Cb done_cb,
@ -397,7 +397,7 @@ eio_file_xattr_get(const char *path,
return _eio_file_xattr_setup_get(async, path, attribute, error_cb, data);
}
EAPI Eio_File *
EIO_API Eio_File *
eio_file_xattr_string_get(const char *path,
const char *attribute,
Eio_Done_String_Cb done_cb,
@ -420,7 +420,7 @@ eio_file_xattr_string_get(const char *path,
return _eio_file_xattr_setup_get(async, path, attribute, error_cb, data);
}
EAPI Eio_File *
EIO_API Eio_File *
eio_file_xattr_double_get(const char *path,
const char *attribute,
Eio_Done_Double_Cb done_cb,
@ -443,7 +443,7 @@ eio_file_xattr_double_get(const char *path,
return _eio_file_xattr_setup_get(async, path, attribute, error_cb, data);
}
EAPI Eio_File *
EIO_API Eio_File *
eio_file_xattr_int_get(const char *path,
const char *attribute,
Eio_Done_Int_Cb done_cb,
@ -466,7 +466,7 @@ eio_file_xattr_int_get(const char *path,
return _eio_file_xattr_setup_get(async, path, attribute, error_cb, data);
}
EAPI Eio_File *
EIO_API Eio_File *
eio_file_xattr_set(const char *path,
const char *attribute,
const char *xattr_data,
@ -496,7 +496,7 @@ eio_file_xattr_set(const char *path,
return _eio_file_xattr_setup_set(async, path, attribute, flags, done_cb, error_cb, data);
}
EAPI Eio_File *
EIO_API Eio_File *
eio_file_xattr_string_set(const char *path,
const char *attribute,
const char *xattr_string,
@ -531,7 +531,7 @@ eio_file_xattr_string_set(const char *path,
return _eio_file_xattr_setup_set(async, path, attribute, flags, done_cb, error_cb, data);
}
EAPI Eio_File *
EIO_API Eio_File *
eio_file_xattr_double_set(const char *path,
const char *attribute,
double xattr_double,
@ -556,7 +556,7 @@ eio_file_xattr_double_set(const char *path,
return _eio_file_xattr_setup_set(async, path, attribute, flags, done_cb, error_cb, data);
}
EAPI Eio_File *
EIO_API Eio_File *
eio_file_xattr_int_set(const char *path,
const char *attribute,
int xattr_int,

View File

@ -18,6 +18,7 @@ foreach eo_file : pub_eo_files
meson.current_build_dir(), eo_file + '.h'),
'-o', 'c:' + join_paths(meson.current_build_dir(), eo_file + '.c'),
'-o', 'd:' + join_paths(meson.current_build_dir(), eo_file + '.d'),
'-e', 'EIO_API',
'-gchd', '@INPUT@'])
endforeach
@ -72,7 +73,7 @@ eio_lib = library('eio',
dependencies: eio_deps + eio_pub_deps + eio_ext_deps,
include_directories : config_dir + [include_directories('.')],
install: true,
c_args : package_c_args,
c_args : [package_c_args, '-DEIO_BUILD'],
link_args : linker_args,
version : meson.project_version()
)

View File

@ -17,7 +17,7 @@
#include "elm_priv.h"
#include "eo_internal.h"
#include <Elementary.h>
#include "Eio_Eo.h"
#include "Eio.h"
#include "elm_fileselector_button_eo.h"
#include "elm_fileselector_entry_eo.h"
#include "elm_interface_fileselector.h"

View File

@ -5,7 +5,7 @@
#define EFL_ACCESS_OBJECT_PROTECTED
#include <Elementary.h>
#include "Eio_Eo.h"
#include "Eio.h"
#include "elm_priv.h"
#include "elm_fileselector_button_eo.h"
#include "elm_fileselector_entry_eo.h"

View File

@ -7,7 +7,7 @@
#define EFL_PART_PROTECTED
#include <Elementary.h>
#include "Eio_Eo.h"
#include "Eio.h"
#include "elm_priv.h"
#include "elm_fileselector_button_eo.h"
#include "elm_fileselector_entry_eo.h"

View File

@ -4,7 +4,7 @@
#include "elm_priv.h"
#include "Eio_Eo.h"
#include "Eio.h"
#include "elm_interface_fileselector.h"