@echo "#include \"eina_private.h\"" >> eina_amalgamation.c
@echo "#include \"eina_safety_checks.h\"" >> eina_amalgamation.c
@echo "#include \"Eina.h\"" >> eina_amalgamation.c
+ @echo "#include \"eina_share_common.h\"" >> eina_amalgamation.c
@for f in $(base_sources); do \
if [ `echo $$f | sed -e 's/^...\(.\).*/\1/'` != '/' ]; then \
* will happen, likely a segmentation fault.
*/
EAPI void
-eina_binshare_del(const char *str, unsigned int slen)
+eina_binshare_del(const char *str)
{
if (!str)
return;
- eina_share_common_del(share,(const char *) str, slen);
+ eina_share_common_del(share,(const char *) str);
}
/**
void
-eina_share_common_del(Eina_Share *share, const char *str, int slen)
+eina_share_common_del(Eina_Share *share, const char *str)
{
+ unsigned int slen;
Eina_Share_Common_Head *ed;
Eina_Share_Common_Head **p_bucket;
Eina_Share_Common_Node *node;
if (!str) return;
- eina_share_common_population_del(share, slen);
-
SHARE_COMMON_LOCK_BIG();
node = _eina_share_common_node_from_str(str, share->node_magic);
+ slen = node->length;
+ eina_share_common_population_del(share, slen);
if (node->references > 1)
{
node->references--;
DBG("str=%p refs=0, delete.", str);
node->references = 0;
- slen = node->length;
hash = eina_hash_superfast(str, slen);
hash_num = hash & 0xFF;
Eina_Bool eina_share_common_shutdown(Eina_Share **share);
const char *eina_share_common_add_length(Eina_Share *share, const char *str, unsigned int slen, unsigned int null_size) EINA_WARN_UNUSED_RESULT;
const char *eina_share_common_ref(Eina_Share *share, const char *str);
-void eina_share_common_del(Eina_Share *share, const char *str, int slen);
+void eina_share_common_del(Eina_Share *share, const char *str);
int eina_share_common_length(Eina_Share *share, const char *str) EINA_CONST EINA_WARN_UNUSED_RESULT;
void eina_share_common_dump(Eina_Share *share, void (* additional_dump)(struct dumpinfo *), int used);
+#ifdef _STRBUF_DATA_TYPE
+# undef _STRBUF_DATA_TYPE
+#endif
+#ifdef _STRBUF_CSIZE
+# undef _STRBUF_CSIZE
+#endif
+#ifdef _STRBUF_STRUCT_NAME
+# undef _STRBUF_STRUCT_NAME
+#endif
+#ifdef _STRBUF_STRLEN_FUNC
+# undef _STRBUF_STRLEN_FUNC
+#endif
+#ifdef _STRBUF_STRESCAPE_FUNC
+# undef _STRBUF_STRESCAPE_FUNC
+#endif
+#ifdef _STRBUF_MAGIC
+# undef _STRBUF_MAGIC
+#endif
+#ifdef _STRBUF_MAGIC_STR
+# undef _STRBUF_MAGIC_STR
+#endif
+#ifdef _FUNC_EXPAND
+# undef _FUNC_EXPAND
+#endif
+
#define _STRBUF_DATA_TYPE char
#define _STRBUF_CSIZE sizeof(_STRBUF_DATA_TYPE)
#define _STRBUF_STRUCT_NAME Eina_Strbuf
#define _STRBUF_STRLEN_FUNC(x) strlen(x)
#define _STRBUF_STRESCAPE_FUNC(x) eina_str_escape(x)
#define _STRBUF_MAGIC EINA_MAGIC_STRBUF
-static const char _STRBUF_MAGIC_STR[] = "Eina Strbuf";
+#define _STRBUF_MAGIC_STR __STRBUF_MAGIC_STR
+static const char __STRBUF_MAGIC_STR[] = "Eina Strbuf";
#define _FUNC_EXPAND(y) eina_strbuf_##y
* @{
*/
/*FIXME: Implementing them here is a hack! */
+
+#ifdef _STRBUF_CSIZE
+# undef _STRBUF_CSIZE
+#endif
+#ifdef _STRBUF_MAGIC
+# undef _STRBUF_MAGIC
+#endif
+#ifdef _STRBUF_MAGIC_STR
+# undef _STRBUF_MAGIC_STR
+#endif
+
#define _STRBUF_CSIZE 1
#define _STRBUF_MAGIC EINA_MAGIC_STRBUF
-static const char _STRBUF_MAGIC_STR[] = "Eina Strbuf";
+#define _STRBUF_MAGIC_STR __STRBUF_STR_MAGIC_STR
+static const char __STRBUF_STR_MAGIC_STR[] = "Eina Strbuf";
/**
* @ brief Replace the n-th string with an other string.
* a lot easier since those are essentially the same just with different sizes.
*/
-#ifndef EINA_STRBUF_TEMPLATE_C_I
-#define EINA_STRBUF_TEMPLATE_C_I
-
-
#include <Eina.h>
#include "eina_strbuf_common.h"
#include "eina_unicode.h"
EINA_MAGIC_CHECK_STRBUF(buf, 0);
return eina_strbuf_common_length_get(buf);
}
-
-#else
-#error Something went terribly wrong, shouldnt be included twice!
-
-#endif
STRINGSHARE_UNLOCK_SMALL();
return;
}
- slen = strlen(str);
- slen = (int) (slen * sizeof(char));
- eina_share_common_del(share, str, slen);
+ eina_share_common_del(share, str);
}
/**
#include "eina_unicode.h"
#include "eina_ustrbuf.h"
+#ifdef _STRBUF_DATA_TYPE
+# undef _STRBUF_DATA_TYPE
+#endif
+#ifdef _STRBUF_CSIZE
+# undef _STRBUF_CSIZE
+#endif
+#ifdef _STRBUF_STRUCT_NAME
+# undef _STRBUF_STRUCT_NAME
+#endif
+#ifdef _STRBUF_STRLEN_FUNC
+# undef _STRBUF_STRLEN_FUNC
+#endif
+#ifdef _STRBUF_STRESCAPE_FUNC
+# undef _STRBUF_STRESCAPE_FUNC
+#endif
+#ifdef _STRBUF_MAGIC
+# undef _STRBUF_MAGIC
+#endif
+#ifdef _STRBUF_MAGIC_STR
+# undef _STRBUF_MAGIC_STR
+#endif
+#ifdef _FUNC_EXPAND
+# undef _FUNC_EXPAND
+#endif
+
+
#define _STRBUF_DATA_TYPE Eina_Unicode
#define _STRBUF_CSIZE sizeof(_STRBUF_DATA_TYPE)
#define _STRBUF_STRUCT_NAME Eina_UStrbuf
#define _STRBUF_STRLEN_FUNC(x) eina_unicode_strlen(x)
#define _STRBUF_STRESCAPE_FUNC(x) eina_unicode_escape(x)
#define _STRBUF_MAGIC EINA_MAGIC_USTRBUF
-static const char _STRBUF_MAGIC_STR[] = "Eina UStrbuf";
+#define _STRBUF_MAGIC_STR __USTRBUF_MAGIC_STR
+static const char __USTRBUF_MAGIC_STR[] = "Eina UStrbuf";
#define _FUNC_EXPAND(y) eina_ustrbuf_##y
EAPI void
eina_ustringshare_del(const Eina_Unicode *str)
{
- int slen;
if (!str)
return;
- slen = eina_unicode_strlen(str);
- slen = (int) (slen * sizeof(Eina_Unicode));
- eina_share_common_del(share,(const char *) str, slen);
+ eina_share_common_del(share,(const char *) str);
}
/**