Alprogramok: Művelet deklaráció
Az OMG IDL művelet deklarációk hasonlítanak a C
függvény deklarációkra.
A műveletdeklaráció a következő részekből épül fel:
- Egy opcionális műveleti attribútum ami a kommunikációs
rendszer által szolgáltatandó meghívási
szemantikát specifikálja. Ez jelenleg csak oneway lehet,
ami aszinkron hívásra utal. Ennek hiányában, alapértelmezésben
szinkron eljáráshívás van.
- A művelet visszatérési értékének típusa. Ha egy művelet
nem ad vissza semmilyen értéket, akkor ezt a void
kulcsszóval kell jelezni.
- Egy azonosító ami a művelet névét adja meg.
- Egy paraméterlista, ami a művelet meghívásakor átadott
értékeket specifikálja. A paraméterlistában meg kell adni
a paraméterátadás módját (in, out, vagy inout),
valamint a paraméter típusát és nevét.
- Egy opcionális raises záradék, ami azokat a
kivételeket nevezi meg, amiket a művelet dobhat.
- Egy opcionális kontextus kifejezés.
Szintaxis:
(87) <op_dcl> ::= [ <op_attribute> ] <op_type_spec>
<identifier> <parameter_dcls>
[ <raises_expr> ] [ <context_expr> ]
(88) <op_attribute> ::= “oneway”
(89) <op_type_spec> ::= <param_type_spec>
| “void”
(90) <parameter_dcls> ::= “(” <param_dcl> { “,” <param_dcl> }* “)”
| “(” “)”
(91) <param_dcl> ::= <param_attribute> <param_type_spec>
<simple_declarator>
(92) <param_attribute> ::= “in”
| “out”
| “inout”
(93) <raises_expr> ::= “raises” “(” <scoped_name>
{ “,” <scoped_name> }* “)”
(94) <context_expr> ::= “context” “(” <string_literal>
{ “,” <string_literal> }* “)”
(95) <param_type_spec> ::= <base_type_spec>
| <string_type>
| <wide_string_type>
| <scoped_name>
Modulok
Modul deklaráció
A modul-deklarációk arra szolgálnak, hogy az azonosító neveket
hatáskörökbe csoportosítsuk. Egy modulon belül elsősorban
típus, konstans és kivétel deklarációk, valamint interfészek
fordulnak elő.
(3) <module> ::= “module” <identifier> “{“ <definition>+ “}”
Import deklaráció
Az import deklarációk segítségével más név-hatókörök tartalmát
be tudjuk emelni az aktuális név-hatókörbe.
(100) <import> ::= “import” <imported_scope> “;”
(101) <imported_scope> ::= <scoped_name> | <string_literal>
Előfeldolgozás
Egy interfész-specifikációt egy vagy több forrásfájlban lehet
megadni. A forrás fordítása egy vagy több fázisban történik.
A fordítás első fázisa az előfeldolgozás. Ez a részfájlok
beillesztését és makrók kifejtését jelenti.
A forrásfájlban a "#"-kal kezdődő sorok az előfeldolgozónak
szólnak. Előfeldolgozás után áll elő a tulajdonképpeni fordítási
egység. Az OMG IDL előfeldolgozás megfelel a C++ nyelv 1998-as
(ISO/IEC 14882) szabványában rögzített előfeldolgozásának.