#ifndef CLASSES_AREXX_H #define CLASSES_AREXX_H /* ** $VER: arexx.h 44.1 (19.10.1999) ** Includes Release 44.1 ** ** arexx.class definitions ** ** (C) Copyright 1987-1999 Amiga, Inc. ** All Rights Reserved */ #ifndef EXEC_MEMORY_H #include <exec/memory.h> #endif #ifndef DOS_DOS_H #include <dos/dos.h> #endif #ifndef DOS_RDARGS_H #include <dos/rdargs.h> #endif #ifndef REXX_STORAGE_H #include <rexx/storage.h> #endif #ifndef REXX_RXSLIB_H #include <rexx/rxslib.h> #endif #ifndef REXX_ERRORS_H #include <rexx/errors.h> #endif #ifndef INTUITION_CLASSES_H #include <intuition/classes.h> #endif #ifndef INTUITION_CLASSUSR_H #include <intuition/classusr.h> #endif #ifndef UTILITY_HOOKS_H #include <utility/hooks.h> #endif /*****************************************************************************/ /* Tags supported by the arexx class */ #define AREXX_Dummy (REACTION_Dummy+0x30000) #define AREXX_HostName (AREXX_Dummy+1) /* (STRPTR) */ #define AREXX_DefExtension (AREXX_Dummy+2) /* (STRPTR) */ #define AREXX_Commands (AREXX_Dummy+3) /* (struct ARexxCmd *) */ #define AREXX_ErrorCode (AREXX_Dummy+4) /* (ULONG *) */ #define AREXX_SigMask (AREXX_Dummy+5) /* (ULONG) */ #define AREXX_NoSlot (AREXX_Dummy+6) /* (BOOL) */ #define AREXX_ReplyHook (AREXX_Dummy+7) /* (struct Hook *) */ #define AREXX_MsgPort (AREXX_Dummy+8) /* (struct MsgPort *) */ /* Possible error result codes */ #define RXERR_NO_COMMAND_LIST (1L) #define RXERR_NO_PORT_NAME (2L) #define RXERR_PORT_ALREADY_EXISTS (3L) #define RXERR_OUT_OF_MEMORY (4L) /* I can't spell, don't use this. */ #define AREXX_DefExtention AREXX_DefExtension /*****************************************************************************/ /* Methods Supported by the ARexx Class. */ #define AM_HANDLEEVENT (0x590001) /* ARexx class event-handler. */ #define AM_EXECUTE (0x590002) /* Execute a host command. */ #define AM_FLUSH (0x590003) /* Flush rexx port. */ /* AM_EXECUTE message. */ struct apExecute { ULONG MethodID; /* AM_EXECUTE */ STRPTR ape_CommandString; /* Command string to execute */ STRPTR ape_PortName; /* Port to send to (usually RXSDIR) */ LONG *ape_RC; /* RC pointer */ LONG *ape_RC2; /* RC2 pointer */ STRPTR *ape_Result; /* Result pointer */ BPTR ape_IO; /* I/O handle */ }; /*****************************************************************************/ /* An array of these structures must be passed at object-create time. */ struct ARexxCmd { STRPTR ac_Name; /* Command name */ UWORD ac_ID; /* Unique ID */ /* NOTE: The function pointed to by ac_Func() will be called * with parameters in CPU registers. Register usage * is as follows: * * VOID ac_Func(struct ARexxCmd * cmd, struct RexxMsg * rm) * A0 A1 */ VOID (*ac_Func)(); STRPTR ac_ArgTemplate; /* DOS-style argument template */ ULONG ac_Flags; /* Unused, make NULL */ ULONG *ac_ArgList; /* Result of ReadArgs() */ LONG ac_RC; /* Primary result */ LONG ac_RC2; /* Secondary result */ STRPTR ac_Result; /* RESULT variable */ }; #endif /* CLASSES_AREXX_H */