Eolian/Lexer: support data type for events.
authorDaniel Zaoui <daniel.zaoui@samsung.com>
Wed, 2 Apr 2014 11:04:12 +0000 (14:04 +0300)
committerDaniel Zaoui <daniel.zaoui@samsung.com>
Wed, 2 Apr 2014 11:27:12 +0000 (14:27 +0300)
src/bin/eolian/eo1_generator.c
src/lib/eolian/Eolian.h
src/lib/eolian/eo_definitions.c
src/lib/eolian/eo_definitions.h
src/lib/eolian/eo_lexer.c
src/lib/eolian/eo_lexer.rl
src/lib/eolian/eolian_database.c
src/lib/eolian/eolian_database.h

index 1b4887e..52a4ef7 100644 (file)
@@ -286,7 +286,7 @@ eo1_header_generate(const char *classname, Eina_Strbuf *buf)
      {
         const char *evname = NULL;
         const char *evdesc = NULL;
-        eolian_class_event_information_get(event, &evname, &evdesc);
+        eolian_class_event_information_get(event, &evname, NULL, &evdesc);
 
         if (!evdesc) evdesc = "No description";
         eina_strbuf_reset(tmpbuf);
@@ -553,7 +553,7 @@ eo1_source_beginning_generate(const char *classname, Eina_Strbuf *buf)
         const char *evdesc;
         char *evdesc_line1;
 
-        eolian_class_event_information_get(event, &evname, &evdesc);
+        eolian_class_event_information_get(event, &evname, NULL, &evdesc);
         evdesc_line1 = _source_desc_get(evdesc);
         _template_fill(str_ev, "@#CLASS_EVENT_@#FUNC", classname, evname, EINA_TRUE);
         eina_strbuf_replace_all(str_ev, ",", "_");
@@ -810,7 +810,7 @@ eo1_source_end_generate(const char *classname, Eina_Strbuf *buf)
      {
         const char *evname;
 
-        eolian_class_event_information_get(event, &evname, NULL);
+        eolian_class_event_information_get(event, &evname, NULL, NULL);
         _template_fill(tmpbuf, "@#CLASS_EVENT_@#FUNC", classname, evname, EINA_TRUE);
         eina_strbuf_replace_all(tmpbuf, ",", "_");
         eina_strbuf_append_printf(str_ev, "\n     %s,", eina_strbuf_string_get(tmpbuf));
index 951e521..a909f47 100644 (file)
@@ -578,7 +578,7 @@ EAPI const Eina_List *eolian_class_events_list_get(const char *class_name);
  *
  * @ingroup Eolian
  */
-EAPI Eina_Bool eolian_class_event_information_get(Eolian_Event event, const char **event_name, const char **event_desc);
+EAPI Eina_Bool eolian_class_event_information_get(Eolian_Event event, const char **event_name, const char **event_type, const char **event_desc);
 
 /*
  * @brief Indicates if the class constructor has to invoke
index 11d860e..797de2f 100644 (file)
@@ -95,6 +95,8 @@ eo_definitions_event_def_free(Eo_Event_Def *sgn)
 {
    if (sgn->name)
      eina_stringshare_del(sgn->name);
+   if (sgn->type)
+     eina_stringshare_del(sgn->type);
    if (sgn->comment)
      eina_stringshare_del(sgn->comment);
 
index e915c24..76f4a7d 100644 (file)
@@ -94,6 +94,7 @@ typedef struct _eo_method_def
 typedef struct _eo_event_def
 {
    const char *name;
+   const char *type;
    const char *comment;
 } Eo_Event_Def;
 
index a5dd80d..aa1ea91 100644 (file)
@@ -364,7 +364,7 @@ static const char _eo_tokenizer_actions[] = {
        26, 1, 27, 1, 28, 1, 29, 1, 
        30, 1, 31, 1, 32, 1, 33, 1, 
        34, 1, 35, 1, 36, 1, 37, 1, 
-       38, 1, 39, 1, 40, 1, 43, 1, 
+       38, 1, 39, 1, 40, 1, 41, 1, 
        44, 1, 45, 1, 46, 1, 47, 1, 
        48, 1, 49, 1, 50, 1, 51, 1, 
        52, 1, 53, 1, 54, 1, 55, 1, 
@@ -374,7 +374,7 @@ static const char _eo_tokenizer_actions[] = {
        68, 1, 69, 1, 70, 1, 71, 1, 
        72, 1, 73, 1, 74, 1, 75, 1, 
        76, 1, 77, 1, 78, 1, 79, 1, 
-       80, 1, 81, 1, 84, 1, 85, 1, 
+       80, 1, 81, 1, 82, 1, 85, 1, 
        86, 1, 87, 1, 88, 1, 89, 1, 
        90, 1, 91, 1, 92, 1, 93, 1, 
        94, 1, 95, 1, 96, 1, 97, 1, 
@@ -384,22 +384,23 @@ static const char _eo_tokenizer_actions[] = {
        110, 1, 111, 1, 112, 1, 113, 1, 
        114, 1, 115, 1, 116, 1, 117, 1, 
        118, 1, 119, 1, 120, 1, 121, 1, 
-       122, 1, 123, 1, 124, 2, 0, 40, 
-       2, 0, 51, 2, 0, 60, 2, 0, 
-       71, 2, 0, 80, 2, 0, 92, 2, 
-       0, 101, 2, 0, 119, 2, 4, 46, 
-       2, 5, 41, 2, 6, 2, 2, 7, 
-       42, 2, 8, 55, 2, 10, 0, 2, 
-       10, 72, 2, 12, 87, 2, 13, 82, 
-       2, 14, 83, 2, 15, 0, 2, 15, 
-       93, 2, 16, 0, 2, 17, 0, 2, 
-       17, 120, 2, 18, 0, 2, 19, 0, 
-       2, 19, 2, 2, 23, 0, 2, 24, 
-       0, 2, 24, 2, 2, 25, 0, 2, 
-       27, 0, 2, 28, 0, 2, 28, 2, 
-       2, 35, 0, 2, 35, 120, 2, 38, 
-       1, 2, 38, 2, 2, 38, 3, 2, 
-       38, 9, 2, 38, 11
+       122, 1, 123, 1, 124, 1, 125, 2, 
+       0, 41, 2, 0, 52, 2, 0, 61, 
+       2, 0, 72, 2, 0, 81, 2, 0, 
+       93, 2, 0, 102, 2, 0, 120, 2, 
+       4, 47, 2, 5, 42, 2, 6, 2, 
+       2, 7, 43, 2, 8, 56, 2, 10, 
+       0, 2, 10, 73, 2, 12, 88, 2, 
+       13, 83, 2, 14, 84, 2, 15, 0, 
+       2, 15, 94, 2, 16, 0, 2, 17, 
+       0, 2, 17, 121, 2, 18, 0, 2, 
+       19, 0, 2, 20, 0, 2, 20, 2, 
+       2, 24, 0, 2, 25, 0, 2, 25, 
+       2, 2, 26, 0, 2, 28, 0, 2, 
+       29, 0, 2, 29, 2, 2, 36, 0, 
+       2, 36, 121, 2, 39, 1, 2, 39, 
+       2, 2, 39, 3, 2, 39, 9, 2, 
+       39, 11
 };
 
 static const short _eo_tokenizer_key_offsets[] = {
@@ -426,28 +427,28 @@ static const short _eo_tokenizer_key_offsets[] = {
        637, 641, 648, 656, 657, 658, 659, 660, 
        661, 662, 663, 664, 665, 669, 670, 671, 
        672, 673, 674, 675, 676, 680, 687, 695, 
-       696, 697, 698, 699, 703, 711, 723, 727
-       739, 740, 741, 751, 753, 756, 764, 765
-       766, 767, 768, 769, 770, 771, 772, 776
-       784, 797, 802, 806, 807, 808, 809, 810
-       811, 823, 828, 832, 841, 845, 846, 847
-       848, 849, 850, 854, 863, 870, 881, 885
-       899, 909, 921, 926, 932, 937, 938, 939
-       940, 941, 942, 945, 952, 960, 961, 965
-       973, 977, 982, 983, 984, 994, 996, 999, 
-       1009, 1021, 1033, 1034, 1035, 1036, 1037, 1038
-       1039, 1040, 1041, 1042, 1043, 1044, 1045, 1049
-       1056, 1064, 1065, 1066, 1067, 1068, 1069, 1073
-       1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081
-       1085, 1093, 1096, 1098, 1099, 1100, 1101, 1102
-       1113, 1116, 1118, 1129, 1141, 1153, 1157, 1157
-       1158, 1167, 1170, 1172, 1183, 1187, 1187, 1188, 
-       1197, 1200, 1202, 1203, 1204, 1205, 1206, 1207
-       1218, 1221, 1223, 1230, 1231, 1240, 1243, 1245
-       1246, 1247, 1248, 1249, 1253, 1253, 1254, 1265, 
-       1268, 1270, 1277, 1278, 1290, 1293, 1295, 1296
-       1298, 1301, 1303, 1306, 1307, 1308, 1309, 1310
-       1313, 1314, 1315
+       696, 697, 698, 699, 703, 711, 727, 731
+       743, 744, 745, 755, 757, 760, 768, 776
+       784, 796, 800, 801, 802, 803, 804, 805
+       806, 807, 808, 812, 820, 833, 838, 842
+       843, 844, 845, 846, 847, 859, 864, 868
+       877, 881, 882, 883, 884, 885, 886, 890
+       899, 906, 917, 921, 935, 945, 957, 962
+       968, 973, 974, 975, 976, 977, 978, 981
+       988, 996, 997, 1001, 1009, 1013, 1018, 1019, 
+       1020, 1030, 1032, 1035, 1045, 1057, 1069, 1070
+       1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078
+       1079, 1080, 1081, 1085, 1092, 1100, 1101, 1102
+       1103, 1104, 1105, 1109, 1110, 1111, 1112, 1113
+       1114, 1115, 1116, 1117, 1121, 1129, 1132, 1134
+       1135, 1136, 1137, 1138, 1149, 1152, 1154, 1165
+       1177, 1189, 1193, 1193, 1194, 1203, 1206, 1208, 
+       1219, 1223, 1223, 1224, 1233, 1236, 1238, 1239
+       1240, 1241, 1242, 1243, 1254, 1257, 1259, 1266
+       1267, 1276, 1279, 1281, 1282, 1283, 1284, 1285, 
+       1289, 1289, 1290, 1301, 1304, 1306, 1313, 1314
+       1326, 1329, 1331, 1332, 1334, 1337, 1339, 1342
+       1343, 1344, 1345, 1346, 1349, 1350, 1351
 };
 
 static const char _eo_tokenizer_trans_keys[] = {
@@ -539,83 +540,88 @@ static const char _eo_tokenizer_trans_keys[] = {
        10, 0, 32, 65, 90, 97, 122, 59, 
        95, 48, 57, 65, 90, 97, 122, 101, 
        110, 116, 115, 10, 123, 0, 32, 10, 
-       125, 0, 32, 65, 90, 97, 122, 10, 
-       44, 59, 95, 0, 32, 48, 57, 65, 
-       90, 97, 122, 10, 59, 0, 32, 9, 
-       10, 13, 32, 47, 125, 0, 31, 65, 
-       90, 97, 122, 42, 64, 10, 95, 0, 
-       32, 48, 57, 64, 90, 97, 122, 10, 
-       42, 10, 42, 47, 10, 125, 0, 32, 
-       65, 90, 97, 122, 112, 108, 101, 109, 
-       101, 110, 116, 115, 10, 123, 0, 32, 
+       125, 0, 32, 65, 90, 97, 122, 9, 
+       10, 13, 32, 40, 44, 59, 95, 0, 
+       31, 48, 57, 65, 90, 97, 122, 10, 
+       59, 0, 32, 9, 10, 13, 32, 47, 
+       125, 0, 31, 65, 90, 97, 122, 42, 
+       64, 10, 95, 0, 32, 48, 57, 64, 
+       90, 97, 122, 10, 42, 10, 42, 47, 
        10, 125, 0, 32, 65, 90, 97, 122, 
-       10, 58, 59, 95, 123, 0, 32, 48, 
-       57, 65, 90, 97, 122, 10, 59, 123, 
-       0, 32, 10, 108, 0, 32, 101, 103, 
-       97, 99, 121, 9, 10, 13, 32, 59, 
-       123, 0, 31, 65, 90, 97, 122, 10, 
-       59, 123, 0, 32, 10, 125, 0, 32, 
-       10, 59, 125, 0, 32, 65, 90, 97, 
-       122, 10, 112, 0, 32, 97, 114, 97, 
-       109, 115, 10, 123, 0, 32, 10, 58, 
-       59, 0, 32, 65, 90, 97, 122, 9, 
-       13, 32, 65, 90, 97, 122, 10, 59, 
-       95, 0, 32, 48, 57, 65, 90, 97, 
-       122, 10, 59, 0, 32, 9, 10, 13, 
-       32, 47, 58, 59, 125, 0, 31, 65, 
-       90, 97, 122, 10, 58, 59, 125, 0, 
-       32, 65, 90, 97, 122, 9, 13, 32, 
-       58, 59, 95, 48, 57, 65, 90, 97, 
-       122, 9, 13, 32, 58, 59, 10, 59, 
-       114, 125, 0, 32, 10, 114, 125, 0, 
-       32, 101, 116, 117, 114, 110, 9, 13, 
-       32, 9, 13, 32, 65, 90, 97, 122, 
-       58, 95, 48, 57, 65, 90, 97, 122, 
-       58, 65, 90, 97, 122, 59, 95, 48, 
-       57, 65, 90, 97, 122, 10, 125, 0, 
-       32, 10, 59, 125, 0, 32, 42, 64, 
-       10, 95, 0, 32, 48, 57, 64, 90, 
-       97, 122, 10, 42, 10, 42, 47, 10, 
-       58, 59, 125, 0, 32, 65, 90, 97, 
-       122, 9, 10, 13, 32, 59, 123, 0, 
-       31, 65, 90, 97, 122, 10, 59, 95, 
+       9, 10, 13, 32, 40, 59, 0, 31, 
+       9, 13, 32, 95, 65, 90, 97, 122, 
+       9, 13, 32, 41, 42, 95, 48, 57, 
+       65, 90, 97, 122, 10, 59, 0, 32, 
+       112, 108, 101, 109, 101, 110, 116, 115, 
+       10, 123, 0, 32, 10, 125, 0, 32, 
+       65, 90, 97, 122, 10, 58, 59, 95, 
        123, 0, 32, 48, 57, 65, 90, 97, 
-       122, 58, 103, 97, 99, 121, 95, 112, 
-       114, 101, 102, 105, 120, 10, 58, 0, 
-       32, 10, 0, 32, 65, 90, 97, 122, 
-       59, 95, 48, 57, 65, 90, 97, 122, 
-       116, 104, 111, 100, 115, 10, 123, 0, 
-       32, 111, 112, 101, 114, 116, 105, 101, 
-       115, 10, 123, 0, 32, 10, 47, 97, 
-       99, 105, 109, 0, 32, 10, 0, 32, 
-       42, 47, 98, 108, 110, 105, 10, 47, 
-       108, 114, 125, 0, 32, 65, 90, 97, 
-       122, 10, 0, 32, 42, 47, 9, 13, 
-       32, 58, 95, 48, 57, 65, 90, 97, 
-       122, 9, 13, 32, 58, 95, 101, 48, 
+       122, 10, 59, 123, 0, 32, 10, 108, 
+       0, 32, 101, 103, 97, 99, 121, 9, 
+       10, 13, 32, 59, 123, 0, 31, 65, 
+       90, 97, 122, 10, 59, 123, 0, 32, 
+       10, 125, 0, 32, 10, 59, 125, 0, 
+       32, 65, 90, 97, 122, 10, 112, 0, 
+       32, 97, 114, 97, 109, 115, 10, 123, 
+       0, 32, 10, 58, 59, 0, 32, 65, 
+       90, 97, 122, 9, 13, 32, 65, 90, 
+       97, 122, 10, 59, 95, 0, 32, 48, 
+       57, 65, 90, 97, 122, 10, 59, 0, 
+       32, 9, 10, 13, 32, 47, 58, 59, 
+       125, 0, 31, 65, 90, 97, 122, 10, 
+       58, 59, 125, 0, 32, 65, 90, 97, 
+       122, 9, 13, 32, 58, 59, 95, 48, 
+       57, 65, 90, 97, 122, 9, 13, 32, 
+       58, 59, 10, 59, 114, 125, 0, 32, 
+       10, 114, 125, 0, 32, 101, 116, 117, 
+       114, 110, 9, 13, 32, 9, 13, 32, 
+       65, 90, 97, 122, 58, 95, 48, 57, 
+       65, 90, 97, 122, 58, 65, 90, 97, 
+       122, 59, 95, 48, 57, 65, 90, 97, 
+       122, 10, 125, 0, 32, 10, 59, 125, 
+       0, 32, 42, 64, 10, 95, 0, 32, 
+       48, 57, 64, 90, 97, 122, 10, 42, 
+       10, 42, 47, 10, 58, 59, 125, 0, 
+       32, 65, 90, 97, 122, 9, 10, 13, 
+       32, 59, 123, 0, 31, 65, 90, 97, 
+       122, 10, 59, 95, 123, 0, 32, 48, 
+       57, 65, 90, 97, 122, 58, 103, 97, 
+       99, 121, 95, 112, 114, 101, 102, 105, 
+       120, 10, 58, 0, 32, 10, 0, 32, 
+       65, 90, 97, 122, 59, 95, 48, 57, 
+       65, 90, 97, 122, 116, 104, 111, 100, 
+       115, 10, 123, 0, 32, 111, 112, 101, 
+       114, 116, 105, 101, 115, 10, 123, 0, 
+       32, 10, 47, 97, 99, 105, 109, 0, 
+       32, 10, 0, 32, 42, 47, 98, 108, 
+       110, 105, 10, 47, 108, 114, 125, 0, 
+       32, 65, 90, 97, 122, 10, 0, 32, 
+       42, 47, 9, 13, 32, 58, 95, 48, 
        57, 65, 90, 97, 122, 9, 13, 32, 
        58, 95, 101, 48, 57, 65, 90, 97, 
-       122, 9, 13, 32, 47, 59, 10, 47, 
-       125, 0, 32, 64, 90, 97, 122, 10, 
-       0, 32, 42, 47, 9, 13, 32, 42, 
-       95, 48, 57, 64, 90, 97, 122, 9, 
-       13, 32, 47, 59, 10, 47, 103, 107, 
-       115, 118, 125, 0, 32, 10, 0, 32, 
-       42, 47, 101, 101, 101, 97, 59, 10, 
-       47, 125, 0, 32, 48, 57, 65, 90, 
-       97, 122, 10, 0, 32, 42, 47, 95, 
-       48, 57, 65, 90, 97, 122, 59, 10, 
-       47, 99, 108, 112, 114, 125, 0, 32, 
-       10, 0, 32, 42, 47, 111, 101, 97, 
-       101, 9, 13, 32, 47, 59, 10, 47, 
-       125, 0, 32, 48, 57, 65, 90, 97, 
-       122, 10, 0, 32, 42, 47, 95, 48, 
-       57, 65, 90, 97, 122, 59, 10, 47, 
-       99, 100, 101, 105, 108, 109, 112, 125, 
-       0, 32, 10, 0, 32, 42, 47, 111, 
-       97, 101, 10, 0, 32, 111, 118, 10, 
-       0, 32, 59, 109, 59, 101, 10, 0, 
-       32, 101, 114, 59, 0
+       122, 9, 13, 32, 58, 95, 101, 48, 
+       57, 65, 90, 97, 122, 9, 13, 32, 
+       47, 59, 10, 47, 125, 0, 32, 64, 
+       90, 97, 122, 10, 0, 32, 42, 47, 
+       9, 13, 32, 42, 95, 48, 57, 64, 
+       90, 97, 122, 9, 13, 32, 47, 59, 
+       10, 47, 103, 107, 115, 118, 125, 0, 
+       32, 10, 0, 32, 42, 47, 101, 101, 
+       101, 97, 59, 10, 47, 125, 0, 32, 
+       48, 57, 65, 90, 97, 122, 10, 0, 
+       32, 42, 47, 95, 48, 57, 65, 90, 
+       97, 122, 59, 10, 47, 99, 108, 112, 
+       114, 125, 0, 32, 10, 0, 32, 42, 
+       47, 111, 101, 97, 101, 9, 13, 32, 
+       47, 59, 10, 47, 125, 0, 32, 48, 
+       57, 65, 90, 97, 122, 10, 0, 32, 
+       42, 47, 95, 48, 57, 65, 90, 97, 
+       122, 59, 10, 47, 99, 100, 101, 105, 
+       108, 109, 112, 125, 0, 32, 10, 0, 
+       32, 42, 47, 111, 97, 101, 10, 0, 
+       32, 111, 118, 10, 0, 32, 59, 109, 
+       59, 101, 10, 0, 32, 101, 114, 59, 
+       0
 };
 
 static const char _eo_tokenizer_single_lengths[] = {
@@ -642,28 +648,28 @@ static const char _eo_tokenizer_single_lengths[] = {
        2, 1, 2, 1, 1, 1, 1, 1, 
        1, 1, 1, 1, 2, 1, 1, 1, 
        1, 1, 1, 1, 2, 1, 2, 1, 
-       1, 1, 1, 2, 2, 4, 2, 6, 
-       1, 1, 2, 2, 3, 2, 1, 1
-       1, 1, 1, 1, 1, 1, 2, 2
-       5, 3, 2, 1, 1, 1, 1, 1, 
-       6, 3, 2, 3, 2, 1, 1, 1
-       1, 1, 2, 3, 3, 3, 2, 8
-       4, 6, 5, 4, 3, 1, 1, 1
-       1, 1, 3, 3, 2, 1, 0, 2
-       2, 3, 1, 1, 2, 2, 3, 4
-       6, 4, 1, 1, 1, 1, 1, 1, 
-       1, 1, 1, 1, 1, 1, 2, 1, 
-       2, 1, 1, 1, 1, 1, 2, 1, 
-       1, 1, 1, 1, 1, 1, 1, 2
-       6, 1, 2, 1, 1, 1, 1, 5
-       1, 2, 5, 6, 6, 4, 0, 1
-       3, 1, 2, 5, 4, 0, 1, 7
-       1, 2, 1, 1, 1, 1, 1, 3
-       1, 2, 1, 1, 7, 1, 2, 1, 
-       1, 1, 1, 4, 0, 1, 3, 1
-       2, 1, 1, 10, 1, 2, 1, 2
-       1, 2, 1, 1, 1, 1, 1, 1, 
-       1, 1, 1
+       1, 1, 1, 2, 2, 8, 2, 6, 
+       1, 1, 2, 2, 3, 2, 6, 4
+       6, 2, 1, 1, 1, 1, 1, 1
+       1, 1, 2, 2, 5, 3, 2, 1, 
+       1, 1, 1, 1, 6, 3, 2, 3
+       2, 1, 1, 1, 1, 1, 2, 3
+       3, 3, 2, 8, 4, 6, 5, 4
+       3, 1, 1, 1, 1, 1, 3, 3
+       2, 1, 0, 2, 2, 3, 1, 1
+       2, 2, 3, 4, 6, 4, 1, 1, 
+       1, 1, 1, 1, 1, 1, 1, 1, 
+       1, 1, 2, 1, 2, 1, 1, 1, 
+       1, 1, 2, 1, 1, 1, 1, 1
+       1, 1, 1, 2, 6, 1, 2, 1
+       1, 1, 1, 5, 1, 2, 5, 6
+       6, 4, 0, 1, 3, 1, 2, 5
+       4, 0, 1, 7, 1, 2, 1, 1
+       1, 1, 1, 3, 1, 2, 1, 1, 
+       7, 1, 2, 1, 1, 1, 1, 4
+       0, 1, 3, 1, 2, 1, 1, 10
+       1, 2, 1, 2, 1, 2, 1, 1, 
+       1, 1, 1, 1, 1, 1, 1
 };
 
 static const char _eo_tokenizer_range_lengths[] = {
@@ -691,27 +697,27 @@ static const char _eo_tokenizer_range_lengths[] = {
        0, 0, 0, 0, 1, 0, 0, 0, 
        0, 0, 0, 0, 1, 3, 3, 0, 
        0, 0, 0, 1, 3, 4, 1, 3, 
-       0, 0, 4, 0, 0, 3, 0, 0
-       0, 0, 0, 0, 0, 0, 1, 3
-       4, 1, 1, 0, 0, 0, 0, 0, 
-       3, 1, 1, 3, 1, 0, 0, 0
-       0, 0, 1, 3, 2, 4, 1, 3, 
-       3, 3, 0, 1, 1, 0, 0, 0
-       0, 0, 0, 2, 3, 0, 2, 3
-       1, 1, 0, 0, 4, 0, 0, 3
-       3, 4, 0, 0, 0, 0, 0, 0, 
-       0, 0, 0, 0, 0, 0, 1, 3
-       3, 0, 0, 0, 0, 0, 1, 0, 
-       0, 0, 0, 0, 0, 0, 0, 1
-       1, 1, 0, 0, 0, 0, 0, 3
-       1, 0, 3, 3, 3, 0, 0, 0
-       3, 1, 0, 3, 0, 0, 0, 1
-       1, 0, 0, 0, 0, 0, 0, 4
-       1, 0, 3, 0, 1, 1, 0, 0, 
-       0, 0, 0, 0, 0, 0, 4, 1
-       0, 3, 0, 1, 1, 0, 0, 0
-       1, 0, 1, 0, 0, 0, 0, 1
-       0, 0, 0
+       0, 0, 4, 0, 0, 3, 1, 2
+       3, 1, 0, 0, 0, 0, 0, 0
+       0, 0, 1, 3, 4, 1, 1, 0, 
+       0, 0, 0, 0, 3, 1, 1, 3
+       1, 0, 0, 0, 0, 0, 1, 3, 
+       2, 4, 1, 3, 3, 3, 0, 1
+       1, 0, 0, 0, 0, 0, 0, 2
+       3, 0, 2, 3, 1, 1, 0, 0
+       4, 0, 0, 3, 3, 4, 0, 0, 
+       0, 0, 0, 0, 0, 0, 0, 0
+       0, 0, 1, 3, 3, 0, 0, 0, 
+       0, 0, 1, 0, 0, 0, 0, 0
+       0, 0, 0, 1, 1, 1, 0, 0
+       0, 0, 0, 3, 1, 0, 3, 3
+       3, 0, 0, 0, 3, 1, 0, 3
+       0, 0, 0, 1, 1, 0, 0, 0
+       0, 0, 0, 4, 1, 0, 3, 0, 
+       1, 1, 0, 0, 0, 0, 0, 0
+       0, 0, 4, 1, 0, 3, 0, 1
+       1, 0, 0, 0, 1, 0, 1, 0
+       0, 0, 0, 1, 0, 0, 0
 };
 
 static const short _eo_tokenizer_index_offsets[] = {
@@ -738,28 +744,28 @@ static const short _eo_tokenizer_index_offsets[] = {
        661, 665, 670, 676, 678, 680, 682, 684, 
        686, 688, 690, 692, 694, 698, 700, 702, 
        704, 706, 708, 710, 712, 716, 721, 727, 
-       729, 731, 733, 735, 739, 745, 754, 758
-       768, 770, 772, 779, 782, 786, 792, 794, 
-       796, 798, 800, 802, 804, 806, 808, 812
-       818, 828, 833, 837, 839, 841, 843, 845
-       847, 857, 862, 866, 873, 877, 879, 881
-       883, 885, 887, 891, 898, 904, 912, 916
-       928, 936, 946, 952, 958, 963, 965, 967
-       969, 971, 973, 977, 983, 989, 991, 994
-       1000, 1004, 1009, 1011, 1013, 1020, 1023, 1027
-       1035, 1045, 1054, 1056, 1058, 1060, 1062, 1064
-       1066, 1068, 1070, 1072, 1074, 1076, 1078, 1082
-       1087, 1093, 1095, 1097, 1099, 1101, 1103, 1107
-       1109, 1111, 1113, 1115, 1117, 1119, 1121, 1123
-       1127, 1135, 1138, 1141, 1143, 1145, 1147, 1149
-       1158, 1161, 1164, 1173, 1183, 1193, 1198, 1199
-       1201, 1208, 1211, 1214, 1223, 1228, 1229, 1231
-       1240, 1243, 1246, 1248, 1250, 1252, 1254, 1256
-       1264, 1267, 1270, 1275, 1277, 1286, 1289, 1292
-       1294, 1296, 1298, 1300, 1305, 1306, 1308, 1316
-       1319, 1322, 1327, 1329, 1341, 1344, 1347, 1349
-       1352, 1355, 1358, 1361, 1363, 1365, 1367, 1369
-       1372, 1374, 1376
+       729, 731, 733, 735, 739, 745, 758, 762
+       772, 774, 776, 783, 786, 790, 796, 804, 
+       811, 821, 825, 827, 829, 831, 833, 835
+       837, 839, 841, 845, 851, 861, 866, 870
+       872, 874, 876, 878, 880, 890, 895, 899
+       906, 910, 912, 914, 916, 918, 920, 924
+       931, 937, 945, 949, 961, 969, 979, 985
+       991, 996, 998, 1000, 1002, 1004, 1006, 1010
+       1016, 1022, 1024, 1027, 1033, 1037, 1042, 1044
+       1046, 1053, 1056, 1060, 1068, 1078, 1087, 1089
+       1091, 1093, 1095, 1097, 1099, 1101, 1103, 1105
+       1107, 1109, 1111, 1115, 1120, 1126, 1128, 1130
+       1132, 1134, 1136, 1140, 1142, 1144, 1146, 1148
+       1150, 1152, 1154, 1156, 1160, 1168, 1171, 1174
+       1176, 1178, 1180, 1182, 1191, 1194, 1197, 1206
+       1216, 1226, 1231, 1232, 1234, 1241, 1244, 1247
+       1256, 1261, 1262, 1264, 1273, 1276, 1279, 1281
+       1283, 1285, 1287, 1289, 1297, 1300, 1303, 1308
+       1310, 1319, 1322, 1325, 1327, 1329, 1331, 1333
+       1338, 1339, 1341, 1349, 1352, 1355, 1360, 1362
+       1374, 1377, 1380, 1382, 1385, 1388, 1391, 1394
+       1396, 1398, 1400, 1402, 1405, 1407, 1409
 };
 
 static const short _eo_tokenizer_indicies[] = {
@@ -856,242 +862,250 @@ static const short _eo_tokenizer_indicies[] = {
        229, 286, 285, 285, 285, 285, 229, 287, 
        229, 288, 229, 289, 229, 290, 229, 291, 
        292, 290, 229, 293, 295, 292, 294, 294, 
-       229, 297, 298, 299, 298, 296, 298, 298, 
-       298, 229, 301, 302, 300, 229, 302, 293, 
-       302, 302, 303, 295, 292, 294, 294, 229, 
-       304, 229, 305, 229, 306, 307, 305, 307, 
-       307, 307, 229, 309, 310, 308, 309, 310, 
-       311, 308, 313, 315, 312, 314, 314, 229, 
-       316, 229, 317, 229, 318, 229, 319, 229, 
-       320, 229, 321, 229, 322, 229, 323, 229, 
-       324, 325, 323, 229, 326, 328, 325, 327, 
-       327, 229, 330, 332, 333, 331, 334, 329, 
-       331, 331, 331, 229, 336, 325, 337, 335, 
-       229, 338, 339, 337, 229, 340, 229, 341, 
-       229, 342, 229, 343, 229, 344, 229, 346, 
-       347, 346, 346, 348, 350, 345, 349, 349, 
-       229, 352, 353, 354, 351, 229, 355, 356, 
-       353, 229, 326, 325, 328, 325, 327, 327, 
-       229, 357, 358, 354, 229, 359, 229, 360, 
-       229, 361, 229, 362, 229, 363, 229, 364, 
-       365, 363, 229, 366, 367, 368, 365, 369, 
-       369, 229, 367, 367, 367, 370, 370, 229, 
-       372, 374, 373, 371, 373, 373, 373, 229, 
-       376, 368, 375, 229, 368, 378, 368, 368, 
-       379, 367, 368, 380, 377, 369, 369, 229, 
-       378, 367, 368, 380, 377, 369, 369, 229, 
-       381, 381, 381, 383, 384, 382, 382, 382, 
-       382, 229, 385, 385, 385, 367, 368, 229, 
-       387, 386, 388, 389, 386, 229, 387, 388, 
-       389, 386, 229, 390, 229, 391, 229, 392, 
-       229, 393, 229, 394, 229, 395, 395, 395, 
-       229, 395, 395, 395, 396, 396, 229, 398, 
-       397, 397, 397, 397, 229, 399, 229, 400, 
-       400, 229, 402, 401, 401, 401, 401, 229, 
-       404, 389, 403, 229, 355, 353, 356, 353, 
-       229, 405, 229, 406, 229, 407, 408, 406, 
-       408, 408, 408, 229, 410, 411, 409, 410, 
-       411, 412, 409, 414, 415, 416, 418, 413, 
-       417, 417, 229, 419, 352, 419, 419, 353, 
-       354, 351, 420, 420, 229, 422, 424, 423, 
-       425, 421, 423, 423, 423, 229, 331, 229, 
-       426, 229, 427, 229, 428, 229, 429, 229, 
-       430, 229, 431, 229, 432, 229, 433, 229, 
-       434, 229, 435, 229, 436, 229, 437, 438, 
-       436, 229, 439, 438, 440, 440, 229, 442, 
-       441, 441, 441, 441, 229, 443, 229, 444, 
-       229, 445, 229, 446, 229, 447, 229, 448, 
-       449, 447, 229, 450, 229, 451, 229, 452, 
-       229, 453, 229, 454, 229, 455, 229, 456, 
-       229, 457, 229, 458, 459, 457, 229, 462, 
-       463, 464, 465, 466, 467, 461, 460, 462, 
-       461, 468, 1, 5, 469, 470, 469, 471, 
-       469, 472, 469, 473, 469, 476, 477, 479, 
-       480, 481, 475, 478, 478, 474, 476, 475, 
-       482, 484, 69, 483, 71, 71, 71, 72, 
-       79, 79, 79, 79, 483, 71, 71, 71, 
-       72, 79, 485, 79, 79, 79, 483, 71, 
-       71, 71, 72, 79, 486, 79, 79, 79, 
-       483, 97, 97, 97, 98, 487, 488, 490, 
-       489, 493, 494, 496, 492, 495, 495, 491, 
-       493, 492, 497, 108, 112, 498, 114, 114, 
-       114, 114, 114, 114, 114, 114, 498, 117, 
-       117, 117, 118, 499, 500, 502, 501, 505, 
-       506, 507, 508, 509, 510, 511, 504, 503, 
-       505, 504, 512, 128, 132, 513, 514, 513, 
-       515, 513, 516, 513, 517, 513, 519, 518, 
-       522, 523, 525, 521, 524, 524, 524, 520, 
-       522, 521, 526, 151, 155, 527, 159, 159, 
-       159, 159, 527, 529, 528, 532, 533, 534, 
-       535, 536, 537, 538, 531, 530, 532, 531, 
-       539, 541, 176, 540, 542, 540, 543, 540, 
-       544, 540, 545, 540, 205, 205, 205, 206, 
-       546, 547, 549, 548, 552, 553, 555, 551, 
-       554, 554, 554, 550, 552, 551, 556, 216, 
-       220, 557, 224, 224, 224, 224, 557, 559, 
-       558, 562, 563, 564, 565, 566, 567, 568, 
-       569, 570, 571, 561, 560, 562, 561, 572, 
-       574, 241, 573, 575, 573, 576, 577, 573, 
-       580, 579, 578, 581, 582, 573, 585, 584, 
-       583, 587, 586, 588, 573, 590, 589, 591, 
-       573, 594, 593, 592, 595, 573, 596, 573, 
-       598, 597, 0
+       229, 297, 298, 297, 297, 299, 300, 301, 
+       300, 296, 300, 300, 300, 229, 303, 304, 
+       302, 229, 304, 293, 304, 304, 305, 295, 
+       292, 294, 294, 229, 306, 229, 307, 229, 
+       308, 309, 307, 309, 309, 309, 229, 311, 
+       312, 310, 311, 312, 313, 310, 315, 317, 
+       314, 316, 316, 229, 318, 303, 318, 318, 
+       319, 304, 302, 229, 319, 319, 319, 320, 
+       320, 320, 229, 321, 321, 321, 322, 321, 
+       321, 321, 321, 321, 229, 324, 325, 323, 
+       229, 326, 229, 327, 229, 328, 229, 329, 
+       229, 330, 229, 331, 229, 332, 229, 333, 
+       229, 334, 335, 333, 229, 336, 338, 335, 
+       337, 337, 229, 340, 342, 343, 341, 344, 
+       339, 341, 341, 341, 229, 346, 335, 347, 
+       345, 229, 348, 349, 347, 229, 350, 229, 
+       351, 229, 352, 229, 353, 229, 354, 229, 
+       356, 357, 356, 356, 358, 360, 355, 359, 
+       359, 229, 362, 363, 364, 361, 229, 365, 
+       366, 363, 229, 336, 335, 338, 335, 337, 
+       337, 229, 367, 368, 364, 229, 369, 229, 
+       370, 229, 371, 229, 372, 229, 373, 229, 
+       374, 375, 373, 229, 376, 377, 378, 375, 
+       379, 379, 229, 377, 377, 377, 380, 380, 
+       229, 382, 384, 383, 381, 383, 383, 383, 
+       229, 386, 378, 385, 229, 378, 388, 378, 
+       378, 389, 377, 378, 390, 387, 379, 379, 
+       229, 388, 377, 378, 390, 387, 379, 379, 
+       229, 391, 391, 391, 393, 394, 392, 392, 
+       392, 392, 229, 395, 395, 395, 377, 378, 
+       229, 397, 396, 398, 399, 396, 229, 397, 
+       398, 399, 396, 229, 400, 229, 401, 229, 
+       402, 229, 403, 229, 404, 229, 405, 405, 
+       405, 229, 405, 405, 405, 406, 406, 229, 
+       408, 407, 407, 407, 407, 229, 409, 229, 
+       410, 410, 229, 412, 411, 411, 411, 411, 
+       229, 414, 399, 413, 229, 365, 363, 366, 
+       363, 229, 415, 229, 416, 229, 417, 418, 
+       416, 418, 418, 418, 229, 420, 421, 419, 
+       420, 421, 422, 419, 424, 425, 426, 428, 
+       423, 427, 427, 229, 429, 362, 429, 429, 
+       363, 364, 361, 430, 430, 229, 432, 434, 
+       433, 435, 431, 433, 433, 433, 229, 341, 
+       229, 436, 229, 437, 229, 438, 229, 439, 
+       229, 440, 229, 441, 229, 442, 229, 443, 
+       229, 444, 229, 445, 229, 446, 229, 447, 
+       448, 446, 229, 449, 448, 450, 450, 229, 
+       452, 451, 451, 451, 451, 229, 453, 229, 
+       454, 229, 455, 229, 456, 229, 457, 229, 
+       458, 459, 457, 229, 460, 229, 461, 229, 
+       462, 229, 463, 229, 464, 229, 465, 229, 
+       466, 229, 467, 229, 468, 469, 467, 229, 
+       472, 473, 474, 475, 476, 477, 471, 470, 
+       472, 471, 478, 1, 5, 479, 480, 479, 
+       481, 479, 482, 479, 483, 479, 486, 487, 
+       489, 490, 491, 485, 488, 488, 484, 486, 
+       485, 492, 494, 69, 493, 71, 71, 71, 
+       72, 79, 79, 79, 79, 493, 71, 71, 
+       71, 72, 79, 495, 79, 79, 79, 493, 
+       71, 71, 71, 72, 79, 496, 79, 79, 
+       79, 493, 97, 97, 97, 98, 497, 498, 
+       500, 499, 503, 504, 506, 502, 505, 505, 
+       501, 503, 502, 507, 108, 112, 508, 114, 
+       114, 114, 114, 114, 114, 114, 114, 508, 
+       117, 117, 117, 118, 509, 510, 512, 511, 
+       515, 516, 517, 518, 519, 520, 521, 514, 
+       513, 515, 514, 522, 128, 132, 523, 524, 
+       523, 525, 523, 526, 523, 527, 523, 529, 
+       528, 532, 533, 535, 531, 534, 534, 534, 
+       530, 532, 531, 536, 151, 155, 537, 159, 
+       159, 159, 159, 537, 539, 538, 542, 543, 
+       544, 545, 546, 547, 548, 541, 540, 542, 
+       541, 549, 551, 176, 550, 552, 550, 553, 
+       550, 554, 550, 555, 550, 205, 205, 205, 
+       206, 556, 557, 559, 558, 562, 563, 565, 
+       561, 564, 564, 564, 560, 562, 561, 566, 
+       216, 220, 567, 224, 224, 224, 224, 567, 
+       569, 568, 572, 573, 574, 575, 576, 577, 
+       578, 579, 580, 581, 571, 570, 572, 571, 
+       582, 584, 241, 583, 585, 583, 586, 587, 
+       583, 590, 589, 588, 591, 592, 583, 595, 
+       594, 593, 597, 596, 598, 583, 600, 599, 
+       601, 583, 604, 603, 602, 605, 583, 606, 
+       583, 608, 607, 0
 };
 
 static const short _eo_tokenizer_trans_targs[] = {
-       288, 0, 0, 1, 288, 2, 288, 4, 
+       292, 0, 0, 1, 292, 2, 292, 4, 
        5, 6, 7, 8, 9, 10, 10, 11, 
-       12, 13, 12, 14, 11, 288, 12, 12, 
-       288, 13, 14, 15, 16, 12, 12, 288
+       12, 13, 12, 14, 11, 292, 12, 12, 
+       292, 13, 14, 15, 16, 12, 12, 292
        17, 17, 15, 18, 16, 17, 17, 18, 
        18, 20, 21, 22, 10, 24, 25, 26, 
        27, 28, 29, 30, 10, 32, 33, 34, 
-       10, 295, 36, 36, 37, 38, 295, 38, 
-       39, 39, 39, 40, 295, 41, 295, 42, 
-       43, 44, 45, 44, 45, 45, 295, 46, 
-       48, 49, 50, 51, 52, 53, 53, 295
-       55, 56, 57, 58, 59, 60, 61, 301
-       295, 62, 63, 64, 65, 65, 66, 66, 
-       66, 67, 302, 304, 68, 68, 69, 304
-       70, 304, 71, 308, 304, 72, 73, 74, 
-       75, 75, 76, 76, 76, 77, 309, 311
-       78, 78, 79, 311, 80, 311, 82, 82, 
-       311, 84, 85, 85, 311, 87, 87, 311
-       89, 90, 91, 92, 92, 311, 319, 93, 
-       93, 94, 319, 95, 319, 97, 97, 96, 
-       319, 97, 97, 319, 324, 99, 99, 100, 
-       101, 324, 101, 102, 102, 102, 103, 324
-       104, 324, 106, 107, 108, 324, 110, 111, 
-       112, 113, 114, 115, 115, 324, 117, 118, 
-       119, 120, 120, 324, 122, 123, 124, 125, 
-       126, 127, 128, 331, 324, 129, 130, 131, 
-       132, 132, 133, 133, 133, 134, 332, 334
-       135, 135, 136, 334, 137, 334, 139, 139, 
-       138, 334, 139, 139, 334, 339, 141, 141, 
-       142, 143, 339, 143, 144, 144, 144, 145, 
-       339, 146, 339, 148, 149, 150, 151, 152, 
-       153, 154, 155, 156, 157, 157, 339, 159, 
-       160, 160, 161, 161, 162, 162, 344, 164, 
+       10, 299, 36, 36, 37, 38, 299, 38, 
+       39, 39, 39, 40, 299, 41, 299, 42, 
+       43, 44, 45, 44, 45, 45, 299, 46, 
+       48, 49, 50, 51, 52, 53, 53, 299
+       55, 56, 57, 58, 59, 60, 61, 305
+       299, 62, 63, 64, 65, 65, 66, 66, 
+       66, 67, 306, 308, 68, 68, 69, 308
+       70, 308, 71, 312, 308, 72, 73, 74, 
+       75, 75, 76, 76, 76, 77, 313, 315
+       78, 78, 79, 315, 80, 315, 82, 82, 
+       315, 84, 85, 85, 315, 87, 87, 315
+       89, 90, 91, 92, 92, 315, 323, 93, 
+       93, 94, 323, 95, 323, 97, 97, 96, 
+       323, 97, 97, 323, 328, 99, 99, 100, 
+       101, 328, 101, 102, 102, 102, 103, 328
+       104, 328, 106, 107, 108, 328, 110, 111, 
+       112, 113, 114, 115, 115, 328, 117, 118, 
+       119, 120, 120, 328, 122, 123, 124, 125, 
+       126, 127, 128, 335, 328, 129, 130, 131, 
+       132, 132, 133, 133, 133, 134, 336, 338
+       135, 135, 136, 338, 137, 338, 139, 139, 
+       138, 338, 139, 139, 338, 343, 141, 141, 
+       142, 143, 343, 143, 144, 144, 144, 145, 
+       343, 146, 343, 148, 149, 150, 151, 152, 
+       153, 154, 155, 156, 157, 157, 343, 159, 
+       160, 160, 161, 161, 162, 162, 348, 164, 
        165, 166, 167, 168, 169, 170, 171, 172, 
-       172, 339, 174, 175, 176, 177, 178, 179, 
-       180, 180, 181, 181, 182, 182, 346, 184, 
-       185, 186, 187, 187, 188, 188, 189, 347, 
-       190, 190, 189, 191, 190, 190, 191, 192, 
-       193, 194, 194, 195, 195, 195, 196, 197, 
-       188, 188, 189, 347, 199, 200, 201, 202, 
-       203, 204, 205, 206, 206, 207, 207, 208, 
-       349, 209, 209, 208, 258, 207, 210, 209, 
-       209, 210, 210, 211, 212, 213, 214, 215, 
-       216, 217, 256, 217, 218, 257, 220, 217, 
-       217, 218, 220, 218, 219, 220, 221, 222, 
-       223, 224, 225, 226, 226, 227, 227, 228, 
-       231, 233, 229, 230, 230, 229, 231, 230, 
-       230, 232, 232, 250, 235, 234, 233, 228, 
-       231, 234, 236, 236, 237, 249, 238, 239, 
-       240, 241, 242, 243, 244, 244, 245, 246, 
-       247, 247, 248, 248, 248, 251, 252, 252, 
-       253, 253, 253, 254, 255, 232, 232, 228, 
-       231, 233, 235, 256, 257, 217, 217, 257, 
-       218, 220, 260, 261, 262, 263, 264, 265, 
-       266, 267, 268, 269, 270, 270, 271, 271, 
-       272, 272, 351, 274, 275, 276, 277, 278, 
-       278, 339, 280, 281, 282, 283, 284, 285, 
-       286, 287, 287, 339, 288, 289, 289, 290, 
-       291, 292, 293, 294, 288, 288, 3, 19, 
-       23, 31, 295, 296, 296, 297, 298, 299, 
-       300, 303, 295, 295, 35, 47, 54, 295, 
-       295, 295, 295, 304, 305, 305, 306, 307, 
-       310, 304, 304, 304, 304, 304, 304, 311, 
-       312, 312, 313, 314, 315, 316, 317, 318, 
-       311, 311, 81, 83, 86, 88, 311, 311, 
-       319, 320, 320, 321, 322, 323, 319, 319, 
-       319, 319, 324, 325, 325, 326, 327, 328, 
-       329, 330, 333, 324, 324, 98, 105, 109, 
-       116, 121, 324, 324, 324, 324, 334, 335, 
-       335, 336, 337, 338, 334, 334, 334, 334, 
-       339, 340, 340, 341, 342, 343, 345, 348, 
-       350, 352, 353, 354, 339, 339, 140, 147, 
-       158, 163, 339, 344, 344, 173, 183, 339, 
-       346, 346, 339, 339, 198, 339, 339, 259, 
-       339, 351, 351, 273, 279, 339, 339
+       172, 343, 174, 175, 176, 177, 178, 179, 
+       180, 180, 181, 181, 182, 182, 350, 184, 
+       185, 186, 187, 187, 188, 188, 189, 351, 
+       190, 198, 190, 199, 189, 191, 190, 190, 
+       191, 192, 193, 194, 194, 195, 195, 195, 
+       196, 197, 188, 188, 189, 351, 198, 199, 
+       200, 200, 201, 190, 190, 191, 203, 204, 
+       205, 206, 207, 208, 209, 210, 210, 211, 
+       211, 212, 353, 213, 213, 212, 262, 211, 
+       214, 213, 213, 214, 214, 215, 216, 217, 
+       218, 219, 220, 221, 260, 221, 222, 261, 
+       224, 221, 221, 222, 224, 222, 223, 224, 
+       225, 226, 227, 228, 229, 230, 230, 231, 
+       231, 232, 235, 237, 233, 234, 234, 233, 
+       235, 234, 234, 236, 236, 254, 239, 238, 
+       237, 232, 235, 238, 240, 240, 241, 253, 
+       242, 243, 244, 245, 246, 247, 248, 248, 
+       249, 250, 251, 251, 252, 252, 252, 255, 
+       256, 256, 257, 257, 257, 258, 259, 236, 
+       236, 232, 235, 237, 239, 260, 261, 221, 
+       221, 261, 222, 224, 264, 265, 266, 267, 
+       268, 269, 270, 271, 272, 273, 274, 274, 
+       275, 275, 276, 276, 355, 278, 279, 280, 
+       281, 282, 282, 343, 284, 285, 286, 287, 
+       288, 289, 290, 291, 291, 343, 292, 293, 
+       293, 294, 295, 296, 297, 298, 292, 292, 
+       3, 19, 23, 31, 299, 300, 300, 301, 
+       302, 303, 304, 307, 299, 299, 35, 47, 
+       54, 299, 299, 299, 299, 308, 309, 309, 
+       310, 311, 314, 308, 308, 308, 308, 308, 
+       308, 315, 316, 316, 317, 318, 319, 320, 
+       321, 322, 315, 315, 81, 83, 86, 88, 
+       315, 315, 323, 324, 324, 325, 326, 327, 
+       323, 323, 323, 323, 328, 329, 329, 330, 
+       331, 332, 333, 334, 337, 328, 328, 98, 
+       105, 109, 116, 121, 328, 328, 328, 328, 
+       338, 339, 339, 340, 341, 342, 338, 338, 
+       338, 338, 343, 344, 344, 345, 346, 347, 
+       349, 352, 354, 356, 357, 358, 343, 343, 
+       140, 147, 158, 163, 343, 348, 348, 173, 
+       183, 343, 350, 350, 343, 343, 202, 343, 
+       343, 263, 343, 355, 355, 277, 283, 343, 
+       343
 };
 
 static const short _eo_tokenizer_trans_actions[] = {
-       219, 0, 1, 0, 209, 0, 242, 0, 
-       0, 0, 0, 0, 0, 43, 0, 3, 
-       49, 49, 320, 49, 0, 323, 0, 1, 
-       211, 0, 0, 0, 3, 13, 284, 287
-       11, 281, 11, 11, 0, 0, 1, 0, 
-       1, 0, 0, 0, 41, 0, 0, 0, 
-       0, 0, 0, 0, 47, 0, 0, 0, 
-       45, 75, 0, 1, 0, 0, 59, 1, 
-       3, 0, 1, 0, 57, 0, 221, 0, 
-       0, 5, 251, 0, 3, 0, 254, 0, 
-       0, 0, 0, 0, 0, 3, 0, 248
-       0, 0, 0, 0, 0, 3, 0, 332
-       73, 0, 0, 0, 0, 1, 3, 0, 
-       1, 0, 0, 93, 0, 1, 0, 77
-       0, 224, 0, 335, 91, 0, 0, 0, 
-       0, 1, 3, 0, 1, 0, 0, 115
-       0, 1, 0, 95, 0, 227, 0, 1, 
-       97, 0, 0, 1, 101, 0, 1, 99
-       0, 0, 0, 0, 1, 103, 131, 0, 
-       1, 0, 117, 0, 230, 7, 260, 0, 
-       263, 0, 1, 119, 153, 0, 1, 0, 
-       0, 135, 1, 3, 0, 1, 0, 133
-       0, 233, 0, 0, 0, 272, 0, 0, 
-       0, 0, 0, 3, 0, 269, 0, 0, 
-       0, 0, 1, 137, 0, 0, 0, 0, 
-       0, 3, 0, 338, 151, 0, 0, 0, 
-       0, 1, 3, 0, 1, 0, 0, 169
-       0, 1, 0, 155, 0, 236, 9, 275
-       0, 278, 0, 1, 157, 207, 0, 1, 
-       0, 0, 173, 1, 3, 0, 1, 0, 
-       171, 0, 239, 0, 0, 0, 0, 0, 
-       0, 0, 0, 0, 0, 1, 179, 0, 
-       0, 1, 0, 1, 3, 0, 23, 0, 
+       221, 0, 1, 0, 211, 0, 244, 0, 
+       0, 0, 0, 0, 0, 45, 0, 3, 
+       51, 51, 325, 51, 0, 328, 0, 1, 
+       213, 0, 0, 0, 3, 13, 286, 289
+       11, 283, 11, 11, 0, 0, 1, 0, 
+       1, 0, 0, 0, 43, 0, 0, 0, 
+       0, 0, 0, 0, 49, 0, 0, 0, 
+       47, 77, 0, 1, 0, 0, 61, 1, 
+       3, 0, 1, 0, 59, 0, 223, 0, 
+       0, 5, 253, 0, 3, 0, 256, 0, 
+       0, 0, 0, 0, 0, 3, 0, 250
+       0, 0, 0, 0, 0, 3, 0, 337
+       75, 0, 0, 0, 0, 1, 3, 0, 
+       1, 0, 0, 95, 0, 1, 0, 79
+       0, 226, 0, 340, 93, 0, 0, 0, 
+       0, 1, 3, 0, 1, 0, 0, 117
+       0, 1, 0, 97, 0, 229, 0, 1, 
+       99, 0, 0, 1, 103, 0, 1, 101
+       0, 0, 0, 0, 1, 105, 133, 0, 
+       1, 0, 119, 0, 232, 7, 262, 0, 
+       265, 0, 1, 121, 155, 0, 1, 0, 
+       0, 137, 1, 3, 0, 1, 0, 135
+       0, 235, 0, 0, 0, 274, 0, 0, 
+       0, 0, 0, 3, 0, 271, 0, 0, 
+       0, 0, 1, 139, 0, 0, 0, 0, 
+       0, 3, 0, 343, 153, 0, 0, 0, 
+       0, 1, 3, 0, 1, 0, 0, 171
+       0, 1, 0, 157, 0, 238, 9, 277
+       0, 280, 0, 1, 159, 209, 0, 1, 
+       0, 0, 175, 1, 3, 0, 1, 0, 
+       173, 0, 241, 0, 0, 0, 0, 0, 
+       0, 0, 0, 0, 0, 1, 181, 0, 
+       0, 1, 0, 1, 3, 0, 25, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 
-       1, 181, 0, 0, 0, 0, 0, 0, 
-       0, 1, 0, 1, 3, 0, 21, 0, 
+       1, 183, 0, 0, 0, 0, 0, 0, 
+       0, 1, 0, 1, 3, 0, 23, 0, 
        0, 0, 0, 1, 0, 1, 3, 0, 
-       15, 290, 0, 15, 0, 1, 0, 0, 
-       0, 0, 1, 3, 0, 1, 0, 0, 
-       17, 293, 296, 17, 0, 0, 0, 0, 
-       0, 0, 0, 0, 1, 0, 1, 3, 
-       0, 25, 299, 0, 0, 25, 25, 0, 
-       1, 0, 1, 0, 0, 0, 0, 0, 
-       0, 27, 27, 302, 27, 305, 27, 0, 
-       1, 0, 0, 1, 0, 1, 0, 0, 
-       0, 0, 0, 0, 1, 0, 1, 0, 
-       0, 3, 3, 33, 311, 0, 33, 0, 
-       1, 0, 1, 0, 0, 31, 0, 31, 
-       31, 0, 0, 1, 0, 0, 0, 0, 
-       0, 0, 0, 0, 3, 0, 37, 0, 
-       3, 0, 39, 0, 1, 0, 0, 1, 
-       3, 0, 1, 0, 0, 35, 314, 35, 
-       35, 317, 35, 0, 3, 29, 308, 0, 
-       29, 29, 0, 0, 0, 0, 0, 0, 
-       0, 0, 0, 0, 0, 1, 0, 1, 
-       3, 0, 19, 0, 0, 0, 0, 0, 
-       1, 185, 0, 0, 0, 0, 0, 0, 
-       0, 0, 1, 183, 213, 0, 1, 326, 
-       55, 55, 55, 55, 215, 217, 0, 0, 
-       0, 0, 63, 0, 1, 326, 329, 329, 
-       329, 0, 65, 71, 0, 0, 0, 67, 
-       245, 69, 61, 81, 0, 1, 326, 329, 
-       0, 83, 89, 85, 257, 87, 79, 107, 
-       0, 1, 326, 55, 55, 55, 55, 0, 
-       109, 113, 0, 0, 0, 0, 111, 105, 
-       123, 0, 1, 326, 329, 0, 125, 129, 
-       127, 121, 141, 0, 1, 326, 55, 55, 
-       55, 55, 0, 143, 149, 0, 0, 0, 
-       0, 0, 145, 266, 147, 139, 161, 0, 
-       1, 326, 329, 0, 163, 167, 165, 159, 
-       189, 0, 1, 326, 55, 55, 55, 55, 
-       55, 55, 55, 0, 191, 205, 0, 0, 
-       0, 0, 197, 0, 1, 0, 0, 195, 
-       0, 1, 201, 177, 0, 199, 175, 0, 
-       193, 0, 1, 0, 0, 203, 187
+       15, 15, 292, 15, 0, 15, 0, 1, 
+       0, 0, 0, 0, 1, 3, 0, 1, 
+       0, 0, 19, 298, 301, 19, 0, 0, 
+       3, 0, 0, 17, 295, 17, 0, 0, 
+       0, 0, 0, 0, 0, 0, 1, 0, 
+       1, 3, 0, 27, 304, 0, 0, 27, 
+       27, 0, 1, 0, 1, 0, 0, 0, 
+       0, 0, 0, 29, 29, 307, 29, 310, 
+       29, 0, 1, 0, 0, 1, 0, 1, 
+       0, 0, 0, 0, 0, 0, 1, 0, 
+       1, 0, 0, 3, 3, 35, 316, 0, 
+       35, 0, 1, 0, 1, 0, 0, 33, 
+       0, 33, 33, 0, 0, 1, 0, 0, 
+       0, 0, 0, 0, 0, 0, 3, 0, 
+       39, 0, 3, 0, 41, 0, 1, 0, 
+       0, 1, 3, 0, 1, 0, 0, 37, 
+       319, 37, 37, 322, 37, 0, 3, 31, 
+       313, 0, 31, 31, 0, 0, 0, 0, 
+       0, 0, 0, 0, 0, 0, 0, 1, 
+       0, 1, 3, 0, 21, 0, 0, 0, 
+       0, 0, 1, 187, 0, 0, 0, 0, 
+       0, 0, 0, 0, 1, 185, 215, 0, 
+       1, 331, 57, 57, 57, 57, 217, 219, 
+       0, 0, 0, 0, 65, 0, 1, 331, 
+       334, 334, 334, 0, 67, 73, 0, 0, 
+       0, 69, 247, 71, 63, 83, 0, 1, 
+       331, 334, 0, 85, 91, 87, 259, 89, 
+       81, 109, 0, 1, 331, 57, 57, 57, 
+       57, 0, 111, 115, 0, 0, 0, 0, 
+       113, 107, 125, 0, 1, 331, 334, 0, 
+       127, 131, 129, 123, 143, 0, 1, 331, 
+       57, 57, 57, 57, 0, 145, 151, 0, 
+       0, 0, 0, 0, 147, 268, 149, 141, 
+       163, 0, 1, 331, 334, 0, 165, 169, 
+       167, 161, 191, 0, 1, 331, 57, 57, 
+       57, 57, 57, 57, 57, 0, 193, 207, 
+       0, 0, 0, 0, 199, 0, 1, 0, 
+       0, 197, 0, 1, 203, 179, 0, 201, 
+       177, 0, 195, 0, 1, 0, 0, 205, 
+       189
 };
 
 static const short _eo_tokenizer_to_state_actions[] = {
@@ -1131,15 +1145,15 @@ static const short _eo_tokenizer_to_state_actions[] = {
        0, 0, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 
-       51, 0, 0, 0, 0, 0, 0, 51
-       0, 0, 0, 0, 0, 0, 0, 0, 
-       51, 0, 0, 0, 0, 0, 0, 51
-       0, 0, 0, 0, 0, 0, 0, 51
-       0, 0, 0, 0, 51, 0, 0, 0, 
-       0, 0, 0, 0, 0, 0, 51, 0, 
-       0, 0, 0, 51, 0, 0, 0, 0
+       0, 0, 0, 0, 53, 0, 0, 0
+       0, 0, 0, 53, 0, 0, 0, 0, 
+       0, 0, 0, 0, 53, 0, 0, 0
+       0, 0, 0, 53, 0, 0, 0, 0
+       0, 0, 0, 53, 0, 0, 0, 0, 
+       53, 0, 0, 0, 0, 0, 0, 0, 
+       0, 0, 53, 0, 0, 0, 0, 53
        0, 0, 0, 0, 0, 0, 0, 0, 
-       0, 0, 0
+       0, 0, 0, 0, 0, 0, 0
 };
 
 static const short _eo_tokenizer_from_state_actions[] = {
@@ -1179,15 +1193,15 @@ static const short _eo_tokenizer_from_state_actions[] = {
        0, 0, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 
-       53, 0, 0, 0, 0, 0, 0, 53
-       0, 0, 0, 0, 0, 0, 0, 0, 
-       53, 0, 0, 0, 0, 0, 0, 53
-       0, 0, 0, 0, 0, 0, 0, 53
-       0, 0, 0, 0, 53, 0, 0, 0, 
-       0, 0, 0, 0, 0, 0, 53, 0, 
-       0, 0, 0, 53, 0, 0, 0, 0
+       0, 0, 0, 0, 55, 0, 0, 0
+       0, 0, 0, 55, 0, 0, 0, 0, 
+       0, 0, 0, 0, 55, 0, 0, 0
+       0, 0, 0, 55, 0, 0, 0, 0
+       0, 0, 0, 55, 0, 0, 0, 0, 
+       55, 0, 0, 0, 0, 0, 0, 0, 
+       0, 0, 55, 0, 0, 0, 0, 55
        0, 0, 0, 0, 0, 0, 0, 0, 
-       0, 0, 0
+       0, 0, 0, 0, 0, 0, 0
 };
 
 static const short _eo_tokenizer_eof_trans[] = {
@@ -1227,32 +1241,32 @@ static const short _eo_tokenizer_eof_trans[] = {
        230, 230, 230, 230, 230, 230, 230, 230, 
        230, 230, 230, 230, 230, 230, 230, 230, 
        230, 230, 230, 230, 230, 230, 230, 230, 
-       0, 469, 470, 470, 470, 470, 470, 0, 
-       483, 484, 484, 484, 484, 488, 489, 490
-       0, 498, 499, 499, 500, 501, 502, 0
-       513, 514, 514, 514, 514, 514, 519, 0
-       527, 528, 528, 529, 0, 540, 541, 541
-       541, 541, 541, 547, 548, 549, 0, 557, 
-       558, 558, 559, 0, 573, 574, 574, 574
-       579, 574, 584, 587, 574, 590, 574, 593
-       574, 574, 598
+       230, 230, 230, 230, 0, 479, 480, 480, 
+       480, 480, 480, 0, 493, 494, 494, 494
+       494, 498, 499, 500, 0, 508, 509, 509
+       510, 511, 512, 0, 523, 524, 524, 524
+       524, 524, 529, 0, 537, 538, 538, 539
+       0, 550, 551, 551, 551, 551, 551, 557, 
+       558, 559, 0, 567, 568, 568, 569, 0
+       583, 584, 584, 584, 589, 584, 594, 597
+       584, 600, 584, 603, 584, 584, 608
 };
 
-static const int eo_tokenizer_start = 288;
-static const int eo_tokenizer_first_final = 288;
+static const int eo_tokenizer_start = 292;
+static const int eo_tokenizer_first_final = 292;
 static const int eo_tokenizer_error = -1;
 
-static const int eo_tokenizer_en_tokenize_accessor = 295;
-static const int eo_tokenizer_en_tokenize_params = 304;
-static const int eo_tokenizer_en_tokenize_property = 311;
-static const int eo_tokenizer_en_tokenize_properties = 319;
-static const int eo_tokenizer_en_tokenize_method = 324;
-static const int eo_tokenizer_en_tokenize_methods = 334;
-static const int eo_tokenizer_en_tokenize_class = 339;
-static const int eo_tokenizer_en_main = 288;
+static const int eo_tokenizer_en_tokenize_accessor = 299;
+static const int eo_tokenizer_en_tokenize_params = 308;
+static const int eo_tokenizer_en_tokenize_property = 315;
+static const int eo_tokenizer_en_tokenize_properties = 323;
+static const int eo_tokenizer_en_tokenize_method = 328;
+static const int eo_tokenizer_en_tokenize_methods = 338;
+static const int eo_tokenizer_en_tokenize_class = 343;
+static const int eo_tokenizer_en_main = 292;
 
 
-#line 1022 "lib/eolian/eo_lexer.rl"
+#line 1030 "lib/eolian/eo_lexer.rl"
 
 
 Eina_Bool
@@ -1276,7 +1290,7 @@ eo_tokenizer_walk(Eo_Tokenizer *toknz, const char *source)
      }
 
    
-#line 1280 "lib/eolian/eo_lexer.c"
+#line 1294 "lib/eolian/eo_lexer.c"
        {
         toknz->cs = eo_tokenizer_start;
         toknz->ts = 0;
@@ -1284,7 +1298,7 @@ eo_tokenizer_walk(Eo_Tokenizer *toknz, const char *source)
         toknz->act = 0;
        }
 
-#line 1045 "lib/eolian/eo_lexer.rl"
+#line 1053 "lib/eolian/eo_lexer.rl"
 
    while (!done)
      {
@@ -1311,7 +1325,7 @@ eo_tokenizer_walk(Eo_Tokenizer *toknz, const char *source)
           }
 
         
-#line 1315 "lib/eolian/eo_lexer.c"
+#line 1329 "lib/eolian/eo_lexer.c"
        {
        int _klen;
        unsigned int _trans;
@@ -1326,11 +1340,11 @@ _resume:
        _nacts = (unsigned int) *_acts++;
        while ( _nacts-- > 0 ) {
                switch ( *_acts++ ) {
-       case 37:
+       case 38:
 #line 1 "NONE"
        { toknz->ts = ( toknz->p);}
        break;
-#line 1334 "lib/eolian/eo_lexer.c"
+#line 1348 "lib/eolian/eo_lexer.c"
                }
        }
 
@@ -1560,14 +1574,23 @@ _eof_trans:
 #line 831 "lib/eolian/eo_lexer.rl"
        {
       if (!toknz->tmp.event) ABORT(toknz, "No event!!!");
+      if (toknz->tmp.event->type != NULL)
+        ABORT(toknz, "event %s has already a type %s", toknz->tmp.event->name, toknz->tmp.event->type);
+      toknz->tmp.event->type = _eo_tokenizer_token_get(toknz, ( toknz->p)-1);
+   }
+       break;
+       case 20:
+#line 838 "lib/eolian/eo_lexer.rl"
+       {
+      if (!toknz->tmp.event) ABORT(toknz, "No event!!!");
       if (toknz->tmp.event->comment != NULL)
         ABORT(toknz, "event %s has already a comment", toknz->tmp.event->name);
       toknz->tmp.event->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2);
       toknz->tmp.event = NULL;
    }
        break;
-       case 20:
-#line 839 "lib/eolian/eo_lexer.rl"
+       case 21:
+#line 846 "lib/eolian/eo_lexer.rl"
        {
       if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
       if (toknz->tmp.kls->legacy_prefix != NULL)
@@ -1575,8 +1598,8 @@ _eof_trans:
       toknz->tmp.kls->legacy_prefix = _eo_tokenizer_token_get(toknz, ( toknz->p));
    }
        break;
-       case 21:
-#line 848 "lib/eolian/eo_lexer.rl"
+       case 22:
+#line 855 "lib/eolian/eo_lexer.rl"
        {
       if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
       if (toknz->tmp.kls->eo_prefix != NULL)
@@ -1584,8 +1607,8 @@ _eof_trans:
       toknz->tmp.kls->eo_prefix = _eo_tokenizer_token_get(toknz, ( toknz->p));
    }
        break;
-       case 22:
-#line 857 "lib/eolian/eo_lexer.rl"
+       case 23:
+#line 864 "lib/eolian/eo_lexer.rl"
        {
       if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
       if (toknz->tmp.kls->data_type != NULL)
@@ -1593,16 +1616,16 @@ _eof_trans:
       toknz->tmp.kls->data_type = _eo_tokenizer_token_get(toknz, ( toknz->p));
    }
        break;
-       case 23:
-#line 870 "lib/eolian/eo_lexer.rl"
+       case 24:
+#line 877 "lib/eolian/eo_lexer.rl"
        {
         if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
         toknz->tmp.impl = _eo_tokenizer_implement_get(toknz, ( toknz->p));
         toknz->tmp.kls->implements = eina_list_append(toknz->tmp.kls->implements, toknz->tmp.impl);
    }
        break;
-       case 24:
-#line 876 "lib/eolian/eo_lexer.rl"
+       case 25:
+#line 883 "lib/eolian/eo_lexer.rl"
        {
         if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!");
         if (toknz->tmp.impl->legacy)
@@ -1610,8 +1633,8 @@ _eof_trans:
         toknz->tmp.impl->legacy = calloc(1, sizeof(Eo_Implement_Legacy_Def));
    }
        break;
-       case 25:
-#line 883 "lib/eolian/eo_lexer.rl"
+       case 26:
+#line 890 "lib/eolian/eo_lexer.rl"
        {
         if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!");
         if (!toknz->tmp.impl->legacy)
@@ -1619,8 +1642,8 @@ _eof_trans:
         toknz->tmp.impl->legacy->function_name = _eo_tokenizer_token_get(toknz, ( toknz->p));
    }
        break;
-       case 26:
-#line 890 "lib/eolian/eo_lexer.rl"
+       case 27:
+#line 897 "lib/eolian/eo_lexer.rl"
        {
         if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!");
         toknz->tmp.impl_leg_param = calloc(1, sizeof(Eo_Implement_Legacy_Param_Def));
@@ -1630,24 +1653,24 @@ _eof_trans:
         toknz->tmp.impl_leg_param->eo_name = _eo_tokenizer_token_get(toknz, ( toknz->p));
    }
        break;
-       case 27:
-#line 899 "lib/eolian/eo_lexer.rl"
+       case 28:
+#line 906 "lib/eolian/eo_lexer.rl"
        {
         if (!toknz->tmp.impl_leg_param)
            ABORT(toknz, "No implement legacy param!!!");
         toknz->tmp.impl_leg_param->legacy_name = _eo_tokenizer_token_get(toknz, ( toknz->p));
    }
        break;
-       case 28:
-#line 905 "lib/eolian/eo_lexer.rl"
+       case 29:
+#line 912 "lib/eolian/eo_lexer.rl"
        {
         if (!toknz->tmp.impl_leg_param)
            ABORT(toknz, "No implement legacy param!!!");
         toknz->tmp.impl_leg_param->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2);
    }
        break;
-       case 29:
-#line 911 "lib/eolian/eo_lexer.rl"
+       case 30:
+#line 918 "lib/eolian/eo_lexer.rl"
        {
         if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!");
         if (!toknz->tmp.impl->legacy)
@@ -1655,8 +1678,8 @@ _eof_trans:
         toknz->tmp.impl->legacy->ret_type= _eo_tokenizer_token_get(toknz, ( toknz->p));
    }
        break;
-       case 30:
-#line 918 "lib/eolian/eo_lexer.rl"
+       case 31:
+#line 925 "lib/eolian/eo_lexer.rl"
        {
         if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!");
         if (!toknz->tmp.impl->legacy)
@@ -1664,32 +1687,32 @@ _eof_trans:
         toknz->tmp.impl->legacy->ret_value = _eo_tokenizer_token_get(toknz, ( toknz->p));
    }
        break;
-       case 31:
-#line 988 "lib/eolian/eo_lexer.rl"
+       case 32:
+#line 996 "lib/eolian/eo_lexer.rl"
        {
       toknz->tmp.kls_type = EOLIAN_CLASS_REGULAR;
    }
        break;
-       case 32:
-#line 991 "lib/eolian/eo_lexer.rl"
+       case 33:
+#line 999 "lib/eolian/eo_lexer.rl"
        {
       toknz->tmp.kls_type = EOLIAN_CLASS_ABSTRACT;
    }
        break;
-       case 33:
-#line 994 "lib/eolian/eo_lexer.rl"
+       case 34:
+#line 1002 "lib/eolian/eo_lexer.rl"
        {
       toknz->tmp.kls_type = EOLIAN_CLASS_MIXIN;
    }
        break;
-       case 34:
-#line 997 "lib/eolian/eo_lexer.rl"
+       case 35:
+#line 1005 "lib/eolian/eo_lexer.rl"
        {
       toknz->tmp.kls_type = EOLIAN_CLASS_INTERFACE;
    }
        break;
-       case 35:
-#line 1001 "lib/eolian/eo_lexer.rl"
+       case 36:
+#line 1009 "lib/eolian/eo_lexer.rl"
        {
       if (toknz->tmp.kls != NULL)
         ABORT(toknz, "there is a pending class definition %s", toknz->tmp.kls->name);
@@ -1697,11 +1720,11 @@ _eof_trans:
       toknz->tmp.kls->type = toknz->tmp.kls_type;
    }
        break;
-       case 38:
+       case 39:
 #line 1 "NONE"
        { toknz->te = ( toknz->p)+1;}
        break;
-       case 39:
+       case 40:
 #line 438 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!");
@@ -1711,22 +1734,22 @@ _eof_trans:
       INF("        %s", toknz->tmp.accessor->comment);
    }}
        break;
-       case 40:
+       case 41:
 #line 374 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("comment[%d] line%03d:%03d", toknz->cs,
           toknz->saved.line, toknz->current_line);
    }}
        break;
-       case 41:
+       case 42:
 #line 501 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;}
        break;
-       case 42:
+       case 43:
 #line 502 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;}
        break;
-       case 43:
+       case 44:
 #line 467 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("      }");
@@ -1734,10 +1757,10 @@ _eof_trans:
       toknz->tmp.prop->accessors = eina_list_append(toknz->tmp.prop->accessors, toknz->tmp.accessor);
       toknz->tmp.accessor = NULL;
       toknz->current_nesting--;
-      { toknz->cs = 311; goto _again;}
+      { toknz->cs = 315; goto _again;}
    }}
        break;
-       case 44:
+       case 45:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -1756,15 +1779,15 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 45:
+       case 46:
 #line 497 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 46:
+       case 47:
 #line 500 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 47:
+       case 48:
 #line 467 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       INF("      }");
@@ -1772,10 +1795,10 @@ _eof_trans:
       toknz->tmp.prop->accessors = eina_list_append(toknz->tmp.prop->accessors, toknz->tmp.accessor);
       toknz->tmp.accessor = NULL;
       toknz->current_nesting--;
-      { toknz->cs = 311; goto _again;}
+      { toknz->cs = 315; goto _again;}
    }}
        break;
-       case 48:
+       case 49:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -1794,11 +1817,11 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 49:
+       case 50:
 #line 500 "lib/eolian/eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}}
        break;
-       case 50:
+       case 51:
 #line 383 "lib/eolian/eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -1817,28 +1840,28 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 51:
+       case 52:
 #line 374 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("comment[%d] line%03d:%03d", toknz->cs,
           toknz->saved.line, toknz->current_line);
    }}
        break;
-       case 52:
+       case 53:
 #line 526 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("      }");
       toknz->tmp.param = NULL;
       toknz->current_nesting--;
       if (toknz->tmp.prop)
-        { toknz->cs = 311; goto _again;}
+        { toknz->cs = 315; goto _again;}
       else if (toknz->tmp.meth)
-        { toknz->cs = 324; goto _again;}
+        { toknz->cs = 328; goto _again;}
       else
         ABORT(toknz, "leaving tokenize_params but there is no property nor method pending");
    }}
        break;
-       case 53:
+       case 54:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -1857,29 +1880,29 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 54:
+       case 55:
 #line 542 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 55:
+       case 56:
 #line 544 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 56:
+       case 57:
 #line 526 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       INF("      }");
       toknz->tmp.param = NULL;
       toknz->current_nesting--;
       if (toknz->tmp.prop)
-        { toknz->cs = 311; goto _again;}
+        { toknz->cs = 315; goto _again;}
       else if (toknz->tmp.meth)
-        { toknz->cs = 324; goto _again;}
+        { toknz->cs = 328; goto _again;}
       else
         ABORT(toknz, "leaving tokenize_params but there is no property nor method pending");
    }}
        break;
-       case 57:
+       case 58:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -1898,11 +1921,11 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 58:
+       case 59:
 #line 544 "lib/eolian/eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}}
        break;
-       case 59:
+       case 60:
 #line 383 "lib/eolian/eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -1921,50 +1944,50 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 60:
+       case 61:
 #line 374 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("comment[%d] line%03d:%03d", toknz->cs,
           toknz->saved.line, toknz->current_line);
    }}
        break;
-       case 61:
+       case 62:
 #line 551 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("      get {");
       toknz->tmp.accessor = _eo_tokenizer_accessor_get(toknz, GETTER);
       toknz->current_nesting++;
-      { toknz->cs = 295; goto _again;}
+      { toknz->cs = 299; goto _again;}
    }}
        break;
-       case 62:
+       case 63:
 #line 558 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("      set {");
       toknz->tmp.accessor = _eo_tokenizer_accessor_get(toknz, SETTER);
       toknz->current_nesting++;
-      { toknz->cs = 295; goto _again;}
+      { toknz->cs = 299; goto _again;}
    }}
        break;
-       case 63:
+       case 64:
 #line 565 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("      keys {");
       toknz->current_nesting++;
       toknz->tmp.params = &(toknz->tmp.prop->keys);
-      { toknz->cs = 304; goto _again;}
+      { toknz->cs = 308; goto _again;}
    }}
        break;
-       case 64:
+       case 65:
 #line 572 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("      values {");
       toknz->current_nesting++;
       toknz->tmp.params = &(toknz->tmp.prop->values);
-      { toknz->cs = 304; goto _again;}
+      { toknz->cs = 308; goto _again;}
    }}
        break;
-       case 65:
+       case 66:
 #line 579 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       if (!toknz->tmp.prop) ABORT(toknz, "No property!!!");
@@ -1976,10 +1999,10 @@ _eof_trans:
       toknz->tmp.kls->properties = eina_list_append(toknz->tmp.kls->properties, toknz->tmp.prop);
       toknz->tmp.prop = NULL;
       toknz->current_nesting--;
-      { toknz->cs = 319; goto _again;}
+      { toknz->cs = 323; goto _again;}
    }}
        break;
-       case 66:
+       case 67:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -1998,11 +2021,11 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 67:
+       case 68:
 #line 598 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 68:
+       case 69:
 #line 579 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       if (!toknz->tmp.prop) ABORT(toknz, "No property!!!");
@@ -2014,10 +2037,10 @@ _eof_trans:
       toknz->tmp.kls->properties = eina_list_append(toknz->tmp.kls->properties, toknz->tmp.prop);
       toknz->tmp.prop = NULL;
       toknz->current_nesting--;
-      { toknz->cs = 319; goto _again;}
+      { toknz->cs = 323; goto _again;}
    }}
        break;
-       case 69:
+       case 70:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -2036,7 +2059,7 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 70:
+       case 71:
 #line 383 "lib/eolian/eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -2055,31 +2078,31 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 71:
+       case 72:
 #line 374 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("comment[%d] line%03d:%03d", toknz->cs,
           toknz->saved.line, toknz->current_line);
    }}
        break;
-       case 72:
+       case 73:
 #line 610 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       if (!toknz->tmp.prop) ABORT(toknz, "No property!!!");
       INF("    %s {", toknz->tmp.prop->name);
       toknz->current_nesting++;
-      { toknz->cs = 311; goto _again;}
+      { toknz->cs = 315; goto _again;}
    }}
        break;
-       case 73:
+       case 74:
 #line 623 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("  }");
       toknz->current_nesting--;
-      { toknz->cs = 339; goto _again;}
+      { toknz->cs = 343; goto _again;}
    }}
        break;
-       case 74:
+       case 75:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -2098,19 +2121,19 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 75:
+       case 76:
 #line 632 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 76:
+       case 77:
 #line 623 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       INF("  }");
       toknz->current_nesting--;
-      { toknz->cs = 339; goto _again;}
+      { toknz->cs = 343; goto _again;}
    }}
        break;
-       case 77:
+       case 78:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -2129,7 +2152,7 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 78:
+       case 79:
 #line 383 "lib/eolian/eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -2148,7 +2171,7 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 79:
+       case 80:
 #line 641 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
@@ -2158,32 +2181,32 @@ _eof_trans:
       INF("        %s", toknz->tmp.meth->comment);
    }}
        break;
-       case 80:
+       case 81:
 #line 374 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("comment[%d] line%03d:%03d", toknz->cs,
           toknz->saved.line, toknz->current_line);
    }}
        break;
-       case 81:
+       case 82:
 #line 649 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
       INF("      params {");
       toknz->current_nesting++;
       toknz->tmp.params = &(toknz->tmp.meth->params);
-      { toknz->cs = 304; goto _again;}
+      { toknz->cs = 308; goto _again;}
    }}
        break;
-       case 82:
+       case 83:
 #line 725 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;}
        break;
-       case 83:
+       case 84:
 #line 726 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;}
        break;
-       case 84:
+       case 85:
 #line 684 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       Eina_List **l = NULL;
@@ -2208,10 +2231,10 @@ _eof_trans:
       *l = eina_list_append(*l, toknz->tmp.meth);
       toknz->tmp.meth = NULL;
       toknz->current_nesting--;
-      { toknz->cs = 334; goto _again;}
+      { toknz->cs = 338; goto _again;}
    }}
        break;
-       case 85:
+       case 86:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -2230,15 +2253,15 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 86:
+       case 87:
 #line 720 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 87:
+       case 88:
 #line 724 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 88:
+       case 89:
 #line 684 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       Eina_List **l = NULL;
@@ -2263,10 +2286,10 @@ _eof_trans:
       *l = eina_list_append(*l, toknz->tmp.meth);
       toknz->tmp.meth = NULL;
       toknz->current_nesting--;
-      { toknz->cs = 334; goto _again;}
+      { toknz->cs = 338; goto _again;}
    }}
        break;
-       case 89:
+       case 90:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -2285,11 +2308,11 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 90:
+       case 91:
 #line 724 "lib/eolian/eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}}
        break;
-       case 91:
+       case 92:
 #line 383 "lib/eolian/eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -2308,32 +2331,32 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 92:
+       case 93:
 #line 374 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("comment[%d] line%03d:%03d", toknz->cs,
           toknz->saved.line, toknz->current_line);
    }}
        break;
-       case 93:
+       case 94:
 #line 733 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
       INF("    %s {", toknz->tmp.meth->name);
       toknz->current_nesting++;
-      { toknz->cs = 324; goto _again;}
+      { toknz->cs = 328; goto _again;}
    }}
        break;
-       case 94:
+       case 95:
 #line 746 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("  }");
       toknz->current_methods_type = METH_TYPE_LAST;
       toknz->current_nesting--;
-      { toknz->cs = 339; goto _again;}
+      { toknz->cs = 343; goto _again;}
    }}
        break;
-       case 95:
+       case 96:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -2352,20 +2375,20 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 96:
+       case 97:
 #line 756 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 97:
+       case 98:
 #line 746 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       INF("  }");
       toknz->current_methods_type = METH_TYPE_LAST;
       toknz->current_nesting--;
-      { toknz->cs = 339; goto _again;}
+      { toknz->cs = 343; goto _again;}
    }}
        break;
-       case 98:
+       case 99:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -2384,7 +2407,7 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 99:
+       case 100:
 #line 383 "lib/eolian/eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -2403,7 +2426,7 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 100:
+       case 101:
 #line 765 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
@@ -2412,59 +2435,59 @@ _eof_trans:
       toknz->tmp.kls->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-1);
    }}
        break;
-       case 101:
+       case 102:
 #line 374 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("comment[%d] line%03d:%03d", toknz->cs,
           toknz->saved.line, toknz->current_line);
    }}
        break;
-       case 102:
+       case 103:
 #line 783 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
    }}
        break;
-       case 103:
+       case 104:
 #line 786 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
    }}
        break;
-       case 104:
+       case 105:
 #line 789 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("  constructors {");
       toknz->current_methods_type = METH_CONSTRUCTOR;
       toknz->current_nesting++;
-      { toknz->cs = 334; goto _again;}
+      { toknz->cs = 338; goto _again;}
    }}
        break;
-       case 105:
+       case 106:
 #line 796 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("  destructors {");
       toknz->current_methods_type = METH_DESTRUCTOR;
       toknz->current_nesting++;
-      { toknz->cs = 334; goto _again;}
+      { toknz->cs = 338; goto _again;}
    }}
        break;
-       case 106:
+       case 107:
 #line 803 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("  properties {");
       toknz->current_nesting++;
-      { toknz->cs = 319; goto _again;}
+      { toknz->cs = 323; goto _again;}
    }}
        break;
-       case 107:
+       case 108:
 #line 809 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("  begin methods");
       toknz->current_methods_type = METH_REGULAR;
       toknz->current_nesting++;
-      { toknz->cs = 334; goto _again;}
+      { toknz->cs = 338; goto _again;}
    }}
        break;
-       case 108:
+       case 109:
 #line 816 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
@@ -2472,10 +2495,10 @@ _eof_trans:
       toknz->classes = eina_list_append(toknz->classes, toknz->tmp.kls);
       toknz->tmp.kls = NULL;
       toknz->current_nesting--;
-      { toknz->cs = 288; goto _again;}
+      { toknz->cs = 292; goto _again;}
    }}
        break;
-       case 109:
+       case 110:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -2494,33 +2517,33 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 110:
-#line 963 "lib/eolian/eo_lexer.rl"
-       { toknz->te = ( toknz->p);( toknz->p)--;}
-       break;
        case 111:
-#line 966 "lib/eolian/eo_lexer.rl"
+#line 971 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
        case 112:
-#line 967 "lib/eolian/eo_lexer.rl"
+#line 974 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
        case 113:
-#line 968 "lib/eolian/eo_lexer.rl"
+#line 975 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
        case 114:
+#line 976 "lib/eolian/eo_lexer.rl"
+       { toknz->te = ( toknz->p);( toknz->p)--;}
+       break;
+       case 115:
 #line 783 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
    }}
        break;
-       case 115:
+       case 116:
 #line 786 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
    }}
        break;
-       case 116:
+       case 117:
 #line 816 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
@@ -2528,10 +2551,10 @@ _eof_trans:
       toknz->classes = eina_list_append(toknz->classes, toknz->tmp.kls);
       toknz->tmp.kls = NULL;
       toknz->current_nesting--;
-      { toknz->cs = 288; goto _again;}
+      { toknz->cs = 292; goto _again;}
    }}
        break;
-       case 117:
+       case 118:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -2550,7 +2573,7 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 118:
+       case 119:
 #line 383 "lib/eolian/eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -2569,23 +2592,23 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 119:
+       case 120:
 #line 374 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("comment[%d] line%03d:%03d", toknz->cs,
           toknz->saved.line, toknz->current_line);
    }}
        break;
-       case 120:
-#line 981 "lib/eolian/eo_lexer.rl"
+       case 121:
+#line 989 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
       INF("begin class: %s", toknz->tmp.kls->name);
       toknz->current_nesting++;
-      { toknz->cs = 339; goto _again;}
+      { toknz->cs = 343; goto _again;}
    }}
        break;
-       case 121:
+       case 122:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -2604,11 +2627,11 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 122:
-#line 1016 "lib/eolian/eo_lexer.rl"
+       case 123:
+#line 1024 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 123:
+       case 124:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -2627,7 +2650,7 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 124:
+       case 125:
 #line 383 "lib/eolian/eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -2646,7 +2669,7 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-#line 2650 "lib/eolian/eo_lexer.c"
+#line 2673 "lib/eolian/eo_lexer.c"
                }
        }
 
@@ -2655,11 +2678,11 @@ _again:
        _nacts = (unsigned int) *_acts++;
        while ( _nacts-- > 0 ) {
                switch ( *_acts++ ) {
-       case 36:
+       case 37:
 #line 1 "NONE"
        { toknz->ts = 0;}
        break;
-#line 2663 "lib/eolian/eo_lexer.c"
+#line 2686 "lib/eolian/eo_lexer.c"
                }
        }
 
@@ -2677,12 +2700,12 @@ _again:
        _out: {}
        }
 
-#line 1071 "lib/eolian/eo_lexer.rl"
+#line 1079 "lib/eolian/eo_lexer.rl"
 
         if ( toknz->cs == 
-#line 2684 "lib/eolian/eo_lexer.c"
+#line 2707 "lib/eolian/eo_lexer.c"
 -1
-#line 1072 "lib/eolian/eo_lexer.rl"
+#line 1080 "lib/eolian/eo_lexer.rl"
  )
           {
              ERR("%s: wrong termination", source);
@@ -2728,7 +2751,7 @@ eo_tokenizer_mem_walk(Eo_Tokenizer *toknz, const char *source, char *buffer, uns
    Eina_Bool ret = EINA_TRUE;
 
    
-#line 2732 "lib/eolian/eo_lexer.c"
+#line 2755 "lib/eolian/eo_lexer.c"
        {
         toknz->cs = eo_tokenizer_start;
         toknz->ts = 0;
@@ -2736,7 +2759,7 @@ eo_tokenizer_mem_walk(Eo_Tokenizer *toknz, const char *source, char *buffer, uns
         toknz->act = 0;
        }
 
-#line 1117 "lib/eolian/eo_lexer.rl"
+#line 1125 "lib/eolian/eo_lexer.rl"
 
    toknz->p = buffer;
 
@@ -2745,7 +2768,7 @@ eo_tokenizer_mem_walk(Eo_Tokenizer *toknz, const char *source, char *buffer, uns
    toknz->eof = toknz->pe;
 
    
-#line 2749 "lib/eolian/eo_lexer.c"
+#line 2772 "lib/eolian/eo_lexer.c"
        {
        int _klen;
        unsigned int _trans;
@@ -2760,11 +2783,11 @@ _resume:
        _nacts = (unsigned int) *_acts++;
        while ( _nacts-- > 0 ) {
                switch ( *_acts++ ) {
-       case 37:
+       case 38:
 #line 1 "NONE"
        { toknz->ts = ( toknz->p);}
        break;
-#line 2768 "lib/eolian/eo_lexer.c"
+#line 2791 "lib/eolian/eo_lexer.c"
                }
        }
 
@@ -2994,14 +3017,23 @@ _eof_trans:
 #line 831 "lib/eolian/eo_lexer.rl"
        {
       if (!toknz->tmp.event) ABORT(toknz, "No event!!!");
+      if (toknz->tmp.event->type != NULL)
+        ABORT(toknz, "event %s has already a type %s", toknz->tmp.event->name, toknz->tmp.event->type);
+      toknz->tmp.event->type = _eo_tokenizer_token_get(toknz, ( toknz->p)-1);
+   }
+       break;
+       case 20:
+#line 838 "lib/eolian/eo_lexer.rl"
+       {
+      if (!toknz->tmp.event) ABORT(toknz, "No event!!!");
       if (toknz->tmp.event->comment != NULL)
         ABORT(toknz, "event %s has already a comment", toknz->tmp.event->name);
       toknz->tmp.event->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2);
       toknz->tmp.event = NULL;
    }
        break;
-       case 20:
-#line 839 "lib/eolian/eo_lexer.rl"
+       case 21:
+#line 846 "lib/eolian/eo_lexer.rl"
        {
       if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
       if (toknz->tmp.kls->legacy_prefix != NULL)
@@ -3009,8 +3041,8 @@ _eof_trans:
       toknz->tmp.kls->legacy_prefix = _eo_tokenizer_token_get(toknz, ( toknz->p));
    }
        break;
-       case 21:
-#line 848 "lib/eolian/eo_lexer.rl"
+       case 22:
+#line 855 "lib/eolian/eo_lexer.rl"
        {
       if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
       if (toknz->tmp.kls->eo_prefix != NULL)
@@ -3018,8 +3050,8 @@ _eof_trans:
       toknz->tmp.kls->eo_prefix = _eo_tokenizer_token_get(toknz, ( toknz->p));
    }
        break;
-       case 22:
-#line 857 "lib/eolian/eo_lexer.rl"
+       case 23:
+#line 864 "lib/eolian/eo_lexer.rl"
        {
       if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
       if (toknz->tmp.kls->data_type != NULL)
@@ -3027,16 +3059,16 @@ _eof_trans:
       toknz->tmp.kls->data_type = _eo_tokenizer_token_get(toknz, ( toknz->p));
    }
        break;
-       case 23:
-#line 870 "lib/eolian/eo_lexer.rl"
+       case 24:
+#line 877 "lib/eolian/eo_lexer.rl"
        {
         if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
         toknz->tmp.impl = _eo_tokenizer_implement_get(toknz, ( toknz->p));
         toknz->tmp.kls->implements = eina_list_append(toknz->tmp.kls->implements, toknz->tmp.impl);
    }
        break;
-       case 24:
-#line 876 "lib/eolian/eo_lexer.rl"
+       case 25:
+#line 883 "lib/eolian/eo_lexer.rl"
        {
         if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!");
         if (toknz->tmp.impl->legacy)
@@ -3044,8 +3076,8 @@ _eof_trans:
         toknz->tmp.impl->legacy = calloc(1, sizeof(Eo_Implement_Legacy_Def));
    }
        break;
-       case 25:
-#line 883 "lib/eolian/eo_lexer.rl"
+       case 26:
+#line 890 "lib/eolian/eo_lexer.rl"
        {
         if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!");
         if (!toknz->tmp.impl->legacy)
@@ -3053,8 +3085,8 @@ _eof_trans:
         toknz->tmp.impl->legacy->function_name = _eo_tokenizer_token_get(toknz, ( toknz->p));
    }
        break;
-       case 26:
-#line 890 "lib/eolian/eo_lexer.rl"
+       case 27:
+#line 897 "lib/eolian/eo_lexer.rl"
        {
         if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!");
         toknz->tmp.impl_leg_param = calloc(1, sizeof(Eo_Implement_Legacy_Param_Def));
@@ -3064,24 +3096,24 @@ _eof_trans:
         toknz->tmp.impl_leg_param->eo_name = _eo_tokenizer_token_get(toknz, ( toknz->p));
    }
        break;
-       case 27:
-#line 899 "lib/eolian/eo_lexer.rl"
+       case 28:
+#line 906 "lib/eolian/eo_lexer.rl"
        {
         if (!toknz->tmp.impl_leg_param)
            ABORT(toknz, "No implement legacy param!!!");
         toknz->tmp.impl_leg_param->legacy_name = _eo_tokenizer_token_get(toknz, ( toknz->p));
    }
        break;
-       case 28:
-#line 905 "lib/eolian/eo_lexer.rl"
+       case 29:
+#line 912 "lib/eolian/eo_lexer.rl"
        {
         if (!toknz->tmp.impl_leg_param)
            ABORT(toknz, "No implement legacy param!!!");
         toknz->tmp.impl_leg_param->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2);
    }
        break;
-       case 29:
-#line 911 "lib/eolian/eo_lexer.rl"
+       case 30:
+#line 918 "lib/eolian/eo_lexer.rl"
        {
         if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!");
         if (!toknz->tmp.impl->legacy)
@@ -3089,8 +3121,8 @@ _eof_trans:
         toknz->tmp.impl->legacy->ret_type= _eo_tokenizer_token_get(toknz, ( toknz->p));
    }
        break;
-       case 30:
-#line 918 "lib/eolian/eo_lexer.rl"
+       case 31:
+#line 925 "lib/eolian/eo_lexer.rl"
        {
         if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!");
         if (!toknz->tmp.impl->legacy)
@@ -3098,32 +3130,32 @@ _eof_trans:
         toknz->tmp.impl->legacy->ret_value = _eo_tokenizer_token_get(toknz, ( toknz->p));
    }
        break;
-       case 31:
-#line 988 "lib/eolian/eo_lexer.rl"
+       case 32:
+#line 996 "lib/eolian/eo_lexer.rl"
        {
       toknz->tmp.kls_type = EOLIAN_CLASS_REGULAR;
    }
        break;
-       case 32:
-#line 991 "lib/eolian/eo_lexer.rl"
+       case 33:
+#line 999 "lib/eolian/eo_lexer.rl"
        {
       toknz->tmp.kls_type = EOLIAN_CLASS_ABSTRACT;
    }
        break;
-       case 33:
-#line 994 "lib/eolian/eo_lexer.rl"
+       case 34:
+#line 1002 "lib/eolian/eo_lexer.rl"
        {
       toknz->tmp.kls_type = EOLIAN_CLASS_MIXIN;
    }
        break;
-       case 34:
-#line 997 "lib/eolian/eo_lexer.rl"
+       case 35:
+#line 1005 "lib/eolian/eo_lexer.rl"
        {
       toknz->tmp.kls_type = EOLIAN_CLASS_INTERFACE;
    }
        break;
-       case 35:
-#line 1001 "lib/eolian/eo_lexer.rl"
+       case 36:
+#line 1009 "lib/eolian/eo_lexer.rl"
        {
       if (toknz->tmp.kls != NULL)
         ABORT(toknz, "there is a pending class definition %s", toknz->tmp.kls->name);
@@ -3131,11 +3163,11 @@ _eof_trans:
       toknz->tmp.kls->type = toknz->tmp.kls_type;
    }
        break;
-       case 38:
+       case 39:
 #line 1 "NONE"
        { toknz->te = ( toknz->p)+1;}
        break;
-       case 39:
+       case 40:
 #line 438 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!");
@@ -3145,22 +3177,22 @@ _eof_trans:
       INF("        %s", toknz->tmp.accessor->comment);
    }}
        break;
-       case 40:
+       case 41:
 #line 374 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("comment[%d] line%03d:%03d", toknz->cs,
           toknz->saved.line, toknz->current_line);
    }}
        break;
-       case 41:
+       case 42:
 #line 501 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;}
        break;
-       case 42:
+       case 43:
 #line 502 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;}
        break;
-       case 43:
+       case 44:
 #line 467 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("      }");
@@ -3168,10 +3200,10 @@ _eof_trans:
       toknz->tmp.prop->accessors = eina_list_append(toknz->tmp.prop->accessors, toknz->tmp.accessor);
       toknz->tmp.accessor = NULL;
       toknz->current_nesting--;
-      { toknz->cs = 311; goto _again;}
+      { toknz->cs = 315; goto _again;}
    }}
        break;
-       case 44:
+       case 45:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -3190,15 +3222,15 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 45:
+       case 46:
 #line 497 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 46:
+       case 47:
 #line 500 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 47:
+       case 48:
 #line 467 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       INF("      }");
@@ -3206,10 +3238,10 @@ _eof_trans:
       toknz->tmp.prop->accessors = eina_list_append(toknz->tmp.prop->accessors, toknz->tmp.accessor);
       toknz->tmp.accessor = NULL;
       toknz->current_nesting--;
-      { toknz->cs = 311; goto _again;}
+      { toknz->cs = 315; goto _again;}
    }}
        break;
-       case 48:
+       case 49:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -3228,11 +3260,11 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 49:
+       case 50:
 #line 500 "lib/eolian/eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}}
        break;
-       case 50:
+       case 51:
 #line 383 "lib/eolian/eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -3251,28 +3283,28 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 51:
+       case 52:
 #line 374 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("comment[%d] line%03d:%03d", toknz->cs,
           toknz->saved.line, toknz->current_line);
    }}
        break;
-       case 52:
+       case 53:
 #line 526 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("      }");
       toknz->tmp.param = NULL;
       toknz->current_nesting--;
       if (toknz->tmp.prop)
-        { toknz->cs = 311; goto _again;}
+        { toknz->cs = 315; goto _again;}
       else if (toknz->tmp.meth)
-        { toknz->cs = 324; goto _again;}
+        { toknz->cs = 328; goto _again;}
       else
         ABORT(toknz, "leaving tokenize_params but there is no property nor method pending");
    }}
        break;
-       case 53:
+       case 54:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -3291,29 +3323,29 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 54:
+       case 55:
 #line 542 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 55:
+       case 56:
 #line 544 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 56:
+       case 57:
 #line 526 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       INF("      }");
       toknz->tmp.param = NULL;
       toknz->current_nesting--;
       if (toknz->tmp.prop)
-        { toknz->cs = 311; goto _again;}
+        { toknz->cs = 315; goto _again;}
       else if (toknz->tmp.meth)
-        { toknz->cs = 324; goto _again;}
+        { toknz->cs = 328; goto _again;}
       else
         ABORT(toknz, "leaving tokenize_params but there is no property nor method pending");
    }}
        break;
-       case 57:
+       case 58:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -3332,11 +3364,11 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 58:
+       case 59:
 #line 544 "lib/eolian/eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}}
        break;
-       case 59:
+       case 60:
 #line 383 "lib/eolian/eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -3355,50 +3387,50 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 60:
+       case 61:
 #line 374 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("comment[%d] line%03d:%03d", toknz->cs,
           toknz->saved.line, toknz->current_line);
    }}
        break;
-       case 61:
+       case 62:
 #line 551 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("      get {");
       toknz->tmp.accessor = _eo_tokenizer_accessor_get(toknz, GETTER);
       toknz->current_nesting++;
-      { toknz->cs = 295; goto _again;}
+      { toknz->cs = 299; goto _again;}
    }}
        break;
-       case 62:
+       case 63:
 #line 558 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("      set {");
       toknz->tmp.accessor = _eo_tokenizer_accessor_get(toknz, SETTER);
       toknz->current_nesting++;
-      { toknz->cs = 295; goto _again;}
+      { toknz->cs = 299; goto _again;}
    }}
        break;
-       case 63:
+       case 64:
 #line 565 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("      keys {");
       toknz->current_nesting++;
       toknz->tmp.params = &(toknz->tmp.prop->keys);
-      { toknz->cs = 304; goto _again;}
+      { toknz->cs = 308; goto _again;}
    }}
        break;
-       case 64:
+       case 65:
 #line 572 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("      values {");
       toknz->current_nesting++;
       toknz->tmp.params = &(toknz->tmp.prop->values);
-      { toknz->cs = 304; goto _again;}
+      { toknz->cs = 308; goto _again;}
    }}
        break;
-       case 65:
+       case 66:
 #line 579 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       if (!toknz->tmp.prop) ABORT(toknz, "No property!!!");
@@ -3410,10 +3442,10 @@ _eof_trans:
       toknz->tmp.kls->properties = eina_list_append(toknz->tmp.kls->properties, toknz->tmp.prop);
       toknz->tmp.prop = NULL;
       toknz->current_nesting--;
-      { toknz->cs = 319; goto _again;}
+      { toknz->cs = 323; goto _again;}
    }}
        break;
-       case 66:
+       case 67:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -3432,11 +3464,11 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 67:
+       case 68:
 #line 598 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 68:
+       case 69:
 #line 579 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       if (!toknz->tmp.prop) ABORT(toknz, "No property!!!");
@@ -3448,10 +3480,10 @@ _eof_trans:
       toknz->tmp.kls->properties = eina_list_append(toknz->tmp.kls->properties, toknz->tmp.prop);
       toknz->tmp.prop = NULL;
       toknz->current_nesting--;
-      { toknz->cs = 319; goto _again;}
+      { toknz->cs = 323; goto _again;}
    }}
        break;
-       case 69:
+       case 70:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -3470,7 +3502,7 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 70:
+       case 71:
 #line 383 "lib/eolian/eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -3489,31 +3521,31 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 71:
+       case 72:
 #line 374 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("comment[%d] line%03d:%03d", toknz->cs,
           toknz->saved.line, toknz->current_line);
    }}
        break;
-       case 72:
+       case 73:
 #line 610 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       if (!toknz->tmp.prop) ABORT(toknz, "No property!!!");
       INF("    %s {", toknz->tmp.prop->name);
       toknz->current_nesting++;
-      { toknz->cs = 311; goto _again;}
+      { toknz->cs = 315; goto _again;}
    }}
        break;
-       case 73:
+       case 74:
 #line 623 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("  }");
       toknz->current_nesting--;
-      { toknz->cs = 339; goto _again;}
+      { toknz->cs = 343; goto _again;}
    }}
        break;
-       case 74:
+       case 75:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -3532,19 +3564,19 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 75:
+       case 76:
 #line 632 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 76:
+       case 77:
 #line 623 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       INF("  }");
       toknz->current_nesting--;
-      { toknz->cs = 339; goto _again;}
+      { toknz->cs = 343; goto _again;}
    }}
        break;
-       case 77:
+       case 78:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -3563,7 +3595,7 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 78:
+       case 79:
 #line 383 "lib/eolian/eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -3582,7 +3614,7 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 79:
+       case 80:
 #line 641 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
@@ -3592,32 +3624,32 @@ _eof_trans:
       INF("        %s", toknz->tmp.meth->comment);
    }}
        break;
-       case 80:
+       case 81:
 #line 374 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("comment[%d] line%03d:%03d", toknz->cs,
           toknz->saved.line, toknz->current_line);
    }}
        break;
-       case 81:
+       case 82:
 #line 649 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
       INF("      params {");
       toknz->current_nesting++;
       toknz->tmp.params = &(toknz->tmp.meth->params);
-      { toknz->cs = 304; goto _again;}
+      { toknz->cs = 308; goto _again;}
    }}
        break;
-       case 82:
+       case 83:
 #line 725 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;}
        break;
-       case 83:
+       case 84:
 #line 726 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;}
        break;
-       case 84:
+       case 85:
 #line 684 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       Eina_List **l = NULL;
@@ -3642,10 +3674,10 @@ _eof_trans:
       *l = eina_list_append(*l, toknz->tmp.meth);
       toknz->tmp.meth = NULL;
       toknz->current_nesting--;
-      { toknz->cs = 334; goto _again;}
+      { toknz->cs = 338; goto _again;}
    }}
        break;
-       case 85:
+       case 86:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -3664,15 +3696,15 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 86:
+       case 87:
 #line 720 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 87:
+       case 88:
 #line 724 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 88:
+       case 89:
 #line 684 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       Eina_List **l = NULL;
@@ -3697,10 +3729,10 @@ _eof_trans:
       *l = eina_list_append(*l, toknz->tmp.meth);
       toknz->tmp.meth = NULL;
       toknz->current_nesting--;
-      { toknz->cs = 334; goto _again;}
+      { toknz->cs = 338; goto _again;}
    }}
        break;
-       case 89:
+       case 90:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -3719,11 +3751,11 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 90:
+       case 91:
 #line 724 "lib/eolian/eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}}
        break;
-       case 91:
+       case 92:
 #line 383 "lib/eolian/eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -3742,32 +3774,32 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 92:
+       case 93:
 #line 374 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("comment[%d] line%03d:%03d", toknz->cs,
           toknz->saved.line, toknz->current_line);
    }}
        break;
-       case 93:
+       case 94:
 #line 733 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
       INF("    %s {", toknz->tmp.meth->name);
       toknz->current_nesting++;
-      { toknz->cs = 324; goto _again;}
+      { toknz->cs = 328; goto _again;}
    }}
        break;
-       case 94:
+       case 95:
 #line 746 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("  }");
       toknz->current_methods_type = METH_TYPE_LAST;
       toknz->current_nesting--;
-      { toknz->cs = 339; goto _again;}
+      { toknz->cs = 343; goto _again;}
    }}
        break;
-       case 95:
+       case 96:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -3786,20 +3818,20 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 96:
+       case 97:
 #line 756 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 97:
+       case 98:
 #line 746 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       INF("  }");
       toknz->current_methods_type = METH_TYPE_LAST;
       toknz->current_nesting--;
-      { toknz->cs = 339; goto _again;}
+      { toknz->cs = 343; goto _again;}
    }}
        break;
-       case 98:
+       case 99:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -3818,7 +3850,7 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 99:
+       case 100:
 #line 383 "lib/eolian/eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -3837,7 +3869,7 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 100:
+       case 101:
 #line 765 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
@@ -3846,59 +3878,59 @@ _eof_trans:
       toknz->tmp.kls->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-1);
    }}
        break;
-       case 101:
+       case 102:
 #line 374 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("comment[%d] line%03d:%03d", toknz->cs,
           toknz->saved.line, toknz->current_line);
    }}
        break;
-       case 102:
+       case 103:
 #line 783 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
    }}
        break;
-       case 103:
+       case 104:
 #line 786 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
    }}
        break;
-       case 104:
+       case 105:
 #line 789 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("  constructors {");
       toknz->current_methods_type = METH_CONSTRUCTOR;
       toknz->current_nesting++;
-      { toknz->cs = 334; goto _again;}
+      { toknz->cs = 338; goto _again;}
    }}
        break;
-       case 105:
+       case 106:
 #line 796 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("  destructors {");
       toknz->current_methods_type = METH_DESTRUCTOR;
       toknz->current_nesting++;
-      { toknz->cs = 334; goto _again;}
+      { toknz->cs = 338; goto _again;}
    }}
        break;
-       case 106:
+       case 107:
 #line 803 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("  properties {");
       toknz->current_nesting++;
-      { toknz->cs = 319; goto _again;}
+      { toknz->cs = 323; goto _again;}
    }}
        break;
-       case 107:
+       case 108:
 #line 809 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("  begin methods");
       toknz->current_methods_type = METH_REGULAR;
       toknz->current_nesting++;
-      { toknz->cs = 334; goto _again;}
+      { toknz->cs = 338; goto _again;}
    }}
        break;
-       case 108:
+       case 109:
 #line 816 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
@@ -3906,10 +3938,10 @@ _eof_trans:
       toknz->classes = eina_list_append(toknz->classes, toknz->tmp.kls);
       toknz->tmp.kls = NULL;
       toknz->current_nesting--;
-      { toknz->cs = 288; goto _again;}
+      { toknz->cs = 292; goto _again;}
    }}
        break;
-       case 109:
+       case 110:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -3928,33 +3960,33 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 110:
-#line 963 "lib/eolian/eo_lexer.rl"
-       { toknz->te = ( toknz->p);( toknz->p)--;}
-       break;
        case 111:
-#line 966 "lib/eolian/eo_lexer.rl"
+#line 971 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
        case 112:
-#line 967 "lib/eolian/eo_lexer.rl"
+#line 974 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
        case 113:
-#line 968 "lib/eolian/eo_lexer.rl"
+#line 975 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
        case 114:
+#line 976 "lib/eolian/eo_lexer.rl"
+       { toknz->te = ( toknz->p);( toknz->p)--;}
+       break;
+       case 115:
 #line 783 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
    }}
        break;
-       case 115:
+       case 116:
 #line 786 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
    }}
        break;
-       case 116:
+       case 117:
 #line 816 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
@@ -3962,10 +3994,10 @@ _eof_trans:
       toknz->classes = eina_list_append(toknz->classes, toknz->tmp.kls);
       toknz->tmp.kls = NULL;
       toknz->current_nesting--;
-      { toknz->cs = 288; goto _again;}
+      { toknz->cs = 292; goto _again;}
    }}
        break;
-       case 117:
+       case 118:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -3984,7 +4016,7 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 118:
+       case 119:
 #line 383 "lib/eolian/eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -4003,23 +4035,23 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 119:
+       case 120:
 #line 374 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("comment[%d] line%03d:%03d", toknz->cs,
           toknz->saved.line, toknz->current_line);
    }}
        break;
-       case 120:
-#line 981 "lib/eolian/eo_lexer.rl"
+       case 121:
+#line 989 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
       INF("begin class: %s", toknz->tmp.kls->name);
       toknz->current_nesting++;
-      { toknz->cs = 339; goto _again;}
+      { toknz->cs = 343; goto _again;}
    }}
        break;
-       case 121:
+       case 122:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -4038,11 +4070,11 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 122:
-#line 1016 "lib/eolian/eo_lexer.rl"
+       case 123:
+#line 1024 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 123:
+       case 124:
 #line 383 "lib/eolian/eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -4061,7 +4093,7 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 124:
+       case 125:
 #line 383 "lib/eolian/eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -4080,7 +4112,7 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-#line 4084 "lib/eolian/eo_lexer.c"
+#line 4116 "lib/eolian/eo_lexer.c"
                }
        }
 
@@ -4089,11 +4121,11 @@ _again:
        _nacts = (unsigned int) *_acts++;
        while ( _nacts-- > 0 ) {
                switch ( *_acts++ ) {
-       case 36:
+       case 37:
 #line 1 "NONE"
        { toknz->ts = 0;}
        break;
-#line 4097 "lib/eolian/eo_lexer.c"
+#line 4129 "lib/eolian/eo_lexer.c"
                }
        }
 
@@ -4111,12 +4143,12 @@ _again:
        _out: {}
        }
 
-#line 1125 "lib/eolian/eo_lexer.rl"
+#line 1133 "lib/eolian/eo_lexer.rl"
 
    if ( toknz->cs == 
-#line 4118 "lib/eolian/eo_lexer.c"
+#line 4150 "lib/eolian/eo_lexer.c"
 -1
-#line 1126 "lib/eolian/eo_lexer.rl"
+#line 1134 "lib/eolian/eo_lexer.rl"
  )
      {
         ERR("%s: wrong termination", source);
@@ -4178,7 +4210,7 @@ eo_tokenizer_dump(Eo_Tokenizer *toknz)
         printf("\n");
         printf("  events:\n");
         EINA_LIST_FOREACH(kls->events, l, sgn)
-           printf("    %s (%s)\n", sgn->name, sgn->comment);
+           printf("    %s <%s> (%s)\n", sgn->name, sgn->type, sgn->comment);
 
         EINA_LIST_FOREACH(kls->constructors, l, meth)
           {
@@ -4505,7 +4537,7 @@ eo_tokenizer_database_fill(const char *filename)
 
         EINA_LIST_FOREACH(kls->events, l, event)
           {
-             Eolian_Event ev = database_event_new(event->name, event->comment);
+             Eolian_Event ev = database_event_new(event->name, event->type, event->comment);
              database_class_event_add(kls->name, ev);
           }
 
index e407b94..753dc93 100644 (file)
@@ -828,6 +828,13 @@ _eo_tokenizer_implement_get(Eo_Tokenizer *toknz, char *p)
       toknz->tmp.kls->events = eina_list_append(toknz->tmp.kls->events, toknz->tmp.event);
    }
 
+   action end_event_type {
+      if (!toknz->tmp.event) ABORT(toknz, "No event!!!");
+      if (toknz->tmp.event->type != NULL)
+        ABORT(toknz, "event %s has already a type %s", toknz->tmp.event->name, toknz->tmp.event->type);
+      toknz->tmp.event->type = _eo_tokenizer_token_get(toknz, fpc-1);
+   }
+
    action end_event_comment {
       if (!toknz->tmp.event) ABORT(toknz, "No event!!!");
       if (toknz->tmp.event->comment != NULL)
@@ -951,7 +958,8 @@ _eo_tokenizer_implement_get(Eo_Tokenizer *toknz, char *p)
    implements = 'implements' ignore* begin_def ignore* impl_it* end_def;
 
    event_comment = ws* eo_comment %end_event_comment;
-   event_it = event %end_event_name ignore* end_statement event_comment? ignore*;
+   event_type = begin_list ws* alpha_u >save_fpc (alnum_u | '*' | ws )* ws* end_list %end_event_type;
+   event_it = event %end_event_name ws* event_type? ignore* end_statement event_comment? ignore*;
    events = 'events' ignore* begin_def ignore* event_it* end_def;
 
    constructors = 'constructors' ignore* begin_def;
@@ -1184,7 +1192,7 @@ eo_tokenizer_dump(Eo_Tokenizer *toknz)
         printf("\n");
         printf("  events:\n");
         EINA_LIST_FOREACH(kls->events, l, sgn)
-           printf("    %s (%s)\n", sgn->name, sgn->comment);
+           printf("    %s <%s> (%s)\n", sgn->name, sgn->type, sgn->comment);
 
         EINA_LIST_FOREACH(kls->constructors, l, meth)
           {
@@ -1511,7 +1519,7 @@ eo_tokenizer_database_fill(const char *filename)
 
         EINA_LIST_FOREACH(kls->events, l, event)
           {
-             Eolian_Event ev = database_event_new(event->name, event->comment);
+             Eolian_Event ev = database_event_new(event->name, event->type, event->comment);
              database_class_event_add(kls->name, ev);
           }
 
index f296c74..b9fe76a 100644 (file)
@@ -84,6 +84,7 @@ typedef struct
 typedef struct
 {
    Eina_Stringshare *name;
+   Eina_Stringshare *type;
    Eina_Stringshare *comment;
 } _Event_Desc;
 
@@ -983,12 +984,13 @@ eolian_function_object_is_const(Eolian_Function foo_id)
 }
 
 Eolian_Event
-database_event_new(const char *event_name, const char *event_comment)
+database_event_new(const char *event_name, const char *event_type, const char *event_comment)
 {
    if (!event_name) return NULL;
    _Event_Desc *event_desc = calloc(1, sizeof(_Event_Desc));
    if (!event_desc) return NULL;
    event_desc->name = eina_stringshare_add(event_name);
+   if (event_type) event_desc->type = eina_stringshare_add(event_type);
    event_desc->comment = eina_stringshare_add(event_comment);
    return (Eolian_Event) event_desc;
 }
@@ -1020,11 +1022,12 @@ eolian_class_events_list_get(const char *class_name)
 }
 
 EAPI Eina_Bool
-eolian_class_event_information_get(Eolian_Event event, const char **event_name, const char **event_comment)
+eolian_class_event_information_get(Eolian_Event event, const char **event_name, const char **event_type, const char **event_comment)
 {
    _Event_Desc *_event_desc = (_Event_Desc *) event;
    EINA_SAFETY_ON_NULL_RETURN_VAL(_event_desc, EINA_FALSE);
    if (event_name) *event_name = _event_desc->name;
+   if (event_type) *event_type = _event_desc->type;
    if (event_comment) *event_comment = _event_desc->comment;
    return EINA_TRUE;
 }
@@ -1112,10 +1115,10 @@ _implements_print(Eolian_Implement impl, int nb_spaces)
 static void
 _event_print(Eolian_Event ev, int nb_spaces)
 {
-   const char *name, *comment;
+   const char *name, *comment, *type;
 
-   eolian_class_event_information_get(ev, &name, &comment);
-   printf("%*s <%s> <%s>\n", nb_spaces + 5, "", name, comment);
+   eolian_class_event_information_get(ev, &name, &type, &comment);
+   printf("%*s <%s> <%s> <%s>\n", nb_spaces + 5, "", name, type, comment);
 }
 
 static Eina_Bool _function_print(const _Function_Id *fid, int nb_spaces)
index 797fe59..5a22588 100644 (file)
@@ -133,7 +133,7 @@ Eina_Bool
 database_class_dtor_enable_set(const char *class_name, Eina_Bool enable);
 
 Eolian_Event
-database_event_new(const char *event_name, const char *event_desc);
+database_event_new(const char *event_name, const char *event_type, const char *event_desc);
 
 void
 database_event_free(Eolian_Event event);