#ifndef  CLIB_ALIB_PROTOS_H
#define  CLIB_ALIB_PROTOS_H


#ifndef  EXEC_TYPES_H
#include <exec/types.h>
#endif
#ifndef  DEVICES_TIMER_H
#include <devices/timer.h>
#endif
#ifndef  DEVICES_KEYMAP_H
#include <devices/keymap.h>
#endif
#ifndef  LIBRARIES_COMMODITIES_H
/*#include <libraries/commodities.h> */
#endif
#ifndef  UTILITY_HOOKS_H
#include <utility/hooks.h>
#endif
#ifndef  INTUITION_CLASSES_H
#include <intuition/classes.h>
#endif
#ifndef  INTUITION_CLASSUSR_H
#include <intuition/classusr.h>
#endif
#ifndef  GRAPHICS_GRAPHINT_H
/*#include <graphics/graphint.h> */
#endif

/*  Exec support functions */

#ifdef __cplusplus
extern "C" {
#endif

void BeginIO( struct IORequest *ioReq );
struct IORequest *CreateExtIO( struct MsgPort *port, long ioSize );
struct MsgPort *CreatePort( STRPTR name, long pri );
struct IOStdReq *CreateStdIO( struct MsgPort *port );
struct Task *CreateTask( STRPTR name, long pri, APTR initPC,
        unsigned long stackSize );
void DeleteExtIO( struct IORequest *ioReq );
void DeletePort( struct MsgPort *ioReq );
void DeleteStdIO( struct IOStdReq *ioReq );
void DeleteTask( struct Task *task );
void NewList( struct List *list );

LONG TimeDelay( long unit, unsigned long secs, unsigned long microsecs );

ULONG DoMethodA( Object *obj, Msg message );
ULONG DoMethod( Object *obj, unsigned long MethodID, ... );
ULONG DoSuperMethodA( struct IClass *cl, Object *obj, Msg message );
ULONG DoSuperMethod( struct IClass *cl, Object *obj,ULONG MethodID,... );
ULONG CoerceMethodA( struct IClass *cl, Object *obj, Msg message );
ULONG CoerceMethod( struct IClass *cl, Object *obj,ULONG MethodID,... );

#ifdef __IGNORE_NOT_SUPPORTED__

  APTR LibAllocPooled( APTR poolHeader, ULONG memSize );
  APTR LibCreatePool(ULONG memFlags,ULONG puddleSize,ULONG threshSize );
  void LibDeletePool( APTR poolHeader );
  void LibFreePooled( APTR poolHeader, APTR memory, ULONG memSize );
  ULONG FastRand( ULONG seed );
  UWORD RangeRand( ULONG maxValue );
  void AddTOF( struct Isrvstr *i, long (*p)(), long a );
  void RemTOF( struct Isrvstr *i );
  void waitbeam( long b );
  FLOAT afp( BYTE *string );
  void arnd( long place, long exp, BYTE *string );
  FLOAT dbf( unsigned long exp, unsigned long mant );
  LONG fpa( FLOAT fnum, BYTE *string );
  void fpbcd( FLOAT fnum, BYTE *string );
  LONG DoTimer( struct timeval *, long unit, long command );
  void ArgArrayDone( void );
  UBYTE **ArgArrayInit( long argc, UBYTE **argv );
  LONG ArgInt( UBYTE **tt, STRPTR entry, long defaultval );
  STRPTR ArgString( UBYTE **tt, STRPTR entry, STRPTR defaulstring );
/*CxObj *HotKey( STRPTR description, struct MsgPort *port, long id ); */
  struct InputEvent *InvertString( STRPTR str, struct KeyMap *km );
  void FreeIEvents( struct InputEvent *events );
  BOOL CheckRexxMsg( struct Message *rexxmsg );
  LONG GetRexxVar( struct Message *rexxmsg, UBYTE *name, UBYTE **result );
  LONG SetRexxVar( struct Message *rexxmsg, UBYTE *name, UBYTE *value,long length );
  ULONG CallHookA( struct Hook *hookPtr, Object *obj, APTR message );
  ULONG CallHook( struct Hook *hookPtr, Object *obj, ... );
  ULONG SetSuperAttrs( struct IClass *cl, Object *obj, ULONG Tag1,... );
  STRPTR ACrypt( STRPTR buffer, STRPTR password, STRPTR username );
#else  /** __IGNORE_NOT_SUPPORTED__ **/

#define LibAllocPooled LibAllocPooled_NOT_SUPPORTED
  APTR LibAllocPooled(struct NOT_SUPPORTED*,APTR,ULONG);

#define LibCreatePool LibCreatePool_NOT_SUPPORTED
  APTR LibCreatePool(struct NOT_SUPPORTED*,ULONG,ULONG,ULONG);

#define LibDeletePool LibDeletePool_NOT_SUPPORTED
  void LibDeletePool(struct NOT_SUPPORTED*,APTR);

#define LibFreePooled LibFreePooled_NOT_SUPPORTED
  void LibFreePooled(struct NOT_SUPPORTED*,APTR,APTR,ULONG);

#define FastRand FastRand_NOT_SUPPORTED
  ULONG FastRand(struct NOT_SUPPORTED*,ULONG);

#define RangeRand RangeRand_NOT_SUPPORTED
  UWORD RangeRand(struct NOT_SUPPORTED*,ULONG);

#define AddTOF AddTOF_NOT_COMPATIBLE
  void AddTOF(struct NOT_SUPPORTED*,struct Isrvstr*,long*,long);

#define RemTOF RemTOF_NOT_COMPATIBLE
  void RemTOF(struct NOT_SUPPORTED*,struct Isrvstr*);

#define waitbeam waitbeam_NOT_COMPATIBLE
  void waitbeam(struct NOT_SUPPORTED*,long);

#define afp afp_NOT_SUPPORTED
  FLOAT afp(struct NOT_SUPPORTED*,BYTE*);

#define arnd arnd_NOT_SUPPORTED
  void arnd(struct NOT_SUPPORTED*,long,long,BYTE*);

#define dbf dbf_NOT_SUPPORTED
  FLOAT dbf(struct NOT_SUPPORTED*,unsigned long,unsigned long);

#define fpa fpa_NOT_SUPPORTED
  LONG fpa(struct NOT_SUPPORTED*,FLOAT,BYTE*);

#define fpbcd fpbcd_NOT_SUPPORTED
  void fpbcd(struct NOT_SUPPORTED*,FLOAT,BYTE*);

#define DoTimer DoTimer_NOT_SUPPORTED
  LONG DoTimer(struct NOT_SUPPORTED*,struct timeval*,long,long);

#define ArgArrayDone ArgArrayDone_NOT_COMPATIBLE
  void ArgArrayDone(struct NOT_SUPPORTED*);

#define ArgArrayInit ArgArrayInit_NOT_COMPATIBLE
  UBYTE **ArgArrayInit(struct NOT_SUPPORTED*,long,UBYTE**);

#define ArgInt ArgInt_NOT_COMPATIBLE
  LONG ArgInt(struct NOT_SUPPORTED*,UBYTE**,STRPTR,long);

#define HotKey HotKey_NOT_SUPPORTED
  APTR HotKey(struct NOT_SUPPORTED*,STRPTR,struct MsgPort*,long);

#define ArgString ArgString_NOT_SUPPORTED
  STRPTR ArgString(struct NOT_SUPPORTED*,UBYTE**,STRPTR,STRPTR);

#define InputEvent InputEvent_NOT_SUPPORTED
  struct InputEvent *InvertString(struct NOT_SUPPORTED*,STRPTR,struct KeyMap*);

#define FreeIEvents FreeIEvents_NOT_SUPPORTED
  void FreeIEvents(struct NOT_SUPPORTED*,struct InputEvent*);

#define CheckRexxMsg CheckRexxMsg_NOT_SUPPORTED
  BOOL CheckRexxMsg(struct NOT_SUPPORTED*,struct Message*);

#define GetRexxVar GetRexxVar_NOT_SUPPORTED
  LONG GetRexxVar(struct NOT_SUPPORTED*,struct Message*,UBYTE*,UBYTE**);

#define SetRexxVar SetRexxVar_NOT_SUPPORTED
  LONG SetRexxVar(struct NOT_SUPPORTED*,struct Message*,UBYTE*,UBYTE*,long);

#define CallHookA CallHookA_NOT_SUPPORTED
  ULONG CallHookA(struct NOT_SUPPORTED*,struct Hook*,APTR,APTR);

#define CallHook CallHook_NOT_SUPPORTED
  ULONG CallHook(struct NOT_SUPPORTED*,struct Hook*,APTR obj, ... );

#define SetSuperAttrs SetSuperAttrs_NOT_SUPPORTED
  ULONG SetSuperAttrs(struct NOT_SUPPORTED*,struct IClass*,APTR,ULONG,... );

#define ACrypt ACrypt_NOT_SUPPORTED
  STRPTR ACrypt(struct NOT_SUPPORTED*,STRPTR,STRPTR,STRPTR);

#endif /** __IGNORE_NOT_SUPPORTED__**/



#ifdef __cplusplus
}
#endif


#endif   /* CLIB_ALIB_PROTOS_H */
