/* patch_protos.h - prototypes for patch.library functions */
/* (C) Copyright 1993/94 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 or 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 or higher -----------------------------------*/
struct Patch *FindPatchTagsA( struct TagItem *taglist );
struct Patch *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 );

#endif  /* CLIB_PATCH_H */
