PageRenderTime 35ms CodeModel.GetById 26ms app.highlight 5ms RepoModel.GetById 1ms app.codeStats 0ms

/Modules/_ctypes/libffi_osx/include/ffi_common.h

http://unladen-swallow.googlecode.com/
C++ Header | 102 lines | 72 code | 15 blank | 15 comment | 1 complexity | 9c19f4410ff2245760080da84f61dc49 MD5 | raw file
  1/* -----------------------------------------------------------------------
  2   ffi_common.h - Copyright (c) 1996  Red Hat, Inc.
  3
  4   Common internal definitions and macros. Only necessary for building
  5   libffi.
  6   ----------------------------------------------------------------------- */
  7
  8#ifndef FFI_COMMON_H
  9#define FFI_COMMON_H
 10
 11#ifdef __cplusplus
 12extern "C" {
 13#endif
 14
 15#include "fficonfig.h"
 16
 17/*	Do not move this. Some versions of AIX are very picky about where
 18	this is positioned. */
 19#ifdef __GNUC__
 20#	define alloca __builtin_alloca
 21#else
 22#	if HAVE_ALLOCA_H
 23#		include <alloca.h>
 24#	else
 25#		ifdef _AIX
 26#			pragma alloca
 27#		else
 28#			ifndef alloca	/* predefined by HP cc +Olibcalls */
 29char* alloca();
 30#			endif
 31#		endif
 32#	endif
 33#endif
 34
 35/*	Check for the existence of memcpy. */
 36#if STDC_HEADERS
 37#	include <string.h>
 38#else
 39#	ifndef HAVE_MEMCPY
 40#		define memcpy(d, s, n) bcopy((s), (d), (n))
 41#	endif
 42#endif
 43
 44/*#if defined(FFI_DEBUG) 
 45#include <stdio.h>
 46#endif*/
 47
 48#ifdef FFI_DEBUG
 49#include <stdio.h>
 50
 51/*@exits@*/ void
 52ffi_assert(
 53/*@temp@*/	char*	expr,
 54/*@temp@*/	char*	file,
 55			int		line);
 56void
 57ffi_stop_here(void);
 58void
 59ffi_type_test(
 60/*@temp@*/ /*@out@*/	ffi_type*	a,
 61/*@temp@*/				char*	file,
 62						int		line);
 63
 64#	define FFI_ASSERT(x)			((x) ? (void)0 : ffi_assert(#x, __FILE__,__LINE__))
 65#	define FFI_ASSERT_AT(x, f, l)	((x) ? 0 : ffi_assert(#x, (f), (l)))
 66#	define FFI_ASSERT_VALID_TYPE(x)	ffi_type_test(x, __FILE__, __LINE__)
 67#else
 68#	define FFI_ASSERT(x) 
 69#	define FFI_ASSERT_AT(x, f, l)
 70#	define FFI_ASSERT_VALID_TYPE(x)
 71#endif	// #ifdef FFI_DEBUG
 72
 73#define ALIGN(v, a)	(((size_t)(v) + (a) - 1) & ~((a) - 1))
 74
 75/*	Perform machine dependent cif processing */
 76ffi_status
 77ffi_prep_cif_machdep(
 78	ffi_cif*	cif);
 79
 80/*	Extended cif, used in callback from assembly routine */
 81typedef struct	extended_cif {
 82/*@dependent@*/	ffi_cif*	cif;
 83/*@dependent@*/	void*		rvalue;
 84/*@dependent@*/	void**		avalue;
 85} extended_cif;
 86
 87/*	Terse sized type definitions.  */
 88typedef unsigned int	UINT8	__attribute__((__mode__(__QI__)));
 89typedef signed int		SINT8	__attribute__((__mode__(__QI__)));
 90typedef unsigned int	UINT16	__attribute__((__mode__(__HI__)));
 91typedef signed int		SINT16	__attribute__((__mode__(__HI__)));
 92typedef unsigned int	UINT32	__attribute__((__mode__(__SI__)));
 93typedef signed int		SINT32	__attribute__((__mode__(__SI__)));
 94typedef unsigned int	UINT64	__attribute__((__mode__(__DI__)));
 95typedef signed int		SINT64	__attribute__((__mode__(__DI__)));
 96typedef float			FLOAT32;
 97
 98#ifdef __cplusplus
 99}
100#endif
101
102#endif	// #ifndef FFI_COMMON_H