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.JVMNonPrimitiveType;
import st.gravel.support.compiler.jvm.JVMNonPrimitiveType.JVMNonPrimitiveType_Factory;
import st.gravel.support.compiler.jvm.JVMType;
import st.gravel.support.compiler.jvm.JVMIntType;
import st.gravel.support.compiler.jvm.JVMDynamicObjectType;
import st.gravel.support.compiler.jvm.CastTo;
import st.gravel.support.compiler.jvm.IdentityCast;
import st.gravel.support.compiler.jvm.CastObjectToDefined;
import st.gravel.support.compiler.jvm.JVMMethodType;
public class JVMDefinedObjectType extends JVMNonPrimitiveType implements Cloneable {
public static JVMDefinedObjectType_Factory factory = new JVMDefinedObjectType_Factory();
String[] _path;
public static class JVMDefinedObjectType_Factory extends JVMNonPrimitiveType_Factory {
public JVMDefinedObjectType basicNew() {
JVMDefinedObjectType newInstance = new JVMDefinedObjectType();
newInstance.initialize();
return newInstance;
}
public JVMDefinedObjectType bigInteger() {
return this.className_("java/math/BigInteger");
}
public JVMDefinedObjectType block_(final int _anInteger) {
return JVMDefinedObjectType.factory.className_("st/gravel/support/jvm/Block" + "" + _anInteger);
}
public JVMDefinedObjectType character() {
return this.className_("java/lang/Character");
}
public JVMDefinedObjectType charBuffer() {
return this.className_("java/nio/CharBuffer");
}
public JVMDefinedObjectType classCastException() {
return this.className_("java/lang/ClassCastException");
}
public JVMDefinedObjectType className_(final String _aString) {
return this.path_(st.gravel.support.jvm.StringExtensions.tokensBasedOn_(_aString, '/'));
}
public JVMDefinedObjectType dottedClassName_(final String _aString) {
return this.path_(st.gravel.support.jvm.StringExtensions.tokensBasedOn_(_aString, '.'));
}
public JVMDefinedObjectType hashMap() {
return this.className_("java/util/HashMap");
}
public JVMDefinedObjectType integer() {
return this.className_("java/lang/Integer");
}
public JVMDefinedObjectType nonLocalReturn() {
return this.className_("st/gravel/support/jvm/NonLocalReturn");
}
public JVMDefinedObjectType object() {
return this.className_("java/lang/Object");
}
public JVMDefinedObjectType objectClass() {
return this.className_("st/gravel/support/jvm/ObjectClass");
}
public JVMDefinedObjectType path_(final String[] _anArray) {
return this.basicNew().initializePath_(_anArray);
}
public JVMDefinedObjectType runtimeException() {
return this.className_("java/lang/RuntimeException");
}
public JVMDefinedObjectType r_boolean() {
return this.className_("java/lang/Boolean");
}
public JVMDefinedObjectType r_double() {
return this.className_("java/lang/Double");
}
public JVMDefinedObjectType r_float() {
return this.className_("java/lang/Float");
}
public JVMDefinedObjectType string() {
return this.className_("java/lang/String");
}
public JVMDefinedObjectType stringBuilder() {
return this.className_("java/lang/StringBuilder");
}
public JVMDefinedObjectType symbol() {
return this.className_("st/gravel/core/Symbol");
}
}
static public JVMDefinedObjectType _bigInteger(Object receiver) {
return factory.bigInteger();
}
static public JVMDefinedObjectType _block_(Object receiver, final int _anInteger) {
return factory.block_(_anInteger);
}
static public JVMDefinedObjectType _character(Object receiver) {
return factory.character();
}
static public JVMDefinedObjectType _charBuffer(Object receiver) {
return factory.charBuffer();
}
static public JVMDefinedObjectType _classCastException(Object receiver) {
return factory.classCastException();
}
static public JVMDefinedObjectType _className_(Object receiver, final String _aString) {
return factory.className_(_aString);
}
static public JVMDefinedObjectType _dottedClassName_(Object receiver, final String _aString) {
return factory.dottedClassName_(_aString);
}
static public JVMDefinedObjectType _hashMap(Object receiver) {
return factory.hashMap();
}
static public JVMDefinedObjectType _integer(Object receiver) {
return factory.integer();
}
static public JVMDefinedObjectType _nonLocalReturn(Object receiver) {
return factory.nonLocalReturn();
}
static public JVMDefinedObjectType _object(Object receiver) {
return factory.object();
}
static public JVMDefinedObjectType _objectClass(Object receiver) {
return factory.objectClass();
}
static public JVMDefinedObjectType _path_(Object receiver, final String[] _anArray) {
return factory.path_(_anArray);
}
static public JVMDefinedObjectType _runtimeException(Object receiver) {
return factory.runtimeException();
}
static public JVMDefinedObjectType _r_boolean(Object receiver) {
return factory.r_boolean();
}
static public JVMDefinedObjectType _r_double(Object receiver) {
return factory.r_double();
}
static public JVMDefinedObjectType _r_float(Object receiver) {
return factory.r_float();
}
static public JVMDefinedObjectType _string(Object receiver) {
return factory.string();
}
static public JVMDefinedObjectType _stringBuilder(Object receiver) {
return factory.stringBuilder();
}
static public JVMDefinedObjectType _symbol(Object receiver) {
return factory.symbol();
}
@Override
public String className() {
return st.gravel.support.jvm.ArrayExtensions.joinWith_(_path, "/");
}
@Override
public JVMType commonSuperTypeWithInt_(final JVMIntType _aJVMIntType) {
if (st.gravel.support.jvm.ObjectExtensions.equals_(this, JVMDefinedObjectType.factory.integer())) {
return JVMDefinedObjectType.factory.integer();
}
return JVMDynamicObjectType.factory.basicNew();
}
@Override
public JVMType commonSuperTypeWith_(final JVMType _aJVMType) {
return _aJVMType.commonSuperTypeWithDefined_(this);
}
public JVMDefinedObjectType copy() {
try {
JVMDefinedObjectType _temp1 = (JVMDefinedObjectType) this.clone();
_temp1.postCopy();
return _temp1;
} catch (CloneNotSupportedException e) {
throw new RuntimeException(e);
}
}
@Override
public JVMDefinedObjectType descriptorOn_(final StringBuilder _aStream) {
_aStream.append('L');
boolean _temp1 = true;
for (final String _each : _path) {
if (_temp1) {
_temp1 = false;
} else {
_aStream.append('/');
}
_aStream.append(_each);
}
_aStream.append(';');
return this;
}
@Override
public String dottedClassName() {
return st.gravel.support.jvm.ArrayExtensions.joinWith_(_path, ".");
}
@Override
public boolean equals(final Object _anObject) {
if (!(this.getClass() == _anObject.getClass())) {
return false;
}
if (this._path == null) {
if (!(((JVMDefinedObjectType) _anObject)._path == null)) {
return false;
}
} else {
if (!st.gravel.support.jvm.ArrayExtensions.equals_(this._path, ((JVMDefinedObjectType) _anObject)._path)) {
return false;
}
}
return true;
}
public JVMDefinedObjectType_Factory factory() {
return factory;
}
@Override
public int hashCode() {
return (super.hashCode() + java.util.Arrays.hashCode(_path));
}
public JVMDefinedObjectType initializePath_(final String[] _anOrderedCollection) {
_path = _anOrderedCollection;
this.initialize();
return this;
}
@Override
public boolean isDefinedType() {
return true;
}
@Override
public boolean isObjectType() {
return true;
}
@Override
public CastTo newCastInstructionFromDefinedObject_(final JVMDefinedObjectType _anObject) {
if (st.gravel.support.jvm.ObjectExtensions.equals_(this, _anObject)) {
return IdentityCast.factory.basicNew();
}
return CastObjectToDefined.factory.type_(this);
}
@Override
public CastObjectToDefined newCastInstructionFromDynamicObject() {
return CastObjectToDefined.factory.type_(this);
}
@Override
public CastTo newCastInstructionTo_(final JVMType _aJVMType) {
return _aJVMType.newCastInstructionFromDefinedObject_(this);
}
public String[] path() {
return _path;
}
@Override
public JVMDefinedObjectType printOn_(final StringBuilder _aStream) {
this.sourceOn_(_aStream);
return this;
}
@Override
public JVMDefinedObjectType sourceOn_(final StringBuilder _aStream) {
this.descriptorOn_(_aStream);
return this;
}
public JVMMethodType withArgument_(final JVMType _aJVMType) {
return JVMMethodType.factory.returnType_arguments_(this, st.gravel.support.jvm.ArrayFactory.with_(_aJVMType));
}
}