Package com.headius.invokebinder
Class SmartBinder
- java.lang.Object
-
- com.headius.invokebinder.SmartBinder
-
public class SmartBinder extends java.lang.ObjectMaintains 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 privateSmartBinder(Signature start, Binder binder)privateSmartBinder(SmartBinder original, Signature next, Binder binder)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description SmartBinderappend(java.lang.String[] names, java.lang.Class[] types, java.lang.Object... values)SmartBinderappend(java.lang.String name, boolean value)SmartBinderappend(java.lang.String name, byte value)SmartBinderappend(java.lang.String name, char value)SmartBinderappend(java.lang.String name, double value)SmartBinderappend(java.lang.String name, float value)SmartBinderappend(java.lang.String name, int value)SmartBinderappend(java.lang.String name, long value)SmartBinderappend(java.lang.String name, short value)SmartBinderappend(java.lang.String name, java.lang.Object value)SmartHandlearrayGet()SmartHandlearraySet()Binderbinder()SmartBindercast(Signature target)SmartBindercast(java.lang.Class returnType, java.lang.Class... argTypes)SmartBindercastArg(java.lang.String name, java.lang.Class type)SmartBindercastReturn(java.lang.Class type)SmartBinderexclude(java.lang.String... excludeNames)Permute all parameters except the names given.SmartBinderfilterReturn(SmartHandle filter)SmartBinderfilterReturn(java.lang.invoke.MethodHandle filter)SmartBinderfold(java.lang.String newName, SmartHandle function)SmartBinderfold(java.lang.String newName, java.lang.invoke.MethodHandle function)SmartBinderfoldStatic(java.lang.String newName, java.lang.Class target, java.lang.String method)SmartBinderfoldStatic(java.lang.String newName, java.lang.invoke.MethodHandles.Lookup lookup, java.lang.Class target, java.lang.String method)SmartBinderfoldVirtual(java.lang.String newName, java.lang.invoke.MethodHandles.Lookup lookup, java.lang.String method)SmartBinderfoldVirtual(java.lang.String newName, java.lang.String method)SmartBinderfoldVoid(SmartHandle function)SmartBinderfoldVoid(java.lang.invoke.MethodHandle function)static SmartBinderfrom(Signature inbound)static SmartBinderfrom(java.lang.invoke.MethodHandles.Lookup lookup, Signature inbound)SmartBinderinsert(int index, java.lang.String[] names, java.lang.Class[] types, java.lang.Object... values)SmartBinderinsert(int index, java.lang.String name, boolean value)SmartBinderinsert(int index, java.lang.String name, byte value)SmartBinderinsert(int index, java.lang.String name, char value)SmartBinderinsert(int index, java.lang.String name, double value)SmartBinderinsert(int index, java.lang.String name, float value)SmartBinderinsert(int index, java.lang.String name, int value)SmartBinderinsert(int index, java.lang.String name, long value)SmartBinderinsert(int index, java.lang.String name, short value)SmartBinderinsert(int index, java.lang.String name, java.lang.Object value)SmartHandleinvoke(SmartHandle target)SmartHandleinvoke(java.lang.invoke.MethodHandle target)SmartHandleinvoker()Produce a SmartHandle from this binder that invokes a leading MethodHandle argument with the remaining arguments.SmartHandleinvokeStaticQuiet(java.lang.invoke.MethodHandles.Lookup lookup, java.lang.Class target, java.lang.String name)SmartHandleinvokeVirtualQuiet(java.lang.invoke.MethodHandles.Lookup lookup, java.lang.String name)SmartBinderpermute(Signature target)SmartBinderpermute(java.lang.String... targetNames)SmartBinderprepend(java.lang.String[] names, java.lang.Class[] types, java.lang.Object... values)SmartBinderprepend(java.lang.String name, boolean value)SmartBinderprepend(java.lang.String name, byte value)SmartBinderprepend(java.lang.String name, char value)SmartBinderprepend(java.lang.String name, double value)SmartBinderprepend(java.lang.String name, float value)SmartBinderprepend(java.lang.String name, int value)SmartBinderprepend(java.lang.String name, long value)SmartBinderprepend(java.lang.String name, short value)SmartBinderprepend(java.lang.String name, java.lang.Object value)SmartBinderprintSignature()Signaturesignature()SmartBinderspread(java.lang.String[] spreadNames, java.lang.Class... spreadTypes)Spread a trailing Object[] into the specified argument types.SmartBinderspread(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
-
-