X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fvm%2Futf8.h;h=761d65d3bdc0366edff4fac3ea03a575e29396e8;hb=083e777c06a7c98e62fe3170125975b17459260a;hp=61ab9123199ef9bc32d2b84f6f9978bbe895261d;hpb=1a3df94c555636877d7981df850544b96d1288c1;p=cacao.git diff --git a/src/vm/utf8.h b/src/vm/utf8.h index 61ab91231..761d65d3b 100644 --- a/src/vm/utf8.h +++ b/src/vm/utf8.h @@ -1,9 +1,7 @@ -/* src/vm/utf.h - utf string header +/* src/vm/utf8.h - utf8 string functions - Copyright (C) 1996-2005, 2006 R. Grafl, A. Krall, C. Kruegel, - C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring, - E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, - J. Wenninger, Institut f. Computersprachen - TU Wien + Copyright (C) 1996-2005, 2006, 2007, 2008 + CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO This file is part of CACAO. @@ -22,28 +20,20 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - Contact: cacao@cacaojvm.org - - Authors: Christian Thalinger - - Changes: - - $Id: utf8.h 4518 2006-02-14 15:34:50Z edwin $ - */ #ifndef _UTF_H #define _UTF_H -#include - - /* forward typedefs ***********************************************************/ typedef struct utf utf; #include "config.h" + +#include + #include "vm/types.h" #include "vm/global.h" @@ -68,29 +58,62 @@ extern utf *utf_java_lang_Object; extern utf *utf_java_lang_Class; extern utf *utf_java_lang_ClassLoader; +extern utf *utf_java_lang_ClassLoader_NativeLibrary; extern utf *utf_java_lang_Cloneable; extern utf *utf_java_lang_SecurityManager; extern utf *utf_java_lang_String; -extern utf *utf_java_lang_System; extern utf *utf_java_lang_ThreadGroup; +extern utf *utf_java_lang_ref_SoftReference; +extern utf *utf_java_lang_ref_WeakReference; +extern utf *utf_java_lang_ref_PhantomReference; extern utf *utf_java_io_Serializable; extern utf *utf_java_lang_Throwable; -extern utf *utf_java_lang_VMThrowable; extern utf *utf_java_lang_Error; -extern utf *utf_java_lang_NoClassDefFoundError; + +extern utf *utf_java_lang_AbstractMethodError; +extern utf *utf_java_lang_ClassCircularityError; +extern utf *utf_java_lang_ClassFormatError; +extern utf *utf_java_lang_ExceptionInInitializerError; +extern utf *utf_java_lang_IncompatibleClassChangeError; +extern utf *utf_java_lang_InstantiationError; +extern utf *utf_java_lang_InternalError; extern utf *utf_java_lang_LinkageError; +extern utf *utf_java_lang_NoClassDefFoundError; +extern utf *utf_java_lang_NoSuchFieldError; extern utf *utf_java_lang_NoSuchMethodError; extern utf *utf_java_lang_OutOfMemoryError; +extern utf *utf_java_lang_UnsatisfiedLinkError; +extern utf *utf_java_lang_UnsupportedClassVersionError; +extern utf *utf_java_lang_VerifyError; +extern utf *utf_java_lang_VirtualMachineError; extern utf *utf_java_lang_Exception; + +extern utf *utf_java_lang_ArithmeticException; +extern utf *utf_java_lang_ArrayIndexOutOfBoundsException; +extern utf *utf_java_lang_ArrayStoreException; +extern utf *utf_java_lang_ClassCastException; extern utf *utf_java_lang_ClassNotFoundException; +extern utf *utf_java_lang_CloneNotSupportedException; +extern utf *utf_java_lang_IllegalAccessException; extern utf *utf_java_lang_IllegalArgumentException; extern utf *utf_java_lang_IllegalMonitorStateException; - +extern utf *utf_java_lang_InstantiationException; +extern utf *utf_java_lang_InterruptedException; +extern utf *utf_java_lang_NegativeArraySizeException; extern utf *utf_java_lang_NullPointerException; +extern utf *utf_java_lang_RuntimeException; +extern utf *utf_java_lang_StringIndexOutOfBoundsException; + +extern utf *utf_java_lang_reflect_InvocationTargetException; +extern utf *utf_java_security_PrivilegedActionException; + +#if defined(ENABLE_JAVASE) extern utf* utf_java_lang_Void; +#endif + extern utf* utf_java_lang_Boolean; extern utf* utf_java_lang_Byte; extern utf* utf_java_lang_Character; @@ -100,12 +123,20 @@ extern utf* utf_java_lang_Long; extern utf* utf_java_lang_Float; extern utf* utf_java_lang_Double; +#if defined(ENABLE_JAVASE) extern utf *utf_java_lang_StackTraceElement; extern utf *utf_java_lang_reflect_Constructor; extern utf *utf_java_lang_reflect_Field; extern utf *utf_java_lang_reflect_Method; -extern utf *utf_java_util_Vector; +# if defined(WITH_JAVA_RUNTIME_LIBRARY_GNU_CLASSPATH) +extern utf *utf_java_lang_reflect_VMConstructor; +extern utf *utf_java_lang_reflect_VMField; +extern utf *utf_java_lang_reflect_VMMethod; +# endif + +extern utf *utf_java_util_Vector; +#endif extern utf *utf_InnerClasses; extern utf *utf_ConstantValue; @@ -114,23 +145,52 @@ extern utf *utf_Exceptions; extern utf *utf_LineNumberTable; extern utf *utf_SourceFile; +#if defined(ENABLE_JAVASE) +extern utf *utf_EnclosingMethod; +extern utf *utf_Signature; +extern utf *utf_StackMapTable; + +# if defined(ENABLE_JVMTI) +extern utf *utf_LocalVariableTable; +# endif + +# if defined(ENABLE_ANNOTATIONS) +extern utf *utf_RuntimeVisibleAnnotations; +extern utf *utf_RuntimeInvisibleAnnotations; +extern utf *utf_RuntimeVisibleParameterAnnotations; +extern utf *utf_RuntimeInvisibleParameterAnnotations; +extern utf *utf_AnnotationDefault; +# endif +#endif + extern utf *utf_init; extern utf *utf_clinit; extern utf *utf_clone; extern utf *utf_finalize; +extern utf *utf_invoke; +extern utf *utf_main; extern utf *utf_run; extern utf *utf_add; +extern utf *utf_dispatch; extern utf *utf_remove; +extern utf *utf_addThread; +extern utf *utf_removeThread; extern utf *utf_put; extern utf *utf_get; +extern utf *utf_uncaughtException; extern utf *utf_value; extern utf *utf_fillInStackTrace; +extern utf *utf_findNative; extern utf *utf_getSystemClassLoader; +extern utf *utf_initCause; extern utf *utf_loadClass; +extern utf *utf_loadClassInternal; extern utf *utf_printStackTrace; +extern utf *utf_division_by_zero; + extern utf *utf_Z; extern utf *utf_B; extern utf *utf_C; @@ -153,20 +213,30 @@ extern utf *utf_double__void; extern utf *utf_void__java_lang_ClassLoader; extern utf *utf_void__java_lang_Object; extern utf *utf_void__java_lang_Throwable; +extern utf *utf_java_lang_ClassLoader_java_lang_String__J; +extern utf *utf_java_lang_Exception__V; extern utf *utf_java_lang_Object__java_lang_Object; extern utf *utf_java_lang_String__void; extern utf *utf_java_lang_String__java_lang_Class; +extern utf *utf_java_lang_Thread__V; +extern utf *utf_java_lang_Thread_java_lang_Throwable__V; +extern utf *utf_Ljava_lang_ThreadGroup_Ljava_lang_String__V; extern utf *utf_java_lang_Throwable__void; +extern utf *utf_java_lang_Throwable__java_lang_Throwable; extern utf *utf_not_named_yet; - +extern utf *utf_null; extern utf *array_packagename; /* function prototypes ********************************************************/ +#ifdef __cplusplus +extern "C" { +#endif + /* initialize the utf8 subsystem */ -bool utf8_init(void); +void utf8_init(void); u4 utf_hashkey(const char *text, u4 length); u4 utf_full_hashkey(const char *text, u4 length); @@ -183,27 +253,40 @@ utf *utf_new_u2(u2 *unicodedata, u4 unicodelength, bool isclassname); utf *utf_new_char(const char *text); utf *utf_new_char_classname(const char *text); +/* get number of bytes */ +u4 utf_bytes(utf *u); + /* get next unicode character of a utf-string */ u2 utf_nextu2(char **utf); -/* get number of unicode characters of a utf string */ -u4 utf_strlen(utf *u); +/* get (number of) unicode characters of a utf string (safe) */ +s4 utf8_safe_number_of_u2s(const char *text, s4 nbytes); +void utf8_safe_convert_to_u2s(const char *text, s4 nbytes, u2 *buffer); + +/* get (number of) unicode characters of a utf string (UNSAFE!) */ +u4 utf_get_number_of_u2s(utf *u); +u4 utf_get_number_of_u2s_for_buffer(const char *buffer, u4 blength); /* determine utf length in bytes of a u2 array */ u4 u2_utflength(u2 *text, u4 u2_length); +void utf_copy(char *buffer, utf *u); +void utf_cat(char *buffer, utf *u); +void utf_copy_classname(char *buffer, utf *u); +void utf_cat_classname(char *buffer, utf *u); + /* write utf symbol to file/buffer */ -void utf_display(utf *u); -void utf_display_classname(utf *u); +void utf_display_printable_ascii(utf *u); +void utf_display_printable_ascii_classname(utf *u); -void utf_sprint(char *buffer, utf *u); -void utf_sprint_classname(char *buffer, utf *u); +void utf_sprint_convert_to_latin1(char *buffer, utf *u); +void utf_sprint_convert_to_latin1_classname(char *buffer, utf *u); -void utf_strcat(char *buffer, utf *u); -void utf_strcat_classname(char *buffer, utf *u); +void utf_strcat_convert_to_latin1(char *buffer, utf *u); +void utf_strcat_convert_to_latin1_classname(char *buffer, utf *u); -void utf_fprint(FILE *file, utf *u); -void utf_fprint_classname(FILE *file, utf *u); +void utf_fprint_printable_ascii(FILE *file, utf *u); +void utf_fprint_printable_ascii_classname(FILE *file, utf *u); /* check if a UTF-8 string is valid */ bool is_valid_utf(char *utf_ptr, char *end_pos); @@ -215,6 +298,10 @@ bool is_valid_name_utf(utf *u); /* show utf-table */ void utf_show(void); +#ifdef __cplusplus +} +#endif + #endif /* _UTF_H */ @@ -229,4 +316,5 @@ void utf_show(void); * c-basic-offset: 4 * tab-width: 4 * End: + * vim:noexpandtab:sw=4:ts=4: */