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