用 RPC / COM /CORBA 技术来编写分布式系统时都需要接口定义语言 (IDL)。
IDL特点:
1、IDL 是一种规范语言。
2、IDL 看上去很像 C 语言。
3、OMG IDL 的目的是定义接口和精简分布对象的过程。
4、IDL分离对象的接口与其实现。
5、IDL剥离了编程语言和硬件的依赖性。
6、使用IDL定义接口的客户机程序员不知道接口背后的实现细节。
7、IDL提供一套通用的数据类型,并以这些数据类型来定义更为复杂的数据类型。
本文讲解 OMG IDL 的内置类型和关键字。
OMG 接口定义语言内置类型表:
类型
范围
最小大小(bit)
short
-215 到 215-1
16
unsigned short
0 到 216-1
16
long
-231 到 231-1
32
unsigned long
0 到 232-1
32
long long
-263 到 263-1
64
Unsigned long long
0 到 264-1
64
float
IEEE 单精度
32
double
IEEE 双精度
64
long double
IEEE 双字节扩展浮点数
15 位指数,64 位带符号小数
char
ISO Latin-1
8
wchar
从任何宽字符集编码宽字符,如 Unicode
依赖于实现
string
ISO Latin-1,除了 ASCII NUL 以外
可变化
Boolean
TRUE 或 FALSE
未指定
octet
0 到 255
8
any
自己描述的数据类型,可表示任何 IDL 类型
可变化
IDL 基本类型
整数类型
OMG IDL 摒弃int
类型在不同平台上取值范围不同带来的多义性的问题。
IDL提供2 字节 (short
)、4 字节 (long
) 和 8 字节 (long long
) 的整数类型。
所有这些整数类型都有相应的无符号数类型。
浮点类型
OMG IDL 浮点数类型 float
、double
和 long double。
OMG IDL 遵循 IEEE 754-1985 二进制浮点数算术的标准。
目前,long double
用于巨大数字,有些语言映射还不支持这种类型。
char 和 wchar
IDL标准字符集:词法约定(表示 IDL 文件的关键字、注释和文字的字符记号)规定 ISO 8859.1 字符集表示 IDL 文件中的字符。ISO 464 定义了空字符(null)和其它图形字符。
OMG IDL必须处理从一个计算机系统到另一个计算机系统之间的字符传输。从一个字符代码集到另一个字符代码集的转换,取决于语言绑定。
OMG IDL char
是一个 8 位变量,可以用两种方法表示一个字符。
首先,它可以从面向字节的代码集编码单字节字符。
其次,在数组中使用时,可以从多字节字符集(如 Unicode),编码任何多字节字符。OMG IDL Wchar
只允许大于 8 个字节的代码集。规范不支持特殊的代码集。
OMG IDL Wchar
允许每个客户机和服务器使用本机的代码集,然后指定如何转换字符和字符串,以便在使用不同代码集的环境之间进行传输。
Boolean
Boolean 值只能是 TRUE 或 FALSE。
Octet
octet
是 8 位类型,一种非常重要的类型。
octet
在地址空间之间传送时不会有任何表示更改。octet
在发送二进制数据,并且将它打包时,它的形式仍然相同。其它每种 IDL 类型在传输时都有表示变化。例如,根据 IOR 代码集信息的指示,char
数组会经历代码集转换。而 octet
数组却不会。
any 类型
IDL any
是一种包含任何数据类型的结构。
IDL any
由类型码和值组成。类型码描述 any
的值的内容。