#ifndef drwFn17_H
 #define  drwFn17_H

#include "DRW/drwwh.h"

#if defined NAMESPACE_DRWIMPC
  namespace DrWimpC {
#endif

#if defined NAMESPACE_OSLIB
  using namespace OSLib;
#endif

typedef wimp_menu *(*drw_autofn_menu_fn)(wimp_w window,
                                         wimp_i icon,
                                         wimp_menu *menu,
                                         int mousex,
                                         int mousey,
                                         void *userdata,
                                         int *use_by_default);

typedef wimp_menu *(*drw_menu_ufn)(wimp_w window,
                                   wimp_i icon,
                                   int mousex,
                                   int mousey);

typedef void (*drw_autofn_menuopen_fn)(wimp_menu *mhan,
                                       int icon,
                                       void *userdata);
typedef void (*drw_menuopen_ufn)(wimp_menu *mhan,
                                 int icon);

typedef void (*drw_autofn_overarrow_fn)(wimp_menu **nextsubmenu,
                                        int parentmenuitem,
                                        int x,
                                        int y,
                                        void *userdata);
typedef void (*drw_overarrow_ufn)(wimp_menu **nextsubmenu,
                                  int parentmenuitem,
                                  int x,
                                  int y);

typedef void (*drw_autofn_mdeleted_fn)(wimp_menu *menu,
                                       void *userdata);
typedef void (*drw_mdeleted_ufn)(wimp_menu *menu);

typedef int (*drw_autofn_count_mitems_fn)(char *dataptr,
                                          int usermenutype,
                                          void *userdata);
typedef int (*drw_count_menu_items_ufn)(char *dataptr,
                                        int usermenutype);

typedef int (*drw_autofn_sel_token_fn)(char *mtag,
                                       char *msgtoken,
                                       int usermenutype,
                                       void *userdata);
typedef int (*drw_sel_token_ufn)(char *mtag,
                                 char *msgtoken,
                                 int usermenutype);

typedef int (*drw_autofn_menu_title_fn)(wimp_menu *menuptr,
                                        drw_menu_cr_method mcrm,
                                        char *title,
                                        int titlebuffsize,
                                        int newmenu,
                                        int recreate,
                                        char *dataptr,
                                        int usermenutype,
                                        int *index,
                                        void *userdata);
typedef int (*drw_menu_title_ufn)(wimp_menu *menuptr,
                                  drw_menu_cr_method mcrm,
                                  char *title,
                                  int titlebuffsize,
                                  int newmenu,
                                  int recreate,
                                  char *dataptr,
                                  int usermenutype,
                                  int *index);

typedef int (*drw_autofn_menu_text_fn)(wimp_menu *menuptr,
                                       int mitemno,
                                       drw_menu_cr_method mcrm,
                                       int usermenutype,
                                       char *menutext,
                                       int textbuffsize,
                                       int newmenu,
                                       int recreate,
                                       char *dataptr,
                                       int *index,
                                       void *userdata);
typedef int (*drw_menu_text_ufn)(wimp_menu *menuptr,
                                 int mitemno,
                                 drw_menu_cr_method mcrm,
                                 int usermenutype,
                                 char *menutext,
                                 int textbuffsize,
                                 int newmenu,
                                 int recreate,
                                 char *dataptr,
                                 int *index);

typedef void (*drw_autofn_menuselection_fn)(wimp_menu *menu,
                                            wimp_i item,
                                            char *font,
                                            void *userdata);
typedef void (*drw_menuselection_ufn)(wimp_menu *menu,
                                      wimp_i item,
                                      char *font);


typedef struct drw_autofn_menu_data       drw_autofn_menu_data;

struct drw_autofn_menu_data {

char *dataptr;
int usermenutype;
int parentmenuitem;
int x;
int y;
drw_menu_cr_method mcrm;
char *text; /* Use for title and menu item text. */
int textbuffsize; /* Use for title and menu item text buffer size. */
int newmenu;
int recreate;
int *index;
int mitemno;
char *font;
char *mtag;
char *msgtoken;
int mousex;
int mousey;
wimp_i item;

};

#if defined NAMESPACE_DRWIMPC
  }
#endif

#ifndef drwFn00_H
 #include "DRW/drwFn00h.h"
#endif

#include "DRW/drwFn17.h"

#endif

