#ifndef drwFn08_H
 #define  drwFn08_H

#include "DRW/drwwh.h"
#include "DRW/drwWwinit.h"
#include "DRW/drwllwalk.h"

#ifndef drwFnDsv_H
 #include "DRW/drwFnDsvh.h"
#endif

#if defined NAMESPACE_DRWIMPC
  namespace DrWimpC {
#endif

#if defined NAMESPACE_OSLIB
  using namespace OSLib;
#endif

/*typedef int (*drw_autofn_accept_sv_fn)(wimp_t desttask,
                                       wimp_w destwhan,
                                       wimp_i destic,
                                       int destx,
                                       int desty,
                                       int sizein,
                                       bits ftype,
                                       char *filename,
                                       void *userdata);

typedef int (*drw_accept_sv_ufn)(wimp_t desttask,
                                 wimp_w destwhan,
                                 wimp_i destic,
                                 int destx,
                                 int desty,
                                 int sizein,
                                 bits ftype,
                                 char *filename);*/

typedef int (*drw_autofn_savedata_fn)(int myref,
                                      char *filename,
                                      char *leafname,
                                      wimp_w window,
                                      int *fndone,
                                      void *userdata);

typedef int (*drw_savedata_ufn)(int myref,
                                char *filename,
                                char *leafname,
                                wimp_w window);


typedef int (*drw_autofn_datald_fn)(bits msgtype,
                                    char *path,
                                    char *leafname,
                                    wimp_w whandle,
                                    wimp_i iconno,
                                    char *ftype,
                                    bits filetype,
                                    int workx,
                                    int worky,
                                    int dragged_seln,
                                    wimp_caret *ghostcaret,
                                    int *fndone,
                                    void *userdata);

typedef int (*drw_datald_ufn)(bits msgtype,
                              char *path,
                              char *leafname,
                              wimp_w whandle,
                              wimp_i iconno,
                              char *ftype,
                              bits filetype,
                              int workx,
                              int worky,
                              int dragged_seln,
                              wimp_caret *ghostcaret);

typedef int (*drw_autofn_postdld_fn)(int action,
                                     bits msgtype,
                                     char *path,
                                     char *leafname,
                                     wimp_w whandle,
                                     wimp_i iconno,
                                     char *ftype,
                                     bits filetype,
                                     int workx,
                                     int worky,
                                     void *userdata);

typedef void (*drw_datapostld_ufn)(int action,
                                   bits msgtype,
                                   char *path,
                                   char *leafname,
                                   wimp_w whandle,
                                   wimp_i iconno,
                                   char *ftype,
                                   bits filetype,
                                   int workx,
                                   int worky);

typedef int (*drw_autofn_dataldack_fn)(wimp_t desttask,
                                       int inmyref,
                                       int inyourref,
                                       wimp_w destwhan,
                                       wimp_i destic,
                                       int destx,
                                       int desty,
                                       int est_size,
                                       bits filetype,
                                       char *filename,
                                       void *userdata);

typedef int (*drw_dataldack_ufn)(wimp_t desttask,
                                 int inmyref,
                                 int inyourref,
                                 wimp_w destwhan,
                                 wimp_i destic,
                                 int destx,
                                 int desty,
                                 int est_size,
                                 bits filetype,
                                 char *filename);

typedef char *(*drw_autofn_svfiletype_fn)(wimp_w window,
                                          char *ftype,
                                          void *userdata);

typedef char *(*drw_svfiletype_ufn)(wimp_w window,
                                    char *ftype);

typedef int (*drw_autofn_saveicon_fn)(wimp_w window,
                                      wimp_i *drag,
                                      wimp_i *write,
                                      wimp_i *ok,
                                      int *fndone,
                                      void *userdata);

typedef int (*drw_saveicon_ufn)(wimp_w window,
                                wimp_i *drag,
                                wimp_i *write,
                                wimp_i *ok);


typedef void (*drw_autofn_datasv_my_ref_fn)(int my_ref,
                                            char *filename,
                                            void *userdata);

typedef void (*drw_datasave_my_ref_ufn)(int my_ref, char *filename);

typedef int (*drw_autofn_qs_accept_fname_fn)(wimp_w w,
                                             void *userdata);

typedef int (*drw_qs_accept_filename_ufn)(wimp_w w);

/*typedef int (*drw_unsaved_data_ufn)(void);

typedef int (*drw_u_unsaved_data)(void *userdata);*/

typedef void (*drw_autofn_task_init_fn)(drw_uw_data *uwd,
                                        void *userdata);

typedef void (*drw_task_init_ufn)(drw_uw_data *uwd);

typedef int (*drw_autofn_poll_fn)(void *userdata);

typedef int (*drw_poll_ufn)(void);

typedef int (*drw_autofn_quit_fn)(drw_quit_flags quittype,
                                  void *userdata);

typedef int (*drw_quit_ufn)(drw_quit_flags quittype);

typedef int (*drw_autofn_closedown_fn)(wimp_t taskhandle,
                                       void *userdata);

typedef int (*drw_closedown_ufn)(wimp_t taskhandle);

typedef void (*drw_autofn_rtvi_fn)(wimp_full_message_task_initialise *ftimsg,
                                   void *userdata);

typedef void (*drw_rtvi_ufn)(wimp_full_message_task_initialise *ftimsg);

typedef int (*drw_autofn_wmsg_fn)(int messagenumber,
                                  wimp_message *wmsg,
                                  wimp_event_no reasoncode,
                                  void *userdata);

typedef int (*drw_wmsg_ufn)(int messagenumber,
                            wimp_message *wmsg,
                            wimp_event_no reasoncode);

typedef int (*drw_autofn_pwnz_fn)(byte *addr,
                                  int word,
                                  void *userdata);

typedef int (*drw_pwnz_ufn)(byte *addr,
                            int word);

typedef void (*drw_closedown_autofn)(void *userdata);

typedef int (*drw_autofn_getappname_fn)(char *appnamebuff,
                                        int buffsize,
                                        void *uuserdata);

typedef void (*drw_getappname_ufn)(char *appnamebuff,
                                   int buffsize);

typedef int (*drw_autofn_getapppurpose_fn)(char *apppurposebuff,
                                          int buffsize,
                                          void *uuserdata);

typedef void (*drw_getapppurpose_ufn)(char *apppurposebuff,
                                     int buffsize);

typedef int (*drw_autofn_getappauthor_fn)(char *appauthorbuff,
                                          int buffsize,
                                          void *uuserdata);

typedef void (*drw_getappauthor_ufn)(char *appauthorbuff,
                                     int buffsize);

typedef int (*drw_autofn_getappversion_fn)(char *appversionbuff,
                                           int buffsize,
                                           void *uuserdata);

typedef void (*drw_getappversion_ufn)(char *appversionbuff,
                                      int buffsize);

typedef struct drw_autofn_msg_tinit_data   drw_autofn_msg_tinit_data;
typedef struct drw_autofn_wmsg_data        drw_autofn_wmsg_data;
typedef struct drw_autofn_quit_data        drw_autofn_quit_data;
typedef struct drw_autofn_closedown_data   drw_autofn_closedown_data;

struct drw_autofn_msg_tinit_data {

wimp_full_message_task_initialise *ftimsg;

};


struct drw_autofn_quit_data {

drw_quit_flags quittype;
int result;

};


struct drw_autofn_closedown_data {

wimp_t taskhandle;

};


struct drw_autofn_wmsg_data {

int messagenumber;
wimp_message *wmsg;
wimp_event_no reasoncode;
int result;

};

#if defined NAMESPACE_DRWIMPC
  }
#endif

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

#include "DRW/drwFn08.h"

#endif

