#This file was created by Sat Dec 5 17:56:22 1998 #LyX 0.12 (C) 1995-1998 Matthias Ettrich and the LyX Team \lyxformat 2.15 \textclass article \language default \inputencoding default \fontscheme default \graphics default \paperfontsize default \spacing single \papersize Default \paperpackage a4 \use_geometry 0 \use_amsmath 0 \paperorientation portrait \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Title \added_space_top vfill \added_space_bottom vfill \emph on FlightGear \emph default Flight Simulator \newline Portability Guide \layout Author Bernie Bright (bbright@c031.aone.net.au) \layout Date 28 November 1998 \layout Standard FlightGear is a multi-platform general aviation flight simulator\SpecialChar \@. It is an open development project in which anyone with network access and a C++ compiler can contribute patches or new features. \newline \layout Section Introduction \layout Standard The file \emph on Include/compiler.h \emph default attempts to capture the differences between C++ compiler and STL implementation s through the use of \begin_inset Quotes eld \end_inset feature test macros \begin_inset Quotes erd \end_inset \SpecialChar \@. The file is divided into two parts. The first part contains a section for each compiler, consisting of manifest constants specifying the features supported or absent from the particular compiler/STL combination\SpecialChar \@. The second part uses the feature test macros to supply any missing features\SpecialChar \@. \layout Subsection Supported compilers (more to come) \layout Standard gcc 2.7.x \newline gcc 2.8.x \newline egcs 1.x \newline Inprise (Borland) C++ 5.02 \newline Inprise (Borland) C++Builder 1 (5.20) \layout Subsection Features Tests \layout Subsubsection STL \layout Description FG_NEED_AUTO_PTR Some STL implementations don't supply an \family typewriter auto_ptr<> \family default class template. Define this to provide one. \layout Description FG_NO_DEFAULT_TEMPLATE_ARGS Define this if the compiler doesn't support default arguments in template declarations. \emph on (example) \layout Description FG_INCOMPLETE_FUNCTIONAL Some STL implementations don't have \family typewriter mem_fun_ref() \family default . Define this to provide one. \layout Description FG_NO_ARROW_OPERATOR Define this if iterators don't support \family typewriter operator->() \family default . \emph on (example) \layout Description FG_EXPLICIT_FUNCTION_TMPL_ARGS \layout Description FG_MEMBER_TEMPLATES \layout Subsubsection Compiler \layout Description FG_NAMESPACES Define if compiler supports namespaces. \layout Description FG_HAVE_STD Define if std:: namespace supported. \layout Description FG_HAVE_STD_INCLUDES Define if headers should be included as \family typewriter \family default instead of \family typewriter . Also implies that all ISO C++ standard include files are present. \layout Description FG_HAVE_STREAMBUF Define if \family typewriter \family default or \family typewriter are present. \layout Description FG_CLASS_PARTIAL_SPECIALIZATION \layout Description FG_NEED_EXPLICIT Define if the compiler doesn't support the \family typewriter \series bold explicit \family default \series default keyword. \layout Description FG_NEED_TYPENAME Define if the compiler doesn't support the \family typewriter \series bold typename \family default \series default keyword. \layout Description FG_NEED_MUTABLE Define if the compiler doesn't support the \family typewriter \series bold mutable \family default \series default keyword. \layout Description FG_NEED_BOOL Define if the compiler doesn't have the \family typewriter \series bold bool \family default \series default type. \layout Subsubsection Include Files \layout Standard This section deals with header file naming conventions. Some systems truncate filenames, 8.3 being common, other systems use old or non-standard names for some header files. We deal with the simple cases by defining macros that expand to the appropriate filename. \layout Description STD_ALGORITHM => , \begin_inset Quotes eld \end_inset algorithm \begin_inset Quotes erd \end_inset \layout Description STD_FUNCTIONAL => , \begin_inset Quotes eld \end_inset functional \begin_inset Quotes erd \end_inset \layout Description STD_IOMANIP => , \layout Description STD_IOSTREAM => , , \layout Description STD_STDEXCEPT => (ignore this, FlightGear doesn't use exceptions) \layout Description STD_STRING => \layout Description STD_STRSTREAM => , \layout Standard In use, instead of writing #include you write #include STD_IOSTREAM. \newline \newline The situation becomes complicated with missing header files. is a good example. In this case we must rely on FG_HAVE_STD_INCLUDES and FG_HAVE_STREAMBUF. \newline \emph on \newline TODO \layout Subsection and the rest \layout Subsubsection Namespace Issues \layout Description FG_USING_STD(X) \layout Description FG_NAMESPACE(X) \layout Description FG_NAMESPACE_END \layout Description FG_USING_NAMESPACE(X) \layout Subsubsection Templates \layout Description FG_NULL_TMPL_ARGS \layout Description FG_TEMPLATE_NULL \layout Bibliography \bibitem {1} Stroustrup, Bjarne, \emph on The C++ Programming Programming Language \emph default , 3rd edition, June 1997, ISBN 0-201-88954-4 \layout Bibliography \bibitem {2} SGI Standard Template Library (STL) release 3.11 \the_end