#ifndef AROS_LIBCALL_H
#define AROS_LIBCALL_H
/* (C) 1995 AROS - The Amiga Replacement OS */

/******************************************************************************

    MODUL
	$Id: libcall.h 1.2 1995/11/14 22:03:48 digulla Exp digulla $

    DESCRIPTION
	Some macros to build functions with registerized parameters on the
	different compilers around. Usage:

	__AROS_LH<n><f>(type, name, type1,  name1, reg1, ...)
	{
	    \* Function starts here. *\
	}

	<n> - Number of arguments of the function (not including the
	    library base).

	<f> - 'I' means: Function ignores library base.
	    This is useful to get rid of warnings about unused arguments.

	type - Returntype of the function.

	name - Name of the function. A underscore '_' is prepended so that
	    following functions jump over the base vector and don't call
	    the function directly.

	type<i>, name<i>, reg<i> - Type, name and register for the
	    arguments. Register names are written uppercase because they
	    are preprocessor symbols.

	Example: Define a Exec compatible RemHead function.

	__AROS_LH1I(struct Node *, RemHead,
		struct List *, list, A0)
	{
	    __AROS_EXT_DECL
	    struct Node *node;

	    node=list->lh_Head;
	    if(node->ln_Succ==NULL)
		return NULL;
	    Remove(node);
	    return node;
	}

******************************************************************************/

/* Choose correct config file */
#if defined(__SASC)
#   include <aros/config/sasc/libcall.h>
#elif defined(__GNUC__) && defined(mc68000)
#   include <aros/config/gnuc/libcall_m68k.h>
#elif defined(__GNUC__) && defined(i386)
#   include <aros/config/gnuc/libcall_i386.h>
#else
#   include <aros/config/other/libcall.h>
#endif

#ifndef __typedef_VOID_FUNC
#define __typedef_VOID_FUNC
typedef void (*VOID_FUNC)();
#endif
#ifndef __typedef_LONG_FUNC
#define __typedef_LONG_FUNC
typedef long (*LONG_FUNC)();
#endif
#ifndef __typedef_ULONG_FUNC
#define __typedef_ULONG_FUNC
typedef unsigned long (*ULONG_FUNC)();
#endif


/******************************************************************************
*****  ENDE aros/libcall.h
******************************************************************************/

#endif /* AROS_LIBCALL_H */
