Module java.corba
Package org.omg.CORBA

Class TypeCode

  • All Implemented Interfaces:
    Serializable, IDLEntity


    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 strings:

         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 unions 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

      Constructors 
      Constructor Description
      TypeCode​()  
    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      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.
    • 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.
        Parameters:
        tc - the typecode to compare with this typecode
        Returns:
        true if the given typecode is equivalent to this typecode; false otherwise
      • 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 ofTypeCode 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 ofTypeCode 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