BoxableTypeConstant (API documentation of hlt.language packages)
Date: 2013-01-30

hlt.language.design.types

## Class BoxableTypeConstant

- java.lang.Object
- - hlt.language.design.types.Type
  - - hlt.language.design.types.StaticType
    - - hlt.language.design.types.ConstructedType
      - - hlt.language.design.types.BoxableTypeConstant

- All Implemented Interfaces:
    Valuable

      public class BoxableTypeConstant
      extends ConstructedType

- - ### Field Summary

    - ### Fields inherited from class hlt.language.design.types.Type

      `ARRAY, BAG, BOOLEAN, BOXABLE, CHAR, CLASS, COLLECTION, CONSTANT, DEFINED, FUNCTION, INT, INT_RANGE, INT_SORT, LIST, NAMED_TUPLE, OBJECT_SORT, PARAMETER, REAL, REAL_RANGE, REAL_SORT, SET, STRING, TUPLE, VOID, VOID_SORT`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `BoxableTypeConstant(Type type)`
    `BoxableTypeConstant(Type type, boolean flag)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Type` | `copy(java.util.HashMap parameters)` Returns a copy of this type with a consistent renaming of all free type parameters, and identyfing bound type parameters with their values.
    `int` | `eqCode()` Returns a hash code for this type - the reason for using the name `eqCode` (rather than overriding `hashCode`), is that it is important to preserve the implementation of `java.lang.Object.hashCode` for type parameters (to be compatible with `==`).
    `boolean` | `isBoxedType()` This returns `true` iff this type has been marked as boxed (`true` by default - overridden by `TypeConstant`).
    `boolean` | `isEqualTo(Type type)` Returns true iff this type constant and the specified type have equal underlying types and boxing information.
    `boolean` | `isEqualTo(Type type, java.util.HashMap parameters)` Returns true iff this boxable type constant and the specified type are equal (`parameters` is disregarded because no type parameters may occur in a boxable type constant.
    `byte` | `kind()` This returns the value identifying what kind of type this is.
    `int` | `numberOfTypeComponents()` Returns the number of type components making up this type.
    `Type` | `setBoxed(boolean flag)` With `true` (resp.
    `void` | `setTypeRefComponent(int n, Type type)` Sets the `n`-th undereferenced type component of this type to the specified type; throws a `NoSuchTypeComponentException` otherwise.
    `byte` | `sort()` This returns the runtime sort for this type (`OBJECT_SORT` by default - overridden by `TypeConstant`).
    `java.lang.String` | `toString()`
    `Type` | `type()`
    `Type` | `typeRefComponent(int n)` Returns the `n`-th undereferenced type component in this type, if any; throws a `NoSuchTypeComponentException` otherwise.
    `boolean` | `unify(Type type)` This unifies this type with the specified type with no possibility of undoing any effects.
    `void` | `unify(Type type, TypeChecker typeChecker)` This unifies this type with the specified type in the context of the specified `TypeChecker`.

    - ### Methods inherited from class hlt.language.design.types.Type

      `actualType, array, array, baseType, baseTypeRef, BOOLEAN, BOXED_BOOLEAN, BOXED_CHAR, BOXED_INT, BOXED_REAL, boxSort, CHAR, checkOccurrence, copy, curry, equals, findValue, flatten, getParameters, getParameters, getValue, instantiate, INT, is, isBag, isBoolean, isChar, isCollection, isGlobalUnsafe, isInt, isList, isPolymorphic, isPrimitive, isReal, isSet, isString, isVoid, kindString, rank, REAL, resetNames, shadowType, standardize, toFullString, toQuantifiedString, toQuantifiedString, typeComponent, unwrapper, value, wrapper`

    - ### Methods inherited from class java.lang.Object

      `getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### BoxableTypeConstant

          public BoxableTypeConstant(Type type)

    - #### BoxableTypeConstant

          public BoxableTypeConstant(Type type,
                             boolean flag)

  - ### Method Detail

    - #### numberOfTypeComponents

          public final int numberOfTypeComponents()

      Description copied from class: `Type`
      Returns the number of type components making up this type.
      Specified by:
        `numberOfTypeComponents` in class `Type`

    - #### typeRefComponent

          public final Type typeRefComponent(int n)
                                      throws NoSuchTypeComponentException

      Description copied from class: `Type`
      Returns the `n`-th undereferenced type component in this type, if any; throws a `NoSuchTypeComponentException` otherwise.
      Specified by:
        `typeRefComponent` in class `Type`
      Throws:
        `NoSuchTypeComponentException`

    - #### setTypeRefComponent

          public final void setTypeRefComponent(int n,
                                 Type type)
                                         throws NoSuchTypeComponentException

      Description copied from class: `Type`
      Sets the `n`-th undereferenced type component of this type to the specified type; throws a `NoSuchTypeComponentException` otherwise.
      Specified by:
        `setTypeRefComponent` in class `Type`
      Throws:
        `NoSuchTypeComponentException`

    - #### setBoxed

          public final Type setBoxed(boolean flag)

      Description copied from class: `Type`
      With `true` (resp. `false`), this marks this type as boxed (resp., unboxed), if it is boxable. Does nothing by default.

      N.B.: The following definition specifies only the default behavior for this method. Specific subclasses are generally expected to override this method.

      Overrides:
        `setBoxed` in class `Type`

    - #### sort

          public final byte sort()

      Description copied from class: `Type`
      This returns the runtime sort for this type (`OBJECT_SORT` by default - overridden by `TypeConstant`).

      N.B.: The following definition specifies only the default behavior for this method. Specific subclasses are generally expected to override this method.

      Overrides:
        `sort` in class `Type`

    - #### type

          public final Type type()

    - #### isBoxedType

          public final boolean isBoxedType()

      Description copied from class: `Type`
      This returns `true` iff this type has been marked as boxed (`true` by default - overridden by `TypeConstant`).

      N.B.: The following definition specifies only the default behavior for this method. Specific subclasses are generally expected to override this method.

      Overrides:
        `isBoxedType` in class `Type`

    - #### kind

          public final byte kind()

      Description copied from class: `Type`
      This returns the value identifying what kind of type this is.
      Specified by:
        `kind` in class `Type`

    - #### copy

          public final Type copy(java.util.HashMap parameters)

      Description copied from class: `Type`
      Returns a copy of this type with a consistent renaming of all free type parameters, and identyfing bound type parameters with their values.

      N.B.: The following definition specifies only the default behavior for this method. Specific subclasses are generally expected to override this method.

      Overrides:
        `copy` in class `Type`

    - #### unify

          public final void unify(Type type,
                   TypeChecker typeChecker)
                           throws FailedUnificationException

      Description copied from class: `Type`
      This unifies this type with the specified type in the context of the specified `TypeChecker`.
      Specified by:
        `unify` in class `Type`
      Throws:
        `FailedUnificationException`

    - #### unify

          public final boolean unify(Type type)

      Description copied from class: `Type`
      This unifies this type with the specified type with no possibility of undoing any effects. This method is meant to be used on types that are fresh copies independent of any type-checker because it will side-effect the structures it traverses. It returns `true` iff unification succeeds. NB: This method does not perform the "occurs-check" test.
      Specified by:
        `unify` in class `Type`

    - #### eqCode

          public final int eqCode()

      Description copied from class: `Type`
      Returns a hash code for this type - the reason for using the name `eqCode` (rather than overriding `hashCode`), is that it is important to preserve the implementation of `java.lang.Object.hashCode` for type parameters (to be compatible with `==`). All we require with this new code is that it be compatible with type equality as defined by `isEqualTo` - and it is! Incidentally, the same reason goes for preserving `equals` for type parameters to be compatible with `==` - and it is (see `TypeParameter`).
      Specified by:
        `eqCode` in class `Type`

    - #### isEqualTo

          public final boolean isEqualTo(Type type)

      Returns true iff this type constant and the specified type have equal underlying types and boxing information.
      Specified by:
        `isEqualTo` in class `Type`

    - #### isEqualTo

          public final boolean isEqualTo(Type type,
                          java.util.HashMap parameters)

      Returns true iff this boxable type constant and the specified type are equal (`parameters` is disregarded because no type parameters may occur in a boxable type constant.
      Specified by:
        `isEqualTo` in class `Type`

    - #### toString

          public final java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`