#ifndef drwe01fnh_H
 #define  drwe01fnh_H

#ifndef drwAscrfnh_H
 #include "DRW/drwAscrfnh.h"
#endif

#if defined NAMESPACE_DRWIMPC
  namespace DrWimpC {
#endif

#if defined NAMESPACE_OSLIB
  using namespace OSLib;
#endif

typedef int (*drw_lw_list_mouse_click_fn)(wimp_w whan,
                                          wimp_i icon,
                                          wimp_mouse_state buttons,
                                          int mousex,
                                          int mousey,
                                          int x,
                                          int y);

typedef int (*drw_lw_list_key_press_fn)(wimp_w whan,
                                        wimp_i icon,
                                        wimp_key_no wkey,
                                        int dkinuse,
                                        drw_dk_flags dkflagwd);

typedef wimp_w (*drw_lw_get_pane_fn)(wimp_w whan);

typedef wimp_menu *(*drw_lw_get_list_menu_fn)(wimp_w whan, wimp_i icon);

typedef int (*drw_lw_open_list_fn)(wimp_w whan,
                                   int x0,
                                   int y1,
                                   wimp_w wnext);

typedef int (*drw_lw_preclose_list_fn)(wimp_w whan, int *closew);

typedef void (*drw_lw_close_list_fn)(wimp_w whan);

typedef void (*drw_lw_in_out_w_fn)(wimp_w whan, wimp_event_no eventno);

typedef void (*drw_lw_redraw_w_fn)(wimp_draw *r,
                                   int printing,
                                   int page);

typedef void (*drw_lw_auto_scroll_fn)(wimp_w whan,
                                      drw_ascr_data *wascr,
                                      int ascrreason);

typedef int (*drw_lw_ascr_obscured_fn)(wimp_w whan, wimp_w overwindow);

typedef int (*drw_lw_ascr_ptr_changed_fn)(int setptrxy,
                                          int setptrx,
                                          int setptry);

typedef void (*drw_lw_ascr_adjust_dist_fn)(wimp_w whan,
                                           wimp_w overwindow,
                                           drw_ascr_data *wascr,
                                           os_coord *mousepos,
                                           int *directionx,
                                           int *directiony,
                                           int *distancex,
                                           int *distancey);

typedef void (*drw_lw_null_fn)(void);

typedef int (*drw_lw_msl_fn)(wimp_menu *menu,
                             wimp_i item,
                             char *font,
                             wimp_pointer *wptr,
                             int is_adjust_click);

typedef void (*drw_lw_escape_fn)(wimp_w whan);


typedef struct drw_e01fn_str            drw_e01fn_str;


struct drw_e01fn_str {

drw_lw_list_mouse_click_fn        mouseclick;
drw_lw_list_key_press_fn          keypress;
drw_lw_open_list_fn               openlfn;
drw_lw_close_list_fn              closelfn;
drw_lw_in_out_w_fn                inoutfn;
drw_lw_redraw_w_fn                redrawlfn;
drw_lw_auto_scroll_fn             ascrlfn;
drw_lw_ascr_obscured_fn           ascrlobfn;
drw_lw_ascr_ptr_changed_fn        ascrlptrfn;
drw_lw_ascr_adjust_dist_fn        ascrldistfn;
drw_lw_null_fn                    nullfn;
drw_lw_get_pane_fn                getlwpane;
drw_lw_get_list_menu_fn           getlwmenu;
drw_lw_msl_fn                     mslfn;
drw_lw_escape_fn                  escape;
drw_lw_preclose_list_fn           preclosefn;

};

#if defined NAMESPACE_DRWIMPC
  }
#endif

#endif

