/* drwWwinit.h */


#ifdef __cplusplus 
extern "C" {
#endif

extern char *drw_set_file_err_data(char *filename,
                                   drw_error_fname_locations efnamelocn,
                                   size_t *flen,
                                   char *elp);
extern int drw_append_str(char *buffer,
                          char *str,
                          int bufferlen,
                          int numused);
extern drw_res_obj_search_flags drw_make_res_locn_path(char *buffer,
                                   int bufferlen,
                                   char *workbuff,
                                   drw_res_obj_search_flags rsflags,
                                   char *appdirname,
                                   char *appresdir,
                                   char *appresdirprefix,
                                   int tnoin);
extern int drw_find_app_res_obj(char *buffer,
                                int bufferlen,
                                char *workbuff,
                                char *objname,
                                fileswitch_object_type objtype,
                                drw_res_obj_search_flags rsflags,
                                char *appdirname,
                                char *appresdir,
                                char *appresdirprefix,
                                bits ftype,
                                int tno,
                                drw_res_obj_search_flags *rsflagsout);
extern int drw_find_app_res(char *respath,
                            char *appname,
                            fileswitch_object_type objtype,
                            bits filetype,
                            drw_res_obj_search_flags *rsflags);
extern drw_res_obj_search_flags drw_find_res(drw_uw_data *uwd,
                                             char *respath,
                                             char *appdirname,
                                             char *dirname,
                                             char *leafname,
                                             char *resdir,
                                             territory_t tno,
                                             int *fsize,
                                             int cr_subdir_if_nf,
                                             bits filetype,
                                 drw_res_obj_search_flags rsflagsin);
extern void drw_wimp_get_pointer_info(wimp_pointer *wptr);
extern os_error *drw_wimp_get_pointer_infox(wimp_pointer *wptr);
extern int drw_wint_extracticonvalnname(char *valn,
                                        char *extractto,
                                        int extractolen,
                                        char namech,
                                        char *setname);
extern int drw_wint_extractspritename(char *valn,
                                      char *extractto,
                                      int extracttolen);
extern void drw_set_icon_name(wimp_w whan,
                              wimp_i icon,
                              char namech,
                              char *setname);
extern int drw_wint_extracticonname(char *valn,
                                    char *extractto,
                                    int extracttolen);
extern int drw_wint_iconname_from_number(wimp_w whan,
                                         wimp_i iconno,
                                         char *extractto,
                                         int extracttolen);
extern int drw_wint_iconname_from_icon(wimp_icon *icon,
                                       char *extractto,
                                       int extracttolen);
extern int drw_wint_iconname_from_valnstr(char *valn,
                                          char *extractto,
                                          int extracttolen);
extern int drw_wint_icon_info_from_valnstr(char *valnstr,
                                           char *extractto,
                                           int extracttolen,
                                           char **iconname,
                                           drw_autofn_icon_defn_data *icd);
extern void drw_wint_icon_info_from_namestr(char *namestr,
                                            char *extractto,
                                            int extracttolen,
                                            char **iconname,
                                            drw_autofn_icon_defn_data *icd);
extern int drw_wint_get_icon_info(char *extracttobuff,
                                  char **iconname,
                                  drw_autofn_icon_defn_data *icd);
extern int drw_wint_icon_info_from_icon(wimp_icon *icon,
                                        char *extractto,
                                        int extracttolen,
                                        char **iconname,
                                        drw_autofn_icon_defn_data *icd);
extern int drw_wint_iconinfo_from_number(wimp_w whan,
                                         wimp_i iconno,
                                         char *extractto,
                                         int extracttolen,
                                         char **iconname,
                                         drw_autofn_icon_defn_data *icd);
extern void *drw_get_window_user_data(wimp_w whan);
extern void *drw_get_icon_user_data(wimp_w whan,
                                    wimp_i icon);
extern void drw_set_window_user_data(wimp_w whan,
                                     void *userdata);
extern void drw_set_icon_user_data(wimp_w whan,
                                   wimp_i icon,
                                   void *userdata);
extern void *drw_get_fn_local_data(wimp_w whan,
                                   wimp_i icon,
                                   drw_autofn_numbers fntype,
                                   drw_fn_ptr fn,
                                   int objectid,
                                   void *curruserdata,
                                   int user_data_is_key,
                                   int set_fn_local_data);
extern void *drw_set_fn_local_data(wimp_w whan,
                                   wimp_i icon,
                                   drw_autofn_numbers fntype,
                                   drw_fn_ptr fn,
                                   int objectid,
                                   void *curruserdata,
                                   int user_data_is_key,
                                   int set_fn_local_data,
                                   void *newuserdata);
extern int drw_toggle_fn_active(wimp_w whan,
                                   wimp_i icon,
                                   drw_autofn_numbers fntype,
                                   drw_fn_ptr fn,
                                   int objectid,
                                   void *userdata,
                                   int user_data_is_key,
                                   int fn_is_active);
extern bits drw_wimp_check_exists(char *objname,
                                  fileswitch_object_type objtype,
                                  bits filetype);
extern char *drw_wimp_testobjectpresent(char *objname,
                                        int warning);
extern os_error *drw_wimp_start_task(char *taskpath,
                                     wimp_t *t);
extern void drw_wimp_opendirectory(char *dir,
                                   int def,
                                   int topx,
                                   int topy,
                                   int width,
                                   int height,
                                   int iconsize,
                                   int sortby,
                                   int warning);
extern void drw_wimp_closedirectory(char *dir);
extern int drw_wimp_copyobject(char *sourcepath,
                               char *destinationpath,
                               int deletesource,
                               int newer,
                               int restamp,
                               int force,
                               int warning);
extern int drw_wimp_deleteobject(char *path,
                                 int force,
                                 int warning);
extern int drw_wimp_deleteobjects(char *path,
                                  int force,
                                  int warning);
extern int drw_wimp_doubleclickobject(char *path,
                                      int warning);
extern os_error *drw_do_comm(char *cmd);
extern os_error *drw_wimp_setfiletypenumber(char *file,
                                            bits ftype,
                                            int warning);
extern os_error *drw_wimp_setfiletypehexstring(char *file,
                                               char *ftype,
                                               int warning);
extern int drw_wimp_renameobject(char *existingpath,
                                 char *newpath,
                                 int warning);
extern bits drw_wimp_getobjecttypenumber(char *pathname,
                                         int warning);
extern char *drw_wimp_getobjecttypehexstring(char *pathname,
                                             int warning);
extern void drw_init_extedit_ram_fns(void);
extern void drw_init_extedit_fns(void);
extern void drw_set_user_method(int method, int methodtype);
extern void drw_init_dsvi_fns(void);
extern void drw_init_ole_fns(void);
extern void drw_init_ram_fns(void);
extern void drw_init_Ibar_fns(void);
extern void drw_init_auto_fns(void);
extern void drw_init_e01_fns(void);
extern void drw_init_openw_fns(void);
extern void drw_init_menu_fns(void);
extern void drw_init_msg_fns(void);
extern void drw_init_seln_fns(void);
extern void drw_init_help_fns(void);
extern void drw_init_drag_fns(void);
extern void drw_init_slider_fns(void);
extern void drw_init_icon_drag_fns(void);
extern void drw_init_dcs_fns(void);
extern void drw_init_ascr_fns(void);
extern void drw_init_scrap_fns(void);
extern void drw_init_clip_ram_fns(void);
extern void drw_init_clip_fns(void);
extern void drw_init_win_icons(wimp_w window);
extern void drw_discard_clipbd(void);
extern void drw_set_force_nulls(int numnulls,
                                int force);
extern void drw_unset_force_nulls(void);
extern void drw_init_wkspace(wkspace *wkarea);
extern void drw_wimp_set_imem_flags(int allocstr,
                                    int allocvalnstr,
                                    int allocsprite);
extern void *drw_wimp_alloc_icon_wkspace(void *currptr,
                                         size_t spacereqd);
extern void drw_init_tbuff_data(drw_tbuff_data *tbuff);
extern char *drw_alloc_tbuff(int buffsize,
                             int tbuffno);
extern int drw_wimp_scandirectoryobjects(char *dirname,
                                         int objectnumber,
                                         int scantype);
extern int drw_wimp_countdirectoryobjects(char *dirname);
extern char *drw_wimp_getdirectoryobjectname(char *dirname,
                                             int objectnumber);
extern char *drw_wimp_getdirectoryobjecttype(char *dirname,
                                             int objectnumber);
extern char *drw_wimp_getdirectorypath(char *dirname);
extern os_error *drw_wimp_createdirectory(char *dirname,
                                          int warning);
extern void drw_wint_checkforload(void);
extern void drw_set_report_lib_errors(int reporterrs);
extern void drw_report_lib_msg(os_error *oe,
                               int from,
                               int msginst);
extern os_error *drw_do_fprintf(FILE *fd,
                                char *fmt,
                                char *elp,
                                char *fname,
                                ...);
extern os_error *drw_fread(void *readstr,
                             size_t readsize,
                             size_t numtoread,
                             FILE *fd,
                             char *elp,
                             char *fname);
extern os_error *drw_fwrite(void *writestr,
                            size_t writesize,
                            size_t numtowrite,
                            FILE *fd,
                            char *elp,
                            char *fname);
extern FILE *drw_fopen(char *file_name,
                       char *openmode,
                       drw_error_fname_locations efnamelocn,
                       size_t *flenout,
                       char *elp,
                       char **fnameout,
                       os_error **rtnoe);
extern os_error *drw_fclose(FILE *fd,
                            os_error *oe,
                            char *elp,
                            char *fname);
extern os_error *drw_do_fputs(char *str,
                              FILE *fd,
                              char *elp,
                              char *fname);
extern void drw_wimp_error(char *title,
                           char *error,
                           int button,
                           int from,
                           char *sprname,
                           osspriteop_area *sprarea,
                           char *altbutton,
                           wimp_error_box_flags type,
                           wimp_error_box_selection *click);
extern wimp_error_box_selection drw_wimp_errorchoice(char *title,
                                                     char *error,
                                                     int from,
                                                     wimp_error_box_flags type,
                                                     char *sprname,
                                                     osspriteop_area *sprarea,
                                                     int cu,
                                                     int cancel,
                                                     char *extrabuttons);
extern int drw_get_filetype_hex_str(bits ftype, char *to);
extern void drw_get_filetype_str(bits ftype);
extern void drw_init_appmsgs_str(void);
extern void drw_init_uwdata(drw_uw_data *uwd);
extern int drw_get_dc_defaults(char *pathname,
                               char *leafdirname,
                               drw_uw_data *uwd);
extern void drw_write_dc_defaults(char *pathname,
                                  char *leafdirname,
                                  drw_uw_data *uwd);
extern int drw_get_cc_defaults(char *pathname,
                               char *leafdirname,
                               drw_uw_data *uwd);
extern void drw_write_cc_defaults(char *pathname,
                                  char *leafdirname,
                                  drw_uw_data *uwd);
extern int drw_match_iconname(wimp_w whan,
                              char *iconname,
                              wimp_i iconno);
extern int drw_test_iconname(wimp_icon *icon,
                             char *iconname,
                             wimp_i iconno);
extern wimp_i drw_get_iconno(wimp_w whan,
                             char *iconname,
                             int objectid,
                             int occnum);
extern int drw_test_iconno(wimp_w whan,
                           wimp_i iconno,
                           char *iconname,
                           int objectid,
                           int occnum,
                           wimp_i *iconno_out);
extern int drw_active_indirected_valn_test(wimp_icon *icon,
                                           int check_for_sprite,
                                           int check_deleted);
extern void drw_init_aod(drw_active_object_data *aod);
extern void drw_open_debug_file(char *filename,
                                char *openmode);
extern void drw_write_to_debug_file(char *fmt, ...);
extern void drw_close_debug_file(void);
extern int drw_wimp_init(int argc,
                         char *argv[],
                         void *localconv,
                         drw_ulib_init_fn ulibinitfn,
                         drw_utpltes_register_fn utpltesregfn,
                         drw_usetappname_fn usetappname,
                         drw_setuwdata_fn usetuwdatafn,
                         char *open_lib_debug_file,
                         wimp_t *taskhandle);
extern void drw_init_wd(drw_wimp_data *wd,
                        drw_uw_data *uwd);
extern os_error *drw_wint_get_winfo(wimp_w whan,
                                    wimp_window_info *winfo,
                                    int headeronly);
extern int drw_compare_winfo_ptr(void *listval, void *findval);
extern drw_temp_wimp_block *drw_find_temp_wimpblock(
                            wimp_window_info *forwinfo);
extern void drw_init_twb(void *dataptr);
extern void drw_set_twb_in_use(drw_temp_wimp_block *twb,
                               int setval);
extern void drw_set_twb_winfo_in_use(wimp_window_info *winfo,
                                     int setval);
extern void drw_set_winfo_twb_in_use(wimp_window_info *forwinfo,
                                     int setval);
extern drw_temp_wimp_block *drw_resize_temp_wimp_block(
                                      wimp_window_info *forwinfo,
                                                size_t newsize);
extern wimp_window_info *drw_adjust_tempwimpblock(wimp_w whan,
                                                  int *wblocksize,
                                                  int *numicons,
                                                  int rereadw,
                                                  wimp_window_info *forwinfo);
extern void drw_recv_task_initialise_msg(wimp_message *wmsg);
extern void drw_init_msg_str(msghandlestr *mhstr);
extern void drw_catch_msg_taskinitialise(wimp_message *wmsg,
                                         bits msgactioncode,
                                         wimp_event_no reason,
                                         void *actiondata);
extern void drw_wimp_put_info_box_fields(void);
extern void drw_init_appn_str(void *dataptr);
extern int drw_cmp_appn_srch(void *listval, void *findval);
extern void drw_reset_app_data(void *userfndata, void *userval);
extern void drw_reset_appn_list(drw_ll_hdr *appnlist);
extern drw_application_data *drw_get_application_data(drw_ll_hdr *appnlist,
                                                      char *appname,
                                                      int appid,
                                                      int cr_if_nf,
                                                      int *appn_created);
extern int drw_any_shortcuts(char *appname);
extern void drw_boot_ext_form_apps(void);
extern os_error *drw_load_shortcuts_file(char *appname,
                                         drw_ll_hdr *menulist,
                                         drw_ll_hdr *unusedmenulist,
                                         drw_modify_scut_user_fn userfn,
                                         void *userfndata,
                                         int assign_handler_fn,
                                         int *hasscuts);
extern int drw_call_u_lib_init(drw_ulib_init_fn ulibinitfn);
extern void drw_call_u_templates_register(drw_utpltes_register_fn utpltesregfn);
extern void drw_call_u_set_app_name(drw_usetappname_fn usetappnamefn,
                                    char *namebuff);
extern os_error *drw_wimp_add_messages(wimp_message_list const *msgs);
extern int drw_wimp_initialise(int argc,
                               char *argv[],
                               drw_ulib_init_fn ulibinitfn,
                               drw_utpltes_register_fn utpltesregfn,
                               drw_usetappname_fn usetappname);
extern void drw_wimp_close_template(void);
extern void drw_wint_releaseEntity(byte *msgblock,
                                   int releaseclipboard);
extern int drw_poll(void);
extern void drw_wimp_quit(drw_quit_flags type);
extern void drw_wint_prequitissued(wimp_message *wmsg);
extern void drw_wimp_closedown(wimp_t taskhandle);
extern void drw_closedown(void);
extern int drw_wimp_roundfloat(double dval);
extern void drw_wimp_hourglasson(void);
extern void drw_wimp_hourglassoff(void);
extern void drw_wimp_hourglass_smash(void);
extern void drw_wimp_hourglass_start(int delay);
extern void drw_wimp_hourglasspercentage(int percent);
extern void drw_wimp_hourglass_colours(os_colour sand,
                                       os_colour glass);
extern os_error *drw_get_window_bounds(wimp_w whan,
                                       wimp_outline *outline,
                                       os_box *box,
                                       int outlinebound);
extern byte *drw_wimp_create_os_heap(int maxsize,
                                     int typein,
                                     os_area_flags flags,
                                     char *name,
                                     int storesize);
extern byte *drw_wimp_create_heap(int maxsize,
                                  int typein,
                                  os_area_flags flags,
                                  char *name,
                                  int storesize);
extern byte *drw_wimp_createdynamic(int size,
                                    int maxsize,
                                    int typein,
                                    os_area_flags flags,
                                    char *name,
                                    int storesize);
extern byte *drw_wimp_changedynamic(byte *darea, int absolute, int size);
extern void drw_wimp_deletedynamic(byte *darea);
extern void drw_wint_cleardynamicareas(void);
extern void drw_init_drw_dastr(drw_da_str *dastr);
extern void drw_wint_loadwimp(size_t numbytes);
extern void drw_wint_savewimp(size_t numbytes);
extern void drw_wint_loadwimp2(size_t numbytes);
extern void drw_wint_savewimp2(size_t numbytes);
extern os_error *drw_wimp_losefont(font_f fhan);
extern int drw_wimp_flags(bits *flags,
                          bits flagno,
                          int toggle);
extern int drw_wimp_copyfile(char *sourcepath,
                             char *destinationpath,
                             int force,
                             int deletesource);
extern os_error *drw_wimp_deletefile(char *filenames,
                                     int force);
extern os_error *drw_send_message(wimp_event_no evnt,
                                  wimp_message *wimpblk,
                                  wimp_t desttask);
extern os_error *drw_send_event_to_w(wimp_t desttask,
                                     wimp_w towhan,
                                     wimp_i toicon,
                                     wimp_event_no evnt,
                                     wimp_message *wimpblk,
                                     wimp_t *t);
extern void drw_wint_checksavewindow(wimp_w whan);
extern wimp_t drw_get_win_task_handle(wimp_w whan,
                                      wimp_i icon);
extern void drw_extw_to_front(wimp_w whan);
extern territory_t drw_get_current_country(void);
extern int drw_country_name_from_number(territory_t country,
                                        char *buffer,
                                        int bufflen,
                                        int *notclaimed,
                                        int *nused);
extern int drw_country_number_from_name(char *country_name,
                                        osbool *notclaimed,
                                        territory_t *country_out);
extern int drw_count_country_names(void);
extern int drw_count_countries(int *totaltnamesize,
                               char *buffer,
                               int bufflen,
                               int getterritoynames);
extern territory_t drw_get_current_territory(void);
extern int drw_territory_name_from_number(territory_t territory,
                                          char *buffer,
                                          int bufflen);
extern int drw_territory_number_from_name(territory_t territory_of_name,
                                          char *terrname,
                                          territory_t *territory_out);
extern int drw_territory_exists(territory_t territory);
extern int drw_count_territories(int *totaltnamesize,
                                 char *buffer,
                                 int bufflen,
                                 int getterritoynames);
extern int drw_count_territory_names(void);
extern void drw_catch_lose_caret(wimp_block *wb,
                                 wimp_event_no reason,
                                 void *actiondata);
extern void drw_catch_gain_caret(wimp_block *wb,
                                 wimp_event_no reason,
                                 void *actiondata);
extern void drw_lose_caret_init(void);
extern void drw_wint_zeroterminate(void *wptr, char *t);
extern void drw_show_icon(wimp_w whan,
                          wimp_i icon,
                          int objectid,
                          os_box *box,
                          int usercode);
extern void drw_show_icons(wimp_w whan,
                           int objectid,
                           os_box *box,
                           int usercode);
extern void drw_input_icon(wimp_w whan,
                           wimp_i icon,
                           int objectid);
extern void drw_input_icons(wimp_w whan,
                            int objectid);
extern int drw_is_whan_in_autofn(wimp_w whan);
extern int drw_app_has_autofns(void);
extern char *drw_wint_string(char *wptr, char *to);
extern int drw_cmp_nocase(char *s1, char *s2, int cmplen);
extern char *drw_wimp_getleafname(char *pathname);
extern char *drw_wimp_findleafname(char *pathname);
extern int drw_inc_found_obj_count(void *scaninfo,
                                   int scantype,
                                   drwGP scandata,
                                   void *userfndata,
                                   drw_scan_dir_fn2 appscandirfn1,
                                   drw_scan_dir_fn3 appscandirfn2);
extern int drw_scan_dir(char *dirname,
                        int scantype,
                        bits scan_file_type,
                        fileswitch_object_type scan_objtype,
                        int scannamebufflen,
                        int scanbuffsize,
                        drwGP scandata,
                        void *userfndata,
                        drw_scan_dir_fn1 scandirfn,
                        drw_scan_dir_fn2 appscandirfn1,
                        drw_scan_dir_fn3 appscandirfn2,
                        bits *othertypes);
extern int drw_new_object(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);
extern void drw_move_objectto(wimp_w whan,
                              int objectid,
                              int x,
                              int y,
                              os_box *boundedby);
extern void drw_move_objectby(wimp_w whan,
                              int objectid,
                              int x,
                              int y,
                              os_box *boundedby);
extern void drw_hide_object(wimp_w whan,
                            int objectid,
                            int state);
extern void drw_remove_object(wimp_w whan,
                              int objectid);
extern void drw_restore_object(wimp_w whan,
                               int objectid);
extern int drw_get_objectid(wimp_w whan,
                            wimp_i icon,
                            char *objectname,
                            int occno);
extern void *drw_get_object_data(wimp_w w,
                                 wimp_i icon,
                                 char *objectname,
                                 int objectindex);
extern int drw_get_object_size(wimp_w whan,
                               int objectid,
                               int side);
extern int drw_get_object_bounds(wimp_w whan,
                                 int objectid,
                                 os_box *obox);
extern void drw_init_smenu_wlink_data(void *dataptr);
extern void drw_cr_smenu_wlinks(drw_gen_menu_str *gms);
extern void drw_establish_win_links(drw_gen_menu_str *gms);
extern int drw_autofn_cmp_template_id(void *listval, void *findval);
extern drw_autofn_template_data *
           drw_autofn_find_template_data_id(int templateid);
extern int drw_autofn_cmp_window_id(void *listval, void *findval);
extern drw_autofn_wname_data *
           drw_autofn_find_window_data_id(drw_autofn_template_data *tdata,
                                          int windowid);
extern int drw_find_menu_col_data(void *listval, void *findval);
extern int drw_find_unused_mcd(void *listval, void *findval);
extern void drw_init_menucol_str(void *dataptr);
extern void drw_reset_mcd(void *userfndata, void *userval);
extern void drw_reset_mcol_data(drw_ll_hdr *mcollist);
extern drw_menu_col_data *drw_update_mcd(drw_ll_hdr *mcollist,
                                         drw_menu_col_data *mcdin,
                                         int rmvitem,
                                         int *clrs_changed_in);
extern wimp_colour drw_conv_menucol(char *mcol);
extern void drw_read_menucol_file(char *appname,
                                  char *appdir,
                                  drw_ll_hdr *mcollist,
                                  drw_menu_col_data *mcdout);
extern int drw_scan_wbox_number(char **buffch,
                                int *wbnum,
                                int *foundlen);
extern int drw_get_wbox_numbers(drw_wbox *wboxout,
                                char *buffstart,
                                int initboxout,
                                int *foundlen);
extern int drw_scan_wbox_num_str(char *buffstart,
                                 int bufflen,
                                 drw_wbox *wboxout,
                                 int initboxout,
                                 int initltbuffch,
                                 int initrtbuffch,
                                 int *foundlen);
extern int drw_get_num_objects_in_w(wimp_w whan,
                                    char *objectname);
extern void drw_init_opos(drw_visible_window_posn *openat);
extern drw_autofn_wname_data *drw_find_tw(char *appname,
                                          char *tfilename,
                                          char *tname,
                                          wimp_w whan,
                                          int  ignore_whdata,
                                          drw_autofn_cr_flags cr_if_nf);
extern drw_autofn_wname_data *drw_get_tw(char *appname,
                                         char *tfilename,
                                         char *tname);
extern drw_shortcut_key_data *drw_add_scut(drw_ll_hdr *scutlist,
                                           char *appname,
                                           wimp_key_no key,
                                           char *scutname,
                                           int *new_scut);
extern void drw_rmv_scut(drw_ll_hdr *scutlist,
                         char *scutname);
extern void drw_reset_escwd_list(drw_ll_hdr *escwdlist);
extern drw_escwd_data *drw_add_escwd(drw_ll_hdr *escwdlist,
                                     drw_autofn_wname_data *owdata);
extern void drw_rmv_escwd(drw_ll_hdr *escwdlist,
                          drw_autofn_wname_data *owdata);
extern drw_shortcut_key_data *drw_find_scut_by_name(
                             drw_autofn_wname_data *wdata,
                                              char *scutname);
extern drw_shortcut_key_data *drw_find_scut_iandn(
                            drw_autofn_wname_data *wdata,
                                             char *scutname,
                                             int *itemno);
extern drw_shortcut_key_data *drw_find_scut_and_itemno_by_name(
                                         drw_autofn_wname_data *wdata,
                                                          char *scutname,
                                                          int *itemno);
extern void drw_init_scut_name_str(void *dataptr);
extern drw_shortcut_key_data *drw_find_scut_by_key(
                             drw_autofn_wname_data *wdata,
                                       wimp_key_no wkeyno);
extern void drw_init_menulink_str(void *muldata);
extern void drw_load_shortcut_handler_fns(void);
void drw_init_version_str(void *dataptr);
extern void drw_report_wint_tfr_error(wimp_t fromtask,
                                      byte *frombuff,
                                      wimp_t totask,
                                      byte *tobuff,
                                      int nbytes,
                                      os_error *oe,
                                      char *repname,
                                      drw_mem_report_flags flags);
extern os_error *drw_wint_tfr_block(wimp_t fromtask,
                                    byte *frombuff,
                                    wimp_t totask,
                                    byte *tobuff,
                                    int nbytes);
extern os_error *drw_wint_drag_box(wimp_drag *drag);
extern void drw_generate_error(os_error const *error);
extern int drw_user_action_lose_caret(wimp_w whan,
                                      wimp_i icon,
                                      char *iconname,
                                      int objectid,
                                      int occno,
                                      drw_user_action_fn userfn,
                                      void *actiondata);
extern int drw_user_action_gain_caret(wimp_w whan,
                                      wimp_i icon,
                                      char *iconname,
                                      int objectid,
                                      int occno,
                                      drw_user_action_fn userfn,
                                      void *actiondata);
extern int drw_read_symlink_file(char *filename,
                                 drw_symlink_data *symlink,
                                 size_t *namelen);
extern int drw_write_symlink_file(char *filename,
                                  char *full_name,
                                  size_t *lenout);
extern int drw_read_symlink_real_file_name(char *symlinkname,
                                           char *filenamebuff,
                                           size_t buffsize,
                                           size_t *namelen);
extern int drw_round_dble_result_to_i(double val);
extern long drw_round_dble_result_to_l(double val);
extern void drw_wint_startsavedrag(wimp_w whan,
                                   wimp_i icon,
                                   wimp_w objwhan,
                                   int objectid);
extern void drw_wint_savedragstart(wimp_w whan,
                                   wimp_i icon,
                                   wimp_mouse_state buttontype,
                                   int mousex,
                                   int mousey);
extern void drw_wint_endsavedrag(void);
extern int drw_abort_drag(void);
extern int drw_catch_save_drag(wimp_block *wb,
                               wimp_event_no action,
                               void *actiondata);
extern void drw_set_save_drag_fns(void);
extern void drw_init_save_drag(void);

#ifdef __cplusplus
}
#endif

