Package com.headius.invokebinder
Class SmartBinder
- java.lang.Object
-
- com.headius.invokebinder.SmartBinder
-
public class SmartBinder extends java.lang.Object
Maintains both a Binder, for building a series of transformations, and a current Signature that maps symbolic names to arguments.
-
-
Constructor Summary
Constructors Modifier Constructor Description private
SmartBinder(Signature start, Binder binder)
private
SmartBinder(SmartBinder original, Signature next, Binder binder)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description SmartBinder
append(java.lang.String[] names, java.lang.Class[] types, java.lang.Object... values)
SmartBinder
append(java.lang.String name, boolean value)
SmartBinder
append(java.lang.String name, byte value)
SmartBinder
append(java.lang.String name, char value)
SmartBinder
append(java.lang.String name, double value)
SmartBinder
append(java.lang.String name, float value)
SmartBinder
append(java.lang.String name, int value)
SmartBinder
append(java.lang.String name, long value)
SmartBinder
append(java.lang.String name, short value)
SmartBinder
append(java.lang.String name, java.lang.Object value)
SmartHandle
arrayGet()
SmartHandle
arraySet()
Binder
binder()
SmartBinder
cast(Signature target)
SmartBinder
cast(java.lang.Class returnType, java.lang.Class... argTypes)
SmartBinder
castArg(java.lang.String name, java.lang.Class type)
SmartBinder
castReturn(java.lang.Class type)
SmartBinder
exclude(java.lang.String... excludeNames)
Permute all parameters except the names given.SmartBinder
filterReturn(SmartHandle filter)
SmartBinder
filterReturn(java.lang.invoke.MethodHandle filter)
SmartBinder
fold(java.lang.String newName, SmartHandle function)
SmartBinder
fold(java.lang.String newName, java.lang.invoke.MethodHandle function)
SmartBinder
foldStatic(java.lang.String newName, java.lang.Class target, java.lang.String method)
SmartBinder
foldStatic(java.lang.String newName, java.lang.invoke.MethodHandles.Lookup lookup, java.lang.Class target, java.lang.String method)
SmartBinder
foldVirtual(java.lang.String newName, java.lang.invoke.MethodHandles.Lookup lookup, java.lang.String method)
SmartBinder
foldVirtual(java.lang.String newName, java.lang.String method)
SmartBinder
foldVoid(SmartHandle function)
SmartBinder
foldVoid(java.lang.invoke.MethodHandle function)
static SmartBinder
from(Signature inbound)
static SmartBinder
from(java.lang.invoke.MethodHandles.Lookup lookup, Signature inbound)
SmartBinder
insert(int index, java.lang.String[] names, java.lang.Class[] types, java.lang.Object... values)
SmartBinder
insert(int index, java.lang.String name, boolean value)
SmartBinder
insert(int index, java.lang.String name, byte value)
SmartBinder
insert(int index, java.lang.String name, char value)
SmartBinder
insert(int index, java.lang.String name, double value)
SmartBinder
insert(int index, java.lang.String name, float value)
SmartBinder
insert(int index, java.lang.String name, int value)
SmartBinder
insert(int index, java.lang.String name, long value)
SmartBinder
insert(int index, java.lang.String name, short value)
SmartBinder
insert(int index, java.lang.String name, java.lang.Object value)
SmartHandle
invoke(SmartHandle target)
SmartHandle
invoke(java.lang.invoke.MethodHandle target)
SmartHandle
invoker()
Produce a SmartHandle from this binder that invokes a leading MethodHandle argument with the remaining arguments.SmartHandle
invokeStaticQuiet(java.lang.invoke.MethodHandles.Lookup lookup, java.lang.Class target, java.lang.String name)
SmartHandle
invokeVirtualQuiet(java.lang.invoke.MethodHandles.Lookup lookup, java.lang.String name)
SmartBinder
permute(Signature target)
SmartBinder
permute(java.lang.String... targetNames)
SmartBinder
prepend(java.lang.String[] names, java.lang.Class[] types, java.lang.Object... values)
SmartBinder
prepend(java.lang.String name, boolean value)
SmartBinder
prepend(java.lang.String name, byte value)
SmartBinder
prepend(java.lang.String name, char value)
SmartBinder
prepend(java.lang.String name, double value)
SmartBinder
prepend(java.lang.String name, float value)
SmartBinder
prepend(java.lang.String name, int value)
SmartBinder
prepend(java.lang.String name, long value)
SmartBinder
prepend(java.lang.String name, short value)
SmartBinder
prepend(java.lang.String name, java.lang.Object value)
SmartBinder
printSignature()
Signature
signature()
SmartBinder
spread(java.lang.String[] spreadNames, java.lang.Class... spreadTypes)
Spread a trailing Object[] into the specified argument types.SmartBinder
spread(java.lang.String baseName, int count)
-
-
-
Constructor Detail
-
SmartBinder
private SmartBinder(SmartBinder original, Signature next, Binder binder)
-
-
Method Detail
-
signature
public Signature signature()
-
binder
public Binder binder()
-
from
public static SmartBinder from(Signature inbound)
-
from
public static SmartBinder from(java.lang.invoke.MethodHandles.Lookup lookup, Signature inbound)
-
fold
public SmartBinder fold(java.lang.String newName, java.lang.invoke.MethodHandle function)
-
fold
public SmartBinder fold(java.lang.String newName, SmartHandle function)
-
foldVoid
public SmartBinder foldVoid(java.lang.invoke.MethodHandle function)
-
foldVoid
public SmartBinder foldVoid(SmartHandle function)
-
foldStatic
public SmartBinder foldStatic(java.lang.String newName, java.lang.invoke.MethodHandles.Lookup lookup, java.lang.Class target, java.lang.String method)
-
foldStatic
public SmartBinder foldStatic(java.lang.String newName, java.lang.Class target, java.lang.String method)
-
foldVirtual
public SmartBinder foldVirtual(java.lang.String newName, java.lang.invoke.MethodHandles.Lookup lookup, java.lang.String method)
-
foldVirtual
public SmartBinder foldVirtual(java.lang.String newName, java.lang.String method)
-
permute
public SmartBinder permute(Signature target)
-
permute
public SmartBinder permute(java.lang.String... targetNames)
-
exclude
public SmartBinder exclude(java.lang.String... excludeNames)
Permute all parameters except the names given. Blacklisting to #permute's whitelisting.- Parameters:
excludeNames
-- Returns:
- a new SmartBinder
-
spread
public SmartBinder spread(java.lang.String[] spreadNames, java.lang.Class... spreadTypes)
Spread a trailing Object[] into the specified argument types.- Parameters:
spreadTypes
- the types into which to spread the incoming Object[]- Returns:
- a new Binder
-
spread
public SmartBinder spread(java.lang.String baseName, int count)
-
insert
public SmartBinder insert(int index, java.lang.String name, java.lang.Object value)
-
insert
public SmartBinder insert(int index, java.lang.String name, boolean value)
-
insert
public SmartBinder insert(int index, java.lang.String name, byte value)
-
insert
public SmartBinder insert(int index, java.lang.String name, short value)
-
insert
public SmartBinder insert(int index, java.lang.String name, char value)
-
insert
public SmartBinder insert(int index, java.lang.String name, int value)
-
insert
public SmartBinder insert(int index, java.lang.String name, long value)
-
insert
public SmartBinder insert(int index, java.lang.String name, float value)
-
insert
public SmartBinder insert(int index, java.lang.String name, double value)
-
insert
public SmartBinder insert(int index, java.lang.String[] names, java.lang.Class[] types, java.lang.Object... values)
-
append
public SmartBinder append(java.lang.String name, java.lang.Object value)
-
append
public SmartBinder append(java.lang.String name, boolean value)
-
append
public SmartBinder append(java.lang.String name, byte value)
-
append
public SmartBinder append(java.lang.String name, short value)
-
append
public SmartBinder append(java.lang.String name, char value)
-
append
public SmartBinder append(java.lang.String name, int value)
-
append
public SmartBinder append(java.lang.String name, long value)
-
append
public SmartBinder append(java.lang.String name, float value)
-
append
public SmartBinder append(java.lang.String name, double value)
-
append
public SmartBinder append(java.lang.String[] names, java.lang.Class[] types, java.lang.Object... values)
-
prepend
public SmartBinder prepend(java.lang.String name, java.lang.Object value)
-
prepend
public SmartBinder prepend(java.lang.String name, boolean value)
-
prepend
public SmartBinder prepend(java.lang.String name, byte value)
-
prepend
public SmartBinder prepend(java.lang.String name, short value)
-
prepend
public SmartBinder prepend(java.lang.String name, char value)
-
prepend
public SmartBinder prepend(java.lang.String name, int value)
-
prepend
public SmartBinder prepend(java.lang.String name, long value)
-
prepend
public SmartBinder prepend(java.lang.String name, float value)
-
prepend
public SmartBinder prepend(java.lang.String name, double value)
-
prepend
public SmartBinder prepend(java.lang.String[] names, java.lang.Class[] types, java.lang.Object... values)
-
cast
public SmartBinder cast(Signature target)
-
cast
public SmartBinder cast(java.lang.Class returnType, java.lang.Class... argTypes)
-
castArg
public SmartBinder castArg(java.lang.String name, java.lang.Class type)
-
castReturn
public SmartBinder castReturn(java.lang.Class type)
-
filterReturn
public SmartBinder filterReturn(java.lang.invoke.MethodHandle filter)
-
filterReturn
public SmartBinder filterReturn(SmartHandle filter)
-
invokeVirtualQuiet
public SmartHandle invokeVirtualQuiet(java.lang.invoke.MethodHandles.Lookup lookup, java.lang.String name)
-
invokeStaticQuiet
public SmartHandle invokeStaticQuiet(java.lang.invoke.MethodHandles.Lookup lookup, java.lang.Class target, java.lang.String name)
-
invoke
public SmartHandle invoke(SmartHandle target)
-
invoke
public SmartHandle invoke(java.lang.invoke.MethodHandle target)
-
printSignature
public SmartBinder printSignature()
-
arrayGet
public SmartHandle arrayGet()
-
arraySet
public SmartHandle arraySet()
-
invoker
public SmartHandle invoker()
Produce a SmartHandle from this binder that invokes a leading MethodHandle argument with the remaining arguments.- Returns:
- a SmartHandle that invokes its leading MethodHandle argument
-
-