X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fvm%2Futf8.h;h=391054a9c003d1353b926df96476dc7b1532b5db;hb=25eef6ad6910c09c86e930af6e5491e2d2ef0130;hp=74b71bf539760263fbf306e9860ba55807a39615;hpb=303d550738d8ceae49b7a40c9b13187a93bcc849;p=cacao.git diff --git a/src/vm/utf8.h b/src/vm/utf8.h index 74b71bf53..391054a9c 100644 --- a/src/vm/utf8.h +++ b/src/vm/utf8.h @@ -1,9 +1,9 @@ -/* src/vm/utf.h - utf string header +/* src/vm/utf8.h - utf8 string functions - Copyright (C) 1996-2005 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 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 This file is part of CACAO. @@ -19,16 +19,16 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. - Contact: cacao@complang.tuwien.ac.at + Contact: cacao@cacaojvm.org Authors: Christian Thalinger - Changes: + Changes: Edwin Steiner - $Id: utf8.h 2560 2005-06-06 15:20:41Z twisti $ + $Id: utf8.h 5088 2006-07-08 20:16:05Z twisti $ */ @@ -36,14 +36,15 @@ #ifndef _UTF_H #define _UTF_H -#include +#include "config.h" +#include /* forward typedefs ***********************************************************/ typedef struct utf utf; - +#include "vm/types.h" #include "vm/global.h" @@ -51,10 +52,14 @@ typedef struct utf utf; struct utf { utf *hashlink; /* link for external hash chain */ - int blength; /* text length in bytes */ + s4 blength; /* text length in bytes */ char *text; /* pointer to text */ }; +/* to determine the end of utf strings */ + +#define UTF_END(u) ((char *) u->text + u->blength) + /* utf-symbols for pointer comparison of frequently used strings **************/ @@ -72,10 +77,19 @@ 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_Exception; +extern utf *utf_java_lang_AbstractMethodError; +extern utf *utf_java_lang_LinkageError; extern utf *utf_java_lang_NoClassDefFoundError; +extern utf *utf_java_lang_NoSuchMethodError; extern utf *utf_java_lang_OutOfMemoryError; + +extern utf *utf_java_lang_Exception; +extern utf *utf_java_lang_ClassCastException; extern utf *utf_java_lang_ClassNotFoundException; +extern utf *utf_java_lang_IllegalArgumentException; +extern utf *utf_java_lang_IllegalMonitorStateException; + +extern utf *utf_java_lang_NullPointerException; extern utf* utf_java_lang_Void; extern utf* utf_java_lang_Boolean; @@ -87,9 +101,11 @@ extern utf* utf_java_lang_Long; extern utf* utf_java_lang_Float; extern utf* utf_java_lang_Double; -extern utf *utf_java_util_Vector; +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; extern utf *utf_InnerClasses; @@ -103,10 +119,27 @@ extern utf *utf_init; extern utf *utf_clinit; extern utf *utf_clone; extern utf *utf_finalize; +extern utf *utf_run; + +extern utf *utf_add; +extern utf *utf_remove; +extern utf *utf_put; +extern utf *utf_get; +extern utf *utf_value; -extern utf *utf_printStackTrace; extern utf *utf_fillInStackTrace; +extern utf *utf_getSystemClassLoader; extern utf *utf_loadClass; +extern utf *utf_printStackTrace; + +extern utf *utf_Z; +extern utf *utf_B; +extern utf *utf_C; +extern utf *utf_S; +extern utf *utf_I; +extern utf *utf_J; +extern utf *utf_F; +extern utf *utf_D; extern utf *utf_void__void; extern utf *utf_boolean__void; @@ -117,22 +150,27 @@ extern utf *utf_int__void; extern utf *utf_long__void; extern utf *utf_float__void; 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_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_Throwable__void; extern utf *utf_not_named_yet; - +extern utf *utf_null; extern utf *array_packagename; /* function prototypes ********************************************************/ -void utf8_init(void); +/* initialize the utf8 subsystem */ +bool utf8_init(void); u4 utf_hashkey(const char *text, u4 length); +u4 utf_full_hashkey(const char *text, u4 length); /* determine hashkey of a unicode-symbol */ u4 unicode_hashkey(u2 *text, u2 length); @@ -140,36 +178,42 @@ u4 unicode_hashkey(u2 *text, u2 length); /* create new utf-symbol */ utf *utf_new(const char *text, u2 length); -/* without locking (caller already holding lock*/ -utf *utf_new_intern(const char *text, u2 length); - /* make utf symbol from u2 array */ 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); +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); @@ -195,4 +239,5 @@ void utf_show(void); * c-basic-offset: 4 * tab-width: 4 * End: + * vim:noexpandtab:sw=4:ts=4: */