#ifndef RECCOON_RECCLIB_H
#define RECCOON_RECCLIB_H TRUE
/*
**  $Filename: Reccoon/ReccLib.h $
**  $Release: 0.52 $
**  $Revision: 52.0 $
**  $Date: 93/05/23 $
**
**  Reccoon.library prototypes and macros.
**
**  (C) Copyright 1991-93 Niclas Emdelius.
**          All Rights Reserved
*/ 

#ifndef RECCOON_RECCLIB_PRAGMAS_H
#include <Reccoon/ReccLib_Pragmas.h>
#endif

#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif

/*** Prototypes for Reccoon.library ***/


ULONG 		CreateMsg	( struct control *, ULONG msgarea, UBYTE *txt, struct msg *, UWORD usernum, BOOL cludges, ULONG msghandle, ULONG inxhandle );
UBYTE *		CapitalChars	( UBYTE * );
UBYTE *		MixedCase	( UBYTE * );
BYTE		CmpDate		( struct TimeDate *, struct TimeDate * );
BYTE		CmpTime		( struct TimeDate *, struct TimeDate * );
BYTE		CmpTimeDate	( struct TimeDate *, struct TimeDate * );
struct TimeDate *Time2TimeDate	( struct TimeDate * );
void		Logg		( UBYTE *txt, UBYTE level, UBYTE *logname );
BOOL		Transpose	( struct usr *, struct MsgAccess *, struct FileAccess *, UWORD level, struct control * );
UWORD		CharConvert	( UBYTE *dest, UBYTE *source, UBYTE *table);
struct control *OpenRCtrl	( UBYTE *programname, UWORD line, struct CtrlMessage *,struct MsgPort **ctrlport, struct MsgPort **replyport);
void		CloseRCtrl	( struct MsgPort *ctrlport, struct MsgPort *replyport, struct CtrlMessage *);
UWORD		SearchUser	( UBYTE *username, UBYTE mode, struct CtrlMessage *ctrlmsg, struct MsgPort *ctrlport);
void 		SaveUser	( UWORD usernum, struct CtrlMessage *ctrlmsg, struct MsgPort *ctrlport );
void 		SaveFig		( struct CtrlMessage *ctrlmsg, struct MsgPort *ctrlport );
struct MsgList *GetMsgArea	( ULONG msgarea, struct control * );
struct FileList *GetFileArea	( ULONG filearea, struct control * );
UWORD		AddFile		( struct fil *, ULONG filearea, struct control * );
void *		RAllocMem	( struct RRemember **, ULONG size, ULONG flags );
void		RFreeMem	( struct RRemember **, ULONG mem, ULONG size );
void		RFreeAllMem	( struct RRemember ** );
struct RNode *	RFindName	( struct RList *, UBYTE *name );
void		RAddTail	( struct RList *, struct RNode * );
struct RNode *	RRemHead	( struct RList * );
struct RNode *	RRemTail	( struct RList * );
void		RRemove		( struct RList *, struct RNode * );
void		REnqueue	( struct RList *, struct RNode * );
void		RInsert		( struct RList *, struct RNode *prev, struct RNode * );
void		RFreeList	( struct RList *, struct RRemember **);
void		RAddHead	( struct RList *, struct RNode * );
ULONG		CtrlCommand	( ULONG cmd, ULONG a, ULONG b, ULONG c, ULONG d, struct CtrlMessage *, struct MsgPort * );
UWORD		RNop		( struct CtrlMessage *, struct MsgPort * );
UBYTE *		OpenMenuSet	( UWORD mset, struct CtrlMessage *, struct MsgPort * );
void		CloseMenuSet	( UWORD mset, struct CtrlMessage *, struct MsgPort * );
void		ReloadMenuSets	( struct CtrlMessage *, struct MsgPort * );
void		RUpdate		( struct CtrlMessage *, struct MsgPort * );
void		IndexUser	( struct CtrlMessage *, struct MsgPort * );
struct UsrList *GetUser		( UWORD usrnum, struct CtrlMessage *, struct MsgPort * );
void		FreeUser	( UWORD usrnum, struct CtrlMessage *, struct MsgPort * );
struct Screen * OpenRScreen	( struct CtrlMessage *, struct MsgPort * );
void		CloseRScreen	( struct CtrlMessage *, struct MsgPort * );
BOOL		CookString	( UBYTE *instring, UBYTE *buffer, BOOL (*CallBack)(UBYTE *str, void *), void *usrdata, struct CookData *);
ULONG		LockControl	( struct CtrlMessage *, struct MsgPort * );
BOOL		Brodcast	( struct control *, UBYTE *string, UWORD line, BOOL async );
struct AppInfo *GetAppInfo	( UWORD usernum, ULONG key, struct CtrlMessage *, struct MsgPort * );
void		FreeAppInfo	( UWORD usernum, ULONG key, struct CtrlMessage *, struct MsgPort * );
void		SaveAppInfo	( UWORD usernum, ULONG key, struct CtrlMessage *, struct MsgPort * );
BOOL		AddAppInfo	( ULONG key, void *data, ULONG size, struct CtrlMessage *, struct MsgPort * );


/*** Macros. define RLIB_MACRO if you want them. ***/

#ifdef RLIB_MACRO

#define SearchUser(n,m) SearchUser(n,m,&ctrlmsg,ctrlport)
#define SaveUser(n) SaveUser(n,&ctrlmsg,ctrlport)
#define SaveFig() SaveFig(&ctrlmsg,ctrlport)
#define GetMsgArea(x) GetMsgArea(x,ctrl)
#define GetFileArea(x) GetFileArea(x,ctrl)
#define AddFile(f,a) AddFile(f,a,ctrl)
#define RAllocMem(s,f) RAllocMem(&remember,(ULONG)s, (ULONG)f)
#define RFreeMem(m,l) RFreeMem(&remember,(ULONG)m,(ULONG)l)
#define RFreeAllMem() RFreeAllMem(&remember)
#define CtrlCommand(k,a,b,c,d) CtrlCommand(k,a,b,c,d,&ctrlmsg,ctrlport)
#define RNop() RNop(&ctrlmsg,ctrlport)
#define OpenMenuSet(m) (void *)OpenMenuSet(m,&ctrlmsg,ctrlport)
#define CloseMenuSet(m) CloseMenuSet(m,&ctrlmsg,ctrlport)
#define ReloadMenuSets() ReloadMenuSets(&ctrlmsg,ctrlport)
#define RUpdate() RUpdate(&ctrlmsg,ctrlport)
#define IndexUser() IndexUser(&ctrlmsg,ctrlport)
#define GetUser(u) GetUser(u,&ctrlmsg,ctrlport)
#define FreeUser(u) FreeUser(u,&ctrlmsg,ctrlport)
#define OpenRScreen() OpenRScreen(&ctrlmsg,ctrlport)
#define CloseRScreen() CloseRScreen(&ctrlmsg,ctrlport)
#define LockControl() LockControl(&ctrlmsg,ctrlport)
#define Brodcast(s,l,a) Brodcast(ctrl,s,l,a)
#define GetAppInfo(u,k) GetAppInfo(u,k,&ctrlmsg,ctrlport)
#define FreeAppInfo(u,k) FreeAppInfo(u,k,&ctrlmsg,ctrlport)
#define SaveAppInfo(u,k) SaveAppInfo(u,k,&ctrlmsg,ctrlport)
#define AddAppInfo(k,d,s) AddAppInfo(k,d,s,&ctrlmsg,ctrlport)

#endif

#endif
