/* ** rexxhost.library - ARexx host management support library ** ** Copyright © 1990-1992 by Olaf `Olsen' Barthel ** All Rights Reserved */ #ifndef _REXXHOSTBASE_H #define _REXXHOSTBASE_H 1 #ifndef REXX_RXSLIB_H #include #endif /* !REXX_RXSLIB_H */ /* Main library structure (note: RexxSysBase can be reused * by opening program). */ struct RexxHostBase { struct Library LibNode; struct RxsLib *RexxSysBase; /* Everything below this point is considered PRIVATE and * subject to change without notice (even though there isn't * very much yet). */ }; /* This is an extended MsgPort structure which includes * a special ID CreateRexxHost/DeleteRexxHost/SendRexxCommand * rely on. */ struct RexxHost { /* Exec link. */ struct MsgPort rh_Port; /* Never touch the tags below, hands off - this may change soon. */ ULONG rh_Private0; ULONG rh_Private1[4]; }; /* This macro can be used to turn the signal bit * contained in a RexxHost into a Wait-mask. * Note: Argument must be a pointer. */ #define HOSTMASK(Host) (1L << ((struct RexxHost *)Host) -> rh_Port . mp_SigBit) /* The library name. */ #define REXXHOSTNAME "rexxhost.library" /* Use this value rather than REXXHOSTVERSION to open * rexxhost.library. */ #define REXXHOSTMINIMUM 34L /* The compiler version differences require the * following preprocessor 'orgy'. */ #ifdef __NO_PROTOS #undef __NO_PROTOS #endif /* __NO_PROTOS */ #ifdef AZTEC_C /* No version symbol? We'll redefine it. */ #ifndef __VERSION #define __VERSION 360 #endif /* __VERSION */ /* Aztec 'C' 5.0 includes full prototype checking and * pragma support. */ #if __VERSION < 500 #define __NO_PROTOS 1 #define __NO_PRAGMAS 1 #endif /* __VERSION */ #endif /* AZTEC_C */ /* Now for the prototype handling. */ #ifdef __NO_PROTOS #define __ARGS(x) () #else #define __ARGS(x) x #endif /* __NO_PROTOS */ /* Prototypes for library functions. */ struct RexxHost * CreateRexxHost __ARGS((STRPTR)); VOID * DeleteRexxHost __ARGS((struct RexxHost *)); LONG SendRexxCommand __ARGS((struct RexxHost *,STRPTR,STRPTR,STRPTR)); VOID FreeRexxCommand __ARGS((struct RexxMsg *)); VOID ReplyRexxCommand __ARGS((struct RexxMsg *,LONG,LONG,STRPTR)); STRPTR GetRexxCommand __ARGS((struct RexxMsg *)); STRPTR GetRexxArg __ARGS((struct RexxMsg *)); LONG GetRexxResult1 __ARGS((struct RexxMsg *)); LONG GetRexxResult2 __ARGS((struct RexxMsg *)); STRPTR GetToken __ARGS((STRPTR,LONG *,STRPTR,LONG)); LONG GetStringValue __ARGS((STRPTR)); STRPTR BuildValueString __ARGS((LONG,STRPTR)); LONG RexxStrCmp __ARGS((UBYTE *,UBYTE *)); struct RexxMsg * GetRexxMsg __ARGS((struct RexxHost *,LONG)); ULONG SendRexxMsg __ARGS((STRPTR,STRPTR *,STRPTR,LONG)); VOID GetRexxString __ARGS((STRPTR,STRPTR)); LONG GetRexxClip __ARGS((char *Name,LONG WhichArg)); /* The pragmas, both for Manx & Lattice. */ #ifndef __NO_PRAGMAS #ifdef AZTEC_C #pragma amicall(RexxHostBase, 0x1e, CreateRexxHost(a0)) #pragma amicall(RexxHostBase, 0x24, DeleteRexxHost(a0)) #pragma amicall(RexxHostBase, 0x2a, SendRexxCommand(a0,a1,a2,a3)) #pragma amicall(RexxHostBase, 0x30, FreeRexxCommand(a0)) #pragma amicall(RexxHostBase, 0x36, ReplyRexxCommand(a0,d0,d1,a1)) #pragma amicall(RexxHostBase, 0x3c, GetRexxCommand(a0)) #pragma amicall(RexxHostBase, 0x42, GetRexxArg(a0)) #pragma amicall(RexxHostBase, 0x48, GetRexxResult1(a0)) #pragma amicall(RexxHostBase, 0x4e, GetRexxResult2(a0)) #pragma amicall(RexxHostBase, 0x54, GetToken(a0,a1,a2,d0)) #pragma amicall(RexxHostBase, 0x5a, GetStringValue(a0)) #pragma amicall(RexxHostBase, 0x60, BuildValueString(d0,a0)) #pragma amicall(RexxHostBase, 0x66, RexxStrCmp(a0,a1)) #pragma amicall(RexxHostBase, 0x6c, GetRexxMsg(a0,d0)) #pragma amicall(RexxHostBase, 0x72, SendRexxMsg(a0,a1,a2,d0)) #pragma amicall(RexxHostBase, 0x78, GetRexxString(d0,d1)) #pragma amicall(RexxHostBase, 0x7e, GetRexxClip(a0,d0)) #else /* AZTEC_C */ #pragma libcall RexxHostBase CreateRexxHost 1e 801 #pragma libcall RexxHostBase DeleteRexxHost 24 801 #pragma libcall RexxHostBase SendRexxCommand 2a ba9804 #pragma libcall RexxHostBase FreeRexxCommand 30 801 #pragma libcall RexxHostBase ReplyRexxCommand 36 910804 #pragma libcall RexxHostBase GetRexxCommand 3c 801 #pragma libcall RexxHostBase GetRexxArg 42 801 #pragma libcall RexxHostBase GetRexxResult1 48 801 #pragma libcall RexxHostBase GetRexxResult2 4e 801 #pragma libcall RexxHostBase GetToken 54 a9804 #pragma libcall RexxHostBase GetStringValue 5a 801 #pragma libcall RexxHostBase BuildValueString 60 8002 #pragma libcall RexxHostBase RexxStrCmp 66 9802 #pragma libcall RexxHostBase GetRexxMsg 6c 802 #pragma libcall RexxHostBase SendRexxMsg 72 a9804 #pragma libcall RexxHostBase GetRexxString 78 1002 #pragma libcall RexxHostBase GetRexxClip 7e 802 #endif /* AZTEC_C */ #endif /* __NO_PRAGMAS */ #endif /* _REXXHOSTBASE_H */