package st.gravel.support.compiler.jvm;
/*
This file is automatically generated from typed smalltalk source. Do not edit by hand.
(C) AG5.com
*/
import java.math.BigInteger;
import st.gravel.support.jvm.NonLocalReturn;
import st.gravel.support.compiler.jvm.JVMNode;
import st.gravel.support.compiler.jvm.JVMNode.JVMNode_Factory;
import st.gravel.support.compiler.jvm.JVMDynamicObjectType;
import st.gravel.support.compiler.jvm.JVMDefinedObjectType;
import st.gravel.support.compiler.jvm.JVMType;
import st.gravel.support.compiler.jvm.JVMVoidType;
import st.gravel.support.compiler.jvm.JVMNodeVisitor;
public class JVMMethodType extends JVMNode implements Cloneable {
public static JVMMethodType_Factory factory = new JVMMethodType_Factory();
JVMType[] _arguments;
JVMType _returnType;
public static class JVMMethodType_Factory extends JVMNode_Factory {
public JVMMethodType basicNew() {
JVMMethodType newInstance = new JVMMethodType();
newInstance.initialize();
return newInstance;
}
public JVMMethodType dynamic_(final int _numArgs) {
return ((JVMMethodType) this.returnType_dynamic_(JVMDynamicObjectType.factory.basicNew(), _numArgs));
}
public JVMMethodType object() {
return ((JVMMethodType) this.returnType_(JVMDefinedObjectType.factory.object()));
}
public JVMMethodType returnType_(final JVMType _aJVMDefinedObjectType) {
return this.returnType_arguments_(_aJVMDefinedObjectType, new JVMType[] {});
}
public JVMMethodType returnType_arguments_(final JVMType _aJVMDefinedObjectType, final JVMType[] _anArray) {
return this.basicNew().initializeReturnType_arguments_(_aJVMDefinedObjectType, _anArray);
}
public JVMMethodType returnType_dynamic_(final JVMType _aJVMDefinedObjectType, final int _numArgs) {
return ((JVMMethodType) this.returnType_arguments_(_aJVMDefinedObjectType, new st.gravel.core.Interval(1, _numArgs).collect_(new st.gravel.support.jvm.Block1<JVMType, Integer>() {
@Override
public JVMType value_(final Integer _i) {
return (JVMType) JVMDynamicObjectType.factory.basicNew();
}
})));
}
public JVMMethodType r_void() {
return ((JVMMethodType) this.returnType_(JVMVoidType.factory.basicNew()));
}
public JVMMethodType voidArguments_(final JVMType[] _anArray) {
return this.returnType_arguments_(JVMVoidType.factory.basicNew(), _anArray);
}
public JVMMethodType voidDynamic_(final int _numArgs) {
return this.returnType_dynamic_(JVMVoidType.factory.basicNew(), _numArgs);
}
}
static public JVMMethodType _dynamic_(Object receiver, final int _numArgs) {
return factory.dynamic_(_numArgs);
}
static public JVMMethodType _object(Object receiver) {
return factory.object();
}
static public JVMMethodType _returnType_(Object receiver, final JVMType _aJVMDefinedObjectType) {
return factory.returnType_(_aJVMDefinedObjectType);
}
static public JVMMethodType _returnType_arguments_(Object receiver, final JVMType _aJVMDefinedObjectType, final JVMType[] _anArray) {
return factory.returnType_arguments_(_aJVMDefinedObjectType, _anArray);
}
static public JVMMethodType _returnType_dynamic_(Object receiver, final JVMType _aJVMDefinedObjectType, final int _numArgs) {
return factory.returnType_dynamic_(_aJVMDefinedObjectType, _numArgs);
}
static public JVMMethodType _r_void(Object receiver) {
return factory.r_void();
}
static public JVMMethodType _voidArguments_(Object receiver, final JVMType[] _anArray) {
return factory.voidArguments_(_anArray);
}
static public JVMMethodType _voidDynamic_(Object receiver, final int _numArgs) {
return factory.voidDynamic_(_numArgs);
}
@Override
public <X> X accept_(final JVMNodeVisitor<X> _visitor) {
return _visitor.visitJVMMethodType_(this);
}
public JVMType[] arguments() {
return _arguments;
}
public JVMMethodType copy() {
try {
JVMMethodType _temp1 = (JVMMethodType) this.clone();
_temp1.postCopy();
return _temp1;
} catch (CloneNotSupportedException e) {
throw new RuntimeException(e);
}
}
public JVMMethodType copyWithFirst_(final JVMType _aJVMType) {
return this.copy().pvtSetArguments_(st.gravel.support.jvm.ArrayExtensions.copyWithFirst_(_arguments, _aJVMType));
}
public JVMMethodType descriptorOn_(final StringBuilder _aStream) {
_aStream.append('(');
for (final JVMType _each : _arguments) {
_each.descriptorOn_(_aStream);
}
_aStream.append(')');
_returnType.descriptorOn_(_aStream);
return this;
}
public String descriptorString() {
final StringBuilder _aStream;
_aStream = st.gravel.support.jvm.WriteStreamFactory.on_(new String());
this.descriptorOn_(_aStream);
return _aStream.toString();
}
public JVMMethodType_Factory factory() {
return factory;
}
public JVMMethodType initializeReturnType_arguments_(final JVMType _aJVMDefinedObjectType, final JVMType[] _anArray) {
_returnType = _aJVMDefinedObjectType;
_arguments = _anArray;
this.initialize();
return this;
}
public int numArgs() {
return _arguments.length;
}
@Override
public JVMMethodType printOn_(final StringBuilder _aStream) {
this.sourceOn_(_aStream);
return this;
}
public JVMMethodType pvtSetArguments_(final JVMType[] _anArray) {
_arguments = _anArray;
return this;
}
public JVMType returnType() {
return _returnType;
}
@Override
public JVMMethodType sourceOn_(final StringBuilder _aStream) {
_aStream.append('(');
for (final JVMType _each : _arguments) {
_each.printOn_(_aStream);
}
_aStream.append(')');
_returnType.printOn_(_aStream);
return this;
}
}