const char *cur_pstr;
if (cur_plength > plength)
- return 1;
+ return 1;
else if (cur_plength < plength)
- return -1;
+ return -1;
cur_pstr = bucket->strings[i] + 1;
if (cur_pstr[0] > pstr[0])
- return 1;
+ return 1;
else if (cur_pstr[0] < pstr[0])
- return -1;
+ return -1;
if (plength == 1)
- return 0;
+ return 0;
if (cur_pstr[1] > pstr[1])
- return 1;
+ return 1;
else if (cur_pstr[1] < pstr[1])
- return -1;
+ return -1;
return 0;
}
r = _eina_stringshare_small_cmp(bucket, i, pstr, plength);
if (r > 0)
- high = i;
+ high = i;
else if (r < 0)
- low = i + 1;
+ low = i + 1;
else
{
*idx = i;
tmp = realloc((void *)bucket->strings, size * sizeof(bucket->strings[0]));
if (!tmp)
{
- eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
+ eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
return 0;
}
tmp = realloc(bucket->lengths, size * sizeof(bucket->lengths[0]));
if (!tmp)
{
- eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
+ eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
return 0;
}
tmp = realloc(bucket->references, size * sizeof(bucket->references[0]));
if (!tmp)
{
- eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
+ eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
return 0;
}
{
int size = bucket->size + EINA_STRINGSHARE_SMALL_BUCKET_STEP;
if (!_eina_stringshare_small_bucket_resize(bucket, size))
- return NULL;
+ return NULL;
}
snew = malloc(length + 1);
if (!snew)
{
- eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
+ eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
return NULL;
}
return;
}
- free((char *)bucket->strings[idx]);
+ free((char *)bucket->strings[idx]);
if (bucket->count == 1)
{
bucket->count--;
if (idx == bucket->count)
- goto end;
+ goto end;
off = idx + 1;
todo = bucket->count - idx;
bucket = _eina_small_share.buckets + (unsigned char)str[0];
if (!*bucket)
- i = 0;
+ i = 0;
else
{
const char *ret;
bucket = _eina_small_share.buckets + (unsigned char)str[0];
if (!*bucket)
- goto error;
+ goto error;
ret = _eina_stringshare_small_bucket_find(*bucket, str, length, &i);
if (!ret)
- goto error;
+ goto error;
_eina_stringshare_small_bucket_remove_at(bucket, i);
return;
char **s, **s_end;
if (!bucket)
- continue;
+ continue;
s = (char **)bucket->strings;
s_end = s + bucket->count;
for (; s < s_end; s++)
- free(*s);
+ free(*s);
- free((void *)bucket->strings);
- free(bucket->lengths);
- free(bucket->references);
- free(bucket);
+ free((void *)bucket->strings);
+ free(bucket->lengths);
+ free(bucket->references);
+ free(bucket);
*p_bucket = NULL;
}
Eina_Stringshare_Small_Bucket *bucket = *p_bucket;
if (!bucket)
- continue;
+ continue;
_eina_stringshare_small_bucket_dump(bucket, di);
}
/*============================================================================*
-* Global *
-*============================================================================*/
+ * Global *
+ *============================================================================*/
/**
* @internal
if (_eina_share_stringshare_log_dom < 0)
{
_eina_share_stringshare_log_dom = eina_log_domain_register
- ("eina_stringshare", EINA_LOG_COLOR_DEFAULT);
+ ("eina_stringshare", EINA_LOG_COLOR_DEFAULT);
if (_eina_share_stringshare_log_dom < 0)
{
EINA_MAGIC_STRINGSHARE_NODE,
EINA_MAGIC_STRINGSHARE_NODE_STR);
if (ret)
- _eina_stringshare_small_init();
+ _eina_stringshare_small_init();
else
{
eina_log_domain_unregister(_eina_share_stringshare_log_dom);
}
/*============================================================================*
-* API *
-*============================================================================*/
+ * API *
+ *============================================================================*/
EAPI void
eina_stringshare_del(Eina_Stringshare *str)
int slen;
if (!str)
- return;
+ return;
/* special cases */
if (str[0] == '\0')
- slen = 0;
+ slen = 0;
else if (str[1] == '\0')
- slen = 1;
+ slen = 1;
else if (str[2] == '\0')
- slen = 2;
+ slen = 2;
else if (str[3] == '\0')
- slen = 3;
+ slen = 3;
else
- slen = 4; /* handled later */
+ slen = 4; /* handled later */
if (slen < 2)
- return;
+ return;
else if (slen < 4)
{
eina_share_common_population_del(stringshare_share, slen);
eina_stringshare_add_length(const char *str, unsigned int slen)
{
if ((!str) || (slen <= 0))
- return "";
+ return "";
else if (slen == 1)
- return (Eina_Stringshare *) _eina_stringshare_single + ((*str) << 1);
+ return (Eina_Stringshare *) _eina_stringshare_single + ((*str) << 1);
else if (slen < 4)
{
const char *s;
{
int slen;
if (!str)
- return NULL;
+ return NULL;
if (str[0] == '\0')
- slen = 0;
+ slen = 0;
else if (str[1] == '\0')
- slen = 1;
+ slen = 1;
else if (str[2] == '\0')
- slen = 2;
+ slen = 2;
else if (str[3] == '\0')
- slen = 3;
+ slen = 3;
else
- slen = 3 + (int)strlen(str + 3);
+ slen = 3 + (int)strlen(str + 3);
return eina_stringshare_add_length(str, slen);
}
int len;
if (!fmt)
- return NULL;
+ return NULL;
va_start(args, fmt);
len = vasprintf(&tmp, fmt, args);
va_end(args);
if (len < 1)
- return NULL;
+ return NULL;
ret = eina_stringshare_add_length(tmp, len);
free(tmp);
int len;
if (!fmt)
- return NULL;
+ return NULL;
len = vasprintf(&tmp, fmt, args);
if (len < 1)
- return NULL;
+ return NULL;
ret = eina_stringshare_add_length(tmp, len);
free(tmp);
int size;
if (!fmt)
- return NULL;
+ return NULL;
if (len < 1)
- return NULL;
+ return NULL;
tmp = alloca(sizeof(char) * len + 1);
va_end(args);
if (size < 1)
- return NULL;
+ return NULL;
return eina_stringshare_add_length(tmp, len);
}
int slen;
if (!str)
- return eina_share_common_ref(stringshare_share, str);
+ return eina_share_common_ref(stringshare_share, str);
/* special cases */
if (str[0] == '\0')
- slen = 0;
+ slen = 0;
else if (str[1] == '\0')
- slen = 1;
+ slen = 1;
else if (str[2] == '\0')
- slen = 2;
+ slen = 2;
else if (str[3] == '\0')
- slen = 3;
+ slen = 3;
else
- slen = 3 + (int)strlen(str + 3);
+ slen = 3 + (int)strlen(str + 3);
if (slen < 2)
{
/* special cases */
if (str[0] == '\0')
- return 0;
+ return 0;
if (str[1] == '\0')
- return 1;
+ return 1;
if (str[2] == '\0')
- return 2;
+ return 2;
if (str[3] == '\0')
- return 3;
+ return 3;
len = eina_share_common_length(stringshare_share, (Eina_Stringshare *) str);
len = (len > 0) ? len / (int)sizeof(char) : -1;