OSDN Git Service

libstdc++/13823
[pf3gnuchains/gcc-fork.git] / libjava / gcj / javaprims.h
1 // javaprims.h - Main external header file for libgcj.  -*- c++ -*-
2
3 /* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003  Free Software Foundation
4
5    This file is part of libgcj.
6
7 This software is copyrighted work licensed under the terms of the
8 Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
9 details.  */
10
11 #ifndef __JAVAPRIMS_H__
12 #define __JAVAPRIMS_H__
13
14 // Force C++ compiler to use Java-style exceptions.
15 #pragma GCC java_exceptions
16
17 #include <gcj/libgcj-config.h>
18
19 // FIXME: this is a hack until we get a proper gcjh.
20 // It is needed to work around system header files that define TRUE
21 // and FALSE.
22 #undef TRUE
23 #define TRUE TRUE
24 #undef FALSE
25 #define FALSE FALSE
26
27 // To force selection of correct types that will mangle consistently
28 // across platforms.
29 extern "Java"
30 {
31   typedef __java_byte jbyte;
32   typedef __java_short jshort;
33   typedef __java_int jint;
34   typedef __java_long jlong;
35   typedef __java_float jfloat;
36   typedef __java_double jdouble;
37   typedef __java_char jchar;
38   typedef __java_boolean jboolean;
39   typedef jint jsize;
40
41   // The following class declarations are automatically generated by
42   // the `classes.pl' script.
43   namespace java
44   {
45     namespace io
46     {
47       class BufferedInputStream;
48       class BufferedOutputStream;
49       class BufferedReader;
50       class BufferedWriter;
51       class ByteArrayInputStream;
52       class ByteArrayOutputStream;
53       class CharArrayReader;
54       class CharArrayWriter;
55       class CharConversionException;
56       class DataInput;
57       class DataInputStream;
58       class DataOutput;
59       class DataOutputStream;
60       class EOFException;
61       class Externalizable;
62       class File;
63       class FileDescriptor;
64       class FileFilter;
65       class FileInputStream;
66       class FileNotFoundException;
67       class FileOutputStream;
68       class FilePermission;
69       class FileReader;
70       class FileWriter;
71       class FilenameFilter;
72       class FilterInputStream;
73       class FilterOutputStream;
74       class FilterReader;
75       class FilterWriter;
76       class IOException;
77       class InputStream;
78       class InputStreamReader;
79       class InterfaceComparator;
80       class InterruptedIOException;
81       class InvalidClassException;
82       class InvalidObjectException;
83       class LineNumberInputStream;
84       class LineNumberReader;
85       class MemberComparator;
86       class NotActiveException;
87       class NotSerializableException;
88       class ObjectInput;
89       class ObjectInputStream;
90       class ObjectInputStream$GetField;
91       class ObjectInputValidation;
92       class ObjectOutput;
93       class ObjectOutputStream;
94       class ObjectOutputStream$PutField;
95       class ObjectStreamClass;
96       class ObjectStreamConstants;
97       class ObjectStreamException;
98       class ObjectStreamField;
99       class OptionalDataException;
100       class OutputStream;
101       class OutputStreamWriter;
102       class PipedInputStream;
103       class PipedOutputStream;
104       class PipedReader;
105       class PipedWriter;
106       class PrintStream;
107       class PrintWriter;
108       class PushbackInputStream;
109       class PushbackReader;
110       class RandomAccessFile;
111       class Reader;
112       class SequenceInputStream;
113       class Serializable;
114       class SerializablePermission;
115       class StreamCorruptedException;
116       class StreamTokenizer;
117       class StringBufferInputStream;
118       class StringReader;
119       class StringWriter;
120       class SyncFailedException;
121       class UTFDataFormatException;
122       class UnsupportedEncodingException;
123       class VMObjectStreamClass;
124       class ValidatorAndPriority;
125       class WriteAbortedException;
126       class Writer;
127     }
128
129     namespace lang
130     {
131       class AbstractMethodError;
132       class ArithmeticException;
133       class ArrayIndexOutOfBoundsException;
134       class ArrayStoreException;
135       class AssertionError;
136       class Boolean;
137       class Byte;
138       class CharSequence;
139       class Character;
140       class Character$Subset;
141       class Character$UnicodeBlock;
142       class Class;
143       class ClassCastException;
144       class ClassCircularityError;
145       class ClassFormatError;
146       class ClassLoader;
147       class ClassNotFoundException;
148       class CloneNotSupportedException;
149       class Cloneable;
150       class Comparable;
151       class Compiler;
152       class ConcreteProcess;
153       class Double;
154       class Error;
155       class Exception;
156       class ExceptionInInitializerError;
157       class Float;
158       class IllegalAccessError;
159       class IllegalAccessException;
160       class IllegalArgumentException;
161       class IllegalMonitorStateException;
162       class IllegalStateException;
163       class IllegalThreadStateException;
164       class IncompatibleClassChangeError;
165       class IndexOutOfBoundsException;
166       class InheritableThreadLocal;
167       class InstantiationError;
168       class InstantiationException;
169       class Integer;
170       class InternalError;
171       class InterruptedException;
172       class LinkageError;
173       class Long;
174       class Math;
175       class NegativeArraySizeException;
176       class NoClassDefFoundError;
177       class NoSuchFieldError;
178       class NoSuchFieldException;
179       class NoSuchMethodError;
180       class NoSuchMethodException;
181       class NullPointerException;
182       class Number;
183       class NumberFormatException;
184       class Object;
185       class OutOfMemoryError;
186       class Package;
187       class Process;
188       class Runnable;
189       class Runtime;
190       class RuntimeException;
191       class RuntimePermission;
192       class SecurityContext;
193       class SecurityException;
194       class SecurityManager;
195       class Short;
196       class StackOverflowError;
197       class StackTraceElement;
198       class StrictMath;
199       class String;
200       class String$CaseInsensitiveComparator;
201       class StringBuffer;
202       class StringIndexOutOfBoundsException;
203       class System;
204       class Thread;
205       class ThreadDeath;
206       class ThreadGroup;
207       class ThreadLocal;
208       class Throwable;
209       class UnknownError;
210       class UnsatisfiedLinkError;
211       class UnsupportedClassVersionError;
212       class UnsupportedOperationException;
213       class VMClassLoader;
214       class VMSecurityManager;
215       class VMThrowable;
216       class VerifyError;
217       class VirtualMachineError;
218       class Void;
219       namespace ref
220       {
221         class PhantomReference;
222         class Reference;
223         class ReferenceQueue;
224         class SoftReference;
225         class WeakReference;
226       }
227
228       namespace reflect
229       {
230         class AccessibleObject;
231         class Array;
232         class Constructor;
233         class Field;
234         class InvocationHandler;
235         class InvocationTargetException;
236         class Member;
237         class Method;
238         class Modifier;
239         class Proxy;
240         class Proxy$ClassFactory;
241         class Proxy$ProxyData;
242         class Proxy$ProxySignature;
243         class Proxy$ProxyType;
244         class ReflectPermission;
245         class UndeclaredThrowableException;
246       }
247     }
248
249     namespace util
250     {
251       class AbstractCollection;
252       class AbstractList;
253       class AbstractMap;
254       class AbstractMap$BasicMapEntry;
255       class AbstractSequentialList;
256       class AbstractSet;
257       class ArrayList;
258       class Arrays;
259       class Arrays$ArrayList;
260       class BitSet;
261       class Calendar;
262       class Collection;
263       class Collections;
264       class Collections$CopiesList;
265       class Collections$EmptyList;
266       class Collections$EmptyMap;
267       class Collections$EmptySet;
268       class Collections$ReverseComparator;
269       class Collections$SingletonList;
270       class Collections$SingletonMap;
271       class Collections$SingletonSet;
272       class Collections$SynchronizedCollection;
273       class Collections$SynchronizedIterator;
274       class Collections$SynchronizedList;
275       class Collections$SynchronizedListIterator;
276       class Collections$SynchronizedMap;
277       class Collections$SynchronizedMapEntry;
278       class Collections$SynchronizedRandomAccessList;
279       class Collections$SynchronizedSet;
280       class Collections$SynchronizedSortedMap;
281       class Collections$SynchronizedSortedSet;
282       class Collections$UnmodifiableCollection;
283       class Collections$UnmodifiableEntrySet;
284       class Collections$UnmodifiableIterator;
285       class Collections$UnmodifiableList;
286       class Collections$UnmodifiableListIterator;
287       class Collections$UnmodifiableMap;
288       class Collections$UnmodifiableRandomAccessList;
289       class Collections$UnmodifiableSet;
290       class Collections$UnmodifiableSortedMap;
291       class Collections$UnmodifiableSortedSet;
292       class Comparator;
293       class ConcurrentModificationException;
294       class Currency;
295       class Date;
296       class Dictionary;
297       class EmptyStackException;
298       class Enumeration;
299       class EventListener;
300       class EventListenerProxy;
301       class EventObject;
302       class GregorianCalendar;
303       class HashMap;
304       class HashMap$HashEntry;
305       class HashMap$HashIterator;
306       class HashSet;
307       class Hashtable;
308       class Hashtable$Enumerator;
309       class Hashtable$HashEntry;
310       class Hashtable$HashIterator;
311       class IdentityHashMap;
312       class IdentityHashMap$IdentityEntry;
313       class IdentityHashMap$IdentityIterator;
314       class Iterator;
315       class LinkedHashMap;
316       class LinkedHashMap$LinkedHashEntry;
317       class LinkedHashSet;
318       class LinkedList;
319       class LinkedList$Entry;
320       class LinkedList$LinkedListItr;
321       class List;
322       class ListIterator;
323       class ListResourceBundle;
324       class Locale;
325       class Map;
326       class Map$Entry;
327       class Map$Map;
328       class MissingResourceException;
329       class MyResources;
330       class NoSuchElementException;
331       class Observable;
332       class Observer;
333       class Properties;
334       class PropertyPermission;
335       class PropertyPermissionCollection;
336       class PropertyResourceBundle;
337       class Random;
338       class RandomAccess;
339       class RandomAccessSubList;
340       class ResourceBundle;
341       class Set;
342       class SimpleTimeZone;
343       class SortedMap;
344       class SortedSet;
345       class Stack;
346       class StringTokenizer;
347       class SubList;
348       class TimeZone;
349       class Timer;
350       class Timer$Scheduler;
351       class Timer$TaskQueue;
352       class TimerTask;
353       class TooManyListenersException;
354       class TreeMap;
355       class TreeMap$Node;
356       class TreeMap$SubMap;
357       class TreeMap$TreeIterator;
358       class TreeSet;
359       class Vector;
360       class WeakHashMap;
361       class WeakHashMap$WeakBucket;
362       class WeakHashMap$WeakEntry;
363       class WeakHashMap$WeakEntrySet;
364       namespace jar
365       {
366         class Attributes;
367         class Attributes$Name;
368         class JarEntry;
369         class JarException;
370         class JarFile;
371         class JarFile$JarEnumeration;
372         class JarInputStream;
373         class JarOutputStream;
374         class Manifest;
375       }
376
377       namespace logging
378       {
379         class ConsoleHandler;
380         class ErrorManager;
381         class FileHandler;
382         class Filter;
383         class Formatter;
384         class Handler;
385         class Level;
386         class LogManager;
387         class LogRecord;
388         class Logger;
389         class LoggingPermission;
390         class MemoryHandler;
391         class SimpleFormatter;
392         class SocketHandler;
393         class StreamHandler;
394         class XMLFormatter;
395       }
396
397       namespace prefs
398       {
399         class AbstractPreferences;
400         class BackingStoreException;
401         class InvalidPreferencesFormatException;
402         class NodeChangeEvent;
403         class NodeChangeListener;
404         class PreferenceChangeEvent;
405         class PreferenceChangeListener;
406         class Preferences;
407         class PreferencesFactory;
408       }
409
410       namespace regex
411       {
412         class Matcher;
413         class Pattern;
414         class PatternSyntaxException;
415       }
416
417       namespace zip
418       {
419         class Adler32;
420         class CRC32;
421         class CheckedInputStream;
422         class CheckedOutputStream;
423         class Checksum;
424         class DataFormatException;
425         class Deflater;
426         class DeflaterOutputStream;
427         class GZIPInputStream;
428         class GZIPOutputStream;
429         class Inflater;
430         class InflaterInputStream;
431         class ZipConstants;
432         class ZipEntry;
433         class ZipException;
434         class ZipFile;
435         class ZipFile$PartialInputStream;
436         class ZipFile$ZipEntryEnumeration;
437         class ZipInputStream;
438         class ZipOutputStream;
439       }
440     }
441   }
442 }
443   
444 typedef struct java::lang::Object* jobject;
445 typedef class java::lang::Class* jclass;
446 typedef class java::lang::Throwable* jthrowable;
447 typedef class java::lang::String* jstring;
448 struct _Jv_JNIEnv;
449
450 typedef struct _Jv_Field *jfieldID;
451 typedef struct _Jv_Method *jmethodID;
452
453 extern "C" jobject _Jv_AllocObject (jclass, jint) __attribute__((__malloc__));
454 extern "C" jobject _Jv_AllocObjectNoFinalizer (jclass, jint) __attribute__((__malloc__));
455 extern "C" jobject _Jv_AllocObjectNoInitNoFinalizer (jclass, jint) __attribute__((__malloc__));
456 #ifdef JV_HASH_SYNCHRONIZATION
457   extern "C" jobject _Jv_AllocPtrFreeObject (jclass, jint)
458                             __attribute__((__malloc__));
459 #else
460   // Collector still needs to scan sync_info
461   static inline jobject _Jv_AllocPtrFreeObject (jclass klass, jint sz)
462   {
463     return _Jv_AllocObject(klass, sz);
464   }
465 #endif
466 extern "C" jboolean _Jv_IsInstanceOf(jobject, jclass);
467 extern "C" jstring _Jv_AllocString(jsize) __attribute__((__malloc__));
468 extern "C" jstring _Jv_NewString (const jchar*, jsize)
469   __attribute__((__malloc__));
470 extern jint _Jv_FormatInt (jchar* bufend, jint num);
471 extern "C" jchar* _Jv_GetStringChars (jstring str);
472 extern "C" void _Jv_MonitorEnter (jobject);
473 extern "C" void _Jv_MonitorExit (jobject);
474 extern "C" jstring _Jv_NewStringLatin1(const char*, jsize)
475   __attribute__((__malloc__));
476 extern "C" jsize _Jv_GetStringUTFLength (jstring);
477 extern "C" jsize _Jv_GetStringUTFRegion (jstring, jsize, jsize, char *);
478
479 extern jint _Jv_CreateJavaVM (void* /*vm_args*/);
480
481 void
482 _Jv_ThreadRun (java::lang::Thread* thread);
483 jint
484 _Jv_AttachCurrentThread(java::lang::Thread* thread);
485 extern "C" java::lang::Thread*
486 _Jv_AttachCurrentThread(jstring name, java::lang::ThreadGroup* group);
487 extern "C" java::lang::Thread*
488 _Jv_AttachCurrentThreadAsDaemon(jstring name, java::lang::ThreadGroup* group);
489 extern "C" jint _Jv_DetachCurrentThread (void);
490
491 extern "C" void _Jv_Throw (jthrowable) __attribute__ ((__noreturn__));
492 extern "C" void* _Jv_Malloc (jsize) __attribute__((__malloc__));
493 extern "C" void* _Jv_Realloc (void *, jsize);
494 extern "C" void _Jv_Free (void*);
495 extern void (*_Jv_RegisterClassHook) (jclass cl);
496 extern "C" void _Jv_RegisterClassHookDefault (jclass);
497
498 typedef unsigned short _Jv_ushort __attribute__((__mode__(__HI__)));
499 typedef unsigned int _Jv_uint __attribute__((__mode__(__SI__)));
500 typedef unsigned int _Jv_ulong __attribute__((__mode__(__DI__)));
501
502 struct _Jv_Utf8Const
503 {
504   _Jv_ushort hash;
505   _Jv_ushort length;    /* In bytes, of data portion, without final '\0'. */
506   char data[1];         /* In Utf8 format, with final '\0'. */
507 };
508
509
510 #endif /* __JAVAPRIMS_H__ */