#ifndef H_msgs_H
#define H_msgs_H
/*

$Id: msgs,v 1.4 1999/10/05 22:34:02 joseph Exp $

*/

#ifdef __cplusplus
extern "C" {
#endif

/* Default descriptor for Toolbox */
typedef struct
{
  int data[4];
} MessagesFD;

extern MessagesFD msgs_descriptor;

/* Looks up a token, result won't necessarily be zero-terminated,
   no parameter substitution available here
   Returns 0 if not found
*/
const char *msgtrans_qlookup(const MessagesFD *, const char *token);

/* Uses internal static buffer
   Zero terminated and parameters substitued
*/
const char *msgtrans_lookup4(const MessagesFD *, const char *token,
	const char *p0, const char *p1, const char *p2, const char *p3);

#define msgtrans_lookup(fd, t) \
	msgtrans_lookup4((fd), (t), 0, 0, 0, 0)
#define msgtrans_lookup1(fd, t, p0) \
	msgtrans_lookup4((fd), (t), (p0), 0, 0, 0)
#define msgtrans_lookup2(fd, t, p0, p1) \
	msgtrans_lookup4((fd), (t), (p0), (p1), 0, 0)
#define msgtrans_lookup3(fd, t, p0, p1, p2) \
	msgtrans_lookup4((fd), (t), (p0), (p1), (p2), 0)

#define msgs_qlookup(t) msgtrans_qlookup(&msgs_descriptor, (t))
#define msgs_lookup(t) msgtrans_lookup(&msgs_descriptor, (t))
#define msgs_lookup1(t, p0) \
	msgtrans_lookup4(&msgs_descriptor, (t), (p0), 0, 0, 0)
#define msgs_lookup2(t, p0, p1) \
	msgtrans_lookup4(&msgs_descriptor, (t), (p0), (p1), 0, 0)
#define msgs_lookup3(t, p0, p1, p2) \
	msgtrans_lookup4(&msgs_descriptor, (t), (p0), (p1), (p2), 0)
#define msgs_lookup4(t, p0, p1, p2, p3) \
	msgtrans_lookup4(&msgs_descriptor, (t), (p0), (p1), (p2), (p3))

_kernel_oserror *msgtrans_load(const char *filename,
	MessagesFD *descriptor, char **buffer);
_kernel_oserror *msgtrans_close(MessagesFD *descriptor);

/* Returns pointer to static error block */
_kernel_oserror *msgtrans_error(MessagesFD *descriptor,
	const char *token);
#define msgs_error(t) msgtrans_error(&msgs_descriptor, (t))
/* Out of memory message */
#define msgs_nomem() msgtrans_error(0, "NoStore")

#ifdef MemCheck_MEMCHECK
/* Very kludgy, files must be "Messages", first token must be _TaskName */
void msgs_prime_memcheck(void);
#endif


#ifdef __cplusplus
}
#endif

#endif
