#ifndef DEFINES_REGINA_PROTOS_H
#define DEFINES_REGINA_PROTOS_H

/*
    *** Automatically generated from 'regina.conf'. Edits will be lost. ***
    Copyright © 1995-2008, The AROS Development Team. All rights reserved.
*/

/*
    Desc: Defines for regina
*/

#include <aros/libcall.h>
#include <exec/types.h>
#include <aros/preprocessor/variadic/cast2iptr.hpp>

#define RexxStart ((ULONG (*)(LONG ArgCount, PRXSTRING ArgList, PCSZ ProgName, PRXSTRING Instore, PCSZ EnvName, LONG CallType, PRXSYSEXIT Exits, PSHORT ReturnCode, PRXSTRING Result))__AROS_GETVECADDR(ReginaBase,5))
#define RexxRegisterSubcomExe ((ULONG (*)(PCSZ EnvName, PFN EntryPoint, PUCHAR UserArea))__AROS_GETVECADDR(ReginaBase,6))
#define RexxRegisterSubcomDll ((ULONG (*)(PCSZ EnvName, PCSZ ModuleName, PCSZ ProcedureName, PUCHAR UserArea, ULONG DropAuth))__AROS_GETVECADDR(ReginaBase,7))
#define RexxQuerySubcom ((ULONG (*)(PCSZ EnvName, PCSZ ModuleName, PUSHORT Flag, PUCHAR UserWord))__AROS_GETVECADDR(ReginaBase,8))
#define RexxDeregisterSubcom ((ULONG (*)(PCSZ EnvName, PCSZ ModuleName))__AROS_GETVECADDR(ReginaBase,9))
#define RexxVariablePool ((ULONG (*)(PSHVBLOCK RequestBlockList))__AROS_GETVECADDR(ReginaBase,10))
#define RexxRegisterExitExe ((ULONG (*)(PCSZ EnvName, PFN EntryPoint, PUCHAR UserArea))__AROS_GETVECADDR(ReginaBase,11))
#define RexxRegisterExitDll ((ULONG (*)(PCSZ EnvName, PCSZ ModuleName, PCSZ ProcedureName, PUCHAR UserArea, ULONG DropAuth))__AROS_GETVECADDR(ReginaBase,12))
#define RexxDeregisterExit ((ULONG (*)(PCSZ EnvName, PCSZ ModuleName))__AROS_GETVECADDR(ReginaBase,13))
#define RexxQueryExit ((ULONG (*)(PCSZ EnvName, PCSZ ModuleName, PUSHORT Flag, PUCHAR UserArea))__AROS_GETVECADDR(ReginaBase,14))
#define RexxRegisterFunctionExe ((ULONG (*)(PCSZ Name, PFN EntryPoint))__AROS_GETVECADDR(ReginaBase,15))
#define RexxRegisterFunctionDll ((ULONG (*)(PCSZ ExternalName, PCSZ LibraryName, PCSZ InternalName))__AROS_GETVECADDR(ReginaBase,16))
#define RexxQueryFunction ((ULONG (*)(PCSZ Name))__AROS_GETVECADDR(ReginaBase,17))
#define RexxDeregisterFunction ((ULONG (*)(PCSZ Name))__AROS_GETVECADDR(ReginaBase,18))
#define RexxSetHalt ((ULONG (*)(LONG dummyProcess, LONG dummyThread))__AROS_GETVECADDR(ReginaBase,19))
#define RexxCreateQueue ((ULONG (*)(PSZ Buffer, ULONG BuffLen, PSZ RequestedName, ULONG *DupFlag))__AROS_GETVECADDR(ReginaBase,20))
#define RexxDeleteQueue ((ULONG (*)(PSZ QueueName))__AROS_GETVECADDR(ReginaBase,21))
#define RexxQueryQueue ((ULONG (*)(PSZ QueueName, ULONG *Count))__AROS_GETVECADDR(ReginaBase,22))
#define RexxAddQueue ((ULONG (*)(PSZ QueueName, PRXSTRING EntryData, ULONG AddFlag))__AROS_GETVECADDR(ReginaBase,23))
#define RexxPullQueue ((ULONG (*)(PSZ QueueName, PRXSTRING DataBuf, PDATETIME TimeStamp, ULONG WaitFlag))__AROS_GETVECADDR(ReginaBase,24))
#define RexxAddMacro ((ULONG (*)(PSZ FuncName, PSZ SourceFile, ULONG Position))__AROS_GETVECADDR(ReginaBase,25))
#define RexxClearMacroSpace ((ULONG (*)())__AROS_GETVECADDR(ReginaBase,26))
#define RexxDropMacro ((ULONG (*)(PSZ FuncName))__AROS_GETVECADDR(ReginaBase,27))
#define RexxLoadMacroSpace ((ULONG (*)(ULONG FuncCount, PSZ *FuncNames, PSZ MacroLibFile))__AROS_GETVECADDR(ReginaBase,28))
#define RexxQueryMacro ((ULONG (*)(PSZ FuncName, PUSHORT Position))__AROS_GETVECADDR(ReginaBase,29))
#define RexxReorderMacro ((ULONG (*)(PSZ FuncName, ULONG Position))__AROS_GETVECADDR(ReginaBase,30))
#define RexxSaveMacroSpace ((ULONG (*)(ULONG FuncCount, PSZ *FuncNames, PSZ MacroLibFile))__AROS_GETVECADDR(ReginaBase,31))
#define RexxFreeMemory ((ULONG (*)(PVOID MemoryBlock))__AROS_GETVECADDR(ReginaBase,32))
#define RexxAllocateMemory ((PVOID (*)(ULONG Size))__AROS_GETVECADDR(ReginaBase,33))
#define ReginaVersion ((ULONG (*)(PRXSTRING VersionString))__AROS_GETVECADDR(ReginaBase,34))
#define __regina_faked_main ((int (*)(int argc, char *argv[]))__AROS_GETVECADDR(ReginaBase,35))
#define IsReginaMsg ((BOOL (*)(struct RexxMsg *msg))__AROS_GETVECADDR(ReginaBase,36))

#endif /* DEFINES_REGINA_PROTOS_H*/
