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