IDL文件

IDL是什么详细介绍:

IDL(Interface Definition Language)即接口定义语言,是CORBA规范的一部分,是跨平台开发的基础。IDL提供一套通用的数据类型,并以这些数据类型来定义更为复杂的数据类型。可变化 IDL 基本类型 整数类型 OMG IDL 摒弃int 类型在不同平台上取值范围不同带来的多义性的问题。常数定义常数可以是整数、字符、浮点数、字符串、Boolean、octet 或枚举型,不能是 any 类型或用户定义的类型。OMG IDL数组类型IDL array 和 sequence,可以轻易地被映射到实现语言中。序列可以包含所有类型的元素,不管是基本类型还是用户定义的类型。

IDL(Interface Definition Language)即接口定义语言,是CORBA规范的一部分,是跨平台开发的基础。IDL提供一套通用的数据类型,并以这些数据类型来定义更为复杂的数据类型。可变化 IDL 基本类型 整数类型 OMG IDL 摒弃int 类型在不同平台上取值范围不同带来的多义性的问题。常数定义常数可以是整数、字符、浮点数、字符串、Boolean、octet 或枚举型,不能是 any 类型或用户定义的类型。OMG IDL数组类型IDL array 和 sequence,可以轻易地被映射到实现语言中。序列可以包含所有类型的元素,不管是基本类型还是用户定义的类型。 本文来GIS公园


OMG IDL文件概述 
  从本质上讲,OMG IDL接口定义语言不是作为程序设计语言体现在CORBA体系结构中的,而是用来描述产生对象调用请求的客户对象和服务对象之间的接口的语言。OMG IDL文件描述数据类型和方法框架,而服务对象则为一个指定的对象实现提供上述数据和方法。 
  OMG IDL文件描述了服务器提供的服务功能,客户机可以根据该接口文件描述的方法向服务器提出业务请求。在大多数CORBA产品中都提供IDL到相关编程语言的编译器。程序设计人员只需将定义的接口文件输入编译器,设定编译选项后,就可以得到与程序设计语言相关的接口框架文件和辅助文件。

IDL文件应用过程如图1所示。 

 

图1 OMG IDL文件编译过程


  在语法规则方面,类似于C++或Java中关于接口或对象的定义,OMG IDL增加了一些构造方法支持IDL特有的方法调用机制。OMG IDL只是一种说明性的语言,支持C++语法中的常量、类型和方法的声明。采用OMG IDL这样的说明性语言,其目的在于克服特定编程语言在软件系统集成及互操作方面的限制,这正是CORBA的诱人之处,同样也体现出采用CORBA构造分布式应用程序在网络时代的强大生命力。OMG IDL已经为C、C++、Java等主要高级程序设计语言制定了IDL到高级编程语言的映射标准。项目开发人员可以根据需要选择自己最熟悉的编程语言来独立开发基于CORBA的应用,而对软件系统的互操作能力不产生影响。 
OMG IDL的语法规则 
1. OMG IDL文件举例 
  module Compute 
  { typedef double radius; 
  typedef long times; 
  interface PI 
  { double getResult( in radius aRadius, in times time); } 
  } 
  上述接口定义文件主要用于客户端向服务对象提出请求:计算π值。因此,模块中定义了一个方法getResult(),以圆的直径(aRadius)和迭代次数(times)作为该方法的输入参数。 
2. OMG IDL词法规则 
  OMG IDL采用ASCII字符集构成接口定义的所有标识符。标识符由字母、数字和下划线的任意组合构成,但第一个字符必须是ASCII字母。IDL认为大写字母和小写字母具有相同的含义,例如anExample和AnExample是相同的。


  与C++和Java类似,采用以“/*”开始,以“*/”结束来注释一段代码,以“//”开始注释从“//”开始直至行尾的所有内容。 
  另外,IDL保留了47个关键字,程序设计人员不能将关键字用作变量或方法名。需要注意的是关键字的大小写,例如: 
  typedef double context; 
  //错误:定义的变量context是关键字 
  typedef double CONTEXT; 
  //错误:CONTEXT与关键字context冲突 
3. 数据类型 
  (1)基本数据类型:OMG IDL基本数据类型包括short、long和相应的无符号(unsigned)类型,表示的字长分别为16、32位。 
  (2)浮点数类型:OMG IDL浮点数类型包括float、double和long double类型。其中float表示单精度浮点数,double表示双精度浮点数,long double表示扩展的双精度浮点数。 
  (3)字符和超大字符类型:OMG IDL定义字符类型char为面向字节的码集中编码的单字节字符; 定义类型wchar为从任意字符集中编码的超大字符。 
  (4)逻辑类型:用boolean关键字定义的一个变量,取值只有true和false。 
  (5)八进制类型:用octet关键字定义,在网络传输过程中不进行高低位转换的位元序列。 
  (6)any数据类型:引入该类型用于表示OMG IDL中任意数据类型。 
4. 常量 
  OMG IDL用const关键字声明一个常量,用于模块(module)或接口(interface)中定义保持不变的量,如: 
  const double PI = 3.1415926; 
  在IDL中,可以定义long、unsigned long、unsigned short、char、boolean、float、double、string类型的常量。 
5. 构造数据类型 
  类似于C和C++的语法规则,OMG IDL中构造数据类型包括结构、联合、枚举等形式。如下例: 
(1)结构类型: 
  typedef long GoodsNumber; 
  struct 
  { GoodsNumber number; 
  string name; 
  float price; } 
(2)联合类型: 
  union stockIn switch( short ) 
  { case 1: stocker : long; 
  case 2: goodsName1 : string; 
  case 3: goodsName2 : string; } 
(3)枚举类型: 
  enum GoodsStatus { GOODS_SALED, GOODS_INSTOCK}; 
6. 数组类型 
  OMG IDL的数组类型提供了多维定长、统一数据格式的数据存储方式——数组。每一维的长度必须在定义时给定,所有数据单元必须存储相同类型的元素。如下例定义一个长度为20×100的整数数组:  copyright gispark.com 
  typedef long aDimension[20][100]; 
7.模板(template)类型 
  OMG IDL提供两种类型的模板: 
(1) 序列(sequence)类型: 
  用该方法定义长度可变的任意数值类型的存储序列,通常在定义时可以指定长度,也可以不指定,如: 
  typedef sequence <long,80> aSequence; 
  //长度定义为80 
  typedef sequence <long> anotherSequence; 
  //长度不定 
(2) 字符串(string)序列: 
  同样对于字符串序列类型,也有两种定义方式: 
  typedef string <80> aName; //长度定义为80 
  typedef string anotherName; //长度不定 
8.接口(interface) 
  在前几讲中,均提到了CORBA接口,接口作为服务对象功能的详细描述,封装了服务对象提供服务方法的全部信息,客户对象利用该接口获取服务对象的属性、访问服务对象中的方法。 
  接口用关键字interface声明,其中包含的属性和方法对所有提出服务请求的客户对象是公开的,如下例: 
  interface JobManager 
  { readonly attribute string FirstName; 
  attribute string status; 
  string QueryJobStatus( in long Number, out string property); }

第一章 起步篇 8 本章概述 8 书写本书的背景 8 运用本书 9 IDL所需的版本 9 IDL运行期间所需颜色的数量 9 本书的风格习惯 10 本书中所用的IDL程序和数据文件 12 获取更多的帮助 14 使用IDL命令 14 IDL命令解析 14 创建变量 17 使用IDL图形窗口 22 第二章 简单的图形显示 25 本章概述 25 IDL中简单的图形显示 25 创建线画图 25 定制线画图 28 改变线条的线型和粗细 28 用符号代替线条显示数据 29 用不同的颜色绘制线画图 31 限定线画图的范围 31 改变线画图的风格 32 在线画图上绘出多种数据集 34 在多个轴的图上显示数据 35 创建曲面图 36 定制曲面图 38 旋转曲面图 38 为曲面赋色 39 修改曲面图外观 40 创建阴影曲面图 41 改变阴影处理参数 41 用其它数据集为阴影处理提供参数 42 创建等值线图 43 选择等值线数目 45 修改等值线图 46 改变等值线图的外观 47 给等值线图赋色 48 创建填充的等值线图 49 在显示窗口定位图形输出 51 设置图形边缘 52 设置图形位置 52 设置图形区域 53 创建多个图形 53 给图形显示添加文本 57 找出可用字体的名称 58 用XYOutS命令添加文本 58 用矢量字体使用XYOut 59 排列文本 60 删除文本 61 改变文本的方向 61 给图形显示添加线和符号 61 图形显示添加色彩 62 第三章 图像数据处理 65 本章概要 65 图像处理 65 显示图像 65 调整图像数据 67 显示24位图像 69 控制图像显示顺序 70 改变图像尺寸 70 在显示窗口中定位图像 72 从显示器中读取图像 75 IDL中基本的图像处理 75 直方图均衡化 76 平滑图像 77 增强图像棱边 79 图像的频域滤波 80 第四章 图形显示技术 83 本章概要 83 IDL的颜色运用 83 使用索引颜色模式和RGB颜色模式 83 在24位显示设备上装载色谱表 88 获得色谱表的拷贝 88 修改和创建色谱表 89 保存自己的色谱表 90 创建自己的轴标注 91 调整轴刻度间隔 91 格式化轴的标注 92 用IDL处理残缺的数据 95 用IDL建立三维坐标系 97 建立三维散点图 97 从图形原点定位3D坐标轴 99 组合简单图形显示 100 IDL中的动画数据 102 建立动画工具 103 装载动画缓冲区 103 运行动画工具 103 动画的控制 103 存储动画的像素映射图 104 其它类型图形数据的动画 104 网格化数据以便图形显示 105 德洛内三角形法网格化 106 数据的球形网格化 108 第五章 图形显示技巧 110 本章概要 110 将光标用于图形显示 110 什么时候返回的光标位置? 110 哪一个鼠标键和光标共同作用呢? 111 用光标标注图形输出 111 在图像上使用Cursor命令 113 在循环中使用Cursor命令 113 从显示中删除注释 114 删除注释的异或法 114 删除注释的设备拷贝法 116 Z图形缓冲区中的图形显示技巧 120 Z图形缓冲区的实现 121 一个Z图形缓冲区实例:两个曲面 121 用Z图形缓冲区使图像变形 123 Z图形缓冲区中的透明效果 126 将Z图形缓冲区效果与体数据着色相结合 127 第六章 在IDL中读写数据 129 本章概要 129 打开文件进行读写 129 查找和选择数据文件 130 获取逻辑设备号 131 读写格式化数据 132 写自由格式文件 133 读写自由格式文件的实例 136 用确定的文件格式写入 139 从字符串中读取格式数据 141 读写非格式化数据 141 读取非格式化图像数据文件 142 写非格式化图像数据文件 142 非格式化数据文件的一些问题 144 用关联变量存取非格式化数据文件 144 读写常用文件格式的文件 147 创建彩色GIF文件 147 创建彩色JPEG文件 148 查询图像文件信息 150 第七章 图形硬拷贝输出 151 本章概要 151 选择图形硬拷贝输出设备 151 配置图形硬拷贝输出设备 152 常用的Device命令关键字 153 创建PostScript文件 154 将图形送到硬拷贝设备中 154 打印PostScript文件 155 在运行MacOS系统的计算机上打印PostScript文件 156 在Windows计算机上打印PostScript文件 156 生成封装的PostScript文件输出 156 封装PostScript图形的预览 157 生成彩色的PostScript输出 157 PostScript中的彩色图像与灰度图像 158 在PostScript设备上创建高质量的输出 159 显示设备和PostScript设备之间的相同点 159 显示设备与PostScript设备之间的不同点 159 在横向输出模式中计算PostScript的偏移量 172 用PS_Form配置PostScript设备 173 配置和使用打印设备 174 用打印设备定位图形 175 第八章 IDL编程基础 178 本章概述 178 编写IDL批处理文件 178 编写IDL主程序 179 过程和与函数中变量的作用范围 181 创建定位参数 181 定义可选的或必须的定位参数 182 定义关键字 183 创建输出型参数 186 编写IDL函数 189 方括号和函数的调用 190 使用程序控制语句 191 IDL中表达式的真和假 191 将多个语句处理成单个语句 192 If…Then…Else控制语句 192 条件表达式 194 FOR循环控制语句 194 WHILE循环控制语句 194 REPEAT...UNTIL 循环控制语句 194 CASE控制语句 195 GOTO控制语句 195 错误处理控制语句 196 编译和执行IDL程序模块 198 程序编译规则: 198 程序编译和自动运行规则 199 特殊编译命令 199 第九章 编写 IDL 程序 201 本章概述 201 基本的ImageBar程序 201 给程序ImageBar增加一个“先擦除”功能 205 向ImageBar程序增加颜色敏感功能 205 给ImageBar中的命令传递关键字 207 根据窗口大小改变字符大小 209 程序ImageBar的最终代码 210 在图形用户界面中包装ImageBar 211 第十章 编写简单的组件程序 212 本章概述 212 组件程序的结构 212 组件程序如何对事件作出反应 213 编写组件定义模块 213 定义和创建程序组件 214 在屏幕上实现组件 216 使绘图组件成为当前图形窗口 216 在绘图组件窗口上显示图形 216 保存程序运行时所需要的信息 216 创建事件循环和注册程序 217 运行程序 218 创建无阻塞组件程序 219 编写事件处理模块 219 事件结构中的公共字段 219 事件处理函数 220 将事件处理程序和组件联系起来 221 编写Quit按钮的事件处理程序 222 编写改变图形窗口大小的事件处理程序 223 进行小量地修改 224 添加颜色敏感 224 采用更高效的内存管理 225 第十一章 组件编程技巧 229 本章概述 229 改变颜色表 229 保护公共块 230 一个可选择颜色表的工具 230 指定Group Leader 233 给组件程序增加Group Leader 234 在24位显示器上改变颜色表 235 在组件程序中使用指针 237 使用Cleanup过程防止内存泄露 238 使用伪事件进行程序通信 239 创建一个具有“记忆功能”的程序 240 保护组件程序的颜色 243 通过组件跟踪事件来保护颜色 244 通过绘图组件事件来保护颜色 245 保存或者发布程序的图形 245 第十二章 对话框程序 249 本章概述 249 创建模式对话框 249 阻塞的组件程序 249 模式组件程序 250 编写模式对话框的定义模块 250 编写模式对话框的事件处理模块 254 测试模式对话框程序 255 创建非模式的对话框 256 编写非模式对话框程序 256 编写非模式对话框的事件处理模块 258 测试非模态对话程序 259 附录A 组件的事件结构 261 事件结构的定义 261 公共字段的定义 261 基本组件的事件结构 261 base组件 261 按钮组件 261 绘图组件 262 下拉式列表组件 262 标签组件 262 列表组件 262 滑动条组件 262 表单组件 263 文本组件 264 复合组件的事件结构 265 CW_Animate 265 CW_Arcball 265 CW_BGroup 265 CW_Clr_Index 265 CW_Color_Sel 265 CW_DefROI 266 CW_Field 266 CW_Form 266 CW_Flisder 266 CW_Orient 266 CW_PDMenu 266 CW_RGBSlider 266 CW_Zoom 267 组件程序的事件结构 267 Xcolors 267 其他组件的事件结构 267 键盘焦点事件 267 组件退出请求事件 267 组建计时器事件 268 组件跟踪事件 268 附录B 数据文件描述 269
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值