Modul Porting

    Tento modul obsahuje kód, funkce a podobné věci, které řeší nekompatibilitu různých platforem a různých překladačů. Dodefinovává různé funkce, pokud nejsou v některém překladači standardně implementované, různé struktury, speciální kód na jiných platformách,...


Podporované platformy:

Windows - definováno WINDOZE
Linux - bude prováděn nový port
SGI - bude prováděn nový port, (LITTLE_ENDIAN)

Podporované kompilátory:

C++ Builder 5.0 - definováno BORLANDLIB, platformy Windows i Linux (jakmile bude Builder pod Linux k dispozici)
GNUC - bude nový port, všechny platformy
Visual Studio 6.0 - definováno VISUAL_CPP, pouze platforma Windows
DevStudio - nový port zatím nejistý, platforma Windows, ale používá standardní Mingw knihovny (velmi kompatibilní a platformově nezávislé)


Modifikace pro C++ Builder 5.0

sincos problém
    C++ Builder obsahuje ve své knihovně fastmath.h funkci sincos, která spočítá sinus a cosinus zároveň, což je značně rychlejší než separátní počítání a značně může urychlit některé výpočty. Proto je tato funkce pro ostatní kompilátory zde dodefinovaná a je implementována přes standardní funkce sin a cos.

Modifikace pro Visual Studio 6.0

new nekompatibilita
    Visual Studio má nestandardní chování operátoru new při neúspěšné alokaci - vrací NULL, kdežto podle standardu by mělo vyhodit výjimku. Tenhle přístup naštěstí v aplikaci není nikde použit a paměť se alokuje vždy přes new s parametrem nothrow. Ale new(nothrow) naneštěstí ve Visual Studiu není vůbec implementováno. Proto je v tomto souboru napsána definice operátoru new(nothrow), přičemž je z něj se pouze volá klasický operátor new (který je nestandardně implementován a neháže výjimky). Odpovídající operátor delete(nothrow) je také implementován.

absence vsnprintf
    Visual Studio nemá definovánu funkci vsnprintf, proto je dodefinována. Není to chyba Microsoftu, jak by se dalo očekávat, ale vsnprintf funkce není součástí standardu, proto není v některých knihovnách k dispozici.