view lwlib/lwlib-internal.h @ 4693:80cd90837ac5

Add argument information to remaining MANY or UNEVALLED C subrs. src/ChangeLog addition: 2009-09-20 Aidan Kehoe <kehoea@parhasard.net> * alloc.c (Flist): (Fvector): (Fbit_vector): (Fmake_byte_code): (Fstring): * data.c (Feqlsign): (Flss): (Fgtr): (Fleq): (Fgeq): (Fneq): (Fgtr): (Fplus): (Fminus): (Ftimes): (Fdiv): (Fquo): (Fmax): (Fmin): (Flogand): (Flogior): (Flogxor): * editfns.c (Fsave_excursion): (Fsave_current_buffer): (Fencode_time): (Finsert): (Finsert_before_markers): (Fsave_restriction): (Fformat): * elhash.c (Fmake_hash_table): * eval.c (Fdefun): (Fdefmacro): (Fcatch): (Funwind_protect): (Fcall_with_condition_handler): (Ffuncall): (Fapply): (Frun_hooks): * fns.c (Fappend): (Fconcat): (Fvconcat): (Fbvconcat): (Fnconc): * print.c (Fwith_output_to_temp_buffer): * process.c (Fstart_process_internal): * window.c (Fsave_window_excursion): * widget.c (Fwidget_apply): Add argument information, in a form understood by #'function-arglist, to all these MANY or UNEVALLED (that is to say, special-operator) built-in functions.
author Aidan Kehoe <kehoea@parhasard.net>
date Sun, 20 Sep 2009 21:29:00 +0100
parents facf3239ba30
children 03ab78e48ef6
line wrap: on
line source

#ifndef INCLUDED_lwlib_internal_h_
#define INCLUDED_lwlib_internal_h_

#include "lwlib.h"

#ifdef USE_ASSERTIONS
/* Highly dubious kludge */
/*   (thanks, Jamie, I feel better now -- ben) */
EXTERN_C void assert_failed (const char *, int, const char *);
# define abort() (assert_failed (__FILE__, __LINE__, "abort()"))
# define assert(x) ((x) ? (void) 0 : assert_failed (__FILE__, __LINE__, #x))
#else
# ifdef DEBUG_XEMACS
#  define assert(x) ((x) ? (void) 0 : (void) abort ())
# else
#  define assert(x) ((void) 0)
# endif
#endif

/* This represents a single widget within a widget tree.  All the
   widgets in a widget tree are chained through the `next' field.
   `info' is a back pointer to the widget tree. */

typedef struct _widget_instance
{
  Widget		widget;
  Widget		parent;
  Boolean		pop_up_p;
  struct _widget_info*		info;
  struct _widget_instance*	next;
} widget_instance;

/* This represents a single widget tree, such as a single menubar.
   The global variable `all_widget_info' lists all widget trees,
   chained through the `next' field of this structure. */

typedef struct _widget_info
{
  char*			type;
  char*			name;
  LWLIB_ID		id;
  widget_value*		val;
  Boolean		busy;
  lw_callback		pre_activate_cb;
  lw_callback		selection_cb;
  lw_callback		post_activate_cb;
  struct _widget_instance*	instances;
  struct _widget_info*		next;
} widget_info;

typedef Widget
(*widget_creation_function) (widget_instance* instance);

typedef struct _widget_creation_entry
{
  const char*			type;
  widget_creation_function	function;
} widget_creation_entry;

/* update all other instances of a widget.  Can be used in a callback when
   a widget has been used by the user */
void
lw_internal_update_other_instances (Widget widget, XtPointer closure,
				    XtPointer call_data);

/* get the widget_value for a widget in a given instance */
widget_value*
lw_get_widget_value_for_widget (widget_instance* instance, Widget w);

widget_info *lw_get_widget_info (LWLIB_ID id);

#endif /* INCLUDED_lwlib_internal_h_ */