summaryrefslogtreecommitdiff
path: root/src/lib/eolian
diff options
context:
space:
mode:
authorDaniel Kolesa <d.kolesa@samsung.com>2019-09-20 17:46:56 +0200
committerDaniel Kolesa <d.kolesa@samsung.com>2019-09-20 17:47:43 +0200
commit7cbd08ee8c577d35699d937b56c95a65ffcbcd67 (patch)
treede15864295c7f6a49cae863a8da38e300eb5019c /src/lib/eolian
parent718f3cd49586ec6a0448977081e16cd647b06e68 (diff)
downloadefl-7cbd08ee8c577d35699d937b56c95a65ffcbcd67.tar.gz
eolian: string(share) is always const, allow in events out of box
Diffstat (limited to 'src/lib/eolian')
-rw-r--r--src/lib/eolian/database_validate.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/lib/eolian/database_validate.c b/src/lib/eolian/database_validate.c
index 4ad105de0f..5706ace308 100644
--- a/src/lib/eolian/database_validate.c
+++ b/src/lib/eolian/database_validate.c
@@ -606,6 +606,7 @@ _validate_event(Validate_State *vals, Eolian_Event *event, Eina_Hash *nhash)
_eo_parser_log(&tp->base, "pointers not allowed in events");
return _reset_stable(vals, was_stable, EINA_FALSE);
}
+ int kwid = eo_lexer_keyword_str_to_id(tp->base.name);
/* require containers to be const for now...
*
* this is FIXME, and decision wasn't reached before 1.22
@@ -613,10 +614,17 @@ _validate_event(Validate_State *vals, Eolian_Event *event, Eina_Hash *nhash)
*/
if (database_type_is_ownable(tp->base.unit, tp, EINA_FALSE))
{
- if (!tp->is_const)
+ switch (kwid)
{
- _eo_parser_log(&tp->base, "event container types must be const");
- return _reset_stable(vals, was_stable, EINA_FALSE);
+ case KW_string:
+ case KW_stringshare:
+ break;
+ default:
+ if (!tp->is_const)
+ {
+ _eo_parser_log(&tp->base, "event container types must be const");
+ return _reset_stable(vals, was_stable, EINA_FALSE);
+ }
}
}
else if (tp->is_const)
@@ -624,7 +632,6 @@ _validate_event(Validate_State *vals, Eolian_Event *event, Eina_Hash *nhash)
_eo_parser_log(&tp->base, "event value types cannot be const");
return _reset_stable(vals, was_stable, EINA_FALSE);
}
- int kwid = eo_lexer_keyword_str_to_id(tp->base.name);
/* containers are allowed but not iterators/lists */
if (kwid == KW_iterator || kwid == KW_list)
{