More warning suppressions
[sxemacs] / src / ui / lwlib / lwlib-internal.h
1 #ifndef INCLUDED_lwlib_internal_h_
2 #define INCLUDED_lwlib_internal_h_
3
4 #include "lwlib.h"
5
6 #ifdef USE_ASSERTIONS
7 /* Highly dubious kludge */
8 /*   (thanks, Jamie, I feel better now -- ben) */
9 void assert_failed(const char *, int, const char *);
10 # define abort() (assert_failed (__FILE__, __LINE__, "abort()"))
11 # define assert(x) ((x) ? (void) 0 : assert_failed (__FILE__, __LINE__, #x))
12 #else
13 # ifdef DEBUG_XEMACS
14 #  define assert(x) ((x) ? (void) 0 : (void) abort ())
15 # else
16 #  define assert(x)
17 # endif
18 #endif
19
20 /* This represents a single widget within a widget tree.  All the
21    widgets in a widget tree are chained through the `next' field.
22    `info' is a back pointer to the widget tree. */
23
24 typedef struct _widget_instance {
25         Widget widget;
26         Widget parent;
27         Boolean pop_up_p;
28         struct _widget_info *info;
29         struct _widget_instance *next;
30 } widget_instance;
31
32 /* This represents a single widget tree, such as a single menubar.
33    The global variable `all_widget_info' lists all widget trees,
34    chained through the `next' field of this structure. */
35
36 typedef struct _widget_info {
37         char *type;
38         char *name;
39         LWLIB_ID id;
40         widget_value *val;
41         Boolean busy;
42         lw_callback pre_activate_cb;
43         lw_callback selection_cb;
44         lw_callback post_activate_cb;
45         struct _widget_instance *instances;
46         struct _widget_info *next;
47 } widget_info;
48
49 typedef Widget(*widget_creation_function) (widget_instance * instance);
50
51 typedef struct _widget_creation_entry {
52         const char *type;
53         widget_creation_function function;
54 } widget_creation_entry;
55
56 /* update all other instances of a widget.  Can be used in a callback when
57    a widget has been used by the user */
58 void
59 lw_internal_update_other_instances(Widget widget, XtPointer closure,
60                                    XtPointer call_data);
61
62 /* get the widget_value for a widget in a given instance */
63 widget_value *lw_get_widget_value_for_widget(widget_instance * instance,
64                                              Widget w);
65
66 widget_info *lw_get_widget_info(LWLIB_ID id);
67
68 #endif                          /* INCLUDED_lwlib_internal_h_ */