Prev Up Next
Go backward to IDL Basic Types
Go up to Overview of the IDL Data Types
Go forward to Sequence

IDL Complex Types

The IDL complex types are data types enum, struct, union, string, sequence, and array.

Enum

An enumerated type allows you to assign identifiers to the members of a set of values, for example:


    module Finance { 
      enum Currency {pound, dollar, yen, franc}; 
      interface Account { 
        readonly attribute float balance; 
        readonly attribute Currency balanceCurrency; 
        ... 
      }; 
    }; 
In this example, attribute balanceCurrency in interface Account can take any one of the values pound, dollar, yen, or franc.

Struct

A struct data type allows you to package a set of named members of various types, for example:


    module Finance { 
      struct CustomerDetails { 
         string name; 
         short age; 
      }; 

      interface Bank { 
         CustomerDetails getCustomerDetails(in string name); 
         ... 
      }; 
   }; 

In this example, the struct CustomerDetails has two members. The operation getCustomerDetails returns a struct of type CustomerDetails that includes values for the customer name and age.

Union

A union data type allows you to define a structure that can contain only one of several alternative members at any given time.

A union saves space in memory, as the amount of storage required for a union is the amount necessary to store its largest member.

All IDL unions are discriminated. A discriminated union associates a label value with each member. The value of the label indicates which member of the union currently stores a value.

For example, consider the following IDL union definition:


    struct DateStructure { 
       short Day; 
       short Month; 
       short Year; 
    }; 

    union Date switch (short) { 
       case 1: string stringFormat;; 
       case 2: long digitalFormat; 
       default: DateStructure structFormat; 
    }; 
The union type Date is discriminated by a short value.

For example, if this short value is 1, then the union member stringFormat stores a date value as an IDL string.

The default label associated with the member structFormat indicates that if the short value is not 1 or 2, then the structFormat member stores a date value as an IDL struct.

Note that the type specified in parentheses after the switch keyword must be an integer, char, boolean or enum type and the value of each case label must be compatible with this type.

String

An IDL string represents a character string, where each character can take any value of the char basic type.

If the maximum length of an IDL string is specified in the string declaration, then the string is bounded. Otherwise the string is unbounded.

The following example shows how to declare bounded and unbounded strings:


    module Finance { 
      interface Bank { 
        // A bounded string with maximum length 10. 
        attribute string sortCode<10>; 
        // An unbounded string. 
        attribute string address; 
        ... 
      }; 
    }; 

 

Prev Up Next