ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(CORBAサービス編)
Interstage

A.7.5 共用体

共用体の宣言の形式を以下に示します。

union  データ型名  switch (データ型) {
    case 定数式 ;
        要素 [, ..]
         :
    default;
        要素 [, ..]
         :
};

要素の形式を以下に示します。typedefは、使用しません。

基本データ型  要素名;
シーケンス型  要素名;
構造体        要素名;
共用体        要素名;
固定小数点型  要素名;
スコープ名    要素名;

要素名には、単独の識別子/配列を指定します。


IDLの共用体は、C言語の共用体とswitch文とを合わせたものです。IDLの共用体の要素をcase文に関連付けて定義する必要があります。

共用体のswitch文の型定義には、どの要素が使用されるかを決定する型を指定する必要があります。

case文の定数式は、switch文の型定義と一貫性を持つ必要があります。定数式は、0~65535の間の値を指定します。

case文のdefaultは、1回だけ使用することが許可されています。

要素内のスコープ名は、定義済みの整数、文字、ブーリアン、列挙型のいずれかである必要があります。

case文の定数式は、switch文の型定義で指定された型と一致する必要があります。

一致の規則を以下に示します。

long:

longの範囲内のすべての整数値

short:

shortの範囲内のすべての整数値

unsigned long:

unsigned longの範囲内のすべての整数値

unsigned short:

unsigned shortの範囲内のすべての整数値

long long:

long longの範囲内のすべての整数値

char:

char

boolean:

真(TRUE)または偽(FALSE)

enum:

enumのすべてのメンバ

1つの共用体内で、要素名は一意である必要があります。

switchで指定した型が列挙型である場合、その識別子は共用体のスコープの中に入れ、要素名と異なっている必要があります。

共用体の型指定がとりうるすべての値をcase文で指定する必要はありません。

共用体の値は、型定義の値と以下のいずれかからなります。

共用体の記述例を以下に示します。

union U switch (long) {
      case 1:
          long a;
      case 2:
          short b;
      default:
          char c;
};