Added SILC Thread Queue API
[crypto.git] / apps / irssi / src / fe-common / core / printtext.h
1 #ifndef __PRINTTEXT_H
2 #define __PRINTTEXT_H
3
4 #include "fe-windows.h"
5 #include "formats.h"
6
7 void printformat_module(const char *module, void *server, const char *target, int level, int formatnum, ...);
8 void printformat_module_window(const char *module, WINDOW_REC *window, int level, int formatnum, ...);
9 void printformat_module_dest(const char *module, TEXT_DEST_REC *dest, int formatnum, ...);
10
11 void printformat_module_args(const char *module, void *server, const char *target, int level, int formatnum, va_list va);
12 void printformat_module_window_args(const char *module, WINDOW_REC *window, int level, int formatnum, va_list va);
13 void printformat_module_dest_args(const char *module, TEXT_DEST_REC *dest, int formatnum, va_list va);
14
15 void printtext(void *server, const char *target, int level, const char *text, ...);
16 void printtext_string(void *server, const char *target, int level, const char *text);
17 void printtext_string_window(WINDOW_REC *window, int level, const char *text);
18 void printtext_window(WINDOW_REC *window, int level, const char *text, ...);
19 void printtext_multiline(void *server, const char *target, int level, const char *format, const char *text);
20 void printtext_dest(TEXT_DEST_REC *dest, const char *text, ...);
21
22 /* only GUI should call these - used for printing text to somewhere else
23    than windows */
24 void printtext_gui(const char *text);
25 void printformat_module_gui(const char *module, int formatnum, ...);
26 void printformat_module_gui_args(const char *module, int formatnum, va_list va);
27
28 void printtext_init(void);
29 void printtext_deinit(void);
30
31 /* printformat(...) = printformat_format(MODULE_NAME, ...)
32
33    Could this be any harder? :) With GNU C compiler and C99 compilers,
34    use #define. With others use either inline functions if they are
35    supported or static functions if they are not..
36  */
37 #if defined (__GNUC__) && !defined (__STRICT_ANSI__)
38 /* GCC */
39 #  define printformat(server, target, level, formatnum...) \
40         printformat_module(MODULE_NAME, server, target, level, ##formatnum)
41 #  define printformat_window(window, level, formatnum...) \
42         printformat_module_window(MODULE_NAME, window, level, ##formatnum)
43 #  define printformat_dest(dest, formatnum...) \
44         printformat_module_dest(MODULE_NAME, dest, ##formatnum)
45 #  define printformat_gui(formatnum...) \
46         printformat_module_gui(MODULE_NAME, ##formatnum)
47 #elif defined (_ISOC99_SOURCE)
48 /* C99 */
49 #  define printformat(server, target, level, formatnum, ...) \
50         printformat_module(MODULE_NAME, server, target, level, formatnum, __VA_ARGS__)
51 #  define printformat_window(window, level, formatnum, ...) \
52         printformat_module_window(MODULE_NAME, window, level, formatnum, __VA_ARGS__)
53 #  define printformat_dest(dest, formatnum, ...) \
54         printformat_module_dest(MODULE_NAME, dest, formatnum, __VA_ARGS__)
55 #  define printformat_gui(formatnum, ...) \
56         printformat_module_gui(MODULE_NAME, formatnum, __VA_ARGS__)
57 #else
58 /* inline/static */
59 #ifdef G_CAN_INLINE
60 G_INLINE_FUNC
61 #else
62 static
63 #endif
64 void printformat(void *server, const char *target, int level, int formatnum, ...)
65 {
66         va_list va;
67
68         va_start(va, formatnum);
69         printformat_module_args(MODULE_NAME, server, target, level, formatnum, va);
70         va_end(va);
71 }
72
73 #ifdef G_CAN_INLINE
74 G_INLINE_FUNC
75 #else
76 static
77 #endif
78 void printformat_window(WINDOW_REC *window, int level, int formatnum, ...)
79 {
80         va_list va;
81
82         va_start(va, formatnum);
83         printformat_module_window_args(MODULE_NAME, window, level, formatnum, va);
84         va_end(va);
85 }
86
87 #ifdef G_CAN_INLINE
88 G_INLINE_FUNC
89 #else
90 static
91 #endif
92 void printformat_dest(TEXT_DEST_REC *dest, int formatnum, ...)
93 {
94         va_list va;
95
96         va_start(va, formatnum);
97         printformat_module_dest_args(MODULE_NAME, dest, formatnum, va);
98         va_end(va);
99 }
100
101 #ifdef G_CAN_INLINE
102 G_INLINE_FUNC
103 #else
104 static
105 #endif
106 void printformat_gui(int formatnum, ...)
107 {
108         va_list va;
109
110         va_start(va, formatnum);
111         printformat_module_gui_args(MODULE_NAME, formatnum, va);
112         va_end(va);
113 }
114 #endif
115
116 #endif