2 // This file describes the Cygnus Native Interface, CNI.
3 // It provides a nicer interface to many of the things in javaprims.h.
5 /* Copyright (C) 1998, 1999 Cygnus Solutions
7 This file is part of libgcj.
9 This software is copyrighted work licensed under the terms of the
10 Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
13 #ifndef __JAVA_CNI_H__
14 #define __JAVA_CNI_H__
16 #include <java/lang/Object.h>
17 #include <java/lang/Class.h>
19 #include <java-threads.h>
20 #include <java-array.h>
23 JvAllocObject (jclass cls)
25 return _Jv_AllocObject (cls, cls->size());
29 JvAllocObject (jclass cls, jsize sz)
31 return _Jv_AllocObject (cls, sz);
34 extern "C" jstring _Jv_NewStringUTF (const char *bytes);
35 extern "C" void _Jv_InitClass (jclass);
38 JvInitClass (jclass cls)
40 return _Jv_InitClass (cls);
44 JvAllocString (jsize sz)
46 return _Jv_AllocString (sz);
50 JvNewString (const jchar *chars, jsize len)
52 return _Jv_NewString (chars, len);
56 JvNewStringLatin1 (const char *bytes, jsize len)
58 return _Jv_NewStringLatin1 (bytes, len);
62 JvNewStringLatin1 (const char *bytes)
64 return _Jv_NewStringLatin1 (bytes, strlen (bytes));
68 _Jv_GetStringChars (jstring str)
70 return (jchar*)((char*) str->data + str->boffset);
74 JvGetStringChars (jstring str)
76 return _Jv_GetStringChars (str);
80 JvGetStringUTFLength (jstring string)
82 return _Jv_GetStringUTFLength (string);
86 JvGetStringUTFRegion (jstring str, jsize start, jsize len, char *buf)
88 return _Jv_GetStringUTFRegion (str, start, len, buf);
92 JvNewStringUTF (const char *bytes)
94 return _Jv_NewStringUTF (bytes);
97 extern class _Jv_PrimClass _Jv_byteClass, _Jv_shortClass, _Jv_intClass,
98 _Jv_longClass, _Jv_booleanClass, _Jv_charClass, _Jv_floatClass,
99 _Jv_doubleClass, _Jv_voidClass;
100 #define JvPrimClass(TYPE) ((jclass) & _Jv_##TYPE##Class)
107 JvSynchronize (const jobject &o) : obj (o)
108 { _Jv_MonitorEnter (obj); }
110 { _Jv_MonitorExit (obj); }
113 // Throw some exception.
114 extern void JvThrow (jobject obj) __attribute__ ((__noreturn__));
116 JvThrow (jobject obj)
118 _Jv_Throw ((void *) obj);
121 /* Call malloc, but throw exception if insufficient memory. */
123 JvMalloc (jsize size)
125 return _Jv_Malloc (size);
131 return _Jv_Free (ptr);
133 #endif /* __JAVA_CNI_H__ */