KW(abstract), KW(constructor), KW(constructors), KW(data), \
KW(destructor), KW(eo), KW(eo_prefix), KW(event_prefix), KW(events), KW(free), \
KW(get), KW(implements), KW(import), KW(interface), KW(keys), KW(legacy), \
- KW(legacy_prefix), KW(methods), KW(mixin), KW(params), KW(ptr), \
+ KW(legacy_prefix), KW(methods), KW(mixin), KW(params), KW(parts), KW(ptr), \
KW(set), KW(type), KW(values), KW(var), KWAT(auto), KWAT(beta), \
KWAT(class), KWAT(const), KWAT(empty), KWAT(extern), \
KWAT(free), KWAT(hot), KWAT(in), KWAT(inout), KWAT(nonull), KWAT(nullable), \
}
static void
+parse_part(Eo_Lexer *ls)
+{
+ check_next(ls, TOK_VALUE);
+ check_next(ls, ':');
+ Eina_Strbuf *buf = push_strbuf(ls);
+ parse_name(ls, buf);
+ check_next(ls, ';');
+ if (ls->t.token == TOK_DOC)
+ eo_lexer_get(ls);
+ pop_strbuf(ls);
+}
+
+static void
parse_implement(Eo_Lexer *ls, Eina_Bool iface)
{
Eina_Strbuf *buf = NULL;
}
static void
+parse_parts(Eo_Lexer *ls)
+{
+ int line, col;
+ eo_lexer_get(ls);
+ line = ls->line_number, col = ls->column;
+ check_next(ls, '{');
+ while (ls->t.token != '}')
+ parse_part(ls);
+ check_match(ls, '}', '{', line, col);
+}
+
+static void
parse_implements(Eo_Lexer *ls, Eina_Bool iface)
{
int line, col;
has_event_prefix = EINA_FALSE,
has_data = EINA_FALSE,
has_methods = EINA_FALSE,
+ has_parts = EINA_FALSE,
has_implements = EINA_FALSE,
has_constructors = EINA_FALSE,
has_events = EINA_FALSE;
CASE_LOCK(ls, methods, "methods definition")
parse_methods(ls);
break;
+ case KW_parts:
+ CASE_LOCK(ls, parts, "parts definition")
+ parse_parts(ls);
+ break;
case KW_implements:
CASE_LOCK(ls, implements, "implements definition")
parse_implements(ls, type == EOLIAN_CLASS_INTERFACE);