309 lines
5.7 KiB
Text
309 lines
5.7 KiB
Text
|
#This file was created by <root> 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
|
||
|
<iostream>
|
||
|
\family default
|
||
|
instead of
|
||
|
\family typewriter
|
||
|
<iostream
|
||
|
\family default
|
||
|
.h>.
|
||
|
Also implies that all ISO C++ standard include files are present.
|
||
|
\layout Description
|
||
|
|
||
|
FG_HAVE_STREAMBUF Define if
|
||
|
\family typewriter
|
||
|
<streambuf>
|
||
|
\family default
|
||
|
or
|
||
|
\family typewriter
|
||
|
<streambuf
|
||
|
\family default
|
||
|
.h> 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 => <algorithm>,
|
||
|
\begin_inset Quotes eld
|
||
|
\end_inset
|
||
|
|
||
|
algorithm
|
||
|
\begin_inset Quotes erd
|
||
|
\end_inset
|
||
|
|
||
|
|
||
|
\layout Description
|
||
|
|
||
|
STD_FUNCTIONAL => <functional>,
|
||
|
\begin_inset Quotes eld
|
||
|
\end_inset
|
||
|
|
||
|
functional
|
||
|
\begin_inset Quotes erd
|
||
|
\end_inset
|
||
|
|
||
|
|
||
|
\layout Description
|
||
|
|
||
|
STD_IOMANIP => <iomanip>, <iomanip.h>
|
||
|
\layout Description
|
||
|
|
||
|
STD_IOSTREAM => <iostream>, <iostream.h>, <iostreams.h>
|
||
|
\layout Description
|
||
|
|
||
|
STD_STDEXCEPT => <stdexcept> (ignore this, FlightGear doesn't use exceptions)
|
||
|
\layout Description
|
||
|
|
||
|
STD_STRING => <string>
|
||
|
\layout Description
|
||
|
|
||
|
STD_STRSTREAM => <strstream>, <strstream.h>
|
||
|
\layout Standard
|
||
|
|
||
|
In use, instead of writing #include <iostream> you write #include STD_IOSTREAM.
|
||
|
\newline
|
||
|
|
||
|
\newline
|
||
|
The situation becomes complicated with missing header files.
|
||
|
<streambuf> 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
|