/* patch_protos.h - prototypes for patch.library functions */
/* (C) Copyright 1993-96 Stefan Fuch                       */

#ifndef CLIB_PATCH_H
#define CLIB_PATCH_H


#ifndef  EXEC_TYPES_H
#include <exec/types.h>
#endif
#ifndef  INTUITION_INTUITION_H
#include <intuition/intuition.h>
#endif
#ifndef  UTILITY_TAGITEM_H
#include <utility/tagitem.h>
#endif


struct Patch *InstallPatch( struct NewPatch *newPatch );
ULONG WaitRemovePatch( struct Patch *patch );
ULONG RemovePatch( struct Patch *patch );
struct Patch *FindPatch( UBYTE *name );
/*--------- Functions in V2 and higher -----------------------------------*/
struct Patch *InstallPatchTagsA( unsigned long (*newFunction)(),
                  long funcOffset, struct TagItem *taglist );
struct Patch *InstallPatchTags( unsigned long (*newFunction)(),
                  long funcOffset, Tag tag1, ... );
ULONG RemovePatchTagsA( struct Patch *patch, struct TagItem *taglist );
ULONG RemovePatchTags( struct Patch *patch, Tag tag1, ... );
/*--------- Functions in V3 and higher -----------------------------------*/
APTR FindPatchTagsA( struct TagItem *taglist );
APTR FindPatchTags( Tag tag1, ... );
ULONG SetPatchA( struct Patch *patch, struct TagItem *taglist );
ULONG SetPatch( struct Patch *patch, Tag tag1, ... );
ULONG GetPatchA( struct Patch *patch, struct TagItem *taglist );
ULONG GetPatch( struct Patch *patch, Tag tag1, ... );
void PatchFreeVec( APTR memoryBlock );
/*--------- Functions in V4 and higher -----------------------------------*/
ULONG RemovePatchProjectA( ULONG project, struct TagItem *taglist );
ULONG RemovePatchProject( ULONG project, Tag tag1, ... );
APTR CreatePatchProjectA( STRPTR, struct TagItem *taglist);
APTR CreatePatchProject( STRPTR, Tag tag1, ...);

#endif  /* CLIB_PATCH_H */
