Network File System


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