CORBA IDL

The CORBA generator produces CORBA IDL code: further information is given below.

The report specification links below are direct links to the .rep files, which are ASCII files that MetaEdit+ can read with its 'Read from File' function in the Report Browser. Download the report specifications by selecting first the report type and then the appropriate method (report specifications are typically dependent on the method used, and thus for example Delphi generator from OMT is not workable with Fusion). To download use 'Save' function in your browser.

All report files are supplied 'as is', with no guarantees, and no liability for any damages is accepted by MetaCase Consulting.

UML; Class Diagram

1. What does the generator produce?

  • Interface declarations are generated from classes which have stereotype ‘interface'.
  • Modules included through the packages and their interface classes
  • Empty interfaces and modules are permitted.
  • Includes multiple inheritance
  • Documentation of classes are included as comments and marked with "//"
  • Constraints of attributes and operations are marked with "//"
  • Attribute access ‘readonly' included according specified access for the attribute
  • If data type is not entered comments out the attribute by asking to enter data type
  • Operation attribute ‘oneway' included if stereotype of an operation is named as one way.
  • Return type for operation is mandatory: If not entered adds void instead.
  • Parameter declarations must be entered in correct form by the user (e.g. in short foo)
  • Exceptions inside interface declarations included through operation definition in which stereotype of the operation is marked as "exception".
  • Constants for classed may be defined if the stereotype of an attribute is marked as constant, uses initial value as constant value.
  • Enumerated types supported through initial values.

2. What does the current IDL generator not do?

  • Type declarations are not considered
  • Data types are not restricted to CORBA ones, allowing to generate other languages too
  • Context clause not included
  • Aggregation structures through the relationship are not considered
  • Constructed data types and template types are not included
  • Module names are not included into the scope names of IDL classes
  • Interface class can inherit from other classes than CORBA classes (i.e. marked other than an interface class).

3. Example

// From MetaEdit+, graph: Bank
// Class interfaces (.idl files)

interface Account {
  readonly attribute long balance;
  void makeLodgement ( in long f );
  oneway void makeWithdrawal ( in long f );  // oneway defined
};

interface currentAccount : Account {
  readonly attribute short overdraftLimit;
  const short testconst = 100;
  oneway void oneWayOper (  );
};

interface depositAccount : Account {
// a simple description of a bank deposit account
  readonly attribute long interestRate;
};

interface premiumAccount : currentAccount, depositAccount {
//  a simple description of a bank premium account
};

interface Bank {
// a bank simply manufactures accounts
  attribute Account newAccount;  // refers to an account that is opened or created
  attribute currentAccount newCurrentAccount;
  attribute depositAccount newDepositAccount;
  attribute premiumAccount newPremiumAccount;
  exception  reject { string reason };
  void deleteAccount ( in Account a );  // This operation deletes the current account
};