1 // javaprims.h - Main external header file for libgcj. -*- c++ -*-
4 /* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
5 Free Software Foundation
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 __JAVAPRIMS_H__
14 #define __JAVAPRIMS_H__
16 // Force C++ compiler to use Java-style exceptions.
17 #pragma GCC java_exceptions
19 #include <gcj/libgcj-config.h>
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
29 // To force selection of correct types that will mangle consistently
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
;
43 // The following class declarations are automatically generated by
44 // the `classes.pl' script.
49 class BufferedInputStream
;
50 class BufferedOutputStream
;
53 class ByteArrayInputStream
;
54 class ByteArrayOutputStream
;
55 class CharArrayReader
;
56 class CharArrayWriter
;
57 class CharConversionException
;
60 class DataInputStream
;
62 class DataOutputStream
;
63 class DeleteFileHelper
;
64 class DeleteFileHelper$
1;
70 class FileInputStream
;
71 class FileNotFoundException
;
72 class FileOutputStream
;
77 class FilterInputStream
;
78 class FilterOutputStream
;
84 class InputStreamReader
;
85 class InterruptedIOException
;
86 class InvalidClassException
;
87 class InvalidObjectException
;
88 class LineNumberInputStream
;
89 class LineNumberReader
;
90 class NotActiveException
;
91 class NotSerializableException
;
93 class ObjectInputStream
;
94 class ObjectInputStream$
1;
95 class ObjectInputStream$
2;
96 class ObjectInputStream$GetField
;
97 class ObjectInputStream$ValidatorAndPriority
;
98 class ObjectInputValidation
;
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
;
114 class OutputStreamWriter
;
115 class PipedInputStream
;
116 class PipedOutputStream
;
121 class PushbackInputStream
;
122 class PushbackReader
;
123 class RandomAccessFile
;
125 class SequenceInputStream
;
127 class SerializablePermission
;
128 class StreamCorruptedException
;
129 class StreamTokenizer
;
130 class StringBufferInputStream
;
133 class SyncFailedException
;
134 class UTFDataFormatException
;
135 class UnsupportedEncodingException
;
136 class VMObjectInputStream
;
137 class VMObjectStreamClass
;
138 class WriteAbortedException
;
144 class AbstractMethodError
;
146 class ArithmeticException
;
147 class ArrayIndexOutOfBoundsException
;
148 class ArrayStoreException
;
149 class AssertionError
;
154 class Character$Subset
;
155 class Character$UnicodeBlock
;
156 class Character$UnicodeBlock$NameType
;
159 class ClassCastException
;
160 class ClassCircularityError
;
161 class ClassFormatError
;
163 class ClassLoader$AnnotationsKey
;
164 class ClassNotFoundException
;
165 class CloneNotSupportedException
;
173 class EnumConstantNotPresentException
;
176 class ExceptionInInitializerError
;
178 class IllegalAccessError
;
179 class IllegalAccessException
;
180 class IllegalArgumentException
;
181 class IllegalMonitorStateException
;
182 class IllegalStateException
;
183 class IllegalThreadStateException
;
184 class IncompatibleClassChangeError
;
185 class IndexOutOfBoundsException
;
186 class InheritableThreadLocal
;
187 class InstantiationError
;
188 class InstantiationException
;
191 class InterruptedException
;
196 class NegativeArraySizeException
;
197 class NoClassDefFoundError
;
198 class NoSuchFieldError
;
199 class NoSuchFieldException
;
200 class NoSuchMethodError
;
201 class NoSuchMethodException
;
202 class NullPointerException
;
204 class NumberFormatException
;
206 class OutOfMemoryError
;
210 class PosixProcess$EOFInputStream
;
211 class PosixProcess$ProcessManager
;
213 class ProcessBuilder
;
217 class RuntimeException
;
218 class RuntimePermission
;
219 class SecurityException
;
220 class SecurityManager
;
221 class SecurityManager$
1;
223 class StackOverflowError
;
224 class StackTraceElement
;
227 class String$CaseInsensitiveComparator
;
230 class StringIndexOutOfBoundsException
;
231 class SuppressWarnings
;
233 class System$EnvironmentCollection
;
234 class System$EnvironmentMap
;
235 class System$EnvironmentSet
;
238 class Thread$UncaughtExceptionHandler
;
243 class Throwable$StaticData
;
244 class TypeNotPresentException
;
246 class UnsatisfiedLinkError
;
247 class UnsupportedClassVersionError
;
248 class UnsupportedOperationException
;
256 class VirtualMachineError
;
259 class Win32Process$EOFInputStream
;
263 class AnnotationFormatError
;
264 class AnnotationTypeMismatchException
;
267 class IncompleteAnnotationException
;
270 class RetentionPolicy
;
276 class ClassDefinition
;
277 class ClassFileTransformer
;
278 class IllegalClassFormatException
;
279 class Instrumentation
;
280 class UnmodifiableClassException
;
285 class ClassLoadingMXBean
;
286 class CompilationMXBean
;
287 class GarbageCollectorMXBean
;
289 class ManagementFactory
;
290 class ManagementFactory$ManagementInvocationHandler
;
291 class ManagementPermission
;
293 class MemoryManagerMXBean
;
294 class MemoryNotificationInfo
;
295 class MemoryPoolMXBean
;
299 class OperatingSystemMXBean
;
303 class VMManagementFactory
;
308 class PhantomReference
;
310 class ReferenceQueue
;
317 class AccessibleObject
;
318 class AnnotatedElement
;
322 class GenericArrayType
;
323 class GenericDeclaration
;
324 class GenericSignatureFormatError
;
325 class InvocationHandler
;
326 class InvocationTargetException
;
327 class MalformedParameterizedTypeException
;
331 class ParameterizedType
;
333 class Proxy$ClassFactory
;
334 class Proxy$ProxyData
;
335 class Proxy$ProxySignature
;
336 class Proxy$ProxyType
;
337 class ReflectPermission
;
340 class UndeclaredThrowableException
;
348 class AbstractCollection
;
350 class AbstractList$
1;
351 class AbstractList$
2;
352 class AbstractList$
3;
353 class AbstractList$RandomAccessSubList
;
354 class AbstractList$SubList
;
360 class AbstractMap$SimpleEntry
;
361 class AbstractMap$SimpleImmutableEntry
;
363 class AbstractSequentialList
;
366 class ArrayDeque$DeqIterator
;
367 class ArrayDeque$DescendingIterator
;
370 class Arrays$ArrayList
;
376 class Collections$
1$SynchronizedMapEntry
;
385 class Collections$CheckedCollection
;
386 class Collections$CheckedIterator
;
387 class Collections$CheckedList
;
388 class Collections$CheckedListIterator
;
389 class Collections$CheckedMap
;
390 class Collections$CheckedMap$CheckedEntrySet
;
391 class Collections$CheckedRandomAccessList
;
392 class Collections$CheckedSet
;
393 class Collections$CheckedSortedMap
;
394 class Collections$CheckedSortedSet
;
395 class Collections$CopiesList
;
396 class Collections$EmptyList
;
397 class Collections$EmptyMap
;
398 class Collections$EmptySet
;
399 class Collections$LIFOQueue
;
400 class Collections$MapSet
;
401 class Collections$ReverseComparator
;
402 class Collections$SingletonList
;
403 class Collections$SingletonMap
;
404 class Collections$SingletonSet
;
405 class Collections$SynchronizedCollection
;
406 class Collections$SynchronizedIterator
;
407 class Collections$SynchronizedList
;
408 class Collections$SynchronizedListIterator
;
409 class Collections$SynchronizedMap
;
410 class Collections$SynchronizedRandomAccessList
;
411 class Collections$SynchronizedSet
;
412 class Collections$SynchronizedSortedMap
;
413 class Collections$SynchronizedSortedSet
;
414 class Collections$UnmodifiableCollection
;
415 class Collections$UnmodifiableIterator
;
416 class Collections$UnmodifiableList
;
417 class Collections$UnmodifiableListIterator
;
418 class Collections$UnmodifiableMap
;
419 class Collections$UnmodifiableMap$UnmodifiableEntrySet
;
420 class Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableMapEntry
;
421 class Collections$UnmodifiableRandomAccessList
;
422 class Collections$UnmodifiableSet
;
423 class Collections$UnmodifiableSortedMap
;
424 class Collections$UnmodifiableSortedSet
;
426 class ConcurrentModificationException
;
431 class DuplicateFormatFlagsException
;
432 class EmptyStackException
;
445 class EventListenerProxy
;
447 class FormatFlagsConversionMismatchException
;
449 class FormattableFlags
;
451 class Formatter$BigDecimalLayoutForm
;
452 class FormatterClosedException
;
453 class GregorianCalendar
;
458 class HashMap$HashEntry
;
459 class HashMap$HashIterator
;
465 class Hashtable$EntryEnumerator
;
466 class Hashtable$EntryIterator
;
467 class Hashtable$HashEntry
;
468 class Hashtable$KeyEnumerator
;
469 class Hashtable$KeyIterator
;
470 class Hashtable$ValueEnumerator
;
471 class Hashtable$ValueIterator
;
472 class IdentityHashMap
;
473 class IdentityHashMap$
1;
474 class IdentityHashMap$
2;
475 class IdentityHashMap$
3;
476 class IdentityHashMap$IdentityEntry
;
477 class IdentityHashMap$IdentityIterator
;
478 class IllegalFormatCodePointException
;
479 class IllegalFormatConversionException
;
480 class IllegalFormatException
;
481 class IllegalFormatFlagsException
;
482 class IllegalFormatPrecisionException
;
483 class IllegalFormatWidthException
;
484 class InputMismatchException
;
485 class InvalidPropertiesFormatException
;
488 class LinkedHashMap$
1;
489 class LinkedHashMap$LinkedHashEntry
;
493 class LinkedList$Entry
;
494 class LinkedList$LinkedListItr
;
497 class ListResourceBundle
;
501 class MissingFormatArgumentException
;
502 class MissingFormatWidthException
;
503 class MissingResourceException
;
506 class NoSuchElementException
;
510 class PriorityQueue$
1;
512 class PropertyPermission
;
513 class PropertyPermissionCollection
;
514 class PropertyResourceBundle
;
518 class ResourceBundle
;
519 class ResourceBundle$
1;
520 class ResourceBundle$BundleKey
;
521 class ServiceConfigurationError
;
523 class ServiceLoader$
1;
525 class SimpleTimeZone
;
529 class StringTokenizer
;
533 class Timer$Scheduler
;
534 class Timer$TaskQueue
;
536 class TooManyListenersException
;
545 class TreeMap$DescendingMap
;
546 class TreeMap$DescendingSet
;
547 class TreeMap$EntrySet
;
548 class TreeMap$KeySet
;
549 class TreeMap$NavigableEntrySet
;
550 class TreeMap$NavigableKeySet
;
552 class TreeMap$SubMap
;
553 class TreeMap$SubMap$EntrySet
;
554 class TreeMap$SubMap$KeySet
;
555 class TreeMap$SubMap$NavigableEntrySet
;
556 class TreeMap$SubMap$NavigableKeySet
;
557 class TreeMap$TreeIterator
;
560 class UnknownFormatConversionException
;
561 class UnknownFormatFlagsException
;
568 class WeakHashMap$WeakBucket
;
569 class WeakHashMap$WeakBucket$WeakEntry
;
570 class WeakHashMap$WeakEntrySet
;
573 class AbstractExecutorService
;
574 class ArrayBlockingQueue
;
575 class ArrayBlockingQueue$Itr
;
578 class BrokenBarrierException
;
580 class CancellationException
;
581 class CompletionService
;
582 class ConcurrentHashMap
;
583 class ConcurrentHashMap$EntryIterator
;
584 class ConcurrentHashMap$EntrySet
;
585 class ConcurrentHashMap$HashEntry
;
586 class ConcurrentHashMap$HashIterator
;
587 class ConcurrentHashMap$KeyIterator
;
588 class ConcurrentHashMap$KeySet
;
589 class ConcurrentHashMap$Segment
;
590 class ConcurrentHashMap$ValueIterator
;
591 class ConcurrentHashMap$Values
;
592 class ConcurrentHashMap$WriteThroughEntry
;
593 class ConcurrentLinkedQueue
;
594 class ConcurrentLinkedQueue$Itr
;
595 class ConcurrentLinkedQueue$Node
;
597 class ConcurrentNavigableMap
;
598 class ConcurrentSkipListMap
;
599 class ConcurrentSkipListMap$ComparableUsingComparator
;
600 class ConcurrentSkipListMap$EntryIterator
;
601 class ConcurrentSkipListMap$EntrySet
;
602 class ConcurrentSkipListMap$HeadIndex
;
603 class ConcurrentSkipListMap$Index
;
604 class ConcurrentSkipListMap$Iter
;
605 class ConcurrentSkipListMap$KeyIterator
;
606 class ConcurrentSkipListMap$KeySet
;
607 class ConcurrentSkipListMap$Node
;
608 class ConcurrentSkipListMap$SubMap
;
609 class ConcurrentSkipListMap$SubMap$SubMapEntryIterator
;
610 class ConcurrentSkipListMap$SubMap$SubMapIter
;
611 class ConcurrentSkipListMap$SubMap$SubMapKeyIterator
;
612 class ConcurrentSkipListMap$SubMap$SubMapValueIterator
;
613 class ConcurrentSkipListMap$ValueIterator
;
614 class ConcurrentSkipListMap$Values
;
615 class ConcurrentSkipListSet
;
616 class CopyOnWriteArrayList
;
617 class CopyOnWriteArraySet
;
618 class CountDownLatch
;
619 class CountDownLatch$Sync
;
621 class CyclicBarrier$Generation
;
623 class DelayQueue$Itr
;
626 class Exchanger$Node
;
627 class Exchanger$Slot
;
628 class ExecutionException
;
630 class ExecutorCompletionService
;
631 class ExecutorCompletionService$QueueingFuture
;
632 class ExecutorService
;
640 class Executors$DefaultThreadFactory
;
641 class Executors$DelegatedExecutorService
;
642 class Executors$DelegatedScheduledExecutorService
;
643 class Executors$FinalizableDelegatedExecutorService
;
644 class Executors$PrivilegedCallable
;
645 class Executors$PrivilegedCallableUsingCurrentClassLoader
;
646 class Executors$PrivilegedThreadFactory
;
647 class Executors$RunnableAdapter
;
650 class FutureTask$Sync
;
651 class LinkedBlockingDeque
;
652 class LinkedBlockingDeque$AbstractItr
;
653 class LinkedBlockingDeque$DescendingItr
;
654 class LinkedBlockingDeque$Itr
;
655 class LinkedBlockingDeque$Node
;
656 class LinkedBlockingQueue
;
657 class LinkedBlockingQueue$Itr
;
658 class LinkedBlockingQueue$Node
;
659 class PriorityBlockingQueue
;
660 class PriorityBlockingQueue$Itr
;
661 class RejectedExecutionException
;
662 class RejectedExecutionHandler
;
663 class RunnableFuture
;
664 class RunnableScheduledFuture
;
665 class ScheduledExecutorService
;
666 class ScheduledFuture
;
667 class ScheduledThreadPoolExecutor
;
668 class ScheduledThreadPoolExecutor$
1;
669 class ScheduledThreadPoolExecutor$DelayedWorkQueue
;
670 class ScheduledThreadPoolExecutor$ScheduledFutureTask
;
672 class Semaphore$FairSync
;
673 class Semaphore$NonfairSync
;
674 class Semaphore$Sync
;
675 class SynchronousQueue
;
676 class SynchronousQueue$EmptyIterator
;
677 class SynchronousQueue$FifoWaitQueue
;
678 class SynchronousQueue$LifoWaitQueue
;
679 class SynchronousQueue$TransferQueue
;
680 class SynchronousQueue$TransferQueue$QNode
;
681 class SynchronousQueue$TransferStack
;
682 class SynchronousQueue$TransferStack$SNode
;
683 class SynchronousQueue$Transferer
;
684 class SynchronousQueue$WaitQueue
;
686 class ThreadPoolExecutor
;
687 class ThreadPoolExecutor$AbortPolicy
;
688 class ThreadPoolExecutor$CallerRunsPolicy
;
689 class ThreadPoolExecutor$DiscardOldestPolicy
;
690 class ThreadPoolExecutor$DiscardPolicy
;
691 class ThreadPoolExecutor$Worker
;
700 class TimeoutException
;
705 class AtomicIntegerArray
;
706 class AtomicIntegerFieldUpdater
;
707 class AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl
;
709 class AtomicLongArray
;
710 class AtomicLongFieldUpdater
;
711 class AtomicLongFieldUpdater$CASUpdater
;
712 class AtomicLongFieldUpdater$LockedUpdater
;
713 class AtomicMarkableReference
;
714 class AtomicMarkableReference$ReferenceBooleanPair
;
715 class AtomicReference
;
716 class AtomicReferenceArray
;
717 class AtomicReferenceFieldUpdater
;
718 class AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl
;
719 class AtomicStampedReference
;
720 class AtomicStampedReference$ReferenceIntegerPair
;
725 class AbstractOwnableSynchronizer
;
726 class AbstractQueuedLongSynchronizer
;
727 class AbstractQueuedLongSynchronizer$ConditionObject
;
728 class AbstractQueuedLongSynchronizer$Node
;
729 class AbstractQueuedSynchronizer
;
730 class AbstractQueuedSynchronizer$ConditionObject
;
731 class AbstractQueuedSynchronizer$Node
;
737 class ReentrantLock$FairSync
;
738 class ReentrantLock$NonfairSync
;
739 class ReentrantLock$Sync
;
740 class ReentrantReadWriteLock
;
741 class ReentrantReadWriteLock$FairSync
;
742 class ReentrantReadWriteLock$NonfairSync
;
743 class ReentrantReadWriteLock$ReadLock
;
744 class ReentrantReadWriteLock$Sync
;
745 class ReentrantReadWriteLock$Sync$HoldCounter
;
746 class ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter
;
747 class ReentrantReadWriteLock$WriteLock
;
754 class Attributes$Name
;
758 class JarFile$EntryInputStream
;
759 class JarFile$JarEnumeration
;
760 class JarInputStream
;
761 class JarOutputStream
;
767 class ConsoleHandler
;
770 class FileHandler$ostr
;
781 class LoggingPermission
;
783 class SimpleFormatter
;
791 class AbstractPreferences
;
792 class AbstractPreferences$
1;
793 class AbstractPreferences$
2;
794 class BackingStoreException
;
795 class InvalidPreferencesFormatException
;
796 class NodeChangeEvent
;
797 class NodeChangeListener
;
798 class PreferenceChangeEvent
;
799 class PreferenceChangeListener
;
802 class PreferencesFactory
;
810 class PatternSyntaxException
;
815 class CurrencyNameProvider
;
816 class LocaleNameProvider
;
817 class LocaleServiceProvider
;
818 class TimeZoneNameProvider
;
825 class CheckedInputStream
;
826 class CheckedOutputStream
;
828 class DataFormatException
;
830 class DeflaterOutputStream
;
831 class GZIPInputStream
;
832 class GZIPOutputStream
;
834 class InflaterInputStream
;
840 class ZipFile$PartialInputStream
;
841 class ZipFile$ZipEntryEnumeration
;
842 class ZipInputStream
;
843 class ZipOutputStream
;
849 typedef struct java::lang::Object
* jobject
;
850 typedef class java::lang::Class
* jclass
;
851 typedef class java::lang::Throwable
* jthrowable
;
852 typedef class java::lang::String
* jstring
;
855 typedef struct _Jv_Field
*jfieldID
;
856 typedef struct _Jv_Method
*jmethodID
;
858 extern "C" jobject
_Jv_AllocObject (jclass
) __attribute__((__malloc__
));
859 extern "C" jobject
_Jv_AllocObjectNoFinalizer (jclass
) __attribute__((__malloc__
));
860 extern "C" jobject
_Jv_AllocObjectNoInitNoFinalizer (jclass
) __attribute__((__malloc__
));
861 #ifdef JV_HASH_SYNCHRONIZATION
862 extern "C" jobject
_Jv_AllocPtrFreeObject (jclass
)
863 __attribute__((__malloc__
));
865 // Collector still needs to scan sync_info
866 static inline jobject
_Jv_AllocPtrFreeObject (jclass klass
)
868 return _Jv_AllocObject(klass
);
871 extern "C" jboolean
_Jv_IsInstanceOf(jobject
, jclass
);
872 extern "C" jstring
_Jv_AllocString(jsize
) __attribute__((__malloc__
));
873 extern "C" jstring
_Jv_NewString (const jchar
*, jsize
)
874 __attribute__((__malloc__
));
875 extern jint
_Jv_FormatInt (jchar
* bufend
, jint num
);
876 extern "C" jchar
* _Jv_GetStringChars (jstring str
);
877 extern "C" void _Jv_MonitorEnter (jobject
);
878 extern "C" void _Jv_MonitorExit (jobject
);
879 extern "C" jstring
_Jv_NewStringUTF (const char *bytes
)
880 __attribute__((__malloc__
));
881 extern "C" jstring
_Jv_NewStringLatin1(const char*, jsize
)
882 __attribute__((__malloc__
));
883 extern "C" jsize
_Jv_GetStringUTFLength (jstring
);
884 extern "C" jsize
_Jv_GetStringUTFRegion (jstring
, jsize
, jsize
, char *);
885 extern "C" jint
_Jv_hashUtf8String (const char*, int);
886 extern bool _Jv_is_proxy (void *pc
);
890 // a VM initialization option
892 // extra information associated with this option
896 struct _Jv_VMInitArgs
898 // for compatibility with JavaVMInitArgs
901 // number of VM initialization options
904 // an array of VM initialization options
905 struct _Jv_VMOption
* options
;
907 // true if the option parser should ignore unrecognized options
908 jboolean ignoreUnrecognized
;
911 extern jint
_Jv_CreateJavaVM (struct _Jv_VMInitArgs
*);
914 _Jv_ThreadRun (java::lang::Thread
* thread
);
916 _Jv_AttachCurrentThread(java::lang::Thread
* thread
);
917 extern "C" java::lang::Thread
*
918 _Jv_AttachCurrentThread(jstring name
, java::lang::ThreadGroup
* group
);
919 extern "C" java::lang::Thread
*
920 _Jv_AttachCurrentThreadAsDaemon(jstring name
, java::lang::ThreadGroup
* group
);
921 extern "C" jint
_Jv_DetachCurrentThread (void);
923 extern "C" void _Jv_Throw (jthrowable
) __attribute__ ((__noreturn__
));
924 extern "C" void* _Jv_Malloc (jsize
) __attribute__((__malloc__
));
925 extern "C" void* _Jv_Realloc (void *, jsize
);
926 extern "C" void _Jv_Free (void*);
927 extern void (*_Jv_RegisterClassHook
) (jclass cl
);
928 extern "C" void _Jv_RegisterClassHookDefault (jclass
);
930 typedef unsigned short _Jv_ushort
__attribute__((__mode__(__HI__
)));
931 typedef unsigned int _Jv_uint
__attribute__((__mode__(__SI__
)));
932 typedef unsigned int _Jv_ulong
__attribute__((__mode__(__DI__
)));
934 // The type to use when treating a pointer as an integer. Similar to
936 typedef unsigned int _Jv_uintptr_t
__attribute__((__mode__(__pointer__
)));
941 _Jv_ushort length
; /* In bytes, of data portion, without final '\0'. */
942 char data
[1]; /* In Utf8 format, with final '\0'. */
944 /** Return same value of java.lang.String's hashCode. */
945 jint
hash32() { return _Jv_hashUtf8String(data
, length
); }
946 /** Return a hash code that has at least 16 bits of information. */
947 _Jv_ushort
hash16 () { return hash
; }
948 /** Return a hash code that has at least 8 bits of information. */
949 _Jv_ushort
hash8 () { return hash
; }
950 /** Length in bytes of the UTF8-encoding. */
951 _Jv_ushort
len () const { return length
; }
952 /** Pointer to the first byte in the NUL-terminated UTF8-encoding. */
953 char* chars() { return data
; }
954 /** Pointer to the NUL byte that terminated the UTF8-encoding. */
955 char* limit() { return data
+length
; }
956 /** Return the first byte in the UTF8-encoding. */
957 char first() const { return data
[0]; }
958 /** Create a (non-interned) java.lang.String from this UTF8Const. */
959 jstring
toString() { return _Jv_NewStringUTF(data
); }
960 /** Given an UTF8 string, how many bytes needed for a UTF8Const,
961 including struct header, and final NUL. I.e. what to pas to malloc. */
962 static int space_needed (const char *, int len
)
963 { return sizeof (_Jv_Utf8Const
) + len
+ 1; }
964 /** Given an allocated _Jv_Utf8Const, copy / fill it in. */
965 void init (const char *s
, int len
);
966 friend jboolean
_Jv_equalUtf8Consts (const _Jv_Utf8Const
*, const _Jv_Utf8Const
*);
967 friend jboolean
_Jv_equal (_Jv_Utf8Const
*, jstring
, jint
);
968 friend jboolean
_Jv_equaln (_Jv_Utf8Const
*, jstring
, jint
);
969 friend jboolean
_Jv_equalUtf8Classnames (const _Jv_Utf8Const
*,
970 const _Jv_Utf8Const
*);
971 friend jboolean
_Jv_isPrimitiveOrDerived (const _Jv_Utf8Const
*);
972 friend _Jv_Utf8Const
*_Jv_makeUtf8Const (const char*, int);
973 friend _Jv_Utf8Const
*_Jv_makeUtf8Const (jstring
);
974 friend jstring
_Jv_NewStringUtf8Const (_Jv_Utf8Const
*);
978 #endif /* __JAVAPRIMS_H__ */