#ifndef OUTPUT_MODULE

#define OUTPUT_MODULE

#pragma libcall OutputBase OutOpen 1e 2102
#pragma libcall OutputBase OutClose 24 101
#pragma libcall OutputBase OutPutC 2a 2102
#pragma libcall OutputBase OutPuts 30 2102
#pragma libcall OutputBase OutWrite 36 432104
#pragma libcall OutputBase OutFlush 3c 101
#pragma libcall OutputBase OutVPrintf 42 32103
#pragma tagcall OutputBase OutPrintf 42 32103
#pragma libcall OutputBase OutWindow 48 101
#pragma libcall OutputBase OutAllow 4e 101
#pragma libcall OutputBase OutReview 54 101

/* The first functions should work as the dos.library ones, if you don't support
   bufferized writing simply left OutFlush empty */

void OutPuts(APTR handler, STRPTR string);
void OutPutC(APTR handler, LONG character);
void OutPrintf(APTR handler, STRPTR formatstring, ...);
void OutVPrintf(APTR handler, STRPTR formatstring, LONG *argv);
void OutFlush(APTR handler);
void OutClose(APTR handler);
void OutWrite(APTR handler, STRPTR string, ULONG elementsize, ULONG numelements);
APTR OutOpen(STRPTR formatstring, LONG flags);


/* Return the pointer to your window */

struct Window *OutWindow(APTR handler);

/* Tell TRUE or FALSE to one of the available options */

BOOL OutAllow(LONG options);


/* Returns NULL if you don't support ReviewBuffer, otherwise a pointer to a
   list of lines where each line is pointed by node->ln_Name and 0 terminated.
   The lines should not have newlines.
 */

struct List *OutReview(APTR handler);

extern struct Library *OutputBase;

/* Flags used by OutOpen */

#define PUBLIC_SCREEN	1
#define ANSI		2
#define ANSI16		4
#define MONO		8
#define AMIGA		16
#define REVIEW_BUFFER	32

/* Options for OutAllow */

#define ANSI_ON_PUBSCREEN 1
#define ANSI16_ON_PUBSCREEN 2
#define ANSI16_ON_PUBSCREEN_OS_2 3
#define ANSI_ON_PUBSCREEN_OS_2 4

#endif
