summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniel Kolesa <d.kolesa@osg.samsung.com>2017-01-11 19:25:54 +0100
committerDaniel Kolesa <d.kolesa@osg.samsung.com>2017-01-11 19:26:21 +0100
commitbaaa482ebff9c006390cff6e8c3a4f4094545857 (patch)
tree6f60582c404593050037db137912f31eeefc3595 /src
parent289287f497df2d521dc5e1c66e31c83ceeed3a47 (diff)
eolian: fine-grained is_auto/is_empty for implements
Diffstat (limited to 'src')
-rw-r--r--src/bin/eolian/sources.c4
-rw-r--r--src/bindings/luajit/eolian.lua18
-rw-r--r--src/lib/eolian/Eolian.h9
-rw-r--r--src/lib/eolian/database_fill.c63
-rw-r--r--src/lib/eolian/database_implement_api.c27
-rw-r--r--src/lib/eolian/eo_parser.c41
-rw-r--r--src/lib/eolian/eolian_database.h9
-rw-r--r--src/tests/eolian/eolian_parsing.c18
8 files changed, 109 insertions, 80 deletions
diff --git a/src/bin/eolian/sources.c b/src/bin/eolian/sources.c
index b602680897..67eb2a9576 100644
--- a/src/bin/eolian/sources.c
+++ b/src/bin/eolian/sources.c
@@ -119,8 +119,8 @@ _gen_func(const Eolian_Class *cl, const Eolian_Function *fid,
119 Eolian_Function_Type ftype, Eina_Strbuf *buf, 119 Eolian_Function_Type ftype, Eina_Strbuf *buf,
120 const Eolian_Implement *impl, Eina_Strbuf *lbuf) 120 const Eolian_Implement *impl, Eina_Strbuf *lbuf)
121{ 121{
122 Eina_Bool is_empty = eolian_implement_is_empty(impl); 122 Eina_Bool is_empty = eolian_implement_is_empty(impl, ftype);
123 Eina_Bool is_auto = eolian_implement_is_auto(impl); 123 Eina_Bool is_auto = eolian_implement_is_auto(impl, ftype);
124 124
125 if ((ftype != EOLIAN_PROP_GET) && (ftype != EOLIAN_PROP_SET)) 125 if ((ftype != EOLIAN_PROP_GET) && (ftype != EOLIAN_PROP_SET))
126 ftype = eolian_function_type_get(fid); 126 ftype = eolian_function_type_get(fid);
diff --git a/src/bindings/luajit/eolian.lua b/src/bindings/luajit/eolian.lua
index 2b2df9fb72..409c94e32f 100644
--- a/src/bindings/luajit/eolian.lua
+++ b/src/bindings/luajit/eolian.lua
@@ -273,9 +273,9 @@ ffi.cdef [[
273 const char *eolian_implement_full_name_get(const Eolian_Implement *impl); 273 const char *eolian_implement_full_name_get(const Eolian_Implement *impl);
274 const Eolian_Class *eolian_implement_class_get(const Eolian_Implement *impl); 274 const Eolian_Class *eolian_implement_class_get(const Eolian_Implement *impl);
275 const Eolian_Function *eolian_implement_function_get(const Eolian_Implement *impl, Eolian_Function_Type *func_type); 275 const Eolian_Function *eolian_implement_function_get(const Eolian_Implement *impl, Eolian_Function_Type *func_type);
276 Eina_Bool eolian_implement_is_auto(const Eolian_Implement *impl); 276 Eina_Bool eolian_implement_is_auto(const Eolian_Implement *impl, Eolian_Function_Type ftype);
277 Eina_Bool eolian_implement_is_empty(const Eolian_Implement *impl); 277 Eina_Bool eolian_implement_is_empty(const Eolian_Implement *impl, Eolian_Function_Type ftype);
278 Eina_Bool eolian_implement_is_virtual(const Eolian_Implement *impl); 278 Eina_Bool eolian_implement_is_virtual(const Eolian_Implement *impl, Eolian_Function_Type ftype);
279 Eina_Bool eolian_implement_is_prop_get(const Eolian_Implement *impl); 279 Eina_Bool eolian_implement_is_prop_get(const Eolian_Implement *impl);
280 Eina_Bool eolian_implement_is_prop_set(const Eolian_Implement *impl); 280 Eina_Bool eolian_implement_is_prop_set(const Eolian_Implement *impl);
281 Eina_Iterator *eolian_class_implements_get(const Eolian_Class *klass); 281 Eina_Iterator *eolian_class_implements_get(const Eolian_Class *klass);
@@ -919,16 +919,16 @@ ffi.metatype("Eolian_Implement", {
919 return v, tp[0] 919 return v, tp[0]
920 end, 920 end,
921 921
922 is_auto = function(self) 922 is_auto = function(self, ftype)
923 return eolian.eolian_implement_is_auto(self) ~= 0 923 return eolian.eolian_implement_is_auto(self, ftype) ~= 0
924 end, 924 end,
925 925
926 is_empty = function(self) 926 is_empty = function(self, ftype)
927 return eolian.eolian_implement_is_empty(self) ~= 0 927 return eolian.eolian_implement_is_empty(self, ftype) ~= 0
928 end, 928 end,
929 929
930 is_virtual = function(self) 930 is_virtual = function(self, ftype)
931 return eolian.eolian_implement_is_virtual(self) ~= 0 931 return eolian.eolian_implement_is_virtual(self, ftype) ~= 0
932 end, 932 end,
933 933
934 is_prop_get = function(self) 934 is_prop_get = function(self)
diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h
index 820bcb547f..783c5b9a07 100644
--- a/src/lib/eolian/Eolian.h
+++ b/src/lib/eolian/Eolian.h
@@ -1056,31 +1056,34 @@ EAPI const Eolian_Function *eolian_implement_function_get(const Eolian_Implement
1056 * @brief Get whether an implement is tagged with @auto. 1056 * @brief Get whether an implement is tagged with @auto.
1057 * 1057 *
1058 * @param[in] impl the handle of the implement 1058 * @param[in] impl the handle of the implement
1059 * @param[in] f_type The function type, for property get/set distinction.
1059 * @return EINA_TRUE when it is, EINA_FALSE when it's not. 1060 * @return EINA_TRUE when it is, EINA_FALSE when it's not.
1060 * 1061 *
1061 * @ingroup Eolian 1062 * @ingroup Eolian
1062 */ 1063 */
1063EAPI Eina_Bool eolian_implement_is_auto(const Eolian_Implement *impl); 1064EAPI Eina_Bool eolian_implement_is_auto(const Eolian_Implement *impl, Eolian_Function_Type f_type);
1064 1065
1065/* 1066/*
1066 * @brief Get whether an implement is tagged with @empty. 1067 * @brief Get whether an implement is tagged with @empty.
1067 * 1068 *
1068 * @param[in] impl the handle of the implement 1069 * @param[in] impl the handle of the implement
1070 * @param[in] f_type The function type, for property get/set distinction.
1069 * @return EINA_TRUE when it is, EINA_FALSE when it's not. 1071 * @return EINA_TRUE when it is, EINA_FALSE when it's not.
1070 * 1072 *
1071 * @ingroup Eolian 1073 * @ingroup Eolian
1072 */ 1074 */
1073EAPI Eina_Bool eolian_implement_is_empty(const Eolian_Implement *impl); 1075EAPI Eina_Bool eolian_implement_is_empty(const Eolian_Implement *impl, Eolian_Function_Type f_type);
1074 1076
1075/* 1077/*
1076 * @brief Get whether an implement is tagged with @virtual. 1078 * @brief Get whether an implement is tagged with @virtual.
1077 * 1079 *
1078 * @param[in] impl the handle of the implement 1080 * @param[in] impl the handle of the implement
1081 * @param[in] f_type The function type, for property get/set distinction.
1079 * @return EINA_TRUE when it is, EINA_FALSE when it's not. 1082 * @return EINA_TRUE when it is, EINA_FALSE when it's not.
1080 * 1083 *
1081 * @ingroup Eolian 1084 * @ingroup Eolian
1082 */ 1085 */
1083EAPI Eina_Bool eolian_implement_is_virtual(const Eolian_Implement *impl); 1086EAPI Eina_Bool eolian_implement_is_virtual(const Eolian_Implement *impl, Eolian_Function_Type f_type);
1084 1087
1085/* 1088/*
1086 * @brief Get whether an implement references a property getter. 1089 * @brief Get whether an implement references a property getter.
diff --git a/src/lib/eolian/database_fill.c b/src/lib/eolian/database_fill.c
index a841e26048..b904a57232 100644
--- a/src/lib/eolian/database_fill.c
+++ b/src/lib/eolian/database_fill.c
@@ -66,6 +66,8 @@ _get_impl_func(Eolian_Class *cl, Eolian_Implement *impl,
66 66
67 Eolian_Function_Type aftype = eolian_function_type_get(fid); 67 Eolian_Function_Type aftype = eolian_function_type_get(fid);
68 68
69 Eina_Bool auto_empty = (impl->get_auto || impl->get_empty);
70
69 /* match implement type against function type */ 71 /* match implement type against function type */
70 if (ftype == EOLIAN_PROPERTY) 72 if (ftype == EOLIAN_PROPERTY)
71 { 73 {
@@ -76,6 +78,7 @@ _get_impl_func(Eolian_Class *cl, Eolian_Implement *impl,
76 fprintf(stderr, "function '%s' is not a complete property", fnname); 78 fprintf(stderr, "function '%s' is not a complete property", fnname);
77 return EINA_FALSE; 79 return EINA_FALSE;
78 } 80 }
81 auto_empty = auto_empty && (impl->set_auto || impl->set_empty);
79 } 82 }
80 else if (ftype == EOLIAN_PROP_SET) 83 else if (ftype == EOLIAN_PROP_SET)
81 { 84 {
@@ -86,6 +89,7 @@ _get_impl_func(Eolian_Class *cl, Eolian_Implement *impl,
86 fprintf(stderr, "function '%s' doesn't have a setter\n", fnname); 89 fprintf(stderr, "function '%s' doesn't have a setter\n", fnname);
87 return EINA_FALSE; 90 return EINA_FALSE;
88 } 91 }
92 auto_empty = (impl->set_auto || impl->set_empty);
89 } 93 }
90 else if (ftype == EOLIAN_PROP_GET) 94 else if (ftype == EOLIAN_PROP_GET)
91 { 95 {
@@ -104,7 +108,7 @@ _get_impl_func(Eolian_Class *cl, Eolian_Implement *impl,
104 return EINA_FALSE; 108 return EINA_FALSE;
105 } 109 }
106 110
107 if ((fid->klass == cl) && !impl->is_auto && !impl->is_empty) 111 if ((fid->klass == cl) && !auto_empty)
108 { 112 {
109 /* only allow explicit implements from other classes, besides auto and 113 /* only allow explicit implements from other classes, besides auto and
110 * empty... also prevents pure virtuals from being implemented 114 * empty... also prevents pure virtuals from being implemented
@@ -137,42 +141,18 @@ _db_fill_implement(Eolian_Class *cl, Eolian_Implement *impl)
137 if (!_get_impl_func(cl, impl, ftype, &foo_id)) 141 if (!_get_impl_func(cl, impl, ftype, &foo_id))
138 return EINA_FALSE; 142 return EINA_FALSE;
139 143
140 if (impl->is_auto) 144 foo_id->get_auto = impl->get_auto;
141 { 145 foo_id->set_auto = impl->set_auto;
142 if (ftype == EOLIAN_PROP_GET) 146 foo_id->get_empty = impl->get_empty;
143 { 147 foo_id->set_empty = impl->set_empty;
144 foo_id->get_impl = impl; 148 if (foo_id->get_auto || foo_id->get_empty)
145 foo_id->get_auto = EINA_TRUE;
146 }
147 else if (ftype == EOLIAN_PROP_SET)
148 {
149 foo_id->set_impl = impl;
150 foo_id->set_auto = EINA_TRUE;
151 }
152 else
153 {
154 foo_id->get_impl = foo_id->set_impl = impl;
155 foo_id->get_auto = foo_id->set_auto = EINA_TRUE;
156 }
157 }
158 else if (impl->is_empty)
159 { 149 {
160 if (ftype == EOLIAN_PROP_GET) 150 if (ftype == EOLIAN_UNRESOLVED)
161 { 151 foo_id->set_impl = impl;
162 foo_id->get_impl = impl; 152 foo_id->get_impl = impl;
163 foo_id->get_empty = EINA_TRUE;
164 }
165 else if (ftype == EOLIAN_PROP_SET)
166 {
167 foo_id->set_impl = impl;
168 foo_id->set_empty = EINA_TRUE;
169 }
170 else
171 {
172 foo_id->get_impl = foo_id->set_impl = impl;
173 foo_id->get_empty = foo_id->set_empty = EINA_TRUE;
174 }
175 } 153 }
154 if (foo_id->set_auto || foo_id->set_empty)
155 foo_id->set_impl = impl;
176 156
177 return EINA_TRUE; 157 return EINA_TRUE;
178} 158}
@@ -205,10 +185,9 @@ _db_build_implement(Eolian_Class *cl, Eolian_Function *foo_id)
205 185
206 if (foo_id->type == EOLIAN_PROPERTY) 186 if (foo_id->type == EOLIAN_PROPERTY)
207 { 187 {
208 /* FIXME fugly hack, ideally rework the whole implements api altogether */
209 if (foo_id->get_virtual_pure && !foo_id->get_impl) 188 if (foo_id->get_virtual_pure && !foo_id->get_impl)
210 { 189 {
211 impl->is_virtual = EINA_TRUE; 190 impl->get_virtual = EINA_TRUE;
212 impl->is_prop_get = EINA_TRUE; 191 impl->is_prop_get = EINA_TRUE;
213 foo_id->get_impl = impl; 192 foo_id->get_impl = impl;
214 cl->implements = eina_list_append(cl->implements, impl); 193 cl->implements = eina_list_append(cl->implements, impl);
@@ -218,7 +197,7 @@ _db_build_implement(Eolian_Class *cl, Eolian_Function *foo_id)
218 } 197 }
219 else if (foo_id->set_virtual_pure && !foo_id->set_impl) 198 else if (foo_id->set_virtual_pure && !foo_id->set_impl)
220 { 199 {
221 impl->is_virtual = EINA_TRUE; 200 impl->set_virtual = EINA_TRUE;
222 impl->is_prop_set = EINA_TRUE; 201 impl->is_prop_set = EINA_TRUE;
223 foo_id->set_impl = impl; 202 foo_id->set_impl = impl;
224 cl->implements = eina_list_append(cl->implements, impl); 203 cl->implements = eina_list_append(cl->implements, impl);
@@ -229,7 +208,7 @@ _db_build_implement(Eolian_Class *cl, Eolian_Function *foo_id)
229 if (foo_id->get_impl) 208 if (foo_id->get_impl)
230 { 209 {
231 impl->is_prop_set = EINA_TRUE; 210 impl->is_prop_set = EINA_TRUE;
232 impl->is_virtual = foo_id->set_virtual_pure; 211 impl->set_virtual = foo_id->set_virtual_pure;
233 foo_id->set_impl = impl; 212 foo_id->set_impl = impl;
234 } 213 }
235 else if (foo_id->set_impl) 214 else if (foo_id->set_impl)
@@ -243,18 +222,18 @@ _db_build_implement(Eolian_Class *cl, Eolian_Function *foo_id)
243 else if (foo_id->type == EOLIAN_PROP_SET) 222 else if (foo_id->type == EOLIAN_PROP_SET)
244 { 223 {
245 impl->is_prop_set = EINA_TRUE; 224 impl->is_prop_set = EINA_TRUE;
246 impl->is_virtual = foo_id->get_virtual_pure; 225 impl->get_virtual = foo_id->get_virtual_pure;
247 foo_id->set_impl = impl; 226 foo_id->set_impl = impl;
248 } 227 }
249 else if (foo_id->type == EOLIAN_PROP_GET) 228 else if (foo_id->type == EOLIAN_PROP_GET)
250 { 229 {
251 impl->is_prop_get = EINA_TRUE; 230 impl->is_prop_get = EINA_TRUE;
252 impl->is_virtual = foo_id->set_virtual_pure; 231 impl->get_virtual = foo_id->set_virtual_pure;
253 foo_id->get_impl = impl; 232 foo_id->get_impl = impl;
254 } 233 }
255 else 234 else
256 { 235 {
257 impl->is_virtual = foo_id->get_virtual_pure; 236 impl->get_virtual = foo_id->get_virtual_pure;
258 foo_id->get_impl = foo_id->set_impl = impl; 237 foo_id->get_impl = foo_id->set_impl = impl;
259 } 238 }
260 239
diff --git a/src/lib/eolian/database_implement_api.c b/src/lib/eolian/database_implement_api.c
index 9ab6a838f2..4cd31dbd24 100644
--- a/src/lib/eolian/database_implement_api.c
+++ b/src/lib/eolian/database_implement_api.c
@@ -44,24 +44,39 @@ eolian_implement_function_get(const Eolian_Implement *impl,
44} 44}
45 45
46EAPI Eina_Bool 46EAPI Eina_Bool
47eolian_implement_is_auto(const Eolian_Implement *impl) 47eolian_implement_is_auto(const Eolian_Implement *impl, Eolian_Function_Type ftype)
48{ 48{
49 EINA_SAFETY_ON_NULL_RETURN_VAL(impl, EINA_FALSE); 49 EINA_SAFETY_ON_NULL_RETURN_VAL(impl, EINA_FALSE);
50 return impl->is_auto; 50 switch (ftype)
51 {
52 case EOLIAN_UNRESOLVED: case EOLIAN_METHOD: case EOLIAN_PROPERTY: case EOLIAN_PROP_GET: return impl->get_auto; break;
53 case EOLIAN_PROP_SET: return impl->set_auto; break;
54 default: return EINA_FALSE;
55 }
51} 56}
52 57
53EAPI Eina_Bool 58EAPI Eina_Bool
54eolian_implement_is_empty(const Eolian_Implement *impl) 59eolian_implement_is_empty(const Eolian_Implement *impl, Eolian_Function_Type ftype)
55{ 60{
56 EINA_SAFETY_ON_NULL_RETURN_VAL(impl, EINA_FALSE); 61 EINA_SAFETY_ON_NULL_RETURN_VAL(impl, EINA_FALSE);
57 return impl->is_empty; 62 switch (ftype)
63 {
64 case EOLIAN_UNRESOLVED: case EOLIAN_METHOD: case EOLIAN_PROPERTY: case EOLIAN_PROP_GET: return impl->get_empty; break;
65 case EOLIAN_PROP_SET: return impl->set_empty; break;
66 default: return EINA_FALSE;
67 }
58} 68}
59 69
60EAPI Eina_Bool 70EAPI Eina_Bool
61eolian_implement_is_virtual(const Eolian_Implement *impl) 71eolian_implement_is_virtual(const Eolian_Implement *impl, Eolian_Function_Type ftype)
62{ 72{
63 EINA_SAFETY_ON_NULL_RETURN_VAL(impl, EINA_FALSE); 73 EINA_SAFETY_ON_NULL_RETURN_VAL(impl, EINA_FALSE);
64 return impl->is_virtual; 74 switch (ftype)
75 {
76 case EOLIAN_UNRESOLVED: case EOLIAN_METHOD: case EOLIAN_PROPERTY: case EOLIAN_PROP_GET: return impl->get_virtual; break;
77 case EOLIAN_PROP_SET: return impl->set_virtual; break;
78 default: return EINA_FALSE;
79 }
65} 80}
66 81
67EAPI Eina_Bool 82EAPI Eina_Bool
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 8764c061b3..e3d72c44eb 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -1520,14 +1520,15 @@ parse_implement(Eo_Lexer *ls, Eina_Bool iface)
1520 impl = calloc(1, sizeof(Eolian_Implement)); 1520 impl = calloc(1, sizeof(Eolian_Implement));
1521 FILL_BASE(impl->base, ls, iline, icol); 1521 FILL_BASE(impl->base, ls, iline, icol);
1522 ls->tmp.kls->implements = eina_list_append(ls->tmp.kls->implements, impl); 1522 ls->tmp.kls->implements = eina_list_append(ls->tmp.kls->implements, impl);
1523 Eina_Bool glob_auto = EINA_FALSE, glob_empty = EINA_FALSE;
1523 switch (ls->t.kw) 1524 switch (ls->t.kw)
1524 { 1525 {
1525 case KW_at_auto: 1526 case KW_at_auto:
1526 impl->is_auto = EINA_TRUE; 1527 glob_auto = EINA_TRUE;
1527 eo_lexer_get(ls); 1528 eo_lexer_get(ls);
1528 break; 1529 break;
1529 case KW_at_empty: 1530 case KW_at_empty:
1530 impl->is_empty = EINA_TRUE; 1531 glob_empty = EINA_TRUE;
1531 eo_lexer_get(ls); 1532 eo_lexer_get(ls);
1532 break; 1533 break;
1533 default: 1534 default:
@@ -1535,9 +1536,7 @@ parse_implement(Eo_Lexer *ls, Eina_Bool iface)
1535 } 1536 }
1536 if (ls->t.token == '.') 1537 if (ls->t.token == '.')
1537 { 1538 {
1538 if (!impl->is_auto && !impl->is_empty) 1539 eo_lexer_get(ls);
1539 eo_lexer_syntax_error(ls, "class name expected");
1540 check_next(ls, '.');
1541 if (ls->t.token != TOK_VALUE) 1540 if (ls->t.token != TOK_VALUE)
1542 eo_lexer_syntax_error(ls, "name expected"); 1541 eo_lexer_syntax_error(ls, "name expected");
1543 impl->full_name = eina_stringshare_printf("%s.%s", 1542 impl->full_name = eina_stringshare_printf("%s.%s",
@@ -1582,12 +1581,36 @@ propbeg:
1582 CASE_LOCK(ls, get, "get specifier"); 1581 CASE_LOCK(ls, get, "get specifier");
1583 eo_lexer_get(ls); 1582 eo_lexer_get(ls);
1584 impl->is_prop_get = EINA_TRUE; 1583 impl->is_prop_get = EINA_TRUE;
1584 impl->get_auto = glob_auto;
1585 impl->get_empty = glob_empty;
1586 if (ls->t.kw == KW_at_auto)
1587 {
1588 impl->get_auto = EINA_TRUE;
1589 eo_lexer_get(ls);
1590 }
1591 else if (ls->t.kw == KW_at_empty)
1592 {
1593 impl->get_empty = EINA_TRUE;
1594 eo_lexer_get(ls);
1595 }
1585 check_next(ls, ';'); 1596 check_next(ls, ';');
1586 break; 1597 break;
1587 case KW_set: 1598 case KW_set:
1588 CASE_LOCK(ls, set, "set specifier"); 1599 CASE_LOCK(ls, set, "set specifier");
1589 eo_lexer_get(ls); 1600 eo_lexer_get(ls);
1590 impl->is_prop_set = EINA_TRUE; 1601 impl->is_prop_set = EINA_TRUE;
1602 impl->set_auto = glob_auto;
1603 impl->set_empty = glob_empty;
1604 if (ls->t.kw == KW_at_auto)
1605 {
1606 impl->set_auto = EINA_TRUE;
1607 eo_lexer_get(ls);
1608 }
1609 else if (ls->t.kw == KW_at_empty)
1610 {
1611 impl->set_empty = EINA_TRUE;
1612 eo_lexer_get(ls);
1613 }
1591 check_next(ls, ';'); 1614 check_next(ls, ';');
1592 break; 1615 break;
1593 default: 1616 default:
@@ -1599,7 +1622,13 @@ propend:
1599 check_next(ls, '}'); 1622 check_next(ls, '}');
1600 } 1623 }
1601 else 1624 else
1602 check_next(ls, ';'); 1625 {
1626 if (glob_auto)
1627 impl->get_auto = impl->set_auto = EINA_TRUE;
1628 if (glob_empty)
1629 impl->get_empty = impl->set_empty = EINA_TRUE;
1630 check_next(ls, ';');
1631 }
1603end: 1632end:
1604 if (buf) 1633 if (buf)
1605 { 1634 {
diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h
index 783558e438..0c8157a07b 100644
--- a/src/lib/eolian/eolian_database.h
+++ b/src/lib/eolian/eolian_database.h
@@ -201,11 +201,14 @@ struct _Eolian_Implement
201 const Eolian_Class *klass; 201 const Eolian_Class *klass;
202 const Eolian_Function *foo_id; 202 const Eolian_Function *foo_id;
203 Eina_Stringshare *full_name; 203 Eina_Stringshare *full_name;
204 Eina_Bool is_virtual :1;
205 Eina_Bool is_prop_get :1; 204 Eina_Bool is_prop_get :1;
206 Eina_Bool is_prop_set :1; 205 Eina_Bool is_prop_set :1;
207 Eina_Bool is_auto: 1; 206 Eina_Bool get_virtual :1;
208 Eina_Bool is_empty: 1; 207 Eina_Bool set_virtual :1;
208 Eina_Bool get_auto: 1;
209 Eina_Bool set_auto: 1;
210 Eina_Bool get_empty: 1;
211 Eina_Bool set_empty: 1;
209}; 212};
210 213
211struct _Eolian_Constructor 214struct _Eolian_Constructor
diff --git a/src/tests/eolian/eolian_parsing.c b/src/tests/eolian/eolian_parsing.c
index 7185ab29d8..3e8e4eb1ad 100644
--- a/src/tests/eolian/eolian_parsing.c
+++ b/src/tests/eolian/eolian_parsing.c
@@ -202,18 +202,18 @@ START_TEST(eolian_override)
202 fail_if(!(iter = eolian_class_implements_get(class))); 202 fail_if(!(iter = eolian_class_implements_get(class)));
203 203
204 fail_if(!(eina_iterator_next(iter, (void**)&impl))); 204 fail_if(!(eina_iterator_next(iter, (void**)&impl)));
205 fail_if(eolian_implement_is_auto(impl)); 205 fail_if(eolian_implement_is_auto(impl, EOLIAN_METHOD));
206 fail_if(eolian_implement_is_empty(impl)); 206 fail_if(eolian_implement_is_empty(impl, EOLIAN_METHOD));
207 fail_if(eolian_implement_is_virtual(impl)); 207 fail_if(eolian_implement_is_virtual(impl, EOLIAN_METHOD));
208 fail_if(!(impl_class = eolian_implement_class_get(impl))); 208 fail_if(!(impl_class = eolian_implement_class_get(impl)));
209 fail_if(!(impl_func = eolian_implement_function_get(impl, NULL))); 209 fail_if(!(impl_func = eolian_implement_function_get(impl, NULL)));
210 fail_if(impl_class != base); 210 fail_if(impl_class != base);
211 fail_if(strcmp(eolian_function_name_get(impl_func), "constructor")); 211 fail_if(strcmp(eolian_function_name_get(impl_func), "constructor"));
212 212
213 fail_if(!(eina_iterator_next(iter, (void**)&impl))); 213 fail_if(!(eina_iterator_next(iter, (void**)&impl)));
214 fail_if(!eolian_implement_is_auto(impl)); 214 fail_if(!eolian_implement_is_auto(impl, EOLIAN_PROP_SET));
215 fail_if(eolian_implement_is_empty(impl)); 215 fail_if(eolian_implement_is_empty(impl, EOLIAN_PROP_SET));
216 fail_if(eolian_implement_is_virtual(impl)); 216 fail_if(eolian_implement_is_virtual(impl, EOLIAN_PROP_SET));
217 fail_if(!(impl_class = eolian_implement_class_get(impl))); 217 fail_if(!(impl_class = eolian_implement_class_get(impl)));
218 fail_if(!(impl_func = eolian_implement_function_get(impl, NULL))); 218 fail_if(!(impl_func = eolian_implement_function_get(impl, NULL)));
219 fail_if(impl_class != class); 219 fail_if(impl_class != class);
@@ -226,9 +226,9 @@ START_TEST(eolian_override)
226 fail_if(eolian_function_is_virtual_pure(impl_func, EOLIAN_PROP_GET)); 226 fail_if(eolian_function_is_virtual_pure(impl_func, EOLIAN_PROP_GET));
227 227
228 fail_if(!(eina_iterator_next(iter, (void**)&impl))); 228 fail_if(!(eina_iterator_next(iter, (void**)&impl)));
229 fail_if(eolian_implement_is_auto(impl)); 229 fail_if(eolian_implement_is_auto(impl, EOLIAN_METHOD));
230 fail_if(!eolian_implement_is_empty(impl)); 230 fail_if(!eolian_implement_is_empty(impl, EOLIAN_METHOD));
231 fail_if(eolian_implement_is_virtual(impl)); 231 fail_if(eolian_implement_is_virtual(impl, EOLIAN_METHOD));
232 fail_if(!(impl_class = eolian_implement_class_get(impl))); 232 fail_if(!(impl_class = eolian_implement_class_get(impl)));
233 fail_if(!(impl_func = eolian_implement_function_get(impl, NULL))); 233 fail_if(!(impl_func = eolian_implement_function_get(impl, NULL)));
234 fail_if(impl_class != class); 234 fail_if(impl_class != class);