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

A.1.7 プリプロセス

IDLのプリプロセスは、ANSI C++のプリプロセスに基づいて、以下の機能を持ちます。

#で始まる行は、プリプロセスへの情報を指定します。#の前にスペースがあってもかまいません。この行はシンタックス上その他のIDLと独立しており、IDL上のどこに指定してもかまいません。ソースファイルの中で、改行の直前にあるバックスラッシュ(\)は次の行に続くことを表します。バックスラッシュをソースファイルの最後の文字とすることはできません。


(1)プラグマ(#pragma)

プラグマは、RepositoryIDを変更する機能です。プラグマには、以下の3パターンが指定できます。

IDプラグマ
形式

#pragma ID <name> "<id>"

機能

<name>で指定されたオブジェクトのRepositoryIDを、<id>と置き換えます。
<name>は、対象とするオブジェクトの識別子であり、スコープ名で指定できます。

PREFIXプラグマ
形式

#pragma prefix "<string>"

機能

宣言されたPREFIXプラグマは、現在のスコープの端に達するか、または別のPREFIXプラグマに遭遇するまで、生成されるRepositoryIDのPREFIXとして<string>を設定します。
<string>は、任意の文字列です。

VERSIONプラグマ
形式

#pragma version <name> <major>.<minor>

機能

<name>で指定されたRepositoryIDのバージョンを、<major>.<minor>のVERSIONに置き換えます。
<name>は、対象とするオブジェクトの識別子であり、スコープ名で指定します。<major>と<minor>は、正数を指定します。

プラグマを使用したRepositoryIDの変更例を以下に示します。

module  M1{
    typedef long T1; 
    typedef long T2; 
    #pragma ID T2 "IDL:M1/T2_long:1.0"
};

#pragma prefix "P1"

module  M2{
    module  M3{
        #pragma prefix "P2"
        typedef long T3; 
    };
    typedef long T4; 
    #pragma version T4 2.4
};

スコープされた名前、およびRepositoryIDを以下に示します。

::M1::T1           IDL:M1/T1:1.0
::M1::T2           IDL:M1/T2_long:1.0
::M2::M3::T3       IDL:P2/T3:1.0
::M2::T4           IDL:P1/M2/T4:2.4