the repository of RSA merge with private repository.
[platform/core/uifw/e17.git] / src / bin / e_log.h
1 #ifdef E_TYPEDEFS
2
3 #else
4 #ifndef E_LOG_H
5 #define E_LOG_H
6
7
8 #ifdef E_LOGGING
9 #undef DBG
10 #undef INF
11 #undef WRN
12 #undef ERR
13 #undef CRI
14 #define DBG(...)            EINA_LOG_DOM_DBG(e_log_dom, __VA_ARGS__)
15 #define INF(...)            EINA_LOG_DOM_INFO(e_log_dom, __VA_ARGS__)
16 #define WRN(...)            EINA_LOG_DOM_WARN(e_log_dom, __VA_ARGS__)
17 #define ERR(...)            EINA_LOG_DOM_ERR(e_log_dom, __VA_ARGS__)
18 #define CRI(...)            EINA_LOG_DOM_CRIT(e_log_dom, __VA_ARGS__)
19
20 EINTERN extern int e_log_dom;
21
22 EINTERN int e_log_init(void);
23 EINTERN int e_log_shutdown(void);
24 #else
25 #undef DBG
26 #undef INF
27 #undef WRN
28 #undef ERR
29 #undef CRI
30 #define DBG(...)            printf(__VA_ARGS__); putc('\n', stdout)
31 #define INF(...)            printf(__VA_ARGS__); putc('\n', stdout)
32 #define WRN(...)            printf(__VA_ARGS__); putc('\n', stdout)
33 #define ERR(...)            printf(__VA_ARGS__); putc('\n', stdout)
34 #define CRI(...)            printf(__VA_ARGS__); putc('\n', stdout)
35 #endif
36
37 #ifdef _F_E_LOGBUF_
38 #define ELBT_NONE   0x00000000
39 #define ELBT_DFT    0x00000001
40 #define ELBT_MNG    0x00000002
41 #define ELBT_BD     0x00000004
42 #define ELBT_ROT    0x00000008
43 #define ELBT_ILLUME 0x00000010
44 #define ELBT_COMP   0x00000020
45 #define ELBT_MOVE   0x00000040
46 #define ELBT_TRACE  0x00000080
47 #define ELBT_ALL    0xFFFFFFFF
48
49 extern EAPI unsigned int e_logbuf_type;
50
51 EINTERN int  e_logbuf_init(void);
52 EINTERN int  e_logbuf_shutdown(void);
53 EAPI    void e_logbuf_add(unsigned int type, const char *func, int line, const char *str, unsigned int id);
54 EAPI    void e_logbuf_fmt_add(unsigned int type, unsigned int blank, const char *func, int line, unsigned int id, const char *fmt, ...);
55
56 #define ELB(t, s, i)           do { if ((e_logbuf_type) & (t)) { e_logbuf_add((t), __FUNCTION__, __LINE__, (s), (i));             } } while (0);
57 #define ELBF(t, b, i, f, x...) do { if ((e_logbuf_type) & (t)) { e_logbuf_fmt_add((t), (b), __FUNCTION__, __LINE__, (i), f, ##x); } } while (0);
58 #define ELB_BACKTRACE() \
59   do \
60     { \
61        void* frame_addrs[16]; \
62        char** frame_strings; \
63        size_t backtrace_size; \
64        int i; \
65        backtrace_size = backtrace(frame_addrs, 16); \
66        frame_strings = backtrace_symbols(frame_addrs, backtrace_size); \
67        for (i = 0; i < backtrace_size; ++i) \
68          { \
69            ELBF(ELBT_TRACE, 0, 0, "%d: [0x%x] %s", i, frame_addrs[i], frame_strings[i]); \
70          } \
71       free(frame_strings); \
72     } \
73   while (0);
74 #else
75 #define ELB(...)            ;
76 #define ELBF(...)           ;
77 #define ELB_BACKTRACE()     ;
78 #endif
79
80 #endif
81 #endif