Top Description Inners Fields Constructors Methods
org.jruby.runtime

public Class Signature

extends Object
Class Inheritance
Imports
org.jruby.Ruby, org.jruby.ast.ArgsNode, .ArgumentNode, .ForNode, .IterNode, .MultipleAsgnNode, .Node, .PostExeNode, .PreExeNode, .StarNode, .UnnamedRestArgNode, org.jruby.runtime.builtin.IRubyObject, org.jruby.util.TypeConverter

A representation of a Ruby method signature (argument layout, min/max, keyword layout, rest args).

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static enum

Field Summary

Modifier and TypeField and Description
private final int
private static final int
private static final int
private static final int
private static final int
private static final int
private static final int
private static final int
public static final Signature
public static final Signature
private final int
private final short
private static final int
private static final int
public static final Signature
public static final Signature
public static final Signature
public static final Signature
private final short
public static final Signature
private final short
private final short
private final short
private final Signature.Rest
public static final Signature
public static final Signature
public static final Signature
public static final Signature

Constructor Summary

AccessConstructor and Description
public
Signature(int pre, int opt, int post, Signature.Rest rest, int kwargs, int requiredKwargs, int keyRest)

Method Summary

Modifier and TypeMethod and Description
public Arity
arity()
Deprecated

public int
public int
calculateArityValue()

Best attempt at breaking the code of arity values!

public void
checkArity(Ruby runtime, IRubyObject[] args)
Deprecated since 10.0.

public void
public static Signature
decode(long l)

public long
public boolean
equals(Object
the reference object with which to compare.
other
)

Overrides java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

public static Signature
from(Arity arity)
Deprecated

public static Signature
from(int pre, int opt, int post, int kwargs, int requiredKwargs, Signature.Rest rest, int keyRest)

public static Signature
from(ArgsNode args)

public static Signature
from(IterNode iter)

public static Signature
from(ForNode iter)

public static Signature
public static Signature
public static Signature
fromArityValue(int arityValue)

public int
public int
hashCode()

Overrides java.lang.Object.hashCode.

Returns a hash code value for this object.

public boolean
public boolean
public boolean
isFixed()

Are there an exact (fixed) number of parameters to this signature?

public boolean
isNoArguments()

Is this a signature with a no arguments of any kind?

public boolean
isOneArgument()

Is this a signature with a single fixed argument and NO keyword arguments?

public boolean

Returns:

true if the signature expects multiple args
isSpreadable
()

If we are yield'ing to this signature should we spread/destructure a Ruby Array?

public boolean
isTwoArguments()

Is this a signature with a two fixed arguments and NO keyword arguments?

public int
public int

Returns:

the number of kwarg parameters
kwargs
()

Total number of keyword argument parameters.

public int

Returns:

the minimum amount of params expected.
max
()

The maximum number of parameters supplied which can fulfill a call to this signature.

public int

Returns:

the minimum amount of params expected.
min
()

The minimum number of parameters supplied which can fulfill a call to this signature.

public int
opt()

public int
post()

public int
pre()

public int
public Signature.Rest
rest()

private static Signature.Rest
restFromArg(Node restArg)

public boolean
public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.

Inherited from java.lang.Object:
clonefinalizegetClassnotifynotifyAllwaitwaitwait

Field Detail

arityValueback to summary
private final int arityValue
ENCODE_KWARGS_SHIFTback to summary
private static final int ENCODE_KWARGS_SHIFT
ENCODE_OPT_SHIFTback to summary
private static final int ENCODE_OPT_SHIFT
ENCODE_POST_SHIFTback to summary
private static final int ENCODE_POST_SHIFT
ENCODE_PRE_SHIFTback to summary
private static final int ENCODE_PRE_SHIFT
ENCODE_REQKWARGS_SHIFTback to summary
private static final int ENCODE_REQKWARGS_SHIFT
ENCODE_REST_SHIFTback to summary
private static final int ENCODE_REST_SHIFT
ENCODE_RESTKWARGS_SHIFTback to summary
private static final int ENCODE_RESTKWARGS_SHIFT
FOUR_ARGUMENTSback to summary
public static final Signature FOUR_ARGUMENTS
FOUR_REQUIREDback to summary
public static final Signature FOUR_REQUIRED
keyRestback to summary
private final int keyRest
kwargsback to summary
private final short kwargs
MAX_ENCODED_ARGS_EXPONENTback to summary
private static final int MAX_ENCODED_ARGS_EXPONENT
MAX_ENCODED_ARGS_MASKback to summary
private static final int MAX_ENCODED_ARGS_MASK
NO_ARGUMENTSback to summary
public static final Signature NO_ARGUMENTS
ONE_ARGUMENTback to summary
public static final Signature ONE_ARGUMENT
ONE_OPT_ARGUMENTback to summary
public static final Signature ONE_OPT_ARGUMENT
ONE_REQUIREDback to summary
public static final Signature ONE_REQUIRED
optback to summary
private final short opt
OPTIONALback to summary
public static final Signature OPTIONAL
postback to summary
private final short post
preback to summary
private final short pre
requiredKwargsback to summary
private final short requiredKwargs
restback to summary
private final Signature.Rest rest
THREE_ARGUMENTSback to summary
public static final Signature THREE_ARGUMENTS
THREE_REQUIREDback to summary
public static final Signature THREE_REQUIRED
TWO_ARGUMENTSback to summary
public static final Signature TWO_ARGUMENTS
TWO_REQUIREDback to summary
public static final Signature TWO_REQUIRED

Constructor Detail

Signatureback to summary
public Signature(int pre, int opt, int post, Signature.Rest rest, int kwargs, int requiredKwargs, int keyRest)

Method Detail

arityback to summary
public Arity arity()

Deprecated

Annotations
@Deprecated
arityValueback to summary
public int arityValue()
calculateArityValueback to summary
public int calculateArityValue()

Best attempt at breaking the code of arity values! We figure out how many fixed/required parameters must be supplied. Then we figure out if we need to mark the value as optional. Optional is indicated by multiplying -1 * (fixed + 1). Keyword args optional and rest values can indicate this optional condition but only if no required keyword arguments are present.

checkArityback to summary
public void checkArity(Ruby runtime, IRubyObject[] args)

Deprecated

since 10.0.

Annotations
@Deprecated
since:10.0
checkArityback to summary
public void checkArity(ThreadContext context, IRubyObject[] args)
decodeback to summary
public static Signature decode(long l)
encodeback to summary
public long encode()
equalsback to summary
public boolean equals(Object other)

Overrides java.lang.Object.equals.

Doc from java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
other:Object

the reference object with which to compare.

Returns:boolean

true if this object is the same as the obj argument; false otherwise.

Annotations
@Override
fromback to summary
public static Signature from(Arity arity)

Deprecated

Annotations
@Deprecated
fromback to summary
public static Signature from(int pre, int opt, int post, int kwargs, int requiredKwargs, Signature.Rest rest, int keyRest)
fromback to summary
public static Signature from(ArgsNode args)
fromback to summary
public static Signature from(IterNode iter)
fromback to summary
public static Signature from(ForNode iter)
fromback to summary
public static Signature from(PreExeNode iter)
fromback to summary
public static Signature from(PostExeNode iter)
fromArityValueback to summary
public static Signature fromArityValue(int arityValue)
getRequiredKeywordForArityCountback to summary
public int getRequiredKeywordForArityCount()
hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Doc from java.lang.Object.hashCode.

Returns a hash code value for this object. This method is supported for the benefit of hash tables such as those provided by java.util.HashMap.

The general contract of hashCode is:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
Returns:int

a hash code value for this object

Annotations
@Override
hasKwargsback to summary
public boolean hasKwargs()
hasRestback to summary
public boolean hasRest()
isFixedback to summary
public boolean isFixed()

Are there an exact (fixed) number of parameters to this signature?

isNoArgumentsback to summary
public boolean isNoArguments()

Is this a signature with a no arguments of any kind?

isOneArgumentback to summary
public boolean isOneArgument()

Is this a signature with a single fixed argument and NO keyword arguments?

isSpreadableback to summary
public boolean isSpreadable()

If we are yield'ing to this signature should we spread/destructure a Ruby Array?

Returns:boolean

true if the signature expects multiple args

isTwoArgumentsback to summary
public boolean isTwoArguments()

Is this a signature with a two fixed arguments and NO keyword arguments?

keyRestback to summary
public int keyRest()
kwargsback to summary
public int kwargs()

Total number of keyword argument parameters.

Returns:int

the number of kwarg parameters

maxback to summary
public int max()

The maximum number of parameters supplied which can fulfill a call to this signature. This method is for calculating the public-facing arity value.

Returns:int

the minimum amount of params expected.

minback to summary
public int min()

The minimum number of parameters supplied which can fulfill a call to this signature. This method is for calculating the public-facing arity value.

Returns:int

the minimum amount of params expected.

optback to summary
public int opt()
postback to summary
public int post()
preback to summary
public int pre()
requiredback to summary
public int required()
restback to summary
public Signature.Rest rest()
restFromArgback to summary
private static Signature.Rest restFromArg(Node restArg)
restKwargsback to summary
public boolean restKwargs()
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object. Satisfying this method's contract implies a non-null result must be returned.

Returns:String

a string representation of the object

org.jruby.runtime back to summary

public final Enum Signature.Rest

extends Enum<Signature.Rest>
Class Inheritance

Field Summary

Modifier and TypeField and Description
public static final Signature.Rest
public static final Signature.Rest
public static final Signature.Rest
public static final Signature.Rest
private static final Signature.Rest[]

Constructor Summary

AccessConstructor and Description
private
Rest()

Method Summary

Modifier and TypeMethod and Description
public static Signature.Rest
fromOrdinal(int ordinal)

public static Signature.Rest
public static Signature.Rest[]
Inherited from java.lang.Enum:
clonecompareTodescribeConstableequalsfinalizegetDeclaringClasshashCodenameordinaltoStringvalueOf

Field Detail

ANONback to summary
public static final Signature.Rest ANON
NONEback to summary
public static final Signature.Rest NONE
NORMback to summary
public static final Signature.Rest NORM
STARback to summary
public static final Signature.Rest STAR
VALUESback to summary
private static final Signature.Rest[] VALUES

Constructor Detail

Restback to summary
private Rest()

Method Detail

fromOrdinalback to summary
public static Signature.Rest fromOrdinal(int ordinal)
valueOfback to summary
public static Signature.Rest valueOf(String name)
valuesback to summary
public static Signature.Rest[] values()