diff --git a/src/lib/ecore/Ecore.h b/src/lib/ecore/Ecore.h index a6ac338cab..e843038964 100644 --- a/src/lib/ecore/Ecore.h +++ b/src/lib/ecore/Ecore.h @@ -361,4 +361,8 @@ extern "C" { #ifdef __cplusplus } #endif + +#undef EAPI +#define EAPI + #endif diff --git a/src/lib/ecore/ecore_private.h b/src/lib/ecore/ecore_private.h index afbfeb99a3..89f60137ac 100644 --- a/src/lib/ecore/ecore_private.h +++ b/src/lib/ecore/ecore_private.h @@ -3,6 +3,32 @@ #include +#ifdef EAPI +# undef EAPI +#endif + +#ifdef _WIN32 +# ifdef EFL_ECORE_BUILD +# ifdef DLL_EXPORT +# define EAPI __declspec(dllexport) +# else +# define EAPI +# endif /* ! DLL_EXPORT */ +# else +# define EAPI __declspec(dllimport) +# endif /* ! EFL_ECORE_BUILD */ +#else +# ifdef __GNUC__ +# if __GNUC__ >= 4 +# define EAPI __attribute__ ((visibility("default"))) +# else +# define EAPI +# endif +# else +# define EAPI +# endif +#endif /* ! _WIN32 */ + extern int _ecore_log_dom; #ifdef _ECORE_DEFAULT_LOG_DOM # undef _ECORE_DEFAULT_LOG_DOM @@ -422,4 +448,7 @@ extern Eo *_ecore_parent; #define ECORE_PARENT_CLASS ecore_parent_class_get() const Eo_Class *ecore_parent_class_get(void) EINA_CONST; +#undef EAPI +#define EAPI + #endif diff --git a/src/lib/ecore_audio/Ecore_Audio.h b/src/lib/ecore_audio/Ecore_Audio.h index edb9b49ea7..ec1f85b168 100644 --- a/src/lib/ecore_audio/Ecore_Audio.h +++ b/src/lib/ecore_audio/Ecore_Audio.h @@ -224,4 +224,7 @@ EAPI int ecore_audio_shutdown(void); * @} */ +#undef EAPI +#define EAPI + #endif diff --git a/src/lib/ecore_avahi/Ecore_Avahi.h b/src/lib/ecore_avahi/Ecore_Avahi.h index dc70b9ae10..1ba744348e 100644 --- a/src/lib/ecore_avahi/Ecore_Avahi.h +++ b/src/lib/ecore_avahi/Ecore_Avahi.h @@ -85,4 +85,7 @@ EAPI const void *ecore_avahi_poll_get(Ecore_Avahi *handler); // return AvahiPol } #endif +#undef EAPI +#define EAPI + #endif diff --git a/src/lib/ecore_cocoa/Ecore_Cocoa.h b/src/lib/ecore_cocoa/Ecore_Cocoa.h index 3b650011f3..78d15ced48 100644 --- a/src/lib/ecore_cocoa/Ecore_Cocoa.h +++ b/src/lib/ecore_cocoa/Ecore_Cocoa.h @@ -159,15 +159,17 @@ EAPI void ecore_cocoa_window_borderless_set(Ecore_Cocoa_Window *window, int on); EAPI void ecore_cocoa_window_view_set(Ecore_Cocoa_Window *window, - void *view); + void *view); EAPI int ecore_cocoa_titlebar_height_get(void); EAPI Ecore_Cocoa_Window_Id ecore_cocoa_window_get_window_id(Ecore_Cocoa_Window *window); - #ifdef __cplusplus } #endif +#undef EAPI +#define EAPI + #endif diff --git a/src/lib/ecore_con/Ecore_Con.h b/src/lib/ecore_con/Ecore_Con.h index 05448586a1..bf10fadd95 100644 --- a/src/lib/ecore_con/Ecore_Con.h +++ b/src/lib/ecore_con/Ecore_Con.h @@ -2227,4 +2227,7 @@ EAPI int ecore_con_url_status_code_get(Ecore_Con_Url *url_con); } #endif +#undef EAPI +#define EAPI + #endif diff --git a/src/lib/ecore_drm/Ecore_Drm.h b/src/lib/ecore_drm/Ecore_Drm.h index 302af389cf..feb48f8414 100644 --- a/src/lib/ecore_drm/Ecore_Drm.h +++ b/src/lib/ecore_drm/Ecore_Drm.h @@ -1,6 +1,12 @@ #ifndef _ECORE_DRM_H # define _ECORE_DRM_H +# include +# include +# include +# include +# include + # ifdef EAPI # undef EAPI # endif @@ -23,11 +29,9 @@ # endif // ifdef __GNUC__ # endif // ifdef _MSC_VER -# include -# include -# include -# include -# include +#ifdef __cplusplus +extern "C" { +#endif typedef enum _Ecore_Drm_Evdev_Capabilities { @@ -757,4 +761,11 @@ EAPI void ecore_drm_device_pointer_xy_get(Ecore_Drm_Device *dev, int *x, int *y) */ EAPI const Eina_List *ecore_drm_devices_get(void); +#ifdef __cplusplus +} +#endif + +#undef EAPI +#define EAPI + #endif diff --git a/src/lib/ecore_drm/ecore_drm.c b/src/lib/ecore_drm/ecore_drm.c index c2dbfb0e77..6bbbde05d7 100644 --- a/src/lib/ecore_drm/ecore_drm.c +++ b/src/lib/ecore_drm/ecore_drm.c @@ -2,7 +2,6 @@ # include "config.h" #endif -#include "Ecore_Drm.h" #include "ecore_drm_private.h" /* local variables */ diff --git a/src/lib/ecore_evas/Ecore_Evas.h b/src/lib/ecore_evas/Ecore_Evas.h index 9fb5923246..464c4704b4 100644 --- a/src/lib/ecore_evas/Ecore_Evas.h +++ b/src/lib/ecore_evas/Ecore_Evas.h @@ -2797,4 +2797,7 @@ EAPI int ecore_evas_pixmap_depth_get(const Ecore_Evas *ee); } #endif +#undef EAPI +#define EAPI + #endif diff --git a/src/lib/ecore_evas/ecore_evas_private.h b/src/lib/ecore_evas/ecore_evas_private.h index dc11228ff8..82e26200d6 100644 --- a/src/lib/ecore_evas/ecore_evas_private.h +++ b/src/lib/ecore_evas/ecore_evas_private.h @@ -1,6 +1,32 @@ #ifndef _ECORE_EVAS_PRIVATE_H #define _ECORE_EVAS_PRIVATE_H +#ifdef EAPI +# undef EAPI +#endif + +#ifdef _WIN32 +# ifdef EFL_ECORE_EVAS_BUILD +# ifdef DLL_EXPORT +# define EAPI __declspec(dllexport) +# else +# define EAPI +# endif /* ! DLL_EXPORT */ +# else +# define EAPI __declspec(dllimport) +# endif /* ! EFL_ECORE_EVAS_BUILD */ +#else +# ifdef __GNUC__ +# if __GNUC__ >= 4 +# define EAPI __attribute__ ((visibility("default"))) +# else +# define EAPI +# endif +# else +# define EAPI +# endif +#endif /* ! _WIN32 */ + #define ECORE_MAGIC_EVAS 0x76543211 /** Log domain macros and variables **/ @@ -392,5 +418,7 @@ const Eina_List *_ecore_evas_available_engines_get(void); void _ecore_evas_engine_init(void); void _ecore_evas_engine_shutdown(void); -#endif +#undef EAPI +#define EAPI +#endif diff --git a/src/lib/ecore_fb/Ecore_Fb.h b/src/lib/ecore_fb/Ecore_Fb.h index 69d37a49dd..5a898f204e 100644 --- a/src/lib/ecore_fb/Ecore_Fb.h +++ b/src/lib/ecore_fb/Ecore_Fb.h @@ -98,4 +98,7 @@ EAPI void ecore_fb_touch_screen_calibrate_get(int *xscale, } #endif +#undef EAPI +#define EAPI + #endif diff --git a/src/lib/ecore_file/Ecore_File.h b/src/lib/ecore_file/Ecore_File.h index 806ad87f84..c78b0b1929 100644 --- a/src/lib/ecore_file/Ecore_File.h +++ b/src/lib/ecore_file/Ecore_File.h @@ -187,4 +187,7 @@ EAPI Eina_Bool ecore_file_download_protocol_available(const char *protocol); } #endif +#undef EAPI +#define EAPI + #endif diff --git a/src/lib/ecore_imf/Ecore_IMF.h b/src/lib/ecore_imf/Ecore_IMF.h index c860d0b6f4..5e9766cf38 100644 --- a/src/lib/ecore_imf/Ecore_IMF.h +++ b/src/lib/ecore_imf/Ecore_IMF.h @@ -1871,4 +1871,7 @@ EAPI Ecore_IMF_BiDi_Direction ecore_imf_context_bidi_direction_get(Ecore_IM } #endif +#undef EAPI +#define EAPI + #endif diff --git a/src/lib/ecore_imf_evas/Ecore_IMF_Evas.h b/src/lib/ecore_imf_evas/Ecore_IMF_Evas.h index 84794c2db2..61005be713 100644 --- a/src/lib/ecore_imf_evas/Ecore_IMF_Evas.h +++ b/src/lib/ecore_imf_evas/Ecore_IMF_Evas.h @@ -165,4 +165,7 @@ EAPI void ecore_imf_evas_event_key_up_wrap(Evas_Event_Key_Up *evas_event, Ecore_ } #endif +#undef EAPI +#define EAPI + #endif diff --git a/src/lib/ecore_input/Ecore_Input.h b/src/lib/ecore_input/Ecore_Input.h index b9723c8835..f58c56e767 100644 --- a/src/lib/ecore_input/Ecore_Input.h +++ b/src/lib/ecore_input/Ecore_Input.h @@ -358,5 +358,8 @@ extern "C" { } #endif +#undef EAPI +#define EAPI + /** @} */ #endif diff --git a/src/lib/ecore_input_evas/Ecore_Input_Evas.h b/src/lib/ecore_input_evas/Ecore_Input_Evas.h index 9116107b9d..22960488b3 100644 --- a/src/lib/ecore_input_evas/Ecore_Input_Evas.h +++ b/src/lib/ecore_input_evas/Ecore_Input_Evas.h @@ -62,4 +62,7 @@ EAPI void ecore_event_evas_modifier_lock_update(Evas *e, unsigned int modif } #endif +#undef EAPI +#define EAPI + #endif diff --git a/src/lib/ecore_ipc/Ecore_Ipc.h b/src/lib/ecore_ipc/Ecore_Ipc.h index a3e38710b4..301ea24c43 100644 --- a/src/lib/ecore_ipc/Ecore_Ipc.h +++ b/src/lib/ecore_ipc/Ecore_Ipc.h @@ -359,11 +359,14 @@ EAPI void ecore_ipc_client_flush(Ecore_Ipc_Client *cl); EAPI int ecore_ipc_ssl_available_get(void); /* FIXME: need to add a callback to "ok" large ipc messages greater than */ /* a certain size (security/DOS attack safety) */ - + #ifdef __cplusplus } #endif +#undef EAPI +#define EAPI + /** * @} */ diff --git a/src/lib/ecore_psl1ght/Ecore_Psl1ght.h b/src/lib/ecore_psl1ght/Ecore_Psl1ght.h index c6300fda73..2eaca2903b 100644 --- a/src/lib/ecore_psl1ght/Ecore_Psl1ght.h +++ b/src/lib/ecore_psl1ght/Ecore_Psl1ght.h @@ -118,4 +118,7 @@ EAPI void ecore_psl1ght_optimal_screen_resolution_get(int *w, int *h); } #endif +#undef EAPI +#define EAPI + #endif diff --git a/src/lib/ecore_sdl/Ecore_Sdl.h b/src/lib/ecore_sdl/Ecore_Sdl.h index ed4bd0f0a9..36b69a4d4b 100644 --- a/src/lib/ecore_sdl/Ecore_Sdl.h +++ b/src/lib/ecore_sdl/Ecore_Sdl.h @@ -120,4 +120,7 @@ struct _Ecore_Sdl_Event_Mouse_Wheel /** SDL Mouse Wheel event */ } #endif +#undef EAPI +#define EAPI + #endif diff --git a/src/lib/ecore_wayland/Ecore_Wayland.h b/src/lib/ecore_wayland/Ecore_Wayland.h index dd1260e8e6..173501407f 100644 --- a/src/lib/ecore_wayland/Ecore_Wayland.h +++ b/src/lib/ecore_wayland/Ecore_Wayland.h @@ -964,8 +964,12 @@ EAPI void ecore_wl_subsurf_sync_set(Ecore_Wl_Subsurf *ess, Eina_Bool val); * @since 1.8 */ EAPI void ecore_wl_subsurf_opaque_region_set(Ecore_Wl_Subsurf *ess, int x, int y, int w, int h); + #ifdef __cplusplus } #endif +#undef EAPI +#define EAPI + #endif diff --git a/src/lib/ecore_win32/Ecore_Win32.h b/src/lib/ecore_win32/Ecore_Win32.h index ba0cc4d141..154ede87b6 100644 --- a/src/lib/ecore_win32/Ecore_Win32.h +++ b/src/lib/ecore_win32/Ecore_Win32.h @@ -520,10 +520,11 @@ EAPI void ecore_win32_dnd_unregister_drop_target(Ecore_Win32_Window *window * @} */ - #ifdef __cplusplus } #endif +#undef EAPI +#define EAPI #endif /* __ECORE_WIN32_H__ */ diff --git a/src/lib/ecore_x/Ecore_X.h b/src/lib/ecore_x/Ecore_X.h index b72957d0e1..a6c7d8086f 100644 --- a/src/lib/ecore_x/Ecore_X.h +++ b/src/lib/ecore_x/Ecore_X.h @@ -2708,11 +2708,14 @@ EAPI void ecore_x_e_window_rotation_change_prep EAPI void ecore_x_e_window_rotation_change_request_send(Ecore_X_Window win, int rot); /**< @since 1.9 */ EAPI void ecore_x_e_window_rotation_change_done_send(Ecore_X_Window root, Ecore_X_Window win, int rot, int w, int h); /**< @since 1.9 */ +#include +#include + #ifdef __cplusplus } #endif // ifdef __cplusplus -#include -#include +#undef EAPI +#define EAPI #endif // ifndef _ECORE_X_H diff --git a/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c b/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c index 985792be85..21f4e3ba15 100644 --- a/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c +++ b/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c @@ -13,6 +13,27 @@ #include "Ecore_Evas.h" #include "ecore_evas_private.h" +#ifdef EAPI +# undef EAPI +#endif + +#ifdef _WIN32 +# ifdef DLL_EXPORT +# define EAPI __declspec(dllexport) +# else +# define EAPI +# endif /* ! DLL_EXPORT */ +#else +# ifdef __GNUC__ +# if __GNUC__ >= 4 +# define EAPI __attribute__ ((visibility("default"))) +# else +# define EAPI +# endif +# else +# define EAPI +# endif +#endif /* ! _WIN32 */ // FIXME: this engine has lots of problems. only 1 window at a time, drawRect looks wrong, doesnt handle resizes and more diff --git a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c index 6ee3659944..01c230b47c 100644 --- a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c +++ b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c @@ -21,6 +21,28 @@ # include #endif +#ifdef EAPI +# undef EAPI +#endif + +#ifdef _WIN32 +# ifdef DLL_EXPORT +# define EAPI __declspec(dllexport) +# else +# define EAPI +# endif /* ! DLL_EXPORT */ +#else +# ifdef __GNUC__ +# if __GNUC__ >= 4 +# define EAPI __attribute__ ((visibility("default"))) +# else +# define EAPI +# endif +# else +# define EAPI +# endif +#endif /* ! _WIN32 */ + typedef struct _Ecore_Evas_Engine_Drm_Data Ecore_Evas_Engine_Drm_Data; struct _Ecore_Evas_Engine_Drm_Data diff --git a/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c b/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c index 9cb7f6f3ce..869005f907 100644 --- a/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c +++ b/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c @@ -1,5 +1,27 @@ #include "ecore_evas_extn_engine.h" +#ifdef EAPI +# undef EAPI +#endif + +#ifdef _WIN32 +# ifdef DLL_EXPORT +# define EAPI __declspec(dllexport) +# else +# define EAPI +# endif /* ! DLL_EXPORT */ +#else +# ifdef __GNUC__ +# if __GNUC__ >= 4 +# define EAPI __attribute__ ((visibility("default"))) +# else +# define EAPI +# endif +# else +# define EAPI +# endif +#endif /* ! _WIN32 */ + #define NBUF 2 static int blank = 0x00000000; diff --git a/src/modules/ecore_evas/engines/fb/ecore_evas_fb.c b/src/modules/ecore_evas/engines/fb/ecore_evas_fb.c index 8d008ac600..8042d0c082 100644 --- a/src/modules/ecore_evas/engines/fb/ecore_evas_fb.c +++ b/src/modules/ecore_evas/engines/fb/ecore_evas_fb.c @@ -18,6 +18,28 @@ #include "ecore_evas_private.h" #include +#ifdef EAPI +# undef EAPI +#endif + +#ifdef _WIN32 +# ifdef DLL_EXPORT +# define EAPI __declspec(dllexport) +# else +# define EAPI +# endif /* ! DLL_EXPORT */ +#else +# ifdef __GNUC__ +# if __GNUC__ >= 4 +# define EAPI __attribute__ ((visibility("default"))) +# else +# define EAPI +# endif +# else +# define EAPI +# endif +#endif /* ! _WIN32 */ + static int _ecore_evas_init_count = 0; static char *ecore_evas_default_display = "0"; diff --git a/src/modules/ecore_evas/engines/psl1ght/ecore_evas_psl1ght.c b/src/modules/ecore_evas/engines/psl1ght/ecore_evas_psl1ght.c index 011aeda7af..c3232649c5 100644 --- a/src/modules/ecore_evas/engines/psl1ght/ecore_evas_psl1ght.c +++ b/src/modules/ecore_evas/engines/psl1ght/ecore_evas_psl1ght.c @@ -13,6 +13,28 @@ #include #include "ecore_evas_private.h" +#ifdef EAPI +# undef EAPI +#endif + +#ifdef _WIN32 +# ifdef DLL_EXPORT +# define EAPI __declspec(dllexport) +# else +# define EAPI +# endif /* ! DLL_EXPORT */ +#else +# ifdef __GNUC__ +# if __GNUC__ >= 4 +# define EAPI __attribute__ ((visibility("default"))) +# else +# define EAPI +# endif +# else +# define EAPI +# endif +#endif /* ! _WIN32 */ + static int _ecore_evas_init_count = 0; static Ecore_Evas *psl1ght_ee = NULL; diff --git a/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c b/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c index 9a0e69b712..0c14c8957c 100644 --- a/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c +++ b/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c @@ -19,6 +19,28 @@ #include #include "ecore_evas_private.h" + +#ifdef EAPI +# undef EAPI +#endif + +#ifdef _WIN32 +# ifdef DLL_EXPORT +# define EAPI __declspec(dllexport) +# else +# define EAPI +# endif /* ! DLL_EXPORT */ +#else +# ifdef __GNUC__ +# if __GNUC__ >= 4 +# define EAPI __attribute__ ((visibility("default"))) +# else +# define EAPI +# endif +# else +# define EAPI +# endif +#endif /* ! _WIN32 */ /* * SDL only handle one window at a time. That's by definition, there is nothing wrong here. * diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c index 69624347a5..4cd115c1b2 100644 --- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c +++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c @@ -8,6 +8,28 @@ # include # include +#ifdef EAPI +# undef EAPI +#endif + +#ifdef _WIN32 +# ifdef DLL_EXPORT +# define EAPI __declspec(dllexport) +# else +# define EAPI +# endif /* ! DLL_EXPORT */ +#else +# ifdef __GNUC__ +# if __GNUC__ >= 4 +# define EAPI __attribute__ ((visibility("default"))) +# else +# define EAPI +# endif +# else +# define EAPI +# endif +#endif /* ! _WIN32 */ + /* local function prototypes */ static void _ecore_evas_wl_move_resize(Ecore_Evas *ee, int x, int y, int w, int h); static void _ecore_evas_wl_show(Ecore_Evas *ee); diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c index 697813f695..ce0d3343be 100644 --- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c +++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c @@ -8,6 +8,28 @@ # include # include +#ifdef EAPI +# undef EAPI +#endif + +#ifdef _WIN32 +# ifdef DLL_EXPORT +# define EAPI __declspec(dllexport) +# else +# define EAPI +# endif /* ! DLL_EXPORT */ +#else +# ifdef __GNUC__ +# if __GNUC__ >= 4 +# define EAPI __attribute__ ((visibility("default"))) +# else +# define EAPI +# endif +# else +# define EAPI +# endif +#endif /* ! _WIN32 */ + /* local function prototypes */ static void _ecore_evas_wl_move_resize(Ecore_Evas *ee, int x, int y, int w, int h); static void _ecore_evas_wl_show(Ecore_Evas *ee); diff --git a/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c b/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c index 6af18036b1..72fbab40bd 100644 --- a/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c +++ b/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c @@ -27,6 +27,28 @@ # include #endif +#ifdef EAPI +# undef EAPI +#endif + +#ifdef _WIN32 +# ifdef DLL_EXPORT +# define EAPI __declspec(dllexport) +# else +# define EAPI +# endif /* ! DLL_EXPORT */ +#else +# ifdef __GNUC__ +# if __GNUC__ >= 4 +# define EAPI __attribute__ ((visibility("default"))) +# else +# define EAPI +# endif +# else +# define EAPI +# endif +#endif /* ! _WIN32 */ + #ifdef BUILD_ECORE_EVAS_WIN32 #define ECORE_EVAS_EVENT_COUNT 10 diff --git a/src/modules/ecore_evas/engines/x/ecore_evas_x.c b/src/modules/ecore_evas/engines/x/ecore_evas_x.c index 2d77b1335f..63ccfbce5d 100644 --- a/src/modules/ecore_evas/engines/x/ecore_evas_x.c +++ b/src/modules/ecore_evas/engines/x/ecore_evas_x.c @@ -26,6 +26,28 @@ #include "ecore_evas_private.h" #include "ecore_evas_x11.h" +#ifdef EAPI +# undef EAPI +#endif + +#ifdef _WIN32 +# ifdef DLL_EXPORT +# define EAPI __declspec(dllexport) +# else +# define EAPI +# endif /* ! DLL_EXPORT */ +#else +# ifdef __GNUC__ +# if __GNUC__ >= 4 +# define EAPI __attribute__ ((visibility("default"))) +# else +# define EAPI +# endif +# else +# define EAPI +# endif +#endif /* ! _WIN32 */ + #define EDBG(...) \ EINA_LOG(_ecore_evas_log_dom, EINA_LOG_LEVEL_DBG + 1, __VA_ARGS__);