Interstage Application Server アプリケーション作成ガイド (CORBAサービス編)
目次 索引 前ページ次ページ

付録A IDL定義> A.7 データ型と型宣言

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:
真(TURE)または偽(FALSE)
enum:
enumのすべてのメンバ

 1つの共用体内で要素名は一意でなければなりません。switchで指定した型が列挙型であれば、その識別子は共用体のスコープの中に入ります。そして、その識別子は要素名と違っていなければなりません。共用体の型指定がとりうるすべての値をcase文で指定する必要はありません。共用体の値は型定義の値と、下記のいずれかからなります。

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

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

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005