diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/Eulogium.h | 111 | ||||
-rw-r--r-- | src/lib/Makefile.am | 18 | ||||
-rw-r--r-- | src/lib/eulogium.c | 64 | ||||
-rw-r--r-- | src/lib/eulogium_private.h | 27 |
4 files changed, 220 insertions, 0 deletions
diff --git a/src/lib/Eulogium.h b/src/lib/Eulogium.h new file mode 100644 index 0000000..7ef7c0d --- /dev/null +++ b/src/lib/Eulogium.h @@ -0,0 +1,111 @@ +#ifndef EULOGIUM_H_ +# define EULOGIUM_H_ + +#include <Elementary.h> + +#ifdef EAPI +# undef EAPI +#endif + +#ifdef _WIN32 +# ifdef EFL_EULOGIUM_BUILD +# ifdef DLL_EXPORT +# define EAPI __declspec(dllexport) +# else +# define EAPI +# endif /* ! DLL_EXPORT */ +# else +# define EAPI __declspec(dllimport) +# endif /* ! EFL_EULOGIUM_BUILD */ +#else +# ifdef __GNUC__ +# if __GNUC__ >= 4 +# define EAPI __attribute__ ((visibility("default"))) +# else +# define EAPI +# endif +# else +# define EAPI +# endif +#endif /* ! _WIN32 */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @file + * @brief These routines are used for Eulogium library interaction. + */ + +/** + * @brief Init / shutdown functions. + * @defgroup Init Init / Shutdown + * + * @{ + * + * Functions of obligatory usage, handling proper initialization + * and shutdown routines. + * + * Before the usage of any other function, Eulogium should be properly + * initialized with @ref eulogium_init() and the last call to Eulogium's + * functions should be @ref eulogium_shutdown(), so everything will + * be correctly freed. + * + * Eulogium logs everything with Eina Log, using the "eulogium" log domain. + * + */ + +/** + * Initialize Eulogium. + * + * Initializes Eulogium, its dependencies and modules. Should be the first + * function of Eulogium to be called. + * + * @return The init counter value. + * + * @see eulogium_shutdown(). + * + * @ingroup Init + */ +EAPI int eulogium_init(void); + +/** + * Shutdown Eulogium + * + * Shutdown Eulogium. If init count reaches 0, all the internal structures will + * be freed. Any Eulogium library call after this point will leads to an error. + * + * @return Eulogium's init counter value. + * + * @see eulogium_init(). + * + * @ingroup Init + */ +EAPI int eulogium_shutdown(void); + +/** + * @} + */ + +/** + * @brief Main group API that wont do anything + * @defgroup Main Main + * + * @{ + * + * @brief A function that doesn't do any good nor any bad + * + * @ingroup Main + */ +EAPI void eulogium_library_call(void); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* EULOGIUM_H_ */ diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am new file mode 100644 index 0000000..56d5c22 --- /dev/null +++ b/src/lib/Makefile.am @@ -0,0 +1,18 @@ +MAINTAINERCLEANFILES = Makefile.in + +AM_CPPFLAGS = \ +-I$(top_srcdir)/src/lib \ +-I$(top_builddir)/src/lib \ +-DPACKAGE_LIB_DIR=\"$(libdir)\" \ +-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \ +@EFL_CFLAGS@ \ +-DEFL_EFL_BUILD + +lib_LTLIBRARIES = libeulogium.la + +includes_HEADERS = Eulogium.h +includesdir = $(includedir)/eulogium-@VMAJ@ + +libeulogium_la_SOURCES = eulogium.c +libeulogium_la_LIBADD = @EFL_LIBS@ -lm +libeulogium_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@ diff --git a/src/lib/eulogium.c b/src/lib/eulogium.c new file mode 100644 index 0000000..8e19356 --- /dev/null +++ b/src/lib/eulogium.c @@ -0,0 +1,64 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "Eulogium.h" + +#include "eulogium_private.h" + +static int _eulogium_init = 0; +int _eulogium_lib_log_dom = -1; + +EAPI int +eulogium_init(void) +{ + _eulogium_init++; + if (_eulogium_init > 1) return _eulogium_init; + + eina_init(); + + _eulogium_lib_log_dom = eina_log_domain_register("eulogium", EINA_COLOR_CYAN); + if (_eulogium_lib_log_dom < 0) + { + EINA_LOG_ERR("Eulogium can not create its log domain."); + goto shutdown_eina; + } + + // Put here your initialization logic of your library + + eina_log_timing(_eulogium_lib_log_dom, EINA_LOG_STATE_STOP, EINA_LOG_STATE_INIT); + + return _eulogium_init; + + shutdown_eina: + eina_shutdown(); + _eulogium_init--; + + return _eulogium_init; +} + +EAPI int +eulogium_shutdown(void) +{ + _eulogium_init--; + if (_eulogium_init != 0) return _eulogium_init; + + eina_log_timing(_eulogium_lib_log_dom, + EINA_LOG_STATE_START, + EINA_LOG_STATE_SHUTDOWN); + + // Put here your shutdown logic + + eina_log_domain_unregister(_eulogium_lib_log_dom); + _eulogium_lib_log_dom = -1; + + eina_shutdown(); + + return _eulogium_init; +} + +EAPI void +eulogium_library_call(void) +{ + INF("Not really doing anything useful."); +} diff --git a/src/lib/eulogium_private.h b/src/lib/eulogium_private.h new file mode 100644 index 0000000..ff03439 --- /dev/null +++ b/src/lib/eulogium_private.h @@ -0,0 +1,27 @@ +#ifndef EULOGIUM_PRIVATE_H +# define EULOGIUM_PRIVATE_H + +extern int _eulogium_lib_log_dom; + +#ifdef ERR +# undef ERR +#endif +#define ERR(...) EINA_LOG_DOM_ERR(_eulogium_lib_log_dom, __VA_ARGS__) +#ifdef INF +# undef INF +#endif +#define INF(...) EINA_LOG_DOM_INFO(_eulogium_lib_log_dom, __VA_ARGS__) +#ifdef WRN +# undef WRN +#endif +#define WRN(...) EINA_LOG_DOM_WARN(_eulogium_lib_log_dom, __VA_ARGS__) +#ifdef CRIT +# undef CRIT +#endif +#define CRIT(...) EINA_LOG_DOM_CRIT(_eulogium_lib_log_dom, __VA_ARGS__) +#ifdef DBG +# undef DBG +#endif +#define DBG(...) EINA_LOG_DOM_DBG(_eulogium_lib_log_dom, __VA_ARGS__) + +#endif |