forked from enlightenment/efl
edje/style: refactor to avoid creating temporary strings.
Summary: param_parse() was creating unnecessary 2 temporary string and destroying it. Reviewers: ali.alzyod, cedric, Hermet, raster Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D9610
This commit is contained in:
parent
a880a756cd
commit
dafd3dc7b8
|
@ -1,29 +1,12 @@
|
||||||
#include "edje_private.h"
|
#include "edje_private.h"
|
||||||
|
|
||||||
static int
|
static int
|
||||||
_edje_font_is_embedded(Edje_File *edf, char *font)
|
_edje_font_is_embedded(Edje_File *edf, const char *font)
|
||||||
{
|
{
|
||||||
if (!eina_hash_find(edf->fonts, font)) return 0;
|
if (!eina_hash_find(edf->fonts, font)) return 0;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
_edje_format_param_parse(char *item, char **key, char **val)
|
|
||||||
{
|
|
||||||
char *p, *k, *v;
|
|
||||||
|
|
||||||
p = strchr(item, '=');
|
|
||||||
if (!p) return;
|
|
||||||
|
|
||||||
k = malloc(p - item + 1);
|
|
||||||
strncpy(k, item, p - item);
|
|
||||||
k[p - item] = 0;
|
|
||||||
*key = k;
|
|
||||||
p++;
|
|
||||||
v = strdup(p);
|
|
||||||
*val = v;
|
|
||||||
}
|
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
_edje_format_parse(const char **s)
|
_edje_format_parse(const char **s)
|
||||||
{
|
{
|
||||||
|
@ -69,13 +52,6 @@ _edje_format_parse(const char **s)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
|
||||||
_edje_format_is_param(char *item)
|
|
||||||
{
|
|
||||||
if (strchr(item, '=')) return 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
_edje_format_reparse(Edje_File *edf, const char *str, Edje_Style_Tag **tag_ret)
|
_edje_format_reparse(Edje_File *edf, const char *str, Edje_Style_Tag **tag_ret)
|
||||||
{
|
{
|
||||||
|
@ -87,16 +63,18 @@ _edje_format_reparse(Edje_File *edf, const char *str, Edje_Style_Tag **tag_ret)
|
||||||
s = str;
|
s = str;
|
||||||
while ((item = _edje_format_parse(&s)))
|
while ((item = _edje_format_parse(&s)))
|
||||||
{
|
{
|
||||||
if (_edje_format_is_param(item))
|
const char *pos = strchr(item, '=');
|
||||||
|
if (pos)
|
||||||
{
|
{
|
||||||
char *key = NULL, *val = NULL;
|
size_t key_len = pos - item;
|
||||||
|
const char *key = item;
|
||||||
|
const char *val = pos + 1;
|
||||||
|
|
||||||
_edje_format_param_parse(item, &key, &val);
|
if (!strncmp(key, "font_source", key_len))
|
||||||
if (!strcmp(key, "font_source"))
|
|
||||||
{
|
{
|
||||||
/* dont allow font sources */
|
/* dont allow font sources */
|
||||||
}
|
}
|
||||||
else if (!strcmp(key, "text_class"))
|
else if (!strncmp(key, "text_class", key_len))
|
||||||
{
|
{
|
||||||
if (tag_ret)
|
if (tag_ret)
|
||||||
(*tag_ret)->text_class = eina_stringshare_add(val);
|
(*tag_ret)->text_class = eina_stringshare_add(val);
|
||||||
|
@ -106,12 +84,12 @@ _edje_format_reparse(Edje_File *edf, const char *str, Edje_Style_Tag **tag_ret)
|
||||||
// text_class tag.
|
// text_class tag.
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else if (!strcmp(key, "font_size"))
|
else if (!strncmp(key, "font_size", key_len))
|
||||||
{
|
{
|
||||||
if (tag_ret)
|
if (tag_ret)
|
||||||
(*tag_ret)->font_size = atof(val);
|
(*tag_ret)->font_size = atof(val);
|
||||||
}
|
}
|
||||||
else if (!strcmp(key, "font")) /* Fix fonts */
|
else if (!strncmp(key, "font", key_len)) /* Fix fonts */
|
||||||
{
|
{
|
||||||
if (tag_ret)
|
if (tag_ret)
|
||||||
{
|
{
|
||||||
|
@ -137,8 +115,6 @@ _edje_format_reparse(Edje_File *edf, const char *str, Edje_Style_Tag **tag_ret)
|
||||||
eina_strbuf_append(txt, s2);
|
eina_strbuf_append(txt, s2);
|
||||||
free(s2);
|
free(s2);
|
||||||
}
|
}
|
||||||
free(key);
|
|
||||||
free(val);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue