/* DRW Message File Function Interface. */

#ifndef drwmsgfnh_H
 #define drwmsgfnh_H

#if defined NAMESPACE_DRWIMPC
  namespace DrWimpC {
#endif

#if defined NAMESPACE_OSLIB
  using namespace OSLib;
#endif

typedef struct drw_msgfn_str             drw_msgfn_str;

typedef int (*drw_get_messagefile_size_fn)(char *filename);
typedef char *(*drw_open_messagefile_fn)(char *filename,
                                         msghandlestr *mhstr,
                                         int use_rma,
                                         int reopen);
typedef char *(*drw_wimp_open_messagefile_fn)(char *filename,
                                              char *messhandle,
                                              int use_rma,
                                              int reopen);
typedef char *(*drw_wimp_initmessages_fn)(char *filename, int use_rma);
typedef char *(*drw_wimp_reinitmessages_fn)(char *messhandle,
                                            char *newfile,
                                            int use_rma);
typedef osbool (*drw_enum_msg_tokens_fn)(messagetrans_control_block *messhandle,
                                         char *token,
                                         char *buffer,
                                         int size,
                                         int context,
                                         int *used,
                                         int *context_out);
typedef int (*drw_wimp_count_msg_tokens_fn)(char *messhandle, char *token);
typedef int (*drw_wimp_getnumberofmsgs_fn)(char *messhandle, char *token);
typedef char *(*drw_wimp_messlook0_fn)(char *messhandle,
                                       char *token,
                                       int cpy);
typedef char *(*drw_wimp_messlook1_fn)(char *messhandle,
                                       char *token,
                                       char *p1,
                                       int cpy);
typedef char *(*drw_wimp_messlook2_fn)(char *messhandle,
                                       char *token,
                                       char *p1,
                                       char *p2,
                                       int cpy);
typedef char *(*drw_wimp_messlook3_fn)(char *messhandle,
                                       char *token,
                                       char *p1,
                                       char *p2,
                                       char *p3,
                                       int cpy);
typedef char *(*drw_wimp_messlook4_fn)(char *messhandle,
                                       char *token,
                                       char *p1,
                                       char *p2,
                                       char *p3,
                                       char *p4,
                                       int cpy);
typedef os_error *(*drw_close_message_file_fn)(char *messagefilehandle);
typedef void (*drw_wint_closemessagefiles_fn)(void);


struct drw_msgfn_str {

drw_get_messagefile_size_fn       msgfilesize;
drw_open_messagefile_fn           openmsgfile;
drw_wimp_open_messagefile_fn      wimpopenmsgfile;
drw_wimp_initmessages_fn          initmsgs;
drw_wimp_reinitmessages_fn        reinitmsgs;
drw_enum_msg_tokens_fn            enummsgs;
drw_wimp_count_msg_tokens_fn      wimpcountmsgs;
drw_wimp_getnumberofmsgs_fn       getnummsgs;
drw_wimp_messlook0_fn             mlook0;
drw_wimp_messlook1_fn             mlook1;
drw_wimp_messlook2_fn             mlook2;
drw_wimp_messlook3_fn             mlook3;
drw_wimp_messlook4_fn             mlook4;
drw_close_message_file_fn         closemsgs;
drw_wint_closemessagefiles_fn     wintclosemsgs;

};

#if defined NAMESPACE_DRWIMPC
  }
#endif

#endif



