Package serp.bytecode
Class NameCache
- java.lang.Object
-
- serp.bytecode.NameCache
-
public class NameCache extends java.lang.Object
Caching and conversion of names in both internal and external form.
-
-
Field Summary
Fields Modifier and Type Field Description (package private) static java.lang.Object[][]
_codes
private java.util.Map
_external
private java.util.Map
_externalHuman
private java.util.Map
_internal
private java.util.Map
_internalDescriptor
-
Constructor Summary
Constructors Constructor Description NameCache()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clear()
Clear the cache.java.lang.String
getComponentName(java.lang.String name)
Return the component type name for the given array type, or null if the given string does not represent an array type name.java.lang.String
getDescriptor(java.lang.String returnType, java.lang.String[] paramTypes)
Construct a method descriptor from the given return and parameter types, which will be converted to internal form.java.lang.String[]
getDescriptorParamNames(java.lang.String descriptor)
Return the parameter types, in internal form, for the given method descriptor string.java.lang.String
getDescriptorReturnName(java.lang.String descriptor)
Return the return type, in internal form, for the given method descriptor string.java.lang.String
getExternalForm(java.lang.String internalName, boolean humanReadable)
Given the internal name of the class, return the 'normal' java name.private java.lang.String
getExternalFormInternal(java.lang.String intern, boolean humanReadable)
java.lang.String
getInternalForm(java.lang.String className, boolean descriptor)
Converts the given class name to its internal form.private java.lang.String
getInternalFormInternal(java.lang.String cls, boolean descriptor)
-
-
-
Method Detail
-
getInternalForm
public java.lang.String getInternalForm(java.lang.String className, boolean descriptor)
Converts the given class name to its internal form.- Parameters:
className
- the name to convertdescriptor
- true if the name is to be used for a descriptor section -- the difference seems to be that for descriptors, non-primitives are prefixed with 'L' and ended with ';'
-
getInternalFormInternal
private java.lang.String getInternalFormInternal(java.lang.String cls, boolean descriptor)
-
getExternalForm
public java.lang.String getExternalForm(java.lang.String internalName, boolean humanReadable)
Given the internal name of the class, return the 'normal' java name.- Parameters:
internalName
- the internal name being usedhumanReadable
- if the returned name should be in human-readable form, rather than a form suitable for aClass.forName(java.lang.String)
call -- the difference lies in the handling of arrays
-
getExternalFormInternal
private java.lang.String getExternalFormInternal(java.lang.String intern, boolean humanReadable)
-
getDescriptor
public java.lang.String getDescriptor(java.lang.String returnType, java.lang.String[] paramTypes)
Construct a method descriptor from the given return and parameter types, which will be converted to internal form.
-
getDescriptorReturnName
public java.lang.String getDescriptorReturnName(java.lang.String descriptor)
Return the return type, in internal form, for the given method descriptor string.
-
getDescriptorParamNames
public java.lang.String[] getDescriptorParamNames(java.lang.String descriptor)
Return the parameter types, in internal form, for the given method descriptor string.
-
getComponentName
public java.lang.String getComponentName(java.lang.String name)
Return the component type name for the given array type, or null if the given string does not represent an array type name. The name given should be in properClass.forName(java.lang.String)
form.
-
clear
public void clear()
Clear the cache.
-
-