mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			166 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			166 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C
		
	
	
	
/* jni_md.h
 | 
						|
   Copyright (C) 2001, 2005, 2007, 2010, 2011 Free Software Foundation, Inc.
 | 
						|
 | 
						|
This file is part of GNU Classpath.
 | 
						|
 | 
						|
GNU Classpath is free software; you can redistribute it and/or modify
 | 
						|
it under the terms of the GNU General Public License as published by
 | 
						|
the Free Software Foundation; either version 2, or (at your option)
 | 
						|
any later version.
 | 
						|
 
 | 
						|
GNU Classpath is distributed in the hope that it will be useful, but
 | 
						|
WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
						|
General Public License for more details.
 | 
						|
 | 
						|
You should have received a copy of the GNU General Public License
 | 
						|
along with GNU Classpath; see the file COPYING.  If not, write to the
 | 
						|
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 | 
						|
02110-1301 USA.
 | 
						|
 | 
						|
As a special exception, if you link this library with other files to
 | 
						|
produce an executable, this library does not by itself cause the
 | 
						|
resulting executable to be covered by the GNU General Public License.
 | 
						|
This exception does not however invalidate any other reasons why the
 | 
						|
executable file might be covered by the GNU General Public License. */
 | 
						|
 | 
						|
#ifndef __GCJ_JNI_MD_H__
 | 
						|
#define __GCJ_JNI_MD_H__
 | 
						|
 | 
						|
#include <gcj/libgcj-config.h>
 | 
						|
 | 
						|
#ifdef __GCJ_JNI_IMPL__
 | 
						|
 | 
						|
/* If __GCJ_JNI_IMPL__ is defined, then we assume that we're building
 | 
						|
   libgcj itself, and we include headers which taint the namespace
 | 
						|
   more than is acceptable for the ordinary JNI user.  */
 | 
						|
#include <gcj/javaprims.h>
 | 
						|
#include <gcj/array.h>
 | 
						|
#include <gnu/gcj/runtime/JNIWeakRef.h>
 | 
						|
 | 
						|
typedef gnu::gcj::runtime::JNIWeakRef *jweak;
 | 
						|
 | 
						|
typedef struct _Jv_JNIEnv JNIEnv;
 | 
						|
typedef struct _Jv_JavaVM JavaVM;
 | 
						|
 | 
						|
#define JNI_TRUE true
 | 
						|
#define JNI_FALSE false
 | 
						|
 | 
						|
/* We defined jobject and friends, so don't redefine them in jni.h.  */
 | 
						|
#define _CLASSPATH_VM_JNI_TYPES_DEFINED
 | 
						|
 | 
						|
/* We defined jmethodID and and jfieldID, so don't redefine them in
 | 
						|
   jni.h.  */
 | 
						|
#define _CLASSPATH_VM_INTERNAL_TYPES_DEFINED
 | 
						|
 | 
						|
/* Contents of the JNIEnv; but only inside the implementation.  */
 | 
						|
#define _CLASSPATH_JNIENV_CONTENTS					\
 | 
						|
  /* The current exception.  */						\
 | 
						|
  jthrowable ex;							\
 | 
						|
									\
 | 
						|
  /* The chain of local frames.  */					\
 | 
						|
  struct _Jv_JNI_LocalFrame *locals;					\
 | 
						|
									\
 | 
						|
  /* The bottom-most element of the chain, initialized with the env and	\
 | 
						|
     reused between non-nesting JNI calls.  */				\
 | 
						|
  struct _Jv_JNI_LocalFrame *bottom_locals;
 | 
						|
 | 
						|
/*  JNI calling convention.  Also defined in javaprims.h. */
 | 
						|
#ifndef JNICALL
 | 
						|
#if (defined (_WIN32) || defined (__WIN32__) || defined (WIN32)) \
 | 
						|
    && !defined (_WIN64)
 | 
						|
  #define JNICALL __stdcall
 | 
						|
 #else
 | 
						|
  #define JNICALL
 | 
						|
 #endif
 | 
						|
#endif
 | 
						|
 | 
						|
#else /* __GCJ_JNI_IMPL__ */
 | 
						|
 | 
						|
# ifdef __GNUC__
 | 
						|
 | 
						|
/* If we're using gcc, we can use a platform-independent scheme to get
 | 
						|
   the right integer types.  FIXME: this is not always correct, for
 | 
						|
   instance on the c4x it will be wrong -- it depends on whether
 | 
						|
   QImode is 8 bits.  */
 | 
						|
typedef int    jbyte  __attribute__((__mode__(__QI__)));
 | 
						|
typedef int    jshort __attribute__((__mode__(__HI__)));
 | 
						|
typedef int    jint   __attribute__((__mode__(__SI__)));
 | 
						|
typedef int    jlong  __attribute__((__mode__(__DI__)));
 | 
						|
typedef unsigned int   jboolean __attribute__((__mode__(__QI__)));
 | 
						|
typedef unsigned short jchar __attribute__((__mode__(__HI__)));
 | 
						|
typedef float  jfloat;
 | 
						|
typedef double jdouble;
 | 
						|
typedef jint jsize;
 | 
						|
 | 
						|
# else /* __GNUC__ */
 | 
						|
 | 
						|
#  ifdef JV_HAVE_INTTYPES_H
 | 
						|
 | 
						|
/* If <inttypes.h> is available, we use it.  */
 | 
						|
 | 
						|
#   include <inttypes.h>
 | 
						|
 | 
						|
typedef int8_t jbyte;
 | 
						|
typedef int16_t jshort;
 | 
						|
typedef int32_t jint;
 | 
						|
typedef int64_t jlong;
 | 
						|
typedef float jfloat;
 | 
						|
typedef double jdouble;
 | 
						|
typedef jint jsize;
 | 
						|
typedef uint8_t jboolean;
 | 
						|
typedef uint16_t jchar;
 | 
						|
 | 
						|
#  else /* JV_HAVE_INTTYPES_H */
 | 
						|
 | 
						|
/* For now, we require either gcc or <inttypes.h>.  If we did more
 | 
						|
   work at configure time we could get around this, but right now it
 | 
						|
   doesn't seem worth it.  */
 | 
						|
#   error jni.h not ported to this platform
 | 
						|
 | 
						|
#  endif /* JV_HAVE_INTTYPES_H */
 | 
						|
 | 
						|
# endif /* __GNUC__ */
 | 
						|
 | 
						|
#endif /* __GCJ_JNI_IMPL__ */
 | 
						|
 | 
						|
 | 
						|
/* Linkage and calling conventions. */
 | 
						|
#if (defined (_WIN32) || defined (__WIN32__) || defined (WIN32)) \
 | 
						|
    && !defined (_WIN64)
 | 
						|
 | 
						|
#define JNIIMPORT        __declspec(dllimport)
 | 
						|
#define JNIEXPORT        __declspec(dllexport)
 | 
						|
 | 
						|
#ifndef JNICALL
 | 
						|
#define JNICALL __stdcall
 | 
						|
#endif
 | 
						|
 | 
						|
#else /* !( _WIN32 || __WIN32__ || WIN32) || _WIN64 */
 | 
						|
 | 
						|
#define JNIIMPORT
 | 
						|
#if defined(__GNUC__) && __GNUC__ > 3
 | 
						|
#define JNIEXPORT __attribute__ ((visibility("default")))
 | 
						|
#else
 | 
						|
#define JNIEXPORT
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef JNICALL
 | 
						|
#define JNICALL
 | 
						|
#endif
 | 
						|
 | 
						|
#endif /* !( _WIN32 || __WIN32__ || WIN32) || _WIN64 */
 | 
						|
 | 
						|
/* These defines apply to symbols in libgcj */
 | 
						|
#ifdef __GCJ_DLL__
 | 
						|
# ifdef __GCJ_JNI_IMPL__
 | 
						|
#  define _CLASSPATH_JNIIMPEXP JNIEXPORT
 | 
						|
# else
 | 
						|
#  define _CLASSPATH_JNIIMPEXP JNIIMPORT
 | 
						|
# endif /* ! __GCJ_JNI_IMPL__ */
 | 
						|
#else /* ! __GCJ_DLL__ */
 | 
						|
# define _CLASSPATH_JNIIMPEXP
 | 
						|
#endif /*  __GCJ_DLL__ */
 | 
						|
 | 
						|
#endif /* __GCJ_JNI_MD_H__ */
 |