1
0
Fork 0
flightgear/Docs/Portability/fgfs-portability-guide.lyx

309 lines
5.7 KiB
Text
Raw Normal View History

1999-03-09 19:09:41 +00:00
#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