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

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

    FILE
	$VER: aros/preprotos.h 1.0 (20.04.96)

    DESCRIPTION
	This file contains all macros which are used in proto header files
	(eg. clib/exec_protos.h).

	__AROS_LC<n><f>(type, name, [<args>,] libType, libBase, lvo, libName)

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

	<f> - 'I': Function ignores library base. This is useful to get rid
		of warnings about unused arguments.
	    'P': The function preserves all registers
	    'S': Needs special register

	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.

	args - __AROS_LCA()-Macro with three arguments:

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

	libType - Type of the library (eg. struct ExecBase *)

	libBase - Name of the library base (eg. SysBase)

	lvo - Offset of the function in the library (eg. 43)

	libName - Name of the library (eg. Exec)

	Example: Define a Call for an Exec compatible RemHead function.

	    #define RemHead(list) \
	    __AROS_LC1(struct Node *, RemHead, \
	     __AROS_LCA(struct List *, list, A0), \
		struct ExecBase *, SysBase, 43, Exec)

	The next complex of macros implements prototypes for functions:

	__AROS_LP<n><f>(type, name, [<args>,] libType, libBase, lvo, libName)

	all arguments of this macro are the same as above, except for
	__AROS_LCA() which is (naturally named) __AROS_LPA(). This macro
	expands to a prototype for the function so that the compiler can
	check the arguments.

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


/**************************************
		Includes
**************************************/
#if defined(__SASC)
#   include <aros/config/sasc/preprotos.h>
#elif defined(__GNUC__)
#   include <aros/config/gnuc/preprotos.h>
#else
#   include <aros/config/other/preprotos.h>
#endif


/******************************************************************************
*****  ENDE aros/preprotos.h
******************************************************************************/

#endif	 /* AROS_PREPROTOS_H */
