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