IDL 基础
IDL 模块和接口
在任何项目中(亦或名字空间中)都可能存在大量的 CORBA 对象,如果所有这些对象需要有唯一的名字那么一定会有名字空间冲突。所以 IDL 允许定义模块(module),模块指定一个独立的名字空间,类似于 C++ 的名字空间的功能性。现在对于任何接口都可以指定模块,就象下面例子展示的那样:
module FruitsBasket { interface Apple {}; interface Orange {}; }; |
在这里,我们在 FruitsBasket 模块中定义了两个对象: Apple 和 Orange。如果我们要从其他模块中引用一个对象,我们必须给出完全的对象引用,例如,从 VegetablesBasket 模块中引用 Apple 要这样做:FruitsBasket::Apple。
也可能重新打开同一个模块来增加接口定义:下面的例子严格的等价于上一个。
module FruitsBasket { interface Apple {}; }; module FruitsBasket { interface Orange {}; }; |
IDL象 C++ 一样也有预编译宏指令(directive): 支持 #include 和 #pragma (这些宏指令由 idl-compiler 展开)。 #include 同在 C/C++ 中有类似的语义。允许你出于清晰的目的而把在同一个模块中的不同的接口分隔在不同的文件中。
/* 这是一个 C 式样的注释 */ // 这是一个 C++ 式样的注释 : 两者都有效 // 这些代码在 apple.idl 文件中 #include "orange.idl" module FruitsBasket interface Apple {}; }; |
// 这些代码在 orange.idl 文件中 module FruitsBasket interface Orange {}; }; |