boolean | fixed | oneway | unsigned |
case | float | out | union |
char | in | raises | ValueBase |
const | inout | readonly | valuetype |
cell | interface | sequence | void |
double | long | short | wchar |
exception | module | string |
Ключевые слова, перечисленные в табл. 8.1, представл
• типы, определенные пользователем;
• последовательности, определенные пользователе
• типы массивов;
• рекурсивные типы;
• семантику исключений;
• модули (по аналогии с пространствами имен);
• единичное и множественное наследование;
• поразрядные арифметические операторы.
Приведем IDL-определение для класса adding_machine из листинга 8.2:
interface adding_machine{
void add(in unsigned long X);
void subtract(in unsigned long X);
long result();
}
Это определение начинается с ключевого слова CORBA interface. Обратите внимание на то, что данное объявление интерфейса класса adding_machine не включает ни одной переменной, которая бы могла хранить результат выполнения операций сложения и вычитания. Методы add () и subtract () принимают в качестве параметра одно значение типа unsigned long. Объявление типа параметра сопровождается ключевым словом CORBA in, который говорит о том, что данный параметр является входным (mput). Это объявление класса хранится в отдельном исходном файле adding_machine.idl. Исходные файлы, содержащие ГОЬюпределения, должны иметь . idl-расширения. Прежде чем такой файл можно будет использовать, его необходимо преобразовать к С++чЈюрмату. Это преобразование можно выполнить с помощью препроцессора или отдельной программы. Все CORBA-реализации включают IDL-компиляторы. Существуют IDL-компиляторы лля языков С, Smalltalk, С++, Java и др. IDL-компилятор преобразует ГОЬюпределения в код соответствующего языка. В данном случае IDL-компилятор преобразует объявление интерфейса в легитимный C++-код. В зависимости от конкретной CORBA-реализации IDL-компилятор вызывается с использованием синтаксиса, который будет подобен слелующему:
idl adding_machine.idl
При выполнении этой команды создается файл, содержащий С++-код. Поскольку наше IDL-определение хранится в файле adding_machine. idl, MICO IDL-компилятор создаст файл adding_machine. h, который будет содержать несколько каркасных C++-классов и CORBA-типов данных. Базовые IDL-типы данных приведены в табл. 8.2.
Таблица 8.2. Базовые IDL
long
1
>
_2»-2' 5 -
1
> 16 бит
0-2 v - 1
> 32 бит