Package org.codehaus.groovy.classgen.asm
Class MopWriter
java.lang.Object
org.codehaus.groovy.classgen.asm.MopWriter
- Direct Known Subclasses:
StaticCompilationMopWriter
Generates bytecode for Meta Object Protocol (MOP) methods.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceFactory interface for creating MopWriter instances. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final WriterControllerThe controller coordinating all bytecode writers for the current class.static final MopWriter.FactoryDefault factory for MopWriter instances. -
Constructor Summary
ConstructorsConstructorDescriptionMopWriter(WriterController controller) Creates a MopWriter with the given controller. -
Method Summary
Modifier and TypeMethodDescriptionvoidGenerates MOP methods for the current class.static booleanequalParameterTypes(Parameter[] p1, Parameter[] p2) Deprecated.protected voidgenerateMopCalls(LinkedList<MethodNode> methods, boolean useThis) Generates a Meta Object Protocol method that is used to call a non-public method or to make a call to super.static StringgetMopMethodName(MethodNode method, boolean useThis) Creates a MOP method name from a method.static booleanisMopMethod(String methodName) Determines if a method is a MOP method.
-
Field Details
-
FACTORY
Default factory for MopWriter instances. -
controller
The controller coordinating all bytecode writers for the current class.
-
-
Constructor Details
-
MopWriter
Creates a MopWriter with the given controller.- Parameters:
controller- the writer controller
-
-
Method Details
-
createMopMethods
public void createMopMethods()Generates MOP methods for the current class. -
generateMopCalls
Generates a Meta Object Protocol method that is used to call a non-public method or to make a call to super.- Parameters:
methods- list of methods a MOP call method should be generated foruseThis- indicates if "this" should be used for the name and call
-
getMopMethodName
Creates a MOP method name from a method.- Parameters:
method- the method to be called by the mop methoduseThis- if true, then it is a call on "this", "super" else- Returns:
- the mop method name
-
isMopMethod
Determines if a method is a MOP method. This is done by the method name. If the name starts with "this$" or "super$" but does not contain "$dist$", then it is an MOP method.- Parameters:
methodName- name of the method to test- Returns:
- true if the method is a MOP method
-
equalParameterTypes
Deprecated.Checks if two parameter arrays are equal.- Parameters:
p1- first parameter arrayp2- second parameter array- Returns:
- true if parameters are equal
-
ParameterUtils.parametersEqual(Parameter[], Parameter[])instead