Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| JavaTM 2 Platform Std. Ed. v1.4.1
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.omg.CORBA
Class TypeCode

    java.lang.Object
      |
      +--org.omg.CORBA.TypeCode

All Implemented Interfaces:
  IDLEntity, Serializable

public abstract class TypeCode
extends Object
implements IDLEntity

A container for information about a specific CORBA data type.

`TypeCode` objects are used:

- in the Dynamic Invocation Interface -- to indicate the types of the actual arguments or the type of the return value.
  `NamedValue` objects are used to represent arguments and return values. One of their components is an `Any` object, which in turn has as one of its components a `TypeCode` object.
- by an Interface Repository to represent the type specifications that are part of many OMG IDL declarations

The representation of a `TypeCode` object is opaque, but abstractly, a `TypeCode` object consists of:

- a `kind` field, which is set to an instance of the class `TCKind`
- zero or more additional fields appropriate for the particular kind. For example, the `TypeCode` object describing the OMG IDL type `1ong` has kind `TCKind.tk_long` and no additional fields. The `TypeCode` describing OMG IDL type `sequence<boolean, 10>` has a `kind` field with the value `TCKind.tk_sequence` and also fields with the values `boolean` and `10` for the type of sequence elements and the length of the sequence.

`TypeCode` objects can be obtained in various ways:

1. from a call to the method `Any.insert_X`, where X is a basic IDL type. This method creates a `TypeCode` object for type X and assigns it to the `Any` object's `type` field.
2. from invocations of methods in the ORB class

   For example, the following creates a `TypeCode` object for a `string` with a maximum of 30 characters:

          org.omg.CORBA.TypeCode tcString = orb.create_string_tc(30);

   The following creates a `TypeCode` object for an `array` of five `string`s:

          org.omg.CORBA.TypeCode tcArray = orb.create_array_tc(
                                              5, TCKind.tk_string);

   The following creates a `TypeCode` object for an interface named "Account":

          org.omg.CORBA.TypeCode tcInterface = orb.create_interface_tc(
                                                        "thisId", "Account");

3. as the return value from the `_type` method in `Holder` classes for user-defined IDL types. These `Holder` classes are generated by the `idltojava` compiler.
4. from a CORBA Interface Repository

Most of the methods in the class `TypeCode` are accessors, and the information contained in a `TypeCode` object is specific to a particular type. Therefore, methods must be invoked only on the kind of type codes to which they apply. If an accessor method tries to access information from an inappropriate kind of type code, it will throw the exception `TypeCodePackage.BadKind`. For example, if the method `discriminator_type` is called on anything other than a `union`, it will throw `BadKind` because only `union`s have a discriminator. The following list shows which methods apply to which kinds of type codes:

These methods may be invoked on all `TypeCode` kinds:

- `equal`
- `kind`

These methods may be invoked on `objref`, `struct`, `union`, `enum`, `alias`, `exception`, `value`, `value_box`, `native`, and `abstract_interface`:

- `id`
- `name`

These methods may be invoked on `struct`, `union`, `enum`, and `exception`:

- `member_count`
- `member_name`

These methods may be invoked on `struct`, `union`, and `exception`:

- `member_type(int index)`

These methods may be invoked on `union`:

- `member_label`
- `discriminator_type`
- `default_index`

These methods may be invoked on `string`, `sequence`, and `array`:

- `length`

These methods may be invoked on `alias`, `sequence`, `array`, and `value_box`:

- `content_type`

Unlike other CORBA pseudo-objects, `TypeCode` objects can be passed as general IDL parameters.

The methods `parameter` and `param_count`, which are deprecated, are not mapped.

Java IDL extends the CORBA specification to allow all operations permitted on a `struct` `TypeCode` to be permitted on an `exception` `TypeCode` as well.

Constructor Summary
`TypeCode()`

Method Summary
`abstract TypeCode` | `concrete_base_type()` Returns the `TypeCode` object that describes the concrete base type of the value type that this `TypeCode` object describes.
`abstract TypeCode` | `content_type()` Returns the `TypeCode` object representing the IDL type for the members of the object described by this `TypeCode` object.
`abstract int` | `default_index()` Returns the index of the default member, or -1 if there is no default member.
`abstract TypeCode` | `discriminator_type()` Returns a `TypeCode` object describing all non-default member labels.
`abstract boolean` | `equal(TypeCode tc)` Compares this `TypeCode` object with the given one, testing for equality.
`abstract boolean` | `equivalent(TypeCode tc)` Tests to see if the given `TypeCode` object is equivalent to this `TypeCode` object.
`abstract short` | `fixed_digits()` Returns the number of digits in the fixed type described by this `TypeCode` object.
`abstract short` | `fixed_scale()` Returns the scale of the fixed type described by this `TypeCode` object.
`abstract TypeCode` | `get_compact_typecode()` Strips out all optional name and member name fields, but leaves all alias typecodes intact.
`abstract String` | `id()` Retrieves the RepositoryId globally identifying the type of this `TypeCode` object.
`abstract TCKind` | `kind()` Retrieves the kind of this `TypeCode` object.
`abstract int` | `length()` Returns the number of elements in the type described by this `TypeCode` object.
`abstract int` | `member_count()` Retrieves the number of members in the type described by this `TypeCode` object.
`abstract Any` | `member_label(int index)` Retrieves the label of the union member identified by the given index.
`abstract String` | `member_name(int index)` Retrieves the simple name of the member identified by the given index.
`abstract TypeCode` | `member_type(int index)` Retrieves the `TypeCode` object describing the type of the member identified by the given index.
`abstract short` | `member_visibility(int index)` Returns the constant that indicates the visibility of the member at the given index.
`abstract String` | `name()` Retrieves the simple name identifying this `TypeCode` object within its enclosing scope.
`abstract short` | `type_modifier()` Returns a constant indicating the modifier of the value type that this `TypeCode` object describes.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### TypeCode

    public TypeCode()

Method Detail

### equal

    public abstract boolean equal(TypeCode tc)

  Compares this `TypeCode` object with the given one, testing for equality. `TypeCode` objects are equal if they are interchangeable and give identical results when `TypeCode` operations are applied to them.

  Parameters:
    `tc` - the `TypeCode` object to compare against
  Returns:
    `true` if the type codes are equal; `false` otherwise

### equivalent

    public abstract boolean equivalent(TypeCode tc)

  Tests to see if the given `TypeCode` object is equivalent to this `TypeCode` object.

  Not implemented; see package comments.

  Parameters:
    `tc` - the typecode to compare with this typecode
  Returns:
    `true` if the given typecode is equivalent to this typecode; `false` otherwise
  See Also:
    `CORBA` package comments for unimplemented features

### get_compact_typecode

    public abstract TypeCode get_compact_typecode()

  Strips out all optional name and member name fields, but leaves all alias typecodes intact.

  Returns:
    a `TypeCode` object with optional name and member name fields stripped out, except for alias typecodes, which are left intact
  See Also:
    `CORBA` package comments for unimplemented features

### kind

    public abstract TCKind kind()

  Retrieves the kind of this `TypeCode` object. The kind of a type code determines which `TypeCode` methods may legally be invoked on it.

  The method `kind` may be invoked on any `TypeCode` object.

  Returns:
    the `TCKind` instance indicating the value of the `kind` field of this `TypeCode` object

### id

    public abstract String id()
                       throws BadKind

  Retrieves the RepositoryId globally identifying the type of this `TypeCode` object.

  The method `id` can be invoked on object reference, structure, union, enumeration, alias, exception, valuetype, boxed valuetype, native, and abstract interface type codes. Object reference, exception, valuetype, boxed valuetype, native, and abstract interface `TypeCode` objects always have a RepositoryId. Structure, union, enumeration, and alias `TypeCode` objects obtained from the Interface Repository or the method `ORB.create_operation_list` also always have a RepositoryId. If there is no RepositoryId, the method can return an empty string.

  Returns:
    the RepositoryId for this `TypeCode` object or an empty string if there is no RepositoryID
  Throws:
    `BadKind` - if the method is invoked on an inappropriate kind of`TypeCode` object

### name

    public abstract String name()
                         throws BadKind

  Retrieves the simple name identifying this `TypeCode` object within its enclosing scope. Since names are local to a Repository, the name returned from a `TypeCode` object may not match the name of the type in any particular Repository, and may even be an empty string.

  The method `name` can be invoked on object reference, structure, union, enumeration, alias, exception, valuetype, boxed valuetype, native, and abstract interface `TypeCode` objects.

  Returns:
    the name identifying this `TypeCode` object or an empty string
  Throws:
    `BadKind` - if the method is invoked on an inappropriate kind of`TypeCode` object

### member_count

    public abstract int member_count()
                              throws BadKind

  Retrieves the number of members in the type described by this `TypeCode` object.

  The method `member_count` can be invoked on structure, union, and enumeration `TypeCode` objects. Java IDL extends the CORBA specification to allow this method to operate on exceptions as well.

  Returns:
    the number of members constituting the type described by this `TypeCode` object
  Throws:
    `BadKind` - if the method is invoked on an inappropriate kind of `TypeCode` object

### member_name

    public abstract String member_name(int index)
                                throws BadKind,
                                       Bounds

  Retrieves the simple name of the member identified by the given index. Since names are local to a Repository, the name returned from a `TypeCode` object may not match the name of the member in any particular Repository, and may even be an empty string.

  The method `member_name` can be invoked on structure, union, and enumeration `TypeCode` objects. Java IDL extends the CORBA specification to allow this method to operate on exceptions as well.

  Parameters:
    `index` - index of the member for which a name is being reqested
  Returns:
    simple name of the member identified by the index or an empty string
  Throws:
    `Bounds` - if the index is equal to or greater than the number of members constituting the type
    `BadKind` - if the method is invoked on an inappropriate kind of `TypeCode` object

### member_type

    public abstract TypeCode member_type(int index)
                                  throws BadKind,
                                         Bounds

  Retrieves the `TypeCode` object describing the type of the member identified by the given index.

  The method `member_type` can be invoked on structure and union `TypeCode` objects. Java IDL extends the CORBA specification to allow this method to operate on exceptions as well.

  Parameters:
    `index` - index of the member for which type information is begin requested
  Returns:
    the `TypeCode` object describing the member at the given index
  Throws:
    `Bounds` - if the index is equal to or greater than the number of members constituting the type
    `BadKind` - if the method is invoked on an inappropriate kind of `TypeCode` object

### member_label

    public abstract Any member_label(int index)
                              throws BadKind,
                                     Bounds

  Retrieves the label of the union member identified by the given index. For the default member, the label is the zero octet.

  The method `member_label` can only be invoked on union `TypeCode` objects.

  Parameters:
    `index` - index of the union member for which the label is being requested
  Returns:
    an `Any` object describing the label of the requested union member or the zero octet for the default member
  Throws:
    `Bounds` - if the index is equal to or greater than the number of members constituting the union
    `BadKind` - if the method is invoked on a non-union `TypeCode` object

### discriminator_type

    public abstract TypeCode discriminator_type()
                                         throws BadKind

  Returns a `TypeCode` object describing all non-default member labels. The method `discriminator_type` can be invoked only on union `TypeCode` objects.

  Returns:
    the `TypeCode` object describing the non-default member labels
  Throws:
    `BadKind` - if the method is invoked on a non-union `TypeCode` object

### default_index

    public abstract int default_index()
                               throws BadKind

  Returns the index of the default member, or -1 if there is no default member.

  The method `default_index` can be invoked only on union `TypeCode` objects.

  Returns:
    the index of the default member, or -1 if there is no default member
  Throws:
    `BadKind` - if the method is invoked on a non-union `TypeCode` object

### length

    public abstract int length()
                        throws BadKind

  Returns the number of elements in the type described by this `TypeCode` object. For strings and sequences, it returns the bound, with zero indicating an unbounded string or sequence. For arrays, it returns the number of elements in the array.

  The method `length` can be invoked on string, sequence, and array `TypeCode` objects.

  Returns:
    the bound for strings and sequences, or the number of elements for arrays
  Throws:
    `BadKind` - if the method is invoked on an inappropriate kind of `TypeCode` object

### content_type

    public abstract TypeCode content_type()
                                   throws BadKind

  Returns the `TypeCode` object representing the IDL type for the members of the object described by this `TypeCode` object. For sequences and arrays, it returns the element type. For aliases, it returns the original type. Note that multidimensional arrays are represented by nesting `TypeCode` objects, one per dimension. For boxed valuetypes, it returns the boxed type.

  The method `content_type` can be invoked on sequence, array, alias, and boxed valuetype `TypeCode` objects.

  Returns:
    a `TypeCode` object representing the element type for sequences and arrays, the original type for aliases, or the boxed type for boxed valuetypes.
  Throws:
    `BadKind` - if the method is invoked on an inappropriate kind of `TypeCode` object

### fixed_digits

    public abstract short fixed_digits()
                                throws BadKind

  Returns the number of digits in the fixed type described by this `TypeCode` object. For example, the typecode for the number 3000.275d could be `fixed<7,3>`, where 7 is the precision and 3 is the scale.

  Returns:
    the total number of digits
  Throws:
    `BadKind` - if this method is invoked on an inappropriate kind of `TypeCode` object

### fixed_scale

    public abstract short fixed_scale()
                               throws BadKind

  Returns the scale of the fixed type described by this `TypeCode` object. A positive number indicates the number of digits to the right of the decimal point. For example, the number 3000d could have the typecode `fixed<4,0>`, where the first number is the precision and the second number is the scale. A negative number is also possible and adds zeroes to the left of the decimal point. In this case, `fixed<1,-3>`, could be the typecode for the number 3000d.

  Returns:
    the scale of the fixed type that this `TypeCode` object describes
  Throws:
    `BadKind` - if this method is invoked on an inappropriate kind of `TypeCode` object

### member_visibility

    public abstract short member_visibility(int index)
                                     throws BadKind,
                                            Bounds

  Returns the constant that indicates the visibility of the member at the given index. This operation can only be invoked on non-boxed value `TypeCode` objects.

  Parameters:
    `index` - an `int` indicating the index into the value
  Returns:
    either `PRIVATE_MEMBER.value` or `PUBLIC_MEMBER.value`
  Throws:
    `BadKind` - if this method is invoked on a non-value type `TypeCode` object
    `Bounds` - if the given index is out of bounds
  See Also:
    `CORBA` package comments for unimplemented features

### type_modifier

    public abstract short type_modifier()
                                 throws BadKind

  Returns a constant indicating the modifier of the value type that this `TypeCode` object describes. The constant returned must be one of the following: `VM_NONE.value`, `VM_ABSTRACT.value`, `VM_CUSTOM.value`, or `VM_TRUNCATABLE.value`,

  Returns:
    a constant describing the value type that this `TypeCode` object describes
  Throws:
    `BadKind` - if this method is invoked on a non-value type `TypeCode` object
  See Also:
    `CORBA` package comments for unimplemented features

### concrete_base_type

    public abstract TypeCode concrete_base_type()
                                         throws BadKind

  Returns the `TypeCode` object that describes the concrete base type of the value type that this `TypeCode` object describes. Returns null if it doesn't have a concrete base type.

  Returns:
    the `TypeCode` object that describes the concrete base type of the value type that this `TypeCode` object describes
  Throws:
    `BadKind` - if this method is invoked on a non-boxed value type `TypeCode` object
  See Also:
    `CORBA` package comments for unimplemented features

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| JavaTM 2 Platform Std. Ed. v1.4.1
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Submit a bug or feature
For further API reference and developer documentation, see Java 2 SDK SE Developer Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.

Copyright 2002 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.