/* mouse Data for auto called Auto called functions. */

#ifndef drwAutofnh_H
 #define drwAutofnh_H

#if defined NAMESPACE_DRWIMPC
  namespace DrWimpC {
#endif

#if defined NAMESPACE_OSLIB
  using namespace OSLib;
#endif


#define drw_autofn_check_icd_tname      ((drw_autofn_check_icd_flags) 0x1u)
#define drw_autofn_check_icd_wname      ((drw_autofn_check_icd_flags) 0x2u)
#define drw_autofn_check_icd_iname      ((drw_autofn_check_icd_flags) 0x4u)


#define drw_autofn_move_object_acn      1
#define drw_autofn_remove_object_acn    2
#define drw_autofn_restore_object_acn   3


#define drw_mouseclick_fn_active        ((drw_autofn_mask_flags) 0x1u)
#define drw_show_fn_active              ((drw_autofn_mask_flags) 0x2u)
#define drw_keypr_fn_active             ((drw_autofn_mask_flags) 0x4u)
#define drw_input_fn_active             ((drw_autofn_mask_flags) 0x8u)


#define drw_num_afnflag_wds_in_seg      4
#define drw_num_afnflags_in_wd          32

#define drw_start_null_events           1
#define drw_autofn_stop_nulls           2


/*typedef struct drw_autofn_fn_data          drw_autofn_fn_data;*/

typedef struct drw_autofn_str              drw_autofn_str;
typedef struct drw_autofn_hdr              drw_autofn_hdr;

typedef bits drw_autofn_check_icd_flags;

typedef bits drw_autofn_mask_flags;


typedef drw_autofn_fn_data *(*drw_new_autofn_fn)(wimp_w whan,
                                                 wimp_i icon,
                                                 char *ext_tplte_path_name,
                                                 char *tfilename,
                                                 char *windowname,
                                                 char *iconname,
                                                 char *objid,
                                                 drw_fn_ptr autofn,
                                                 drw_autofn_numbers fntype,
                                                 drw_autofn_icon_defn_data *icd,
                                                 int check_for_existing_fn,
                                                 void *userdata);

typedef void *(*drw_link_autofn_to_w_fn)(wimp_w whandle,
                                         char *ext_tplte_path_name,
                                         char *tfilename,
                                         char *windowname,
                                         int manual_fn_assign,
                                         int userwincode,
                                         void *userdata);

typedef int (*drw_find_autofn_whan_fn)(wimp_w whan);
typedef int (*drw_check_for_autofns_fn)(void);

typedef drw_autofn_whan_data *(*drw_get_autofn_whan_fn)(wimp_w whan);

typedef drw_autofn_wname_data *(*drw_autofn_get_tw_fn)(
                                       char *ext_tplte_path_name,
                                       char *tfilename,
                                       char *windowname);

typedef void (*drw_set_window_data_fn)(char *objectname,
                                       wimp_w whan,
                                       int occno,
                                       int setwdata,
                                       void *objectdata);
typedef void (*drw_dereg_auto_fn_fn)(wimp_w whan,
                                     wimp_i icon,
                                     int deltype);
typedef void (*drw_dereg_auto_w_fn)(wimp_w whan);
typedef void (*drw_set_autofn_mask_fn)(wimp_w whan,
                                       wimp_i icon,
                                       char *ext_tplte_path_name,
                                       char *tfilename,
                                       char *windowname,
                                       char *iconname,
                                       int occno,
                                       drw_autofn_mask_flags fnmask);

typedef int (*drw_has_fndata_fn)(wimp_w whan);

typedef int (*drw_new_object_fn)(wimp_w whan,
                                 char *tpltepathname,
                                 char *tfilename,
                                 char *windowname,
                                 int useterrname,
                                 int useterrno,
                                 int userwincode,
                                 void *userdata,
                                 char *objtpltepname,
                                 char *objtemplatename,
                                 char *objwindowname,
                                 char *objectname,
                                 int *occno,
                                 int keep_icon,
                                 int x,
                                 int y);

typedef void (*drw_move_object_to_fn)(wimp_w whan,
                                      int objectid,
                                      int x,
                                      int y,
                                      os_box *boundedby);

typedef void (*drw_move_object_by_fn)(wimp_w whan,
                                      int objectid,
                                      int x,
                                      int y,
                                      os_box *boundedby);

typedef void (*drw_hide_object_fn)(wimp_w whan,
                                   int objectid,
                                   int state);

typedef void (*drw_remove_object_fn)(wimp_w whan,
                                     int objectid);

typedef void (*drw_restore_object_fn)(wimp_w whan,
                                      int objectid);

typedef int (*drw_get_objectid_fn)(wimp_w whan,
                                   wimp_i icon,
                                   char *objectname,
                                   int occno);

typedef int (*drw_get_object_size_fn)(wimp_w whan,
                                      int objectid,
                                      int size);

typedef int (*drw_get_object_bounds_fn)(wimp_w whan,
                                        int objectid,
                                        os_box *obox);

typedef int (*drw_autofn_objectfn)(int objectid,
                                   wimp_event_no eventno,
                                   bits msgno,
                                   int actionno,
                                   void *actiondata);

typedef void *(*drw_get_set_user_data_fn)(drw_wimp_data *wpwd,
                                          wimp_w whan,
                                          wimp_i icon,
                                          char *name,
                                          int name_is_ref,
                                          int name_is_object,
                                          int occno,
                                          int getdata,
                                          void *userdata);

typedef void *(*drw_get_object_data_fn)(drw_wimp_data *wpwd,
                                        int objectid);

typedef void (*drw_est_win_links_fn)(drw_gen_menu_str *gms);

typedef void (*drw_set_menu_ptr_fn)(char *inamebuff,
                                    char *appname,
                                    drw_menu_defn_data *amdd);

typedef drw_autofn_smenu_wlink *(*drw_autofn_smenu_link_fn)(
                                         drw_sub_menu_wlink_data *smwd,
                                         drw_menu_defn_data *amdd,
                                         drw_autofn_wname_data *wdata,
                                         drw_autofn_fn_data *fndata);

typedef void (*drw_autofn_msel_fn)(wimp_menu *mhan,
                                   int item,
                                   wimp_mouse_state buttontype);

typedef int (*drw_autofn_get_num_wids_fn)(wimp_w whan,
                                          char *objectname);

typedef os_error *(*drw_load_shortcuts_fn)(char *appname,
                                           drw_ll_hdr *menuist,
                                           drw_ll_hdr *unusedmenulist,
                                           drw_modify_scut_user_fn userfn,
                                           void *userfndata,
                                           int assign_handler_fn,
                                           int *ibhasscuts);

typedef int (*drw_do_shortcut_fn)(wimp_w whan,
                                  wimp_i icon,
                                  wimp_key_no key,
                                  drw_autofn_whan_data *whdata,
                                  char *scut_mods_and_str,
                                  drw_fn_ptr callkeyprfn);

typedef int (*drw_autofn_any_scuts_fn)(char *appname);

typedef int (*drw_autofn_pre_wcr_fn)(wimp_window *window,
                                     int userwincode,
                                     void *userdata);

typedef void (*drw_pre_wcr_ufn)(wimp_window *window,
                                int userwincode,
                                void *userdata);

typedef void (*drw_init_new_object_ufn)(int objectid,
                                        wimp_w whan,
                                        wimp_i icon,
                                        int userwincode,
                                        void *userdata);

typedef drw_autofn_wname_data *(*drw_autofn_find_tw_fn)(char *appname,
                                                  char *templatename,
                                                  char *windowname,
                                                  wimp_w whan,
                                                  int ignore_whdata,
                                   drw_autofn_cr_flags cr_if_nf);

typedef drw_shortcut_key_data *(*drw_add_scut_fn)(drw_ll_hdr *scutlist,
                                                  char *appname,
                                                  wimp_key_no key,
                                                  char *scutname,
                                                  int *new_scut);

typedef void (*drw_rmv_scut_fn)(drw_ll_hdr *scutlist,
                                char *scutname);

typedef void (*drw_reset_escwdlist_fn)(drw_ll_hdr *escwdlist);

typedef drw_escwd_data *(*drw_add_escwd_fn)(drw_ll_hdr *escwdlist,
                                 drw_autofn_wname_data *owdata);

typedef void (*drw_rmv_escwd_fn)(drw_ll_hdr *escwdlist,
                                 drw_autofn_wname_data *owdata);

typedef void (*drw_link_scut_to_menus_fn)(char *appname,
                                          drwGP menulist,
                                          int resetlinks);

typedef drw_shortcut_key_data *(*drw_autofn_fscut_byname_fn)(
                                      drw_autofn_wname_data *wdata,
                                                       char *scutname);

typedef drw_shortcut_key_data *(*drw_autofn_fscut_iandn_fn)(
                                     drw_autofn_wname_data *wdata,
                                                      char *scutname,
                                                       int *itemno);

typedef drw_shortcut_key_data *(*drw_autofn_fscut_bykey_fn)(
                                      drw_autofn_wname_data *wdata,
                                                wimp_key_no wkeyno);

typedef void (*drw_puopumscutlinks_fn)(char *appname, drwGP menulist);

typedef void (*drw_autofn_load_hfns_fn)(void);

typedef struct drw_autofn_pre_wcr_data      drw_autofn_pre_wcr_data;


struct drw_autofn_pre_wcr_data {

wimp_window *window;
void *userdata;

};


struct drw_autofn_str {

drw_new_autofn_fn          newfndata;
drw_link_autofn_to_w_fn    linkwfn;
drw_find_autofn_whan_fn    findwhan;
drw_check_for_autofns_fn   anyfns;
drw_get_autofn_whan_fn     getwhdata;
drw_autofn_get_tw_fn       gettwdata;
drw_set_window_data_fn     setdata;
drw_dereg_auto_fn_fn       deregautofn;
drw_set_autofn_mask_fn     setfnmask;
drw_autofn_objectfn        objectfn;
drw_dereg_auto_w_fn        deregw;
drw_has_fndata_fn          hasfndata;
drw_new_object_fn          newobject;
drw_move_object_to_fn      moveobjectto;
drw_move_object_by_fn      moveobjectby;
drw_hide_object_fn         hideobject;
drw_remove_object_fn       removeobject;
drw_restore_object_fn      restoreobject;
drw_get_objectid_fn        getobjectid;
drw_get_object_size_fn     getobjectsize;
drw_get_object_bounds_fn   getobjectbounds;
drw_get_object_data_fn     getobjectdata;
drw_get_set_user_data_fn   getuserdata;
drw_est_win_links_fn       winlinks;
drw_set_menu_ptr_fn        setmenuptr;
drw_autofn_smenu_link_fn   smenulink;
drw_autofn_msel_fn         msel;
drw_autofn_find_tw_fn      findtw;
drw_autofn_get_num_wids_fn getmaxoccno;
drw_load_shortcuts_fn      loadshortcuts;
drw_do_shortcut_fn         doshortcut;
drw_reset_escwdlist_fn     resetescwdlistfn;
drw_add_scut_fn            addscutfn;
drw_rmv_scut_fn            rmvscutfn;
drw_add_escwd_fn           addescwdfn;
drw_rmv_escwd_fn           rmvescwdfn;
drw_link_scut_to_menus_fn  linkscutstomenus;
drw_autofn_any_scuts_fn    anyscutsfn;
drw_autofn_fscut_byname_fn fscutbyname;
drw_autofn_fscut_bykey_fn  fscutbykey;
drw_puopumscutlinks_fn     estpopupmscutlinks;
drw_autofn_load_hfns_fn    loadhfns;
drw_autofn_fscut_iandn_fn  fscutiandn;

};

#if defined NAMESPACE_DRWIMPC
  }
#endif

#include "DRW/drwautofn.h"
#include "DRW/drwFn00.h"

#endif


/* End of File drwautofnh.h */

