/***********************************************************************
 * xfunctions.h - function prototypes for xlib functions               *
 * Written January 1990 by Joe Pearce                                  *
 ***********************************************************************/

#ifndef __XFUNCTIONS_H 
#define __XFUNCTIONS_H

#include <devices/keymap.h>
#include <graphics/rastport.h>
#include <graphics/text.h>
#include <libraries/dosextens.h>
#include <libraries/filehandler.h>

	/* fade.asm */
void interpolate_colors(void *,void *,void *,ULONG,ULONG);
	/* unpackcmap.asm */
void UnpackCMAP(void *,void *,long);
	/* createprivateport.asm */
void *CreatePrivatePort(void);
void DeletePrivatePort(void *);
	/* clamp.asm */
long clamp(long,long,long);
	/* TransferList.c */
void TransferList(struct List *,struct List *);
	/* Textf.asm */
UWORD Textf(struct RastPort *,char *,...);
	/* matrixpick.asm */
long matrix_pick(long,long,long,long,long,long,long);
	/* drawrect.asm */
void DrawRect(struct RastPort *,long,long,long,long);
	/* zero.asm */
void zero(void *,long);
	/* a_to_x.asm */
long a_to_x(char *);
	/* MemAlloc.c */
void *MemAlloc(long,long);
void MemFree(void *);
void AllMemFree(void);
void *RasterAlloc(long,long);
long MemAllocList(void *);
	/* PrevNode.asm */
void *PrevNode(void *);
	/* SelectNode.asm */
void *SelectNode(void *,ULONG);
	/* safecloselib.asm */
void SafeCloseLibrary(void *);
	/* GetFileSize.c */
ULONG GetFileSize(char *);
	/* str_rchr.asm */
ULONG str_rchr(char *,long);
	/* str_rev.asm */
char *str_rev(char *);
	/* str_rindex.asm */
char *str_rindex(char *,long);
	/* str_set.asm */
char *str_set(char *,long);
	/* str_sub.asm */
char *str_sub(char *,char *);
	/* str_upr.asm */
char *str_upr(char *);
	/* tackon.asm */
long TackOn(char *,char *,ULONG);
	/* textfield.asm */
void TextField(struct RastPort *,char *,ULONG);
#ifndef __CTYPE_H
	/* tolower.asm */
char tolower(long);
	/* toupper.asm */
char toupper(long);
#endif
	/* wildcmp.c */
short wildcmp(char *,char *);
	/* smartdigits.asm */
long SmartDigits(char *,ULONG,char *,ULONG,long);
	/* Sprintf.asm */
Sprintf(char *,char *,...);
	/* str_cat.asm */
char *str_cat(char *,char *);
char *str_ncat(char *,char *,ULONG);
	/* str_cat2.asm */
char *str_cat2(char *,char *);
	/* str_catm.asm */
char *str_catm(char *,ULONG,...);
	/* str_chr.asm */
ULONG str_chr(char *,long);
	/* str_cmp.asm */
LONG str_cmp(char *,char *);
LONG str_ncmp(char *,char *,ULONG);
	/* str_cmpi.asm */
LONG str_cmpi(char *,char *);
LONG str_ncmpi(char *,char *,ULONG);
	/* str_cpy.asm */
char *str_cpy(char *,char *);
	/* str_index.asm */
char *str_index(char *,long);
	/* str_len.asm */
ULONG str_len(char *);
	/* str_lwr.asm */
char *str_lwr(char *);
	/* str_ncpy.asm */
char *str_ncpy(char *,char *,ULONG);
	/* str_nset.asm */
char *str_nset(char *,long,ULONG);
	/* MoveMem.asm */
MoveMem(void *,void *,ULONG);
	/* CmpMem.asm */
BOOL CmpMem(void *,void *,ULONG);
	/* NextNode.asm */
void *NextNode(void *);
	/* path.asm */
ULONG ExpandPath(struct FileLock *,char *,ULONG);
	/* Printf.asm	*/
ULONG Fprintf(void *,char *,...);
ULONG Printf(char *,...);
	/* Puts.asm	*/
ULONG Fputs(void *,char *);
ULONG Puts(char *);
	/* RawFmt.asm */
/* void Format(void (*)(),char *,...); */
	/* resetbreak.asm */
ULONG resetbreak(void);
	/* Restore68881.asm */
void Restore68881(void);
	/* reverseword.asm */
WORD ReverseWord(long);
	/* root.asm					<--------- serious problems */
/* long IntSqRoot(long); */
/* long RndSqRoot(long); */
	/* Rprintf.asm */
ULONG Rprintf(char *,ULONG,char *,...);
ULONG VRprintf(char *,ULONG,char *,void *);
	/* SendPacket.asm */
void SendPacket(void *,struct StandardPacket *);
	/* SetFileDate.c */
#ifndef __FUNCTIONS20_H
long SetFileDate(char *,struct DateStamp *);
#endif
	/* InitPacket.asm */
void InitPacket(long,struct StandardPacket *,void *);
	/* InitSimplePacket.asm */
void InitSimplePacket(long,struct StandardPacket *);
	/* insert_bits.asm */
void insert_bits(void *,ULONG,ULONG,long);
	/* insert_bytes.asm */
void insert_bytes(void *,ULONG,long);
	/* DiskType.asm */
LONG DiskType(struct DeviceNode *);
	/* IsTerminal.*/
LONG IsTerminal(void);
	/* MaybeOpenLib.asm */
struct Library *MaybeOpenLibrary(char *,ULONG);
	/* KeyConvert.asm */
long ConvertKey(void *,void *,long,struct KeyMap *);
	/* l_to_a.asm */
char *l_to_a(long,char *);
	/* MakeBitMap.asm */
long MakeBitMap(struct BitMap *,long,long,long);
void UnMakeBitMap(struct BitMap *);
	/* MatchExt.asm */
long MatchExtension(char *,char *);
	/* memalert.asm */
void memalert(void);
	/* mountreq.c */
void mountrequest(long);
	/* enviroment.c */
long GetDEnv(char *,char *,long);
long SetDEnv(char *,char *);
	/* FileOnly.c */
char *FileOnly(char *);
	/* GetConWin.c */
struct Window *GetConWindow(void);
	/* GetFileDate.asm */
long GetFileDate(char *,struct DateStamp *);
	/* GetFileType.asm */
long GetFileType(char *);
	/* getfont.asm */
struct TextFont *GetFont(struct TextAttr *);
	/* GetHead.asm */
void *GetHead(void *);
	/* Gets.asm */
long Fgets(void *,char *,long);
long Gets(char *,long);
	/* GetTail.asm */
void *GetTail(void *);
	/* GetVBR.as*/
void *GetVBR();
	/* get_bits.asm */
long get_bits(void *,long,long);
	/* get_bytes.asm */
long get_bytes(void *,long);
	/* InhibitDisk.c */
ULONG InhibitDisk(struct DeviceNode *,ULONG);
	/* InitKeyConvert.asm */
long InitKeyConvert(void);
void WrapKeyConvert(void);
void KeyReset(void);
	/* a_to_l.asm */
long a_to_l(char *);
	/* bsearch.c */
void *bsearch(void *,void *,long,long,long (*)());
	/* checkbreak.asm */
long checkbreak(void);
	/* convbstrcstr.asm */
char *ConvBstrCstr(char *);
	/* ConvCstrBstr.asm */
char *ConvCstrBstr(char *);
	/* CpyBstrCstr.asm */
char *CpyBstrCstr(char *,char *);
	/* CpyCstrBstr.c */
char *CpyCstrBstr(char *,char *);
	/* createprocess.as*/
struct Process *CreateProcess(char *,long,long (*)(),void *);
	/* datetos.c */
char *datetostr(struct DateStamp *,char *,char *);
	/* dcount.asm */
long DigitCount(long);
	/* div32_16.as*/
ULONG divu32_16(ULONG,UWORD);
#pragma regcall( divu32_16(d0,d1) )
long divs32_16(long,WORD);
#pragma regcall( divs32_16(d0,d1) )
	/* b2a.asm */
long Bin2Ascii(long,char *);

#ifndef __FUNCTIONS_H
#ifndef __FUNCTIONS20_H

	/* CreateExtIO.asm */
void *CreateExtIO(void *,long);
void *CreateStdIO(void *);
void DeleteExtIO(void *);
void DeleteStdIO(void *);
	/* CreatePort.asm */
void *CreatePort(char *,long);
void DeletePort(void *);
	/* CreateTask.asm */
struct Task *CreateTask(char *,long,long (*)(),void *);

#endif
#endif

#endif
