Specyfikacja wersji 4
XDR (z ang. eXternal Data Representation)
XDR, czyli tzw. zewnętrzna reprezentacja danych -- to metodologia
specyfikująca standard reprezentacji różnych zbiorów danych poprzez sieć.
Rozwiązuje ona problem kolejności bajtów w słowie, wyrównywania struktur
do ,,pełnych'' rozmiarów oraz różnej reprezentacji poszczególnych typów
danych na innych maszynach.
Na przykład konstrukcja:
string name[SIZE];
string data<DSIZE>;
definiuje name jako tablicę o stałym rozmiarze -- SIZE bajtów,
zaś data -- to tablica o zmiennym rozmiarze nie przekraczającycm
DSIZE bajtów. Jeśli w definicja zmiennej date pominiętoby
maksymalny rozmiar, to tablica miałaby potencjalnie nieograniczoną długość.
Inny przykład:
union example switch (enum status) {
case OK:
struct {
filename file1;
filename file2;
integer count;
}
case ERROR:
struct {
errstat error;
integer errno;
}
default:
void;
}
Definiuje on strukturę, której pierwszym elementem jest pole typu enum
nazywane status. Jeśli jego wartością jest OK, to drugim polem
będzie struktura zawierająca pola file1, file2 oraz count.
W przeciwnym przypadku, jeśli wartością pola status jest ERROR, to
drugim polem będzie struktura zawierająca pola error oraz errno.
Jeśli wartością pola status nie jest ani OK, ani ERROR, to
w strukturze nie będzie więcej danych.
Kolejny przykład:
hyper sgn;
unsigned hyper usg;
Konrad Iwanicki, 2002