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 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__ */
 |