efl

Форк
0
/
database_event_api.c 
84 строки · 2.0 Кб
1
#ifdef HAVE_CONFIG_H
2
# include "config.h"
3
#endif
4

5
#include <Eina.h>
6
#include "eolian_database.h"
7

8
EOLIAN_API const Eolian_Type *
9
eolian_event_type_get(const Eolian_Event *event)
10
{
11
   EINA_SAFETY_ON_NULL_RETURN_VAL(event, NULL);
12
   if (event->type && (event->type->type == EOLIAN_TYPE_VOID))
13
     return NULL;
14
   return event->type;
15
}
16

17
EOLIAN_API const Eolian_Class *
18
eolian_event_class_get(const Eolian_Event *event)
19
{
20
   EINA_SAFETY_ON_NULL_RETURN_VAL(event, NULL);
21
   return event->klass;
22
}
23

24
EOLIAN_API const Eolian_Documentation *
25
eolian_event_documentation_get(const Eolian_Event *event)
26
{
27
   EINA_SAFETY_ON_NULL_RETURN_VAL(event, NULL);
28
   return event->doc;
29
}
30

31
EOLIAN_API Eolian_Object_Scope
32
eolian_event_scope_get(const Eolian_Event *event)
33
{
34
   EINA_SAFETY_ON_NULL_RETURN_VAL(event, EOLIAN_SCOPE_UNKNOWN);
35
   return event->scope;
36
}
37

38
EOLIAN_API Eina_Bool
39
eolian_event_is_hot(const Eolian_Event *event)
40
{
41
   EINA_SAFETY_ON_NULL_RETURN_VAL(event, EINA_FALSE);
42
   return event->is_hot;
43
}
44

45
EOLIAN_API Eina_Bool
46
eolian_event_is_restart(const Eolian_Event *event)
47
{
48
   EINA_SAFETY_ON_NULL_RETURN_VAL(event, EINA_FALSE);
49
   return event->is_restart;
50
}
51

52
EOLIAN_API Eina_Stringshare *
53
eolian_event_c_macro_get(const Eolian_Event *event)
54
{
55
    char  buf[512];
56
    char *tmp = buf;
57
    const char *pfx = event->klass->ev_prefix;
58
    if (!pfx) pfx = event->klass->c_prefix;
59
    if (!pfx) pfx = event->klass->base.name;
60
    snprintf(buf, sizeof(buf), "%s_EVENT_%s", pfx, event->base.name);
61
    eina_str_toupper(&tmp);
62
    while ((tmp = strpbrk(tmp, ".,"))) *tmp = '_';
63
    return eina_stringshare_add(buf);
64
}
65

66
EOLIAN_API const Eolian_Event *
67
eolian_class_event_by_name_get(const Eolian_Class *klass, const char *event_name)
68
{
69
   Eina_List *itr;
70
   Eolian_Event *event = NULL;
71
   if (!klass) return NULL;
72
   Eina_Stringshare *shr_ev = eina_stringshare_add(event_name);
73

74
   EINA_LIST_FOREACH(klass->events, itr, event)
75
        {
76
           if (event->base.name == shr_ev)
77
              goto end;
78
        }
79

80
   event = NULL;
81
end:
82
   eina_stringshare_del(shr_ev);
83
   return event;
84
}
85

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.