Class TypeCode
- java.lang.Object
-
- org.omg.CORBA.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 anAny
object, which in turn has as one of its components aTypeCode
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, aTypeCode
object consists of:- a
kind
field, which is set to an instance of the classTCKind
- zero or more additional fields appropriate for the particular kind. For example, the
TypeCode
object describing the OMG IDL type1ong
has kindTCKind.tk_long
and no additional fields. TheTypeCode
describing OMG IDL typesequence<boolean, 10>
has akind
field with the valueTCKind.tk_sequence
and also fields with the valuesboolean
and10
for the type of sequence elements and the length of the sequence.
TypeCode
objects can be obtained in various ways:- from a call to the method
Any.insert_X
, where X is a basic IDL type. This method creates aTypeCode
object for type X and assigns it to theAny
object'stype
field. - from invocations of methods in the ORB class
For example, the following creates a
TypeCode
object for astring
with a maximum of 30 characters:org.omg.CORBA.TypeCode tcString = orb.create_string_tc(30);
The following creates a
TypeCode
object for anarray
of fivestring
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");
- as the return value from the
_type
method inHolder
classes for user-defined IDL types. TheseHolder
classes are generated by theidltojava
compiler. - from a CORBA Interface Repository
Most of the methods in the class
TypeCode
are accessors, and the information contained in aTypeCode
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 exceptionTypeCodePackage.BadKind
. For example, if the methoddiscriminator_type
is called on anything other than aunion
, it will throwBadKind
because onlyunion
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
, andabstract_interface
:id
name
These methods may be invoked on
struct
,union
,enum
, andexception
:member_count
member_name
These methods may be invoked on
struct
,union
, andexception
: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
, andarray
:length
These methods may be invoked on
alias
,sequence
,array
, andvalue_box
:content_type
Unlike other CORBA pseudo-objects,
TypeCode
objects can be passed as general IDL parameters.The methods
parameter
andparam_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 anexception
TypeCode
as well.
-
-
Constructor Summary
Constructors Constructor and Description TypeCode()
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method and Description abstract TypeCode
concrete_base_type()
Returns theTypeCode
object that describes the concrete base type of the value type that thisTypeCode
object describes.abstract TypeCode
content_type()
Returns theTypeCode
object representing the IDL type for the members of the object described by thisTypeCode
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 aTypeCode
object describing all non-default member labels.abstract boolean
equal(TypeCode tc)
Compares thisTypeCode
object with the given one, testing for equality.abstract boolean
equivalent(TypeCode tc)
Tests to see if the givenTypeCode
object is equivalent to thisTypeCode
object.abstract short
fixed_digits()
Returns the number of digits in the fixed type described by thisTypeCode
object.abstract short
fixed_scale()
Returns the scale of the fixed type described by thisTypeCode
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 thisTypeCode
object.abstract TCKind
kind()
Retrieves the kind of thisTypeCode
object.abstract int
length()
Returns the number of elements in the type described by thisTypeCode
object.abstract int
member_count()
Retrieves the number of members in the type described by thisTypeCode
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 theTypeCode
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 thisTypeCode
object within its enclosing scope.abstract short
type_modifier()
Returns a constant indicating the modifier of the value type that thisTypeCode
object describes.
-
-
-
Method Detail
equal
public abstract boolean equal(TypeCode tc)
Compares thisTypeCode
object with the given one, testing for equality.TypeCode
objects are equal if they are interchangeable and give identical results whenTypeCode
operations are applied to them.- Parameters:
-
tc
- theTypeCode
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 givenTypeCode
object is equivalent to thisTypeCode
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 thisTypeCode
object. The kind of a type code determines whichTypeCode
methods may legally be invoked on it.The method
kind
may be invoked on anyTypeCode
object.- Returns:
-
the
TCKind
instance indicating the value of thekind
field of thisTypeCode
object
id
public abstract String id() throws BadKind
Retrieves the RepositoryId globally identifying the type of thisTypeCode
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 interfaceTypeCode
objects always have a RepositoryId. Structure, union, enumeration, and aliasTypeCode
objects obtained from the Interface Repository or the methodORB.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 thisTypeCode
object within its enclosing scope. Since names are local to a Repository, the name returned from aTypeCode
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 interfaceTypeCode
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 thisTypeCode
object.The method
member_count
can be invoked on structure, union, and enumerationTypeCode
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 ofTypeCode
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 aTypeCode
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 enumerationTypeCode
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 ofTypeCode
object
member_type
public abstract TypeCode member_type(int index) throws BadKind, Bounds
Retrieves theTypeCode
object describing the type of the member identified by the given index.The method
member_type
can be invoked on structure and unionTypeCode
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 ofTypeCode
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 unionTypeCode
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-unionTypeCode
object
discriminator_type
public abstract TypeCode discriminator_type() throws BadKind
Returns aTypeCode
object describing all non-default member labels. The methoddiscriminator_type
can be invoked only on unionTypeCode
objects.- Returns:
-
the
TypeCode
object describing the non-default member labels - Throws:
-
BadKind
- if the method is invoked on a non-unionTypeCode
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 unionTypeCode
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-unionTypeCode
object
length
public abstract int length() throws BadKind
Returns the number of elements in the type described by thisTypeCode
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 arrayTypeCode
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 ofTypeCode
object
content_type
public abstract TypeCode content_type() throws BadKind
Returns theTypeCode
object representing the IDL type for the members of the object described by thisTypeCode
object. For sequences and arrays, it returns the element type. For aliases, it returns the original type. Note that multidimensional arrays are represented by nestingTypeCode
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 valuetypeTypeCode
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 ofTypeCode
object
fixed_digits
public abstract short fixed_digits() throws BadKind
Returns the number of digits in the fixed type described by thisTypeCode
object. For example, the typecode for the number 3000.275d could befixed<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 ofTypeCode
object
fixed_scale
public abstract short fixed_scale() throws BadKind
Returns the scale of the fixed type described by thisTypeCode
object. A positive number indicates the number of digits to the right of the decimal point. For example, the number 3000d could have the typecodefixed<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 ofTypeCode
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 valueTypeCode
objects.- Parameters:
-
index
- anint
indicating the index into the value - Returns:
-
either
PRIVATE_MEMBER.value
orPUBLIC_MEMBER.value
- Throws:
-
BadKind
- if this method is invoked on a non-value typeTypeCode
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 thisTypeCode
object describes. The constant returned must be one of the following:VM_NONE.value
,VM_ABSTRACT.value
,VM_CUSTOM.value
, orVM_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 typeTypeCode
object - See Also:
-
CORBA
package comments for unimplemented features
concrete_base_type
public abstract TypeCode concrete_base_type() throws BadKind
Returns theTypeCode
object that describes the concrete base type of the value type that thisTypeCode
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 thisTypeCode
object describes - Throws:
-
BadKind
- if this method is invoked on a non-boxed value typeTypeCode
object - See Also:
-
CORBA
package comments for unimplemented features
-
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2022, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.