From c963d75dfdeec11f82e79e727062fbf89afa2c04 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Sun, 22 Apr 2012 09:19:23 +1000 Subject: Update EFL to latest beta. --- libraries/eina/src/lib/eina_stringshare.c | 77 +++++++++++++++++++++++-------- 1 file changed, 59 insertions(+), 18 deletions(-) (limited to 'libraries/eina/src/lib/eina_stringshare.c') diff --git a/libraries/eina/src/lib/eina_stringshare.c b/libraries/eina/src/lib/eina_stringshare.c index 478b300..f371fcd 100644 --- a/libraries/eina/src/lib/eina_stringshare.c +++ b/libraries/eina/src/lib/eina_stringshare.c @@ -55,12 +55,30 @@ void *alloca (size_t); #include "eina_private.h" #include "eina_error.h" #include "eina_log.h" -#include "eina_stringshare.h" #include "eina_lock.h" +#include "eina_share_common.h" /* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */ #include "eina_safety_checks.h" -#include "eina_share_common.h" +#include "eina_stringshare.h" + + +#ifdef CRITICAL +#undef CRITICAL +#endif +#define CRITICAL(...) EINA_LOG_DOM_CRIT(_eina_share_stringshare_log_dom, __VA_ARGS__) + +#ifdef ERR +#undef ERR +#endif +#define ERR(...) EINA_LOG_DOM_ERR(_eina_share_stringshare_log_dom, __VA_ARGS__) + +#ifdef DBG +#undef DBG +#endif +#define DBG(...) EINA_LOG_DOM_DBG(_eina_share_stringshare_log_dom, __VA_ARGS__) + +static int _eina_share_stringshare_log_dom = -1; /* The actual share */ static Eina_Share *stringshare_share; @@ -447,11 +465,8 @@ _eina_stringshare_small_bucket_dump(Eina_Stringshare_Small_Bucket *bucket, for (i = 0; i < bucket->count; i++, s++, l++, r++) { int dups; -#ifdef _WIN32 - printf("DDD: %5hu %5hu '%s'\n", *l, *r, *s); -#else + printf("DDD: %5hhu %5hu '%s'\n", *l, *r, *s); -#endif dups = (*r - 1); @@ -500,11 +515,29 @@ Eina_Bool eina_stringshare_init(void) { Eina_Bool ret; + + if (_eina_share_stringshare_log_dom < 0) + { + _eina_share_stringshare_log_dom = eina_log_domain_register + ("eina_stringshare", EINA_LOG_COLOR_DEFAULT); + + if (_eina_share_stringshare_log_dom < 0) + { + EINA_LOG_ERR("Could not register log domain: eina_stringshare"); + return EINA_FALSE; + } + } + ret = eina_share_common_init(&stringshare_share, EINA_MAGIC_STRINGSHARE_NODE, EINA_MAGIC_STRINGSHARE_NODE_STR); if (ret) _eina_stringshare_small_init(); + else + { + eina_log_domain_unregister(_eina_share_stringshare_log_dom); + _eina_share_stringshare_log_dom = -1; + } return ret; } @@ -526,6 +559,13 @@ eina_stringshare_shutdown(void) Eina_Bool ret; _eina_stringshare_small_shutdown(); ret = eina_share_common_shutdown(&stringshare_share); + + if (_eina_share_stringshare_log_dom >= 0) + { + eina_log_domain_unregister(_eina_share_stringshare_log_dom); + _eina_share_stringshare_log_dom = -1; + } + return ret; } @@ -534,7 +574,7 @@ eina_stringshare_shutdown(void) *============================================================================*/ EAPI void -eina_stringshare_del(const char *str) +eina_stringshare_del(Eina_Stringshare *str) { int slen; @@ -564,16 +604,17 @@ eina_stringshare_del(const char *str) return; } - eina_share_common_del(stringshare_share, str); + if (!eina_share_common_del(stringshare_share, str)) + CRITICAL("EEEK trying to del non-shared stringshare \"%s\"", str); } -EAPI const char * +EAPI Eina_Stringshare * eina_stringshare_add_length(const char *str, unsigned int slen) { if ((!str) || (slen <= 0)) return ""; else if (slen == 1) - return (const char *)_eina_stringshare_single + ((*str) << 1); + return (Eina_Stringshare *) _eina_stringshare_single + ((*str) << 1); else if (slen < 4) { const char *s; @@ -588,7 +629,7 @@ eina_stringshare_add_length(const char *str, unsigned int slen) sizeof(char), sizeof(char)); } -EAPI const char * +EAPI Eina_Stringshare * eina_stringshare_add(const char *str) { int slen; @@ -609,7 +650,7 @@ eina_stringshare_add(const char *str) return eina_stringshare_add_length(str, slen); } -EAPI const char * +EAPI Eina_Stringshare * eina_stringshare_printf(const char *fmt, ...) { va_list args; @@ -633,7 +674,7 @@ eina_stringshare_printf(const char *fmt, ...) return ret; } -EAPI const char * +EAPI Eina_Stringshare * eina_stringshare_vprintf(const char *fmt, va_list args) { char *tmp; @@ -654,7 +695,7 @@ eina_stringshare_vprintf(const char *fmt, va_list args) return ret; } -EAPI const char * +EAPI Eina_Stringshare * eina_stringshare_nprintf(unsigned int len, const char *fmt, ...) { va_list args; @@ -679,8 +720,8 @@ eina_stringshare_nprintf(unsigned int len, const char *fmt, ...) return eina_stringshare_add_length(tmp, len); } -EAPI const char * -eina_stringshare_ref(const char *str) +EAPI Eina_Stringshare * +eina_stringshare_ref(Eina_Stringshare *str) { int slen; @@ -721,7 +762,7 @@ eina_stringshare_ref(const char *str) } EAPI int -eina_stringshare_strlen(const char *str) +eina_stringshare_strlen(Eina_Stringshare *str) { int len; /* special cases */ @@ -737,7 +778,7 @@ eina_stringshare_strlen(const char *str) if (str[3] == '\0') return 3; - len = eina_share_common_length(stringshare_share, (const char *)str); + len = eina_share_common_length(stringshare_share, (Eina_Stringshare *) str); len = (len > 0) ? len / (int)sizeof(char) : -1; return len; } -- cgit v1.1