Webアプリ開発エンジニアのための技術情報サイト「テックスコア」

5.IDL文法(1)

5.1 IDL

 IDLは、CORBAの分散オブジェクトがどのようなインタフェースを提供するかを定義するための言語です。IDLは分散オブジェクトを実装するプログラミング言語とは独立した言語であり、さまざまなプログラミング言語とのマッピングが定義されています。それぞれの言語用のIDLコンパイラを用いてIDLをコンパイルすることにより、各言語で記述されたスタブやスケルトンなどのソースコードを生成することができます。

 この章ではIDLの文法を説明します。以下に簡単なIDLの例を示します。

module Module1{                  // モジュール宣言
  interface Func1{               // インタフェース宣言
    typedef long mytype;         // 型宣言
    exception myException{       // 例外宣言
      string str;							
    };
    mytype operation1(in string name)	// オペレーション宣言
      raises(MyException);
    readonly attribute long data;		// 属性宣言
  };
};

 IDLではモジュール、インタフェース、ユーザ定義型、例外、オペレーション、属性などを定義します。これらのIDLの要素をJavaの要素と対応をとると、以下の表のようになります。

IDL
JAVA
モジュール
パッケージ
インタフェース
クラス
オペレーション
メソッド
属性
インスタンス変数

5.2 予約語

 IDLの予約語は以下の通りです。それぞれの使用法は各項目で説明します。

abstract
any
attribute
boolean
case
char
const
context
custom
default
double
exception
enum
factory
FALSE
fixed
float
in
inout
interface
local
long
module
native
Object
octet
oneway
out
private
public
raises
readonly
sequence
short
string
struct
supports
switch
TRUE
truncatable
typedef
unsigned
union
ValueBase
valuetype
void
wchar
wstring

5.3 データ型

 IDLで利用できるデータ型には以下のようなものがあります。

基本データ型

整数型

long long
固定長
64bit
long
固定長
32bit
unsigned long
固定長
32bit
unsigned long long
固定長
64bit
short
固定長
16bit
unsigned short
固定長
16bit
浮動小数点型
float
固定長
IEEE単精度
double
固定長
IEEE倍精度
long double
固定長
IEEE倍精度拡張浮動小数点
文字型
char
固定長
8bit。コード体系により変換される。
wchar
固定長
実装依存
固定小数点型
fixed
固定長
 
オクテット型
octet
固定長
8bit。コード体系に依存しない。
論理型
boolean
固定長
 
文字列型
string
可変長
\0で終了する文字配列。char型の配列に相当。
wstring
可変長

wchar型の配列に相当

列挙型
enum
固定長
 
any型
any
固定長
汎用的なデータ構造
構造体
struct
固定/可変
 
共用体
union
固定/可変
 
シーケンス型
sequence

可変長

 
配列型
array
固定/可変
 
value型
valuetype
固定/可変
オブジェクトの値渡しに用いる

 IDLをコンパイルすると各種のプログラム言語に変換されるため、データ型もIDLのものから各言語のものに変換されなくてはいけません。このデータ型の変換規則は規格により定義されています。例としてC言語とJava言語へのマッピングの一部を示します。

IDL C Java
long CORBA_long int
insigned long CORBA_unsigned_long

int

short CORBA_short short
unsigned short CORBA_unsigned_short short
float CORBA_float float
double CORBA_double double
char CORBA_char char
octet CORBA_octet byte
boolean CORBA_boolean boolean
string CORBA_string java.lang.String
enum CORBA_enum class
any CORBA_any org.omg.CORBA.Any
sequence struct class
struct struct class
union struct

class

 IDL string 型は8bitのIDL char型の配列に相当するため、Java String 型の文字列に日本語などが含まれていた場合、変換に失敗して例外が発生します。Java で実装することを前提とするなら、文字列には IDL wstring 型を使用するのが良いでしょう。



次のページへ TECHSCOREのTOPページへ 次のページへ
TECHSCORE PR
PR
PR
PR
PR
PR

techscore(トップページへ)
TECHSCORE書店
TECHSCOREトップページJavaSQLXMLリッチクライアントモデリングセマンティックWebその他技術Tuigwaa