OSDN Git Service

Merged gcj-eclipse branch to trunk.
[pf3gnuchains/gcc-fork.git] / libjava / gcj / javaprims.h
1 // javaprims.h - Main external header file for libgcj.  -*- c++ -*-
2
3
4 /* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
5    Free Software Foundation
6
7    This file is part of libgcj.
8
9 This software is copyrighted work licensed under the terms of the
10 Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
11 details.  */
12
13 #ifndef __JAVAPRIMS_H__
14 #define __JAVAPRIMS_H__
15
16 // Force C++ compiler to use Java-style exceptions.
17 #pragma GCC java_exceptions
18
19 #include <gcj/libgcj-config.h>
20
21 // FIXME: this is a hack until we get a proper gcjh.
22 // It is needed to work around system header files that define TRUE
23 // and FALSE.
24 #undef TRUE
25 #define TRUE TRUE
26 #undef FALSE
27 #define FALSE FALSE
28
29 // To force selection of correct types that will mangle consistently
30 // across platforms.
31 extern "Java"
32 {
33   typedef __java_byte jbyte;
34   typedef __java_short jshort;
35   typedef __java_int jint;
36   typedef __java_long jlong;
37   typedef __java_float jfloat;
38   typedef __java_double jdouble;
39   typedef __java_char jchar;
40   typedef __java_boolean jboolean;
41   typedef jint jsize;
42
43   // The following class declarations are automatically generated by
44   // the `classes.pl' script.
45   namespace java
46   {
47     namespace io
48     {
49       class BufferedInputStream;
50       class BufferedOutputStream;
51       class BufferedReader;
52       class BufferedWriter;
53       class ByteArrayInputStream;
54       class ByteArrayOutputStream;
55       class CharArrayReader;
56       class CharArrayWriter;
57       class CharConversionException;
58       class Closeable;
59       class DataInput;
60       class DataInputStream;
61       class DataOutput;
62       class DataOutputStream;
63       class DeleteFileHelper;
64       class DeleteFileHelper$1;
65       class EOFException;
66       class Externalizable;
67       class File;
68       class FileDescriptor;
69       class FileFilter;
70       class FileInputStream;
71       class FileNotFoundException;
72       class FileOutputStream;
73       class FilePermission;
74       class FileReader;
75       class FileWriter;
76       class FilenameFilter;
77       class FilterInputStream;
78       class FilterOutputStream;
79       class FilterReader;
80       class FilterWriter;
81       class Flushable;
82       class IOException;
83       class InputStream;
84       class InputStreamReader;
85       class InterruptedIOException;
86       class InvalidClassException;
87       class InvalidObjectException;
88       class LineNumberInputStream;
89       class LineNumberReader;
90       class NotActiveException;
91       class NotSerializableException;
92       class ObjectInput;
93       class ObjectInputStream;
94       class ObjectInputStream$1;
95       class ObjectInputStream$2;
96       class ObjectInputStream$GetField;
97       class ObjectInputStream$ValidatorAndPriority;
98       class ObjectInputValidation;
99       class ObjectOutput;
100       class ObjectOutputStream;
101       class ObjectOutputStream$1;
102       class ObjectOutputStream$PutField;
103       class ObjectStreamClass;
104       class ObjectStreamClass$1;
105       class ObjectStreamClass$2;
106       class ObjectStreamClass$InterfaceComparator;
107       class ObjectStreamClass$MemberComparator;
108       class ObjectStreamConstants;
109       class ObjectStreamException;
110       class ObjectStreamField;
111       class ObjectStreamField$1;
112       class OptionalDataException;
113       class OutputStream;
114       class OutputStreamWriter;
115       class PipedInputStream;
116       class PipedOutputStream;
117       class PipedReader;
118       class PipedWriter;
119       class PrintStream;
120       class PrintWriter;
121       class PushbackInputStream;
122       class PushbackReader;
123       class RandomAccessFile;
124       class Reader;
125       class SequenceInputStream;
126       class Serializable;
127       class SerializablePermission;
128       class StreamCorruptedException;
129       class StreamTokenizer;
130       class StringBufferInputStream;
131       class StringReader;
132       class StringWriter;
133       class SyncFailedException;
134       class UTFDataFormatException;
135       class UnsupportedEncodingException;
136       class VMObjectInputStream;
137       class VMObjectStreamClass;
138       class WriteAbortedException;
139       class Writer;
140     }
141
142     namespace lang
143     {
144       class AbstractMethodError;
145       class Appendable;
146       class ArithmeticException;
147       class ArrayIndexOutOfBoundsException;
148       class ArrayStoreException;
149       class AssertionError;
150       class Boolean;
151       class Byte;
152       class CharSequence;
153       class Character;
154       class Character$Subset;
155       class Character$UnicodeBlock;
156       class Class;
157       class ClassCastException;
158       class ClassCircularityError;
159       class ClassFormatError;
160       class ClassLoader;
161       class ClassLoader$AnnotationsKey;
162       class ClassNotFoundException;
163       class CloneNotSupportedException;
164       class Cloneable;
165       class Comparable;
166       class Compiler;
167       class Deprecated;
168       class Double;
169       class EcosProcess;
170       class Enum;
171       class EnumConstantNotPresentException;
172       class Error;
173       class Exception;
174       class ExceptionInInitializerError;
175       class Float;
176       class IllegalAccessError;
177       class IllegalAccessException;
178       class IllegalArgumentException;
179       class IllegalMonitorStateException;
180       class IllegalStateException;
181       class IllegalThreadStateException;
182       class IncompatibleClassChangeError;
183       class IndexOutOfBoundsException;
184       class InheritableThreadLocal;
185       class InstantiationError;
186       class InstantiationException;
187       class Integer;
188       class InternalError;
189       class InterruptedException;
190       class Iterable;
191       class LinkageError;
192       class Long;
193       class Math;
194       class NegativeArraySizeException;
195       class NoClassDefFoundError;
196       class NoSuchFieldError;
197       class NoSuchFieldException;
198       class NoSuchMethodError;
199       class NoSuchMethodException;
200       class NullPointerException;
201       class Number;
202       class NumberFormatException;
203       class Object;
204       class OutOfMemoryError;
205       class Override;
206       class Package;
207       class PosixProcess;
208       class PosixProcess$EOFInputStream;
209       class PosixProcess$ProcessManager;
210       class Process;
211       class ProcessBuilder;
212       class Readable;
213       class Runnable;
214       class Runtime;
215       class RuntimeException;
216       class RuntimePermission;
217       class SecurityException;
218       class SecurityManager;
219       class SecurityManager$1;
220       class Short;
221       class StackOverflowError;
222       class StackTraceElement;
223       class StrictMath;
224       class String;
225       class String$CaseInsensitiveComparator;
226       class StringBuffer;
227       class StringBuilder;
228       class StringIndexOutOfBoundsException;
229       class SuppressWarnings;
230       class System;
231       class System$EnvironmentCollection;
232       class System$EnvironmentMap;
233       class System$EnvironmentSet;
234       class Thread;
235       class Thread$State;
236       class Thread$UncaughtExceptionHandler;
237       class ThreadDeath;
238       class ThreadGroup;
239       class ThreadLocal;
240       class Throwable;
241       class Throwable$StaticData;
242       class TypeNotPresentException;
243       class UnknownError;
244       class UnsatisfiedLinkError;
245       class UnsupportedClassVersionError;
246       class UnsupportedOperationException;
247       class VMClassLoader;
248       class VMCompiler;
249       class VMDouble;
250       class VMFloat;
251       class VMThrowable;
252       class VerifyError;
253       class VirtualMachineError;
254       class Void;
255       class Win32Process;
256       namespace annotation
257       {
258         class Annotation;
259         class AnnotationFormatError;
260         class AnnotationTypeMismatchException;
261         class Documented;
262         class ElementType;
263         class IncompleteAnnotationException;
264         class Inherited;
265         class Retention;
266         class RetentionPolicy;
267         class Target;
268       }
269
270       namespace instrument
271       {
272         class ClassDefinition;
273         class ClassFileTransformer;
274         class IllegalClassFormatException;
275         class Instrumentation;
276         class UnmodifiableClassException;
277       }
278
279       namespace management
280       {
281         class ClassLoadingMXBean;
282         class CompilationMXBean;
283         class GarbageCollectorMXBean;
284         class ManagementFactory;
285         class ManagementPermission;
286         class MemoryMXBean;
287         class MemoryManagerMXBean;
288         class MemoryNotificationInfo;
289         class MemoryPoolMXBean;
290         class MemoryType;
291         class MemoryUsage;
292         class OperatingSystemMXBean;
293         class RuntimeMXBean;
294         class ThreadInfo;
295         class ThreadMXBean;
296         class VMManagementFactory;
297       }
298
299       namespace ref
300       {
301         class PhantomReference;
302         class Reference;
303         class ReferenceQueue;
304         class SoftReference;
305         class WeakReference;
306       }
307
308       namespace reflect
309       {
310         class AccessibleObject;
311         class AnnotatedElement;
312         class Array;
313         class Constructor;
314         class Field;
315         class GenericArrayType;
316         class GenericDeclaration;
317         class GenericSignatureFormatError;
318         class InvocationHandler;
319         class InvocationTargetException;
320         class MalformedParameterizedTypeException;
321         class Member;
322         class Method;
323         class Modifier;
324         class ParameterizedType;
325         class Proxy;
326         class Proxy$ClassFactory;
327         class Proxy$ProxyData;
328         class Proxy$ProxySignature;
329         class Proxy$ProxyType;
330         class ReflectPermission;
331         class Type;
332         class TypeVariable;
333         class UndeclaredThrowableException;
334         class VMProxy;
335         class WildcardType;
336       }
337     }
338
339     namespace util
340     {
341       class AbstractCollection;
342       class AbstractList;
343       class AbstractList$1;
344       class AbstractList$2;
345       class AbstractList$3;
346       class AbstractList$RandomAccessSubList;
347       class AbstractList$SubList;
348       class AbstractMap;
349       class AbstractMap$1;
350       class AbstractMap$2;
351       class AbstractMap$3;
352       class AbstractMap$4;
353       class AbstractMap$SimpleEntry;
354       class AbstractMap$SimpleImmutableEntry;
355       class AbstractQueue;
356       class AbstractSequentialList;
357       class AbstractSet;
358       class ArrayDeque;
359       class ArrayDeque$DeqIterator;
360       class ArrayDeque$DescendingIterator;
361       class ArrayList;
362       class Arrays;
363       class Arrays$ArrayList;
364       class BitSet;
365       class Calendar;
366       class Collection;
367       class Collections;
368       class Collections$1;
369       class Collections$1$SynchronizedMapEntry;
370       class Collections$2;
371       class Collections$3;
372       class Collections$4;
373       class Collections$5;
374       class Collections$6;
375       class Collections$7;
376       class Collections$8;
377       class Collections$9;
378       class Collections$CheckedCollection;
379       class Collections$CheckedIterator;
380       class Collections$CheckedList;
381       class Collections$CheckedListIterator;
382       class Collections$CheckedMap;
383       class Collections$CheckedMap$CheckedEntrySet;
384       class Collections$CheckedRandomAccessList;
385       class Collections$CheckedSet;
386       class Collections$CheckedSortedMap;
387       class Collections$CheckedSortedSet;
388       class Collections$CopiesList;
389       class Collections$EmptyList;
390       class Collections$EmptyMap;
391       class Collections$EmptySet;
392       class Collections$ReverseComparator;
393       class Collections$SingletonList;
394       class Collections$SingletonMap;
395       class Collections$SingletonSet;
396       class Collections$SynchronizedCollection;
397       class Collections$SynchronizedIterator;
398       class Collections$SynchronizedList;
399       class Collections$SynchronizedListIterator;
400       class Collections$SynchronizedMap;
401       class Collections$SynchronizedRandomAccessList;
402       class Collections$SynchronizedSet;
403       class Collections$SynchronizedSortedMap;
404       class Collections$SynchronizedSortedSet;
405       class Collections$UnmodifiableCollection;
406       class Collections$UnmodifiableIterator;
407       class Collections$UnmodifiableList;
408       class Collections$UnmodifiableListIterator;
409       class Collections$UnmodifiableMap;
410       class Collections$UnmodifiableMap$UnmodifiableEntrySet;
411       class Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableMapEntry;
412       class Collections$UnmodifiableRandomAccessList;
413       class Collections$UnmodifiableSet;
414       class Collections$UnmodifiableSortedMap;
415       class Collections$UnmodifiableSortedSet;
416       class Comparator;
417       class ConcurrentModificationException;
418       class Currency;
419       class Date;
420       class Deque;
421       class Dictionary;
422       class DuplicateFormatFlagsException;
423       class EmptyStackException;
424       class EnumMap;
425       class EnumMap$1;
426       class EnumMap$2;
427       class EnumMap$3;
428       class EnumMap$4;
429       class EnumMap$5;
430       class EnumMap$6;
431       class EnumMap$7;
432       class EnumSet;
433       class EnumSet$1;
434       class Enumeration;
435       class EventListener;
436       class EventListenerProxy;
437       class EventObject;
438       class FormatFlagsConversionMismatchException;
439       class Formattable;
440       class FormattableFlags;
441       class Formatter;
442       class Formatter$BigDecimalLayoutForm;
443       class FormatterClosedException;
444       class GregorianCalendar;
445       class HashMap;
446       class HashMap$1;
447       class HashMap$2;
448       class HashMap$3;
449       class HashMap$HashEntry;
450       class HashMap$HashIterator;
451       class HashSet;
452       class Hashtable;
453       class Hashtable$1;
454       class Hashtable$2;
455       class Hashtable$3;
456       class Hashtable$EntryEnumerator;
457       class Hashtable$EntryIterator;
458       class Hashtable$HashEntry;
459       class Hashtable$KeyEnumerator;
460       class Hashtable$KeyIterator;
461       class Hashtable$ValueEnumerator;
462       class Hashtable$ValueIterator;
463       class IdentityHashMap;
464       class IdentityHashMap$1;
465       class IdentityHashMap$2;
466       class IdentityHashMap$3;
467       class IdentityHashMap$IdentityEntry;
468       class IdentityHashMap$IdentityIterator;
469       class IllegalFormatCodePointException;
470       class IllegalFormatConversionException;
471       class IllegalFormatException;
472       class IllegalFormatFlagsException;
473       class IllegalFormatPrecisionException;
474       class IllegalFormatWidthException;
475       class InputMismatchException;
476       class InvalidPropertiesFormatException;
477       class Iterator;
478       class LinkedHashMap;
479       class LinkedHashMap$1;
480       class LinkedHashMap$LinkedHashEntry;
481       class LinkedHashSet;
482       class LinkedList;
483       class LinkedList$Entry;
484       class LinkedList$LinkedListItr;
485       class List;
486       class ListIterator;
487       class ListResourceBundle;
488       class Locale;
489       class Map;
490       class Map$Entry;
491       class MissingFormatArgumentException;
492       class MissingFormatWidthException;
493       class MissingResourceException;
494       class NavigableMap;
495       class NavigableSet;
496       class NoSuchElementException;
497       class Observable;
498       class Observer;
499       class PriorityQueue;
500       class PriorityQueue$1;
501       class Properties;
502       class PropertyPermission;
503       class PropertyPermissionCollection;
504       class PropertyResourceBundle;
505       class Queue;
506       class Random;
507       class RandomAccess;
508       class ResourceBundle;
509       class ResourceBundle$1;
510       class ResourceBundle$BundleKey;
511       class Set;
512       class SimpleTimeZone;
513       class SortedMap;
514       class SortedSet;
515       class Stack;
516       class StringTokenizer;
517       class TimeZone;
518       class TimeZone$1;
519       class Timer;
520       class Timer$Scheduler;
521       class Timer$TaskQueue;
522       class TimerTask;
523       class TooManyListenersException;
524       class TreeMap;
525       class TreeMap$1;
526       class TreeMap$2;
527       class TreeMap$3;
528       class TreeMap$4;
529       class TreeMap$5;
530       class TreeMap$6;
531       class TreeMap$Node;
532       class TreeMap$SubMap;
533       class TreeMap$TreeIterator;
534       class TreeSet;
535       class UUID;
536       class UnknownFormatConversionException;
537       class UnknownFormatFlagsException;
538       class VMTimeZone;
539       class Vector;
540       class Vector$1;
541       class WeakHashMap;
542       class WeakHashMap$1;
543       class WeakHashMap$2;
544       class WeakHashMap$WeakBucket;
545       class WeakHashMap$WeakBucket$WeakEntry;
546       class WeakHashMap$WeakEntrySet;
547       namespace concurrent
548       {
549         class AbstractExecutorService;
550         class ArrayBlockingQueue;
551         class ArrayBlockingQueue$Itr;
552         class BlockingDeque;
553         class BlockingQueue;
554         class BrokenBarrierException;
555         class Callable;
556         class CancellationException;
557         class CompletionService;
558         class ConcurrentHashMap;
559         class ConcurrentHashMap$EntryIterator;
560         class ConcurrentHashMap$EntrySet;
561         class ConcurrentHashMap$HashEntry;
562         class ConcurrentHashMap$HashIterator;
563         class ConcurrentHashMap$KeyIterator;
564         class ConcurrentHashMap$KeySet;
565         class ConcurrentHashMap$Segment;
566         class ConcurrentHashMap$ValueIterator;
567         class ConcurrentHashMap$Values;
568         class ConcurrentHashMap$WriteThroughEntry;
569         class ConcurrentLinkedQueue;
570         class ConcurrentLinkedQueue$Itr;
571         class ConcurrentLinkedQueue$Node;
572         class ConcurrentMap;
573         class ConcurrentNavigableMap;
574         class ConcurrentSkipListMap;
575         class ConcurrentSkipListMap$ComparableUsingComparator;
576         class ConcurrentSkipListMap$EntryIterator;
577         class ConcurrentSkipListMap$EntrySet;
578         class ConcurrentSkipListMap$HeadIndex;
579         class ConcurrentSkipListMap$Index;
580         class ConcurrentSkipListMap$Iter;
581         class ConcurrentSkipListMap$KeyIterator;
582         class ConcurrentSkipListMap$KeySet;
583         class ConcurrentSkipListMap$Node;
584         class ConcurrentSkipListMap$SubMap;
585         class ConcurrentSkipListMap$SubMap$SubMapEntryIterator;
586         class ConcurrentSkipListMap$SubMap$SubMapIter;
587         class ConcurrentSkipListMap$SubMap$SubMapKeyIterator;
588         class ConcurrentSkipListMap$SubMap$SubMapValueIterator;
589         class ConcurrentSkipListMap$ValueIterator;
590         class ConcurrentSkipListMap$Values;
591         class ConcurrentSkipListSet;
592         class CopyOnWriteArrayList;
593         class CopyOnWriteArraySet;
594         class CountDownLatch;
595         class CountDownLatch$Sync;
596         class CyclicBarrier;
597         class CyclicBarrier$Generation;
598         class DelayQueue;
599         class DelayQueue$Itr;
600         class Delayed;
601         class Exchanger;
602         class Exchanger$Node;
603         class Exchanger$Slot;
604         class ExecutionException;
605         class Executor;
606         class ExecutorCompletionService;
607         class ExecutorCompletionService$QueueingFuture;
608         class ExecutorService;
609         class Executors;
610         class Executors$1;
611         class Executors$2;
612         class Executors$3;
613         class Executors$4;
614         class Executors$5;
615         class Executors$6;
616         class Executors$DefaultThreadFactory;
617         class Executors$DelegatedExecutorService;
618         class Executors$DelegatedScheduledExecutorService;
619         class Executors$FinalizableDelegatedExecutorService;
620         class Executors$PrivilegedCallable;
621         class Executors$PrivilegedCallableUsingCurrentClassLoader;
622         class Executors$PrivilegedThreadFactory;
623         class Executors$RunnableAdapter;
624         class Future;
625         class FutureTask;
626         class FutureTask$Sync;
627         class LinkedBlockingDeque;
628         class LinkedBlockingDeque$AbstractItr;
629         class LinkedBlockingDeque$DescendingItr;
630         class LinkedBlockingDeque$Itr;
631         class LinkedBlockingDeque$Node;
632         class LinkedBlockingQueue;
633         class LinkedBlockingQueue$Itr;
634         class LinkedBlockingQueue$Node;
635         class PriorityBlockingQueue;
636         class PriorityBlockingQueue$Itr;
637         class RejectedExecutionException;
638         class RejectedExecutionHandler;
639         class RunnableFuture;
640         class RunnableScheduledFuture;
641         class ScheduledExecutorService;
642         class ScheduledFuture;
643         class ScheduledThreadPoolExecutor;
644         class ScheduledThreadPoolExecutor$1;
645         class ScheduledThreadPoolExecutor$DelayedWorkQueue;
646         class ScheduledThreadPoolExecutor$ScheduledFutureTask;
647         class Semaphore;
648         class Semaphore$FairSync;
649         class Semaphore$NonfairSync;
650         class Semaphore$Sync;
651         class SynchronousQueue;
652         class SynchronousQueue$EmptyIterator;
653         class SynchronousQueue$FifoWaitQueue;
654         class SynchronousQueue$LifoWaitQueue;
655         class SynchronousQueue$TransferQueue;
656         class SynchronousQueue$TransferQueue$QNode;
657         class SynchronousQueue$TransferStack;
658         class SynchronousQueue$TransferStack$SNode;
659         class SynchronousQueue$Transferer;
660         class SynchronousQueue$WaitQueue;
661         class ThreadFactory;
662         class ThreadPoolExecutor;
663         class ThreadPoolExecutor$AbortPolicy;
664         class ThreadPoolExecutor$CallerRunsPolicy;
665         class ThreadPoolExecutor$DiscardOldestPolicy;
666         class ThreadPoolExecutor$DiscardPolicy;
667         class ThreadPoolExecutor$Worker;
668         class TimeUnit;
669         class TimeUnit$1;
670         class TimeUnit$2;
671         class TimeUnit$3;
672         class TimeUnit$4;
673         class TimeUnit$5;
674         class TimeUnit$6;
675         class TimeUnit$7;
676         class TimeoutException;
677         namespace atomic
678         {
679           class AtomicBoolean;
680           class AtomicInteger;
681           class AtomicIntegerArray;
682           class AtomicIntegerFieldUpdater;
683           class AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;
684           class AtomicLong;
685           class AtomicLongArray;
686           class AtomicLongFieldUpdater;
687           class AtomicLongFieldUpdater$CASUpdater;
688           class AtomicLongFieldUpdater$LockedUpdater;
689           class AtomicMarkableReference;
690           class AtomicMarkableReference$ReferenceBooleanPair;
691           class AtomicReference;
692           class AtomicReferenceArray;
693           class AtomicReferenceFieldUpdater;
694           class AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;
695           class AtomicStampedReference;
696           class AtomicStampedReference$ReferenceIntegerPair;
697         }
698
699         namespace locks
700         {
701           class AbstractOwnableSynchronizer;
702           class AbstractQueuedLongSynchronizer;
703           class AbstractQueuedLongSynchronizer$ConditionObject;
704           class AbstractQueuedLongSynchronizer$Node;
705           class AbstractQueuedSynchronizer;
706           class AbstractQueuedSynchronizer$ConditionObject;
707           class AbstractQueuedSynchronizer$Node;
708           class Condition;
709           class Lock;
710           class LockSupport;
711           class ReadWriteLock;
712           class ReentrantLock;
713           class ReentrantLock$FairSync;
714           class ReentrantLock$NonfairSync;
715           class ReentrantLock$Sync;
716           class ReentrantReadWriteLock;
717           class ReentrantReadWriteLock$FairSync;
718           class ReentrantReadWriteLock$NonfairSync;
719           class ReentrantReadWriteLock$ReadLock;
720           class ReentrantReadWriteLock$Sync;
721           class ReentrantReadWriteLock$Sync$HoldCounter;
722           class ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;
723           class ReentrantReadWriteLock$WriteLock;
724         }
725       }
726
727       namespace jar
728       {
729         class Attributes;
730         class Attributes$Name;
731         class JarEntry;
732         class JarException;
733         class JarFile;
734         class JarFile$EntryInputStream;
735         class JarFile$JarEnumeration;
736         class JarInputStream;
737         class JarOutputStream;
738         class Manifest;
739       }
740
741       namespace logging
742       {
743         class ConsoleHandler;
744         class ErrorManager;
745         class FileHandler;
746         class FileHandler$ostr;
747         class Filter;
748         class Formatter;
749         class Handler;
750         class Level;
751         class LogManager;
752         class LogManager$1;
753         class LogRecord;
754         class Logger;
755         class Logger$1;
756         class LoggingMXBean;
757         class LoggingPermission;
758         class MemoryHandler;
759         class SimpleFormatter;
760         class SocketHandler;
761         class StreamHandler;
762         class XMLFormatter;
763       }
764
765       namespace prefs
766       {
767         class AbstractPreferences;
768         class AbstractPreferences$1;
769         class AbstractPreferences$2;
770         class BackingStoreException;
771         class InvalidPreferencesFormatException;
772         class NodeChangeEvent;
773         class NodeChangeListener;
774         class PreferenceChangeEvent;
775         class PreferenceChangeListener;
776         class Preferences;
777         class Preferences$1;
778         class PreferencesFactory;
779       }
780
781       namespace regex
782       {
783         class MatchResult;
784         class Matcher;
785         class Pattern;
786         class PatternSyntaxException;
787       }
788
789       namespace zip
790       {
791         class Adler32;
792         class CRC32;
793         class CheckedInputStream;
794         class CheckedOutputStream;
795         class Checksum;
796         class DataFormatException;
797         class Deflater;
798         class DeflaterOutputStream;
799         class GZIPInputStream;
800         class GZIPOutputStream;
801         class Inflater;
802         class InflaterInputStream;
803         class ZipConstants;
804         class ZipEntry;
805         class ZipException;
806         class ZipFile;
807         class ZipFile$1;
808         class ZipFile$PartialInputStream;
809         class ZipFile$ZipEntryEnumeration;
810         class ZipInputStream;
811         class ZipOutputStream;
812       }
813     }
814   }
815 }
816   
817 typedef struct java::lang::Object* jobject;
818 typedef class java::lang::Class* jclass;
819 typedef class java::lang::Throwable* jthrowable;
820 typedef class java::lang::String* jstring;
821 struct _Jv_JNIEnv;
822
823 typedef struct _Jv_Field *jfieldID;
824 typedef struct _Jv_Method *jmethodID;
825
826 extern "C" jobject _Jv_AllocObject (jclass) __attribute__((__malloc__));
827 extern "C" jobject _Jv_AllocObjectNoFinalizer (jclass) __attribute__((__malloc__));
828 extern "C" jobject _Jv_AllocObjectNoInitNoFinalizer (jclass) __attribute__((__malloc__));
829 #ifdef JV_HASH_SYNCHRONIZATION
830   extern "C" jobject _Jv_AllocPtrFreeObject (jclass)
831                             __attribute__((__malloc__));
832 #else
833   // Collector still needs to scan sync_info
834   static inline jobject _Jv_AllocPtrFreeObject (jclass klass)
835   {
836     return _Jv_AllocObject(klass);
837   }
838 #endif
839 extern "C" jboolean _Jv_IsInstanceOf(jobject, jclass);
840 extern "C" jstring _Jv_AllocString(jsize) __attribute__((__malloc__));
841 extern "C" jstring _Jv_NewString (const jchar*, jsize)
842   __attribute__((__malloc__));
843 extern jint _Jv_FormatInt (jchar* bufend, jint num);
844 extern "C" jchar* _Jv_GetStringChars (jstring str);
845 extern "C" void _Jv_MonitorEnter (jobject);
846 extern "C" void _Jv_MonitorExit (jobject);
847 extern "C" jstring _Jv_NewStringUTF (const char *bytes)
848   __attribute__((__malloc__));
849 extern "C" jstring _Jv_NewStringLatin1(const char*, jsize)
850   __attribute__((__malloc__));
851 extern "C" jsize _Jv_GetStringUTFLength (jstring);
852 extern "C" jsize _Jv_GetStringUTFRegion (jstring, jsize, jsize, char *);
853 extern "C" jint _Jv_hashUtf8String (const char*, int);
854 extern bool _Jv_is_proxy (void *pc);
855
856 struct _Jv_VMOption
857 {
858   // a VM initialization option
859   char* optionString;
860   // extra information associated with this option
861   void* extraInfo;
862 };
863
864 struct _Jv_VMInitArgs
865 {
866   // for compatibility with JavaVMInitArgs
867   jint version;
868
869   // number of VM initialization options
870   jint nOptions;
871
872   // an array of VM initialization options
873   struct _Jv_VMOption* options;
874
875   // true if the option parser should ignore unrecognized options
876   jboolean ignoreUnrecognized;
877 };
878
879 extern jint _Jv_CreateJavaVM (struct _Jv_VMInitArgs*);
880
881 void
882 _Jv_ThreadRun (java::lang::Thread* thread);
883 jint
884 _Jv_AttachCurrentThread(java::lang::Thread* thread);
885 extern "C" java::lang::Thread*
886 _Jv_AttachCurrentThread(jstring name, java::lang::ThreadGroup* group);
887 extern "C" java::lang::Thread*
888 _Jv_AttachCurrentThreadAsDaemon(jstring name, java::lang::ThreadGroup* group);
889 extern "C" jint _Jv_DetachCurrentThread (void);
890
891 extern "C" void _Jv_Throw (jthrowable) __attribute__ ((__noreturn__));
892 extern "C" void* _Jv_Malloc (jsize) __attribute__((__malloc__));
893 extern "C" void* _Jv_Realloc (void *, jsize);
894 extern "C" void _Jv_Free (void*);
895 extern void (*_Jv_RegisterClassHook) (jclass cl);
896 extern "C" void _Jv_RegisterClassHookDefault (jclass);
897
898 typedef unsigned short _Jv_ushort __attribute__((__mode__(__HI__)));
899 typedef unsigned int _Jv_uint __attribute__((__mode__(__SI__)));
900 typedef unsigned int _Jv_ulong __attribute__((__mode__(__DI__)));
901
902 // The type to use when treating a pointer as an integer.  Similar to
903 // uintptr_t in C99.
904 typedef unsigned int _Jv_uintptr_t __attribute__((__mode__(__pointer__)));
905
906 class _Jv_Utf8Const
907 {
908   _Jv_ushort hash;
909   _Jv_ushort length;    /* In bytes, of data portion, without final '\0'. */
910   char data[1];         /* In Utf8 format, with final '\0'. */
911  public:
912   /** Return same value of java.lang.String's hashCode. */
913   jint hash32() { return _Jv_hashUtf8String(data, length); }
914   /** Return a hash code that has at least 16 bits of information. */
915   _Jv_ushort hash16 () { return hash; }
916   /** Return a hash code that has at least 8 bits of information. */
917   _Jv_ushort hash8 () { return hash; }
918   /** Length in bytes of the UTF8-encoding. */
919   _Jv_ushort len () const { return length; }
920   /** Pointer to the first byte in the NUL-terminated UTF8-encoding. */
921   char* chars() { return data; }
922   /** Pointer to the NUL byte that terminated the UTF8-encoding. */
923   char* limit() { return data+length; }
924   /** Return the first byte in the UTF8-encoding. */
925   char first() const { return data[0]; }
926   /** Create a (non-interned) java.lang.String from this UTF8Const. */
927   jstring toString() { return _Jv_NewStringUTF(data); }
928   /** Given an UTF8 string, how many bytes needed for a UTF8Const,
929       including struct header, and final NUL.  I.e. what to pas to malloc. */
930   static int space_needed (const char *, int len)
931   { return sizeof (_Jv_Utf8Const) + len + 1; }
932   /** Given an allocated _Jv_Utf8Const, copy / fill it in. */
933   void init (const char *s, int len);
934   friend jboolean _Jv_equalUtf8Consts (const _Jv_Utf8Const*, const _Jv_Utf8Const *);
935   friend jboolean _Jv_equal (_Jv_Utf8Const*, jstring, jint);
936   friend jboolean _Jv_equaln (_Jv_Utf8Const*, jstring, jint);
937   friend jboolean _Jv_equalUtf8Classnames (const _Jv_Utf8Const*,
938                                              const _Jv_Utf8Const*);
939   friend jboolean _Jv_isPrimitiveOrDerived (const _Jv_Utf8Const*);
940   friend _Jv_Utf8Const *_Jv_makeUtf8Const (const char*, int);
941   friend _Jv_Utf8Const *_Jv_makeUtf8Const (jstring);
942   friend jstring _Jv_NewStringUtf8Const (_Jv_Utf8Const*);
943 };
944
945
946 #endif /* __JAVAPRIMS_H__ */