Package gnu.expr

Class Mangling


  • public class Mangling
    extends java.lang.Object
    Helper methods for mangling and demangling. "Mangling" is converting a user-level identifier to an internal system-level name, which may be restricted in allowed characters. "Demangling" is the inverse operation.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static boolean USE_SYMBOLIC  
    • Constructor Summary

      Constructors 
      Constructor Description
      Mangling()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static char demangle2​(char char1, char char2)
      Demangle a three-character mangling starting with '$'.
      static java.lang.String demangleField​(java.lang.String name)  
      static java.lang.String demangleMethod​(java.lang.String name)  
      static java.lang.String demangleName​(java.lang.String name, boolean reversible)  
      static java.lang.String demangleQualifiedName​(java.lang.String name)  
      static java.lang.String demangleSymbolic​(java.lang.String name)  
      static java.lang.String mangleClassName​(java.lang.String name)
      Mangle a simple class or package name.
      static java.lang.String mangleField​(java.lang.String name)  
      static java.lang.String mangleMethod​(java.lang.String name)  
      static java.lang.String mangleName​(java.lang.String name)  
      static java.lang.String mangleName​(java.lang.String name, boolean reversible)
      Convert a string to a safe Java identifier.
      static java.lang.String mangleNameIfNeeded​(java.lang.String name)  
      static java.lang.String mangleQualifiedName​(java.lang.String name)
      Mangle a possibly-qualified class name.
      static java.lang.String mangleSymbolic​(java.lang.String name, char context, boolean force)
      Mangle according to John Rose's "Symbolic Freedom in the VM".
      static java.lang.String mangleVariable​(java.lang.String name)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • Mangling

        public Mangling()
    • Method Detail

      • mangleClassName

        public static java.lang.String mangleClassName​(java.lang.String name)
        Mangle a simple class or package name. Does not handle qualified names.
      • mangleQualifiedName

        public static java.lang.String mangleQualifiedName​(java.lang.String name)
        Mangle a possibly-qualified class name.
      • mangleVariable

        public static java.lang.String mangleVariable​(java.lang.String name)
      • mangleField

        public static java.lang.String mangleField​(java.lang.String name)
      • demangleField

        public static java.lang.String demangleField​(java.lang.String name)
      • mangleMethod

        public static java.lang.String mangleMethod​(java.lang.String name)
      • demangleMethod

        public static java.lang.String demangleMethod​(java.lang.String name)
      • demangleQualifiedName

        public static java.lang.String demangleQualifiedName​(java.lang.String name)
      • mangleSymbolic

        public static java.lang.String mangleSymbolic​(java.lang.String name,
                                                      char context,
                                                      boolean force)
        Mangle according to John Rose's "Symbolic Freedom in the VM". See this article.
        Parameters:
        context - One of 'C' (class name); 'Q' (qualified name, with dots); 'F' (field name); 'M' (method name); 'V' (local variable name).
        force - True if should escape '\\' even if that is the only disallowed character. The may cause an already-mangled name to be doubly mangled.
      • demangleName

        public static java.lang.String demangleName​(java.lang.String name,
                                                    boolean reversible)
      • demangle2

        public static char demangle2​(char char1,
                                     char char2)
        Demangle a three-character mangling starting with '$'. UNFINISHED!
      • demangleSymbolic

        public static java.lang.String demangleSymbolic​(java.lang.String name)
      • mangleName

        public static java.lang.String mangleName​(java.lang.String name)
      • mangleName

        public static java.lang.String mangleName​(java.lang.String name,
                                                  boolean reversible)
        Convert a string to a safe Java identifier.
        Parameters:
        reversible - if we should use an invertible mapping.
      • mangleNameIfNeeded

        public static java.lang.String mangleNameIfNeeded​(java.lang.String name)