1 #ifndef INCLUDED_lwlib_internal_h_
2 #define INCLUDED_lwlib_internal_h_
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))
14 # define assert(x) ((x) ? (void) 0 : (void) abort ())
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. */
24 typedef struct _widget_instance {
28 struct _widget_info *info;
29 struct _widget_instance *next;
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. */
36 typedef struct _widget_info {
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;
49 typedef Widget(*widget_creation_function) (widget_instance * instance);
51 typedef struct _widget_creation_entry {
53 widget_creation_function function;
54 } widget_creation_entry;
56 /* update all other instances of a widget. Can be used in a callback when
57 a widget has been used by the user */
59 lw_internal_update_other_instances(Widget widget, XtPointer closure,
62 /* get the widget_value for a widget in a given instance */
63 widget_value *lw_get_widget_value_for_widget(widget_instance * instance,
66 widget_info *lw_get_widget_info(LWLIB_ID id);
68 #endif /* INCLUDED_lwlib_internal_h_ */