#ifndef ED_H
#define ED_H 1

#include "ru.h"
#include "bool.h"
#include "global.h"
#include "rap.h"
#include "rl.h"

#define ed_min(a,b) ((a<b) ? a : b)
#define ed_max(a,b) ((a<b) ? b : a)

typedef NORET (*EdHelpVerifyFunction) PROTOTYPE((VOIDP));

extern void    ed_Init PROTOTYPE((reid));
extern void    ed_Add_Field_CB PROTOTYPE((Widget,RapPack,
					  XmAnyCallbackStruct*));
extern NORET   ed_Abort_CB PROTOTYPE((Widget,reid,caddr_t));
extern NORET   ed_Done_CB PROTOTYPE((Widget,reid,caddr_t));
extern void    ed_AddMT_CB PROTOTYPE((Widget,RapPack,caddr_t));

extern void    ed_Delete_CB PROTOTYPE((Widget,reid,caddr_t));
extern void    ed_Field_delete PROTOTYPE((Widget,reid,REField));
extern void    ed_Action_delete_CB PROTOTYPE((Widget,reid,caddr_t));
extern void    ed_Argument_delete_CB PROTOTYPE((Widget,reid,caddr_t));
extern void    ed_Argument_delete  PROTOTYPE((REArgument));

extern void    ed_Info_CB PROTOTYPE((Widget,reid,caddr_t));

extern void    ed_ClearWidgetKillList PROTOTYPE((reid));
extern Bool    ed_FieldExists PROTOTYPE((reid,char *));
extern void    ed_rl_Field_remove PROTOTYPE((reid,REField));
extern NORET   ed_rl_Assoc_remove PROTOTYPE((reid,REAssoc));
extern void    ed_Verb_change_CB PROTOTYPE((Widget,RapPack,caddr_t));
extern void    ed_Action_add_CB    PROTOTYPE((Widget,RapPack,caddr_t));

extern NORET   ed_Action_delete PROTOTYPE((REAction));

extern void    ed_AddArgument PROTOTYPE((reid,REAction,unsigned));
extern void    ed_BlankArgument PROTOTYPE((REAction,unsigned));
extern void    ed_RemoveArgumentsToEnd PROTOTYPE((REAction,unsigned));
extern void    ed_Argument_add_CB PROTOTYPE((Widget,reid,caddr_t));
extern void    ed_DeleteArg_CB PROTOTYPE((Widget,RapPack,caddr_t));
extern void    ed_UpdateAltsMenuSensitivity PROTOTYPE((REAction));
extern Bool    ed_Boxer_get_members PROTOTYPE ((Darray,Bool*,REMember,
						REMember*,int*, 
						Display*,Window,int,int,
						int,int));
extern NORET   ed_Boxer_CB PROTOTYPE((RapPack,int,int,int,int));
extern Bool    point_contains_member PROTOTYPE((Display*,Window,REMember,
						int,int,int,int));
extern NORET   ed_Boxer_modify_rule PROTOTYPE((reid,Darray,REMember,
					       int,REMember));
extern NORET   ed_Boxer_modify_screen PROTOTYPE((reid,Darray,REMember,
						 REMember,Darray));
extern NORET   ed_AddBox_CB PROTOTYPE((Widget,RapPack,caddr_t));
extern NORET   ed_Select_field_CB PROTOTYPE((Widget,REField,caddr_t));
extern NORET   ed_Select_bar_E PROTOTYPE((Widget,XEvent*,char**,int*));
extern NORET   ed_Field_add_simple_CB  PROTOTYPE((Widget,RapPack,
						  XmAnyCallbackStruct*));
extern NORET   ed_Field_add_complex_CB  PROTOTYPE((Widget,reid,
						  XmAnyCallbackStruct*));
extern NORET   ed_Change_CB  PROTOTYPE((Widget,RapPack,
					XmAnyCallbackStruct*));
extern NORET   ed_Print_CB  PROTOTYPE((Widget,reid,caddr_t));
extern NORET   ed_Help_CB  PROTOTYPE((Widget,RapPack,caddr_t));
extern NORET   ed_Help2_CB  PROTOTYPE((Widget,RapPack,caddr_t));
extern NORET   ed_Reset_verb PROTOTYPE((reid));
extern NORET   ed_Field_key_justify_CB PROTOTYPE((Widget,REField,caddr_t));
     
#endif


