IDL valoda

IDL izveidoja OMG; tās sintakse ir maksimāli līdzīga C/C++ sintaksei; ir arī preprocesors. Tajā var definēt CORBA klienta-servera interfeisus dažādām valodām, t.sk. Javai.

IDL paraugs

module Counter 
{
  interface Count
  {
    attribute long sum; 
    long increment(); 
  }; 
}; 

Interfeisa nemaināmība

Lai klientam būtu labi, reiz izveidotu interfeisu nav labi mainīt, var pievienot jaunus interfeisus, bet turpināt atbalstīt vecos (DCOM pieeja).

Ko satur IDL specifikācija

  • Moduļi, kas darbojas kā namespace
  • Interfeisi objektiem (ar operācijām un datu atribūtiem)
  • Datu tipi
  • Konstantes
  • Izņēmumi

Rezervētie vārdi

any
attribute
boolean
case
char
const
context
default
double
enum
exception
FALSE
fixed
float
in
inout
interface
lon
module
Object
octet
oneway
out
raises
readonly
sequence
short
string
struct
switch
TRUE
typedef
unsigned
union
void
wchar
wstring

Identifikatori

IDL identifikatori var saturēt burtus, ciparus, pasvītrojuma zīmi un dažus modificētos latīņu burtus. Identifikatori sākas ar burtu un ir jebkurā garumā. Identifikatori vienā interfeisā nedrīkst atšķirties tikai ar burta reģistru, tomēr IDL failā reģistra lietojumam jābūt konsekventam (lai tiktu galā ar reģistrjūtīgām un nejūtīgām valodām). Identifikatori nedrīkst pārklāties neatkarīgi no to statusa (vai tie ir mainīgie, konstantes, apakšmoduļu vārdi; kā arī neatkarīgi no datu tipa).

Identifikatorus attēlo viens pret vienu valodā Java. Ja gadās, ka identifikators sakrīt ar Javas atslēgvārdu (teiksim package), vai arī tā nosaukums konfliktē ar kādu ClassNameHelper vai ClassNameHolder, tad tam priekšā Javā liek pasvītrojumzīmi.

Pamata datu tipi

IDL tips izmērs Java tips
short 16 biti short
long 32 biti int
long long 64 biti long
unsigned short 16 biti short
unsigned long 32 biti int
unsigned long long 64 biti long
char 8 biti char
wchar ??? char
string neierobežots java.lang.String
string<size> neierobežots java.lang.String
wstring neierobežots java.lang.String
wstring<size> neierobežots java.lang.String
boolean ??? boolean
octet 8 biti byte
float IEEE single-precision float
double IEEE double-precision float

Konstantes

// IDL
const float PI = 3.14; 
interface GeometricTransformations { ... }

// Java
public final class PI {
    public static final float value = (float)(3.14); 
}

Nekāda tipu pārbaude idltojava netiek veikta.

Redzamības apgabali

module utils {
    interface math {
        const float PI = 3.14; 
        const string kaiminjsh = ::utils::peliite::PI; 
    }; 

    interface peliite {
        const string PI = "Piiksteeshanas Izteiksme"; 
    }; 
}; 

Masīvi

//IDL
typedef short short2x2Array[2][2];
interface MatrixOps {
    attribute short2x2Array identityMatrix; 
    ...
}

// Java
public interface MatrixOps {
    short[][] identityMatrix(); 
    void identityMatrix(short[][] arg); 
    ...
}

Java neļauj kopā ar masīva bāzes tipu norādīt izmērus, tāpēc lietotājam par to jārūpējas pašam.


Lapa mainīta 2004-12-02 22:00:22