]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - gcc/java/mangle_name.c
Imported gcc-4.4.3
[msp430-gcc.git] / gcc / java / mangle_name.c
diff --git a/gcc/java/mangle_name.c b/gcc/java/mangle_name.c
deleted file mode 100644 (file)
index 38b6ec6..0000000
+++ /dev/null
@@ -1,225 +0,0 @@
-/* Shared functions related to mangling names for the GNU compiler
-   for the Java(TM) language.
-   Copyright (C) 2001 Free Software Foundation, Inc.
-
-This file is part of GNU CC.
-
-GNU CC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU CC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU CC; see the file COPYING.  If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. 
-
-Java and all Java-based marks are trademarks or registered trademarks
-of Sun Microsystems, Inc. in the United States and other countries.
-The Free Software Foundation is independent of Sun Microsystems, Inc.  */
-
-/* Written by Alexandre Petit-Bianco <apbianco@cygnus.com> */
-
-#include "config.h"
-#include "system.h"
-#include "jcf.h"
-#include "tree.h"
-#include "java-tree.h"
-#include "obstack.h"
-#include "toplev.h"
-#include "obstack.h"
-
-static void append_unicode_mangled_name PARAMS ((const char *, int));
-#ifndef HAVE_AS_UTF8
-static int  unicode_mangling_length PARAMS ((const char *, int));
-#endif
-
-extern struct obstack *mangle_obstack;
-
-/* If the assembler doesn't support UTF8 in symbol names, some
-   characters might need to be escaped.  */
-
-#ifndef HAVE_AS_UTF8
-
-/* Assuming (NAME, LEN) is a Utf8-encoding string, emit the string
-   appropriately mangled (with Unicode escapes if needed) to
-   MANGLE_OBSTACK.  Note that `java', `lang' and `Object' are used so
-   frequently that they could be cached.  */
-
-void
-append_gpp_mangled_name (name, len)
-     const char *name;
-     int len;
-{
-  int encoded_len = unicode_mangling_length (name, len);
-  int needs_escapes = encoded_len > 0;
-  char buf[6];
-
-  sprintf (buf, "%d", (needs_escapes ? encoded_len : len));
-  obstack_grow (mangle_obstack, buf, strlen (buf));
-
-  if (needs_escapes)
-    append_unicode_mangled_name (name, len);
-  else
-    obstack_grow (mangle_obstack, name, len);
-}
-
-/* Assuming (NAME, LEN) is a Utf8-encoded string, emit the string
-   appropriately mangled (with Unicode escapes) to MANGLE_OBSTACK.
-   Characters needing an escape are encoded `__UNN_' to `__UNNNN_', in
-   which case `__U' will be mangled `__U_'.  */
-
-static void
-append_unicode_mangled_name (name, len)
-     const char *name;
-     int len;
-{
-  const unsigned char *ptr;
-  const unsigned char *limit = (const unsigned char *)name + len;
-  int uuU = 0;
-  for (ptr = (const unsigned char *) name;  ptr < limit;  )
-    {
-      int ch = UTF8_GET(ptr, limit);
-
-      if ((ISALNUM (ch) && ch != 'U') || ch == '$')
-       obstack_1grow (mangle_obstack, ch);
-      /* Everything else needs encoding */
-      else
-       {
-         char buf [9];
-         if (ch == '_' || ch == 'U')
-           {
-             /* Prepare to recognize __U */
-             if (ch == '_' && (uuU < 3))
-               {
-                 uuU++;
-                 obstack_1grow (mangle_obstack, ch);
-               }
-             /* We recognize __U that we wish to encode
-                 __U_. Finish the encoding. */
-             else if (ch == 'U' && (uuU == 2))
-               {
-                 uuU = 0;
-                 obstack_grow (mangle_obstack, "U_", 2);
-               }
-             /* Otherwise, just reset uuU and emit the character we
-                 have. */
-             else
-               {
-                 uuU = 0;
-                 obstack_1grow (mangle_obstack, ch);
-               }
-             continue;
-           }
-         sprintf (buf, "__U%x_", ch);
-         obstack_grow (mangle_obstack, buf, strlen (buf));
-         uuU = 0;
-       }
-    }
-}
-
-/* Assuming (NAME, LEN) is a Utf8-encoding string, calculate the
-   length of the string as mangled (a la g++) including Unicode
-   escapes.  If no escapes are needed, return 0.  */
-
-static int
-unicode_mangling_length (name, len)
-     const char *name; 
-     int len; 
-{
-  const unsigned char *ptr;
-  const unsigned char *limit = (const unsigned char *)name + len;
-  int need_escapes = 0;                /* Whether we need an escape or not */
-  int num_chars = 0;           /* Number of characters in the mangled name */
-  int uuU = 0;                 /* Help us to find __U. 0: '_', 1: '__' */
-  for (ptr = (const unsigned char *) name;  ptr < limit;  )
-    {
-      int ch = UTF8_GET(ptr, limit);
-
-      if (ch < 0)
-       error ("internal error - invalid Utf8 name");
-      if ((ISALNUM (ch) && ch != 'U') || ch == '$')
-       num_chars++;
-      /* Everything else needs encoding */
-      else
-       {
-         int encoding_length = 2;
-
-         if (ch == '_' || ch == 'U')
-           {
-             /* It's always at least one character. */
-             num_chars++;
-
-             /* Prepare to recognize __U */
-             if (ch == '_' && (uuU < 3))
-               uuU++;
-
-             /* We recognize __U that we wish to encode __U_, we
-                count one more character. */
-             else if (ch == 'U' && (uuU == 2))
-               {
-                 num_chars++;
-                 need_escapes = 1;
-                 uuU = 0;
-               }
-             /* Otherwise, just reset uuU */
-             else
-               uuU = 0;
-
-             continue;
-           }
-         
-         if (ch > 0xff)
-           encoding_length++;
-         if (ch > 0xfff)
-           encoding_length++;
-         
-         num_chars += (4 + encoding_length);
-         need_escapes = 1;
-         uuU = 0;
-       }
-    }
-  if (need_escapes)
-    return num_chars;
-  else
-    return 0;
-}
-
-#else
-
-/* The assembler supports UTF8, we don't use escapes. Mangling is
-   simply <N>NAME. <N> is the number of UTF8 encoded characters that
-   are found in NAME. Note that `java', `lang' and `Object' are used
-   so frequently that they could be cached.  */
-
-void
-append_gpp_mangled_name (name, len)
-     const char *name;
-     int len;
-{
-  const unsigned char *ptr;
-  const unsigned char *limit = (const unsigned char *)name + len;
-  int encoded_len;
-  char buf [6];
-  
-  /* Compute the length of the string we wish to mangle. */
-  for (encoded_len =  0, ptr = (const unsigned char *) name;
-       ptr < limit; encoded_len++)
-    {
-      int ch = UTF8_GET(ptr, limit);
-
-      if (ch < 0)
-       error ("internal error - invalid Utf8 name");
-    }
-
-  sprintf (buf, "%d", encoded_len);
-  obstack_grow (mangle_obstack, buf, strlen (buf));
-  obstack_grow (mangle_obstack, name, len);
-}
-
-#endif /* HAVE_AS_UTF8 */