This commit is contained in:
romkazvo
2023-08-07 19:29:24 +08:00
commit 34d6c5d489
4832 changed files with 1389451 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: STLport - Note For Borland C++ Users</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Note For Borland C++ / C++ Builder Users</span>
<p>&nbsp;</p>
<h2>Known problems</h2>
<h4>Compiling</h4>
<ul>
<li>This release is known to have problems with BC 5.0x.
Directory <b>STLport/BC50/</b> contains some extra files Borland C++ 5.x
expects to see on the path. Make sure you put <b>STLport/BC50 </b>in<br>
your search path before <b>STLport </b>main directory. The problems still persist
with &lt;string&gt;, so BC50 is configured to use native one. You may face other problems with
5.0. Please direct your bug reports and workarounds to the Forum.</li>
<li>This release should work out-of-the box for Borland C++ Builder 4. Builder 3 may require
some configuration adjustments to enable features added in BCB 3. You may also utilize &lt;iostream.h&gt;
wrapper in stlport/BCB directory to compile programs using old-style header.</li>
<li>With 5.0, you may also encounter problems with too long symbols when compiling
with debug information. To handle this, try defining <b><tt>_STLP_USE_ABBREVS</tt></b>
in <tt>stlcomp.h</tt>.</li>
<li>If your program is multi-threaded, be sure to define macro <b><tt>_REENTRANT
</tt></b>for proper synchronization (if you are <i>using SGI node
allocator. If you are using new_alloc or malloc_alloc, you won't
need that)</i>.</li>
<li>You may encounter problems using new-style BC++ 5.0 <b><tt>&lt;iostream&gt;
</tt></b>in mix with SGI STL <b><tt>&lt;string&gt;, &lt;stdexcept&gt;
</tt></b>without defining <b>_STLP_USE_OWN_NAMESPACE.</b></li>
</ul>
<hr>
<h2>Migration notes</h2>
You should experience no other problems migrating from BC++ STL to SGI
STL. <br>
Default <b><tt>allocator&lt;T&gt;</tt></b> in this adaptation should be
fully functional.
<p>&nbsp;</p>
<hr>
<h4>Versions prior to 4.52</h4>
Borland C++ versions older than 4.52 have not been tested. Probably it
would work with 4.50-4.51.
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

View File

@@ -0,0 +1,28 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Note For Metrowerks CodeWarrior Users</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Note For Metrowerks CodeWarrior Users</span>
<hr>
<h2>Known problems</h2>
<h4>Compiling</h4>
<ul>
<li>You may have to edit relative/full path to CodeWarrior native
headers .</li>
<li>To avoid editing the headers mentioned above, Metrowerks users
should put the "STLport" directory in the "Metrowerks
Standard Library" directory, and add the "STLport"
directory as the first item in the system search paths of the
projects that wish to use it.</li>
<li>If you want your code to be portable, you should avoid explicit
usage of <tt>reverse_iterator&lt;Iterator,T,T&amp;,T*,Distance&gt;</tt>.</li>
<li>It's better to use coherent set of headers in the project: <b>all
new-style</b>, including STL ones;</li>
<li><b>IMPORTANT</b> : You should either have _STLP_USE_OWN_NAMESPACE
defined, or you should recompile CodeWarrior runtime libraries after
you installed STLport.</li>
<li>For earlier versions, you have to copy <tt>&lt;functional&gt;</tt>
to <tt>&lt;functional.h&gt;</tt>. <tt>&lt;functional.h&gt;</tt> is
not provided in distribution since it clobbers <tt>&lt;function.h&gt;</tt>
on 8.3 systems</li>
</ul>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

View File

@@ -0,0 +1,37 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Notes for DEC CXX Users</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Note for DEC CXX users</span>
<hr>
<h2>Known problems</h2>
<h4>Compiling</h4>
DEC CXX require explicit template notation such as <tt>template_class&lt;Param&gt;</tt>
where most others (conformant) accept just <tt>template_class</tt>
(inside template method bodies, etc):
<p><tt>template &lt;class Param&gt; class template_class {</tt> <br>
<tt>template_class foo() ; // error for DEC</tt> <br>
<tt>template_class&lt;Param&gt; foo() // OK</tt> <br>
<tt>.....</tt> <br>
<tt>}</tt></p>
<p>That is being worked around in this adaptation, but may cause
problems when porting template code from other platforms. Use the same
name of formal parameter : <tt>Param </tt>in all method's outside
definitions.</p>
<h4>Linking</h4>
Repository handling of this compiler is imperfect, so you may experience
various problems on link stage. Linker problems problems are generally
of two kinds : unresolved symbols and duplicate symbols. The latter
problem was never reported to occur with DEC CXX. The problem with
undefined symbols is also may require manual intervention. General rule
is : if you get "unresolved symbol" errors, explicit
instantiation will most likely help, for example:
<p><tt>Unresolved:</tt> <br>
<tt>__default_alloc_template&lt;0, 0&gt;::allocate(unsigned long)</tt> <br>
<tt>__default_alloc_template&lt;0, 0&gt;::deallocate(void*, unsigned
long) &gt;</tt></p>
<p>To work around this problem, just instantiate <tt>__alloc&lt;0,0&gt;</tt>
explicitly in some module:</p>
<p><tt>template class __default_alloc_template&lt;0,0&gt;;</tt></p>
<p>Another way to solve this problem may be use of <tt>-pts </tt>compiler
option, but I'm not sure it works in all cases.</p>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

View File

@@ -0,0 +1,35 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Note for Apple MPW users</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Note for Apple MPW users</span>
<p align="right">
03/22/2001<br>
Tsutomu Yoshida<br>
Minokamo, Japan
</p>
<h2>Installation</h2>
For the installation of STLport package, please follow the instruction contained in <b>"ReadMe.MPW"</b> located in <b>"test:regression:"</b> folder.
The MPW shell scripts embedded in this document will set up the shell variable <b>"{STL}"</b> which points to the main STLport package folder "stlport:".
A small MPW shell script named <b>"!STL_Folder_SetUp"</b> will be placed in "{MPW}StartUp Items:" so that this "{STL}" will be automatically reestablished
at the subsequent MPW startups.
The script also set up <b>an alias to MPW's "{CIncludes}"</b> at the same level as "stlport:" which is used to look up the native C headers refered from STLport.
<p>The installation script will build and install stlport library binary which contains iostreams code and other commonly used class binaries.
The library binaries are stored in <b>"{STL}:lib:"</b> folder with the names:<br>
<ul>
<li><b>"STLportLib.68K.DBG.o"</b> : 68K (SCpp) with debugging code</li>
<li><b>"STLportLib.68K.o"</b> : 68K (SCpp) without debugging code</li>
<li><b>"STLportLib.PPC.DBG.o"</b> : PPC (MrCpp) with debugging code</li>
<li><b>"STLportLib.PPC.o"</b> : PPC (MrCpp) without debugging code</li>
</ul>
<br>
For the sample setup of makefile utilizing STLport and accompanying library binary, please refer to:<br>
<ul>
<li>"{STL}:src:MrCpp.mak" </li>
<li>"{STL}:test:regression:MrCpp.mak"</li>
<li>"{STL}:src:SCpp.mak"</li>
<li>"{STL}:test:regression:SCpp.mak"</li>
</ul>
</p>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

View File

@@ -0,0 +1,75 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Note For Visual C++ Users</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Note For Visual C++ Users</span>
<hr>
<h2>Known problems</h2>
<h4>Compiling</h4>
<ul>
<li>If your program is multi-threaded, make sure you defined macro <b><tt>_REENTRANT
</tt></b>to enable proper synchronization (if you are <i>using SGI
node allocator. If you are using new_alloc or malloc_alloc, you
won't need that)</i>.</li>
<li>You may encounter problems using&nbsp; <b><tt>&lt;iostream&gt; </tt></b>in
mix with SGI STL <b><tt>&lt;string&gt;, &lt;stdexcept&gt; </tt></b>without
defining <b>_STLP_USE_OWN_NAMESPACE.</b>&nbsp; Using&nbsp; <b>_STLP_USE_OWN_NAMESPACE&nbsp;
</b>is the most safe way to cooperate with new I/O<br>
library and is definitely recommended unless you recompile the whole
C++ std library with STLport installed.</li>
<li><b><tt>_STLP_USE_EXCEPTIONS</tt></b> is being defined
automatically if the compiler defined <b><tt>_CPPUNWIND</tt></b>
macro ("<b><tt>/GX</tt></b>" option). So you should not
worry about it.</li>
<li>There were reports that Visual C++ 4.0 have problems with
namespaces in certain cases. Due to that, <b><tt>_STLP_NO_NAMESPACES</tt></b>&nbsp;
defined for it in <b>&lt;stlcomp.h&gt;</b>.</li>
<li>You may encounter problems with too long symbols when compiling
with debug information. To handle this, try defining <b><tt>_STLP_USE_ABBREVS</tt></b>
in <tt>stlcomp.h</tt>.</li>
<li>You may experience problems with default SGI node allocator. I had
no such problems, though. Default node allocator is quite fast, so I
wouldn't recommend disabling it without serious reason. However, if
it causes problems, define <b><tt>_STLP_USE_MALLOC</tt></b> or <b><tt>_STLP_USE_NEWALLOC</tt></b>
to get bare malloc()-based or new()-based default allocator.</li>
<li>If your program is multi-threaded, make sure you defined macro <b><tt>_REENTRANT
</tt></b>to enable proper synchronization.</li>
<li><b>[ VC++ 4.2 and higher] </b>This version allows use of new-style
<b>&lt;iostream&gt;, &lt;string&gt;</b> with STLport , as well as
the old-style &lt;iostream.h&gt; . The default is new &lt;iostream&gt;
usage.</li>
<br>
If you want to use old-style <b>&lt;iostream.h&gt;</b> in your
project:
<ul>
<li>define macro <b>_STLP_NO_NEW_IOSTREAMS</b> in <b>&lt;stl_user_config.h&gt;</b>
or at the command line.</li>
</ul>
If you are going to use new-style <b>&lt;iostream&gt;</b> without
defining _STLP_USE_OWN_NAMESPACE:
<ul>
<li>You may have to edit relative (or set full) path to VC++&nbsp;
native headers<b><tt> </tt></b>in &lt;stl_user_config.h&gt;. Using
native versions is necessary to avoid clashes with compiled code
in C++ runtime library.</li>
<li>In the whole project, use coherent set of headers : <b>all
new-style.</b></li>
<br>
<b>&nbsp;</b>
</ul>
<li>You may also try <a href="http://www.sirius.com/~ouchida">SGI STL
adapted for MSVC++ 5.0 only,</a> by Wayne Ouchida. (Note : looks
like it's out of date and&nbsp; discontinued. It doesn't provide
debug support and other extensions of this adaptation).</li>
</ul>
<hr>
<h2>Migration notes</h2>
You should experience no other problems migrating from VC++ STL to SGI
STL. Default <b><tt>allocator&lt;T&gt;</tt></b> in this adaptation is
fully functional.
<p>&nbsp;</p>
<hr>
<h4>Versions prior to 4.0</h4>
Visual C++ older than 4.0 won't compile STL. You have to upgrade.
<p>&nbsp;</p>
<hr>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

View File

@@ -0,0 +1,22 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Note for HP ANSI C++ Compiler users</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Note for HP ANSI C++ Compiler users</span>
<p>&nbsp;</p>
<hr>
<h2>Known problems</h2>
<h4>Configuring</h4>
<tt>stlcomp.h</tt> provides recognition section usable with <tt>aCC 1.06</tt>.
You should be able to use unconfigured STL distribution with it. If you
are using more recent version, you might want to enable more features
(see comments in <tt>stlcomp.h</tt>). Basically, <tt>"configure"</tt>
script was reported to work with aCC. However, your aCC version might
contain bugs (not showing in simple example) that could prevent your
code from compiling. In this case, refer to <tt>stlcomp.h</tt> to figure
out more reliable set of configuration switches.
<h4>Compiling</h4>
aCC enforces stricter name lookup checking than many other compilers.&nbsp;
Also it uses initial template name lookup scheme different from many
compilers. This scheme prevents any use of inherited typenames without
explicit "using" directive, etc.
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

View File

@@ -0,0 +1,91 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Note for GCC users</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Note for GCC users</span>
<hr>
<h3>GCC versions</h3>
STLport works with the following GCC flavours:
<p>gcc-3.0 Note : "wrapper mode" w/o STLport iostreams doesn't work with 3.0, as gcc 3.0 implements Koenig lookup properly, which leads to ambiguity errors when trying to wrap new-style gcc iostreams into STLport namespace.</p>
<p>gcc-2.95.x Note: on some platforms (HP, AIX) gcc-2.95 does not implement automatic instantiation of static template data members. Please refer to gcc-2.7 section below for workaround. </p>
<p><a href="http://www.cygnus.com/egcs">Cygnus "egcs":</a>
Based on gcc-2.8 development tree, it provides <b>better </b>template
support than in FSF gcc-2.8.1, and many modern commercial compilers. It
features full-blown default template parameters, namespaces, partial
template specialization and member template methods. EGCS also offers
greatly improved EH support.&nbsp; STLport works with egcs just fine.
Though it comes with SGI STL, <br>
you may still want to use STLport because of debug mode.</p>
<p>gcc-2.8.1: About the same as egcs. <br>
<i>( Note : you may encounter problems compiling with 2.8.1 due to bugs
in partial template specialization. Just #define _STLP_PARTIAL_SPECIALIZATION_BUG
then ) </i>.</p>
<p>If you use egcs or 2.8.1 or higher, you may stop reading here.</p>
<p>&nbsp;</p>
<hr width="100%">
<h3>GCC 2.7.x :</h3>
Althought it does work with STLport, it has poor template support
compared to other modern compilers. <br>
If you do generic programming, it's definitely time to upgrade.
<h3>Workaround strategy</h3>
To address GCC inability to auto-instantiate static template data
members, the following workaround introduced:
<p>Instantiations of required static data members provided in
corresponing headers under <i>#ifdef </i><tt>__PUT_STATIC_DATA_MEMBERS_HERE</tt>
( luckily, in this version of STL their amount doesn't depend on how
many different instantiations you have ). You should <tt>#define __PUT_STATIC_DATA_MEMBERS_HERE</tt><i>
</i>in <b>one</b> of your compilation unit ( or specify it in <i>CFLAGS </i>for
it ) <b>before </b>including any STL header. That should not affect
'good' compilers in any way.</p>
<p><b>Moreover,</b> <b>gcc on platforms that use ELF object file format
or GNU linker, will work without this hack</b>. gcc's <b><i>__attribute__((weak))__</i></b>
used instead as workaround. That makes gcc usable in portable way with
STL on many platforms ( Linux/Solaris/etc. ).</p>
<p>&nbsp;</p>
<hr>
<h2>Known problems</h2>
<h4>Compiling</h4>
See <a href="#Migration%20notes">Migration notes</a>.
<h4>Linking</h4>
When using <i>__attribute__((weak))__<b> </b></i>, you may run into
linker errors like : <b>'multiple definition of `global constructors
keyed to __malloc_alloc_template&lt;0&gt;::oom_handler'</b>. <br>
That indicates that you have defined some global objects in your source.
gcc then produce a bug treating weak symbol declared in header as real
global. <br>
The workaround is simple : just put some dummy global variable <b>before
</b>including STL headers. That worked for me. <br>
Another way is to <tt>#define _STLP_WEAK_ATTRIBUTE 0 </tt>in <b><i>stlconf.h</i></b>
and use <tt>__PUT_STATIC_DATA_MEMBERS_HERE</tt> scheme described above.
<p>On some non-ELF systems (<b>SunOS 4.x</b>) "configure" sets
<tt>_STLP_WEAK_ATTRIBUTE. </tt>Unfortunately, this won't work unless you
are using GNU linker. To justify this, <tt>#define _STLP_WEAK_ATTRIBUTE
0 </tt>in <b><i>stlconf.h</i></b> and use <tt>__PUT_STATIC_DATA_MEMBERS_HERE</tt>
scheme described above.</p>
<p>You may have troubles getting _linker_ errors compiling complex cases
without <i>-frepo</i>. If that problem occurs, try <i>-frepo</i> flag.
This flag is generally preferred unless you are compiling really short
examples. Be sure to supply -frepo switch on the link stage, too.</p>
<p>&nbsp;</p>
<hr>
<h2><a name="Migration%20notes"></a>Migration notes</h2>
You may have to define operators ==() and &lt;() on all classes you are
using with most containers, even if they are not really used. That is
the gcc bug. Another bug is that gcc won't find this operators defined
in base class, you have to redefine them. Don't define any of
!=(),&gt;(),&lt;=(),&gt;=;() operators for your classes - gcc have bugs
in resolution and report that as ambiguity with templates in <i>function.h.</i>
<p>If you use <tt>&lt;string&gt;</tt> from <tt>libg++</tt> the described
problem of the definition of <tt>!=, &gt;, &lt;=</tt> and <tt>&gt;=</tt>
occurs: something like: "<tt>ambiguous template instantiation in
sinst.h</tt>" The concrete solution is to disable the definitions
of those operators in <tt>g++-include/std/sinst.h (line 59):</tt></p>
<p><tt>__DOB (==)</tt> <br>
<tt>//__DOB (!=)</tt> <br>
<tt>__DOB (&gt;)</tt> <br>
<tt>//__DOB (&gt;)</tt> <br>
<tt>//__DOB (&lt;=)</tt> <br>
<tt>//__DOB (&lt;=)</tt> <br>
<tt>//__DOB (&gt;=)</tt></p>
<p>This would be a general fix due to gcc problems. The other possible
solution is to <tt>#include &lt;string&gt;</tt> after STL headers.</p>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

View File

@@ -0,0 +1,132 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Note for IBM OS/390 C/C++ Users</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Note for IBM OS/390 C/C++ Users</span>
<p>&nbsp;</p>
<hr>
<br>
<b><i><font face="Arial,Helvetica,Geneva"><font size="+1">Known Problems</font></font></i></b>
<p><b>Compiling:</b></p>
<ol>
<li>OS/390 C/C++ requires explicit template notation such as
template_class&lt;Param&gt; where most other conformant compilers
only accept template_class (inside template method bodies, etc.):</li>
<p><br>
<br>
<font size="+0">&nbsp; template &lt;class Param&gt; class
template_class {<br>
<br>
&nbsp;&nbsp;&nbsp; template_class foo();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
// error for OS390 C/C++<br>
<br>
&nbsp;&nbsp;&nbsp; template_class&lt;Param&gt; foo();&nbsp;&nbsp;&nbsp;&nbsp;
// OK<br>
<br>
&nbsp;&nbsp;&nbsp; ...<br>
<br>
&nbsp; };</font></p>
This adaptation works around the above OS/390 C/C++ requirement, but
may cause compatibility problems when porting template code from other
platforms.
<li>OS/390 C++, does not allow passing an extern "C"
function pointer as an argument to a C++ function. For example:</li>
<p><br>
<br>
<font size="+0">&nbsp; template &lt;class Result&gt;&nbsp;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pointer_to_void_function&lt;Result&gt;
ptr_gen(Result (*x)());<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp; p = ptr_gen(rand);&nbsp;&nbsp; // error for OS/390 C/C++</font></p>
In the above template, <i>ptr_gen</i> takes a function pointer as its
argument and returns a function pointer adaptor (a type of function
object), and <i>rand</i> is an extern "C" library pointer.
This is not allowed because C and C++ linkage is different on OS/390
C/C++.
<p>To work around this problem, provide a C++ wrapper around the
extern "C" function and pass the C++ wrapper instead:</p>
<p><br>
<br>
<font size="+0">&nbsp; int cxxrand(void) { return rand();}<br>
<br>
&nbsp; p = ptr_gen(cxxrand);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
// OK</font></p>
<li>OS/390 C++ does not allow functions to be declared with a function
or an array as its return type:</li>
<p><br>
<br>
<font size="+0">&nbsp; template &lt;class InputIterator, class
OutputIterator,class result)<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; OutputIterator
adjacent_difference(InputIterator first,&nbsp;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InputIterator
last,&nbsp;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OutputIterator
result);<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp; main() {<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; int number[10];<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; int different[5];<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; adjacent_difference(number,<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; number
+ 5,<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; different);&nbsp;&nbsp;
// error for OS/390 C/C++<br>
<br>
&nbsp; }</font></p>
In the above example, the compiler attempts to create an instantiation
that returns an array <i>int[]</i>, which is not allowed in OS/390
C/C++:
<p><br>
<br>
<font size="+0">&nbsp; int[] adjacent_difference(int*, int*,&nbsp; int*)</font></p>
To work around this problem, cast the <i>int</i> array to pointer to <i>int</i>:
<p><br>
<br>
<font size="+0">&nbsp; adjacent_difference(number,number + 5, (int *)
different);&nbsp;&nbsp; // OK</font></p>
</ol>
<b>Linking:</b>
<p>Repository handling in the compiler is imperfect, so you may
experience various problems during the link step. The problems are
generally of two kinds: duplicate symbols or unresolved symbols. The
duplicate symbol problem is not fatal, since the symbols are weak
(compiler generated) in that case. When it comes to large projects,
however, it may cause unacceptable code bloat (extra code generated by
the compiler when it separates the template instantiation files into the
TEMPINC directory). To overcome this problem, this adaptation simulates <i>separate
template implementation</i>. Compiling templates using the tempinc
compile option, minimizes code bloat as there are less duplicate
symbols. The problem with undefined symbols is also caused by imperfect
repository handling, but may require manual intervention. The general
rule is: <b>if you get <i>unresolved symbol</i> errors, explicit
instantiation will most likely help</b>. For example:</p>
<p><i>Unresolved:</i></p>
<p><br>
<br>
<font size="+0">&nbsp; __default_alloc_template&lt;0,0&gt;::allocate(unsigned
long)<br>
<br>
&nbsp; __default_alloc_template&lt;0,0&gt;::deallocate(void *, unsigned
long)</font></p>
To work around this problem, just instantiate __default_alloc_template&lt;0,0&gt;
explicitly in a module:
<p><br>
<br>
<font size="+0">&nbsp; template class __default_alloc_template&lt;0,0&gt;;</font></p>
<h2><font size="+0">Useful Links</font></h2>
<p><font size="+0">Check out :</font></p>
<p><a href="http://www.software.ibm.com/ad/c390/cmvsstlp.htm">http://www.software.ibm.com/ad/c390/cmvsstlp.htm</a></p>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

View File

@@ -0,0 +1,76 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Note for PowerSoft's Power++ Users</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Note for PowerSoft's Power++ Users</span>
<hr>
<h2>Known problems</h2>
<p><tt>Subject: Re: SGI STL Adaptation Page updated (STLport 2.031
release) <br>
Date: Wed, 1 Oct 1997 16:30:48 -0400 <br>
From: Doni_Grande@ethyl.com (Doni Grande) </tt><br>
</p>
<p><tt>This version (2.031) seems to work with Powersoft's Power++ 2.0
compiler, which is based on the Watcom C/C++ 11.0 compiler. The STL
debug mode still won't compile, but everything else seems to work.
Power++ does some memory management in debug mode that needs to be
worked around, and there is a nuisance warning message that needs to be
suppressed. I generally load all the STL headers I use in a single
header file, and do the workarounds needed there. The STL.HPP file I use
is below. </tt></p>
<p><tt>// Power++ 2.0 include file <br>
// <br>
// stl.hpp -- Include all the files in the standard SGI STL distribution
<br>
// </tt></p>
<p><tt>#ifndef _STL_HPP_INCLUDED <br>
#define _STL_HPP_INCLUDED</tt></p>
<p><tt>// Define symbol to indicate SGI STL <br>
#ifndef __SGISTL <br>
#define __SGISTL <br>
#endif</tt></p>
<p><tt>// The following turns off warning 549: <br>
// 'sizeof' operand contains compiler generated information // This
warning remains disabled after loading this file.</tt></p>
<p><tt>#pragma warning 549 9;</tt></p>
<p><tt>/* Redefine the C++ "new" and "delete"
operators to not go through the component library's memory checker. */ <br>
#if defined( _DEBUG ) &amp;&amp; defined( new ) <br>
# undef new <br>
# undef delete <br>
# define _REDEFINE_WNEW <br>
#endif</tt></p>
<p><tt>// If can get STL debug working, use the following <br>
// #if defined( _DEBUG ) <br>
// # define _STLP_DEBUG 1 // #endif</tt></p>
<p><tt>// Get rid of Watcom's min and max macros <br>
#undef min <br>
#undef max</tt></p>
<p><tt>// Get configuration defines #include "stlcomp.h"</tt></p>
<p><tt>#include "algo.h" <br>
#include "bvector.h" <br>
#include "deque.h" <br>
#include "heap.h" <br>
#include "list.h" <br>
#include "map.h" <br>
#include "multimap.h" <br>
#include "multiset.h" <br>
#include "pair.h" <br>
#include "set.h" <br>
#include "stack.h" <br>
#include "tempbuf.h" <br>
#include "vector.h"</tt></p>
<p><tt>// SGI-specific additions <br>
#include "rope.h" <br>
#include "slist.h" <br>
#include "function.h" <br>
#include "hash_map.h" <br>
#include "hash_set.h"</tt></p>
<p><tt>#ifdef _REDEFINE_WNEW <br>
# include "wnew.hpp" <br>
# undef _REDEFINE_WNEW <br>
#endif</tt></p>
<p><tt>#endif</tt></p>
<p>&nbsp;</p>
<hr>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

View File

@@ -0,0 +1,15 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Note for SGI's CC v4 Compiler users</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Note for SGI's CC v4 Compiler users</span>
<hr>
<h2>Known problems</h2>
<h4>Patches required</h4>
- You have to make sure that you have installed the C++_non_shared_libs
package (from the "C++ translator" CD).
<p>- You must then install CC patch 1599 (you may also installed patches
1260,1600, and 1628 though they should not be necessary).</p>
<p>&nbsp;</p>
<hr>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

View File

@@ -0,0 +1,191 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Notes for SUNPro C++ Users</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Notes for SUNPro C++ Users</span>
<p>&nbsp;</p>
<h2>Common Notes</h2>
For all SUN compilers, STLport nables separate compilation with
non-inline template members defined in .c file. That is supposed to
help with code bloat, but does not make a big difference for SUN compilers.
So, if having any problems with this mode, just turn off _STLP_LINK_TIME_INSTANTIATION switch.
Installation: please note that even if you do not use STLport iostreams, you still have to go to "src" subdirectory and do "make" or at least "make prepare" to produce additional .SUNWCCh files necessary for compilation)
<h2>Notes for SUNPro C++ users</h2>
<h2>Known problems</h2>
<h4>Compiling</h4>
<h2>Known problems</h2>
<h4>Bugs (Note for SUNPro C++ 4.2 or before)</h4>
<br><b>Note: proposed workaround is implemented for this bug for all relevant STLport code.
However, please be aware of this bug because it might affect your own code.</b>
<br>Perry R. Ross 3/12/99<br>
pross@platinum.com<br>
<p>
The SunPro 4.2 compiler has a serious problem handling string literals<br>
passed as arguments to inline functions. Each time the dummy argument
representing the string literal appears in the function, it receives a
new address, just as if you'd typed the literal at that spot in the
function. Normally this is harmless except for wasting a bit of<br>
memory, but if the function attempts to do any pointer arithmetic, it
fails horribly. Here is a small program that duplicates the problem:<br>
<br>
#include &lt;iostream.h&gt;<br>
<br>
inline void func(char *s) {<br>
// Each of these will print a different address for s<br>
// if the arg was a string literal.<br>
cout &lt;&lt; "address of " &lt;&lt; s &lt;&lt; " is
" &lt;&lt; (int) s &lt;&lt; endl;<br>
cout &lt;&lt; "address of " &lt;&lt; s &lt;&lt; " is
" &lt;&lt; (int) s &lt;&lt; endl;<br>
cout &lt;&lt; "address of " &lt;&lt; s &lt;&lt; " is
" &lt;&lt; (int) s &lt;&lt; endl;<br>
<br>
// This will print a negative number if the arg is a literal.<br>
cout &lt;&lt; "the difference between (s+1) and s is "
&lt;&lt; ( (s+1) - s) &lt;&lt; endl;<br>
}</p>
<p>int<br>
main(int argc, char *argv[]) {<br>
func("hello");<br>
char *bye = "goodbye";<br>
func(bye);<br>
return 0;<br>
}<br>
<br>
Here is a demo program that shows how this impacts STL:<br>
<br>
#include &lt;iostream.h&gt;<br>
#include &lt;string&gt;<br>
<br>
string str("hello");<br>
<br>
int main(int argc, char *argv[]) {<br>
cout &lt;&lt; str &lt;&lt; endl;<br>
return 0;<br>
}<br>
<br>
This will print "hellohello" on a broken compiler version.<br>
<br>
The fix for this is to add this line to the beginning of func():<br>
<br>
s = s;<br>
<br>
This somehow makes the compiler stop creating new copies of the string,<br>
and if you compile with -O, it seems to completely optimize away,<br>
so there is no runtime penalty. There is a substantial ugliness<br>
penalty, though, as this line has to be in every inline function that <br>
can be called with a string constant.<br>
The fix could be done with the preprocessor macro
__SUN_INLINE_STRING_LITERAL_BUG, which should be empty on all platforms
but SUNPRO version 4.2 or before (/<b>fbp</b>/this change is not in 3.12
yet, as I still hope to find less ugly solution, maybe with compiler
flags /<b>fbp</b>/):</p>
<ul>
<li><b>#define __SUN_INLINE_STRING_LITERAL_BUG(x) x=x;</b>&nbsp; (for
Sun CC)</li>
<li><b>#define __SUN_INLINE_STRING_LITERAL_BUG(x) ( </b>for other
compilers)</li>
</ul>
<p>.<br>
You should be careful passing string literals with SunPro CC (frankly -
NEVER do that), as the above bug appear in any inline function (not only
template ones).</p>
<h4>Compiling</h4>
<ul>
<li>If your program is multi-threaded, make sure you defined macro <b><tt>_REENTRANT
</tt></b>to enable proper synchronization .&nbsp; That will enable
use of Solaris threads synchronization support. If you are usizg
Pthreads in your program, define <b>_PTHREADS</b> for STLport.</li>
<li>If your project has multiple directories structure, it is better
to use <b>-ptr</b> option to keep all template databese in one
place.</li>
</ul>
<hr>
<h2>Note for SUNPro C++ 4.1 users</h2>
<h2>Known problems</h2>
<h4>Compiling</h4>
C++ 4.1 have problems recognizing types nested in template classes when
parsing declarations. For example , the following construct fails
(suppose STL vector is a base type for derived_vector ):
<p><tt>derived_vector&lt;int&gt; years;</tt> <br>
<tt>derived_vector&lt;int&gt;::iterator i;</tt></p>
<p>To work around this problem completely, you should repeat those
typedefs from base class that you are going to use in any way:</p>
<p><tt>template &lt;class T&gt; class derived_vector : public
vector&lt;T&gt; {</tt> <br>
<tt>typedef vector&lt;T&gt;::iterator iterator;</tt> <br>
<tt>...</tt></p>
<p>STL code itself is now free of this problem.</p>
<p>C++ 4.1 may also suffer from optimization bugs when using exception
handling. If your application doesn't use exceptions, you'd better use <tt>-noex</tt>
option along with <tt>_STLP_NO_EXCEPTIONS</tt> flag.</p>
<h4>Linking</h4>
You may have troubles getting linker errors compiling multiple targets
in one directory ( for example, running cygnus testsuite). That is a bug
in handling Templates.DB dependencies. Known solutions are :
<p>a) for one-file tests, specify option <b>-pto</b> <i>(one-file-mode)</i>
option to turn off database completely. Option <b>-pts</b><i>(single-file-mode)</i>
doesn't fix all problems.</p>
<p>b) for complex projects, use separate Templates.DB directories for
different targets.</p>
<p>&nbsp;</p>
<hr width="100%">
<h2>Notes for SUNPro C++ 4.0.1 users</h2>
<h2>Known problems</h2>
<h4>Version problems</h4>
If your CC 4.0.1 cannot compile <a href="testsuite.html">testsuite</a>,
most likely you are using out-of date version. You should download
patches for 4.0.1 (SparcCompilers WorkShop 3.0.1) from SunPro site :
<p><b>Solaris 2.x :</b></p>
<p><a href="http://www.sun.com/workshop/tnb/sparc2x/patch.html">http://www.sun.com/workshop/tnb/sparc2x/patch.html</a>
(SPARC/Solaris 2.x) . You should look for patches 101242-12 &amp;
101242-14 ( 101242-12 is required to work with 101242-12).</p>
<p><b>Sunos 4.1.x:</b></p>
<p><a href="http://www.sun.com/smcc/solaris-migration/cmc.products.970709/XCM/101914-14.tar.Z">http://www.sun.com/smcc/solaris-migration/cmc.products.970709/XCM/101914-14.tar.Z</a><a href="http://www.sun.com/workshop/tnb/sparc1x/patch.html">
(SPARC/SunOS 4.1.x)</a></p>
<p><a href="http://www.sun.com/workshop/tnb/sparc1x/patch.html">http://www.sun.com/workshop/tnb/sparc1x/patch.html</a>
(SPARC/SunOS 4.1.x). Look for 101914-20.</p>
<h4>Compiling</h4>
C++ 4.0.1 have problems recognizing types nested in template classes
when parsing declarations. For example , the following construct fails
(suppose STL vector is a base type for derived_vector ):
<p><tt><font size="-1">derived_vector&lt;int&gt; years;</font></tt> <br>
<tt><font size="-1">derived_vector&lt;int&gt;::iterator i;</font></tt></p>
<p>To work around this problem completely, you should repeat those
typedefs from base class that you are going to use in any way:</p>
<p><tt><font size="-1">template &lt;class T&gt; class derived_vector :
public vector&lt;T&gt; {</font></tt> <br>
<tt><font size="-1">typedef vector&lt;T&gt;::iterator iterator;</font></tt>
<br>
<tt><font size="-1">...</font></tt></p>
<p>More severe problems arise when given template argument's typedefs
are used as template arguments for base class. The example is function
adaptors from <b>function.h</b> . Refer to workarounds for binders &amp;
composers to see how it can be hanled ( proposed by "Martin
Abernethy" &lt;gma@paston.co.uk&gt; ).</p>
<p>C++ 4.01 may also suffer from optimization bugs when using exception
handling. If your application doesn't use exceptions, you'd better use <tt>-noex</tt>
option along with <tt>_STLP_NO_EXCEPTIONS</tt> flag.</p>
<h4>Linking</h4>
You may still have to use explicit instantiations and/or specific
template database controls for complex cases to avoid "<i>unresolved
symbol</i>" linker errors.
<p>You may have troubles getting linker errors compiling multiple
targets in one directory ( for example, running cygnus testsuite). That
is a bug in handling Templates.DB dependencies. Known solutions are :</p>
<p>a) for one-file tests, specify option <b>-pto</b> <i>(one-file-mode)</i>
option to turn off database completely. Option <b>-pts</b><i>(single-file-mode)</i>
doesn't fix all problems.</p>
<p>b) for complex projects, use separate Templates.DB directories for
different targets.</p>
<p>&nbsp;</p>
<hr>
<h2>Migration notes</h2>
You should experience no other problems migrating from HP STL to SGI
STL.
<p>&nbsp;</p>
<hr>
<h4>Versions prior to 4.1</h4>
For info on SUNPro C++ 4.0.1, see README.sunpro401. SUNPro C++ older
than 4.0.1 won't compile STL. You have to upgrade.
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

View File

@@ -0,0 +1,41 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Note for xlC &amp; Visual Age C++ users</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Note for xlC &amp; Visual Age C++ users</span>
<hr>
<h2>Known problems</h2>
<h4>Compiling</h4>
xlC &amp; VAC++ require explicit template notation such as <tt>template_class&lt;Param&gt;</tt>
where most others (conformant) accept just <tt>template_class</tt>
(inside template method bodies, etc):
<p><tt>template &lt;class Param&gt; class template_class {</tt> <br>
<tt>template_class foo() ; // error for xlC</tt> <br>
<tt>template_class&lt;Param&gt; foo() // OK</tt> <br>
<tt>.....</tt> <br>
<tt>}</tt></p>
<p>That is being worked around in this adaptation, but may cause
problems when porting template code from other platforms.</p>
<h4>Linking</h4>
Repository handling in this compilers is imperfect, so you may
experience various problems on link stage. The problems are generally of
two kinds : unresolved symbols and duplicate symbols. The latter problem
is not fatal, since the symbols are weak in that case. It may cause
unacceptable code bloat when it comes to large projects, however. To
overcome this problem, for all IBM compilers, STLport 3.2 enables separate
compilation with non-inline template members defined in .c file. <b>Note : you should enable corresponding
option in the compiler (/Ft+ or equivalent) to get use of this mode, as it is being enabled conditionally
based on the presence of builin macro ___TEMPINC__.</b><br>When compiling templates splitted to *.h/*.c
scheme, these compilers produce better results (around 50% code size reduction, less duplicate symbols).
The problem with undefined symbols is also caused by imperfect
repository handling, but it may require manual intervention. General
rule is : if you get "unresolved symbol" errors, explicit
instantiation will most likely help, for example:
<p><tt>Unresolved:</tt> <br>
<tt>__default_alloc_template&lt;0, 0&gt;::allocate(unsigned long)</tt> <br>
<tt>__default_alloc_template&lt;0, 0&gt;::deallocate(void*, unsigned
long) &gt;</tt></p>
<p>To work around this problem, just instantiate <tt>__default_alloc_template&lt;0,0&gt;</tt>
explicitly in some module:</p>
<p><tt>template class __default_alloc_template&lt;0,0&gt;;</tt></p>
<p>&nbsp;</p>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

View File

@@ -0,0 +1,88 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Running configure</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Running "configure"</span>
<font size="1"><em><strong>by Boris Fomitchev</strong></em></font>
<h3>Configuring STLport for new compiler with UNIX shell</h3>
<p><i>Note: this document describes the procedure ot tuning STLport for
new compiler, not the one that is already supported. If your compiler is listed
as supported, this is absolutely unnecessary.</i></p>
<p>STLport comes with "configure" shell script to help in the
initial step to tune the library for a new compiler.
It sets up stlconf.h configuration header
with proper flags depending on features of the compiler and user-defined
options.
Recommended way to create new configuration is to run "configure"
in "config/new_compiler" directory and create <b>stl_yourcompiler.h</b> in "config"
directory based on switches defined by "configure" in stlconf.h.
<b>Do not</b> expect STLport to be configured just by running "configure".
</p>
<p>Here is an example how to specify the parameters to "configure" (for Bourne-like
shells): <b><br>
host&gt; cd STLport/config<br>
host&gt; CXX=CC CXXFLAGS="-xwe -noex" ./configure --enable-malloc</b></p>
<p>This will set up workarounds necessary for "<b>CC</b>"
compiler as well as specify malloc-based allocator as the default one. <br>
Run "<b>configure --help</b>" to see list of options
available. For most reliable results, you should specify <b>CXXFLAGS</b>
to contain the option turning warnings into errors.
"configure" tries to scan warnings, but that not always works.
After testing your compiler features and setting options specified,
"configure" creates <b>stlconf.h</b> file using <b>config/stlconf.h</b>
as input. Macro <b>__AUTO_CONFIGURED</b> indicates that the package has
been configured. If it is not set (before you run configure), <b>stlconf.h</b>
includes <b>stlcomp.h</b> header to set up conservative configuration
and recognize the compiler version. <b>config/stlconf.h</b> can be
safely copied to stlconf.h to restore unconfigured status-quo.</p>
<h3>Configuring STLport on other platforms</h3>
The above may also work on other systems with UNIX-like toolsets on&nbsp;
them.&nbsp; <br>
For example, the <a href="http://www.cygnus.com">cygwin32</a>&nbsp;
suite for Windows 95/NT runs "configure" just fine.&nbsp;&nbsp;&nbsp;
<br>
You can also change &lt;stlcomp.h&gt; for your system manually.<br>
Please consider contributing your changes back to the&nbsp; STLport
project!
<h3>"configure" synopsys (Bourne shells):</h3>
<p>&gt; [environment] <b>./configure</b> [user-defined options]</p>
<h3>"configure" synopsys (C-shells):</h3>
<p>&gt; <b>env </b>[environment] <b>./configure</b> [user-defined
options]</p>
<p><b>"configure" script runs series of tests to determine
detailed characteristics of your compiler.</b></p>
<p>In [environment] , you may specify the following parameters</p>
<p><b>CXX=&lt;compiler_name&gt;, </b>default is <b>c++</b></p>
<p><b>CXXFLAGS=&lt;<i>cxx compiler flags you will most likely use</i>&gt;
. <br>
</b>That may be needed to set up some features correctly. That is, if
you plan to use exception handling, and your compiler doesn't enable
them by default, specify the option enabling EH there. <br>
It is also helpful to specify an option turning warnings into errors
here to get most reliable configuration ( For example, warnings could be
like that : <i>"Warning: namespaces are mostly broken in this
release"</i>, and they're indeed broken. ).</p>
<p>In case you are not able to run configure, you might have to know
internal STLport macros describing compiler features/bugs
Please refer to the <a href="configure.html">Configuration Manual</a> for the values.
</p>
<h3>Modifying the configuration engine</h3>
<p>Don't edit the "configure" script directly, use <b>config/configure.in</b>
source + <b>GNU autoconf</b> instead.</p>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

View File

@@ -0,0 +1,25 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Bug Reports</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Bug Reports and Questions</span>
<p><font size="3"><br>
</font>Bug reports and questions are welcome. Please supply a source
code fragment and compiler/OS information along with bug reports.</p>
<p>Before sending a bug report, please check <a href="FAQ.html">FAQ</a>
and <a href="buglist.html">Known Bugs</a> to see if your bug has been
reported already. Refer also to <a href="compiler_readmes.html">READMEs</a>
to see if it's common problem with your compiler.</p>
<p>Please direct your bug reports and questions to <a href="http://www.stlport.com/cgi-bin/forum/dcboard.cgi">STLport
Forum</a> to get better feedback. Answers are being normally posted
there, too. Please keep in mind the support is done on a pure volunteer
basis.</p>
<p>If you make a port for your compiler and would like to make it
available to the public, <a href="mailto:consulting@stlport.com">contact us</a>
and we'll be happy to include it with this package, provided that your
modifications are freely distributable.</p>
<p>If you wish to be notified about STLport updates automatically : please
indicate it in download form. You may alter your mail list option
anytime via the same form.</p>
<p><a href="http://www.stlport.com/cgi-bin/forum/dcboard.cgi">Report your
bug</a></p>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

18
STLPORT/doc/buglist.html Normal file
View File

@@ -0,0 +1,18 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Current buglist</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Known bugs</span>
<hr noshade="" color="#000080">
<p><b>Borland C++ 5.0</b><br>
This release is known to still have problems with BC 5.0x.
Directory <b>STLport/BC50/</b> contains some extra files Borland C++ 5.x
expects to see on the path. Make sure you put <b>STLport/BC50 </b>in<br>
your search path before <b>STLport </b>main directory. The problems still persist
with &lt;string&gt;, so BC50 is configured to use native one. You may face other problems with
5.0. Please direct your bug reports and workarounds to the Forum.</p>
<p><b>Visual C++ 6.0 : <br>
</b>To fix internal compiler errors on large compilations, please refer to VC knowledge base to see what extra options may be supplied.</p>
<hr noshade="" color="#000080">
<p><a href="bug_report.html">Report a bug</a></p>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

View File

@@ -0,0 +1,27 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: README Files for Particular Compilers</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">README Files for Particular Compilers</span>
<p>&nbsp;</p>
<p>Some compilers have bugs that require specific workarounds in your
source code. They compile STLport headers OK but crash on using certain
STL constructs in your code, or require specific tuning in some cases.
Refer to appropriate README file if running into problems:</p>
<dir>
<li><a href="README.gcc.html">GCC README&nbsp;</a></li>
<li><a href="README.sunpro.html">SunPro C++&nbsp; README</a></li>
<li><a href="README.VC++.html">Visual C++ README</a></li>
<li><a href="README.BC.html">Borland C++ 5.x README</a></li>
<li><a href="README.xlC.html">AIX xlC README</a></li>
<li><a href="README.xlC.html">IBM Visual Age C++ README</a></li>
<li><a href="README.DEC.html">DEC CXX README</a></li>
<li><a href="README.CW.html">Metrowerks CodeWarrior README</a></li>
<li><a href="README.aCC.html">HP ANSI C++ Compiler (aCC) README</a></li>
<li><a href="README.pow.html">PowerSoft's Power++ 2.0 README</a></li>
<li><a href="README.os390.html">IBM OS/390 C/C++ 1.x - 2.x&nbsp;
README&nbsp;</a></li>
<li><a href="README.sgi40.html">SGI MIPSpro C++ 4.0 README</a></li>
<li><a href="README.MPW.html">Apple MPW MrCpp and SCpp README</a></li>
</dir>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

793
STLPORT/doc/configure.html Normal file
View File

@@ -0,0 +1,793 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Configuration Manual</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">STLport Configuration Manual</span>
<p>
<font size="1"><em><strong>by Boris Fomitchev</strong></em></font>
</p>
<h3>Parameters</h3>
<p>There are two major categories of STLport configuration parameters:</p>
<ul>
<li>User-definable preferences</li>
<li>Parameters describing compiler bugs and misfeatures</li>
</ul>
<p>The former class lets you set some specific preferences. Switches
controlling these preferences are located in &lt;stl_use_config.h&gt;
header, which is self-documented. This manual provide some additional
info on them.</p>
<p>For the latter, STLport&nbsp; comes&nbsp; preconfigured for a wide
variety of compilers. <br>
See list for a complete list of compilers that STLport automatically
recognizes.<br>
If your compiler is not being recognized properly, this document will
help you to fix the problem.</p>
<p>&nbsp;</p>
<h3>User-defined preferences</h3>
<p>You may specify some user-defined preferences for STLport. There are
two ways to set the options up :</p>
<ol>
<li>Setting corresponding #define in &lt;stl_user_config.h&gt; . This
is the preferred method. You can also use different &lt;stl_user_config.h&gt;
headers for different projects.</li>
<li>Specifying corresponding flag on compiler command-line. Some
options also may be suppressed. For example, you may configure the
distribution to exploit exception handling with setting <b>_STLP_USE_EXCEPTIONS</b>
macro to 1, then turning exception handling off with <b>-D_STLP_NO_EXCEPTIONS</b>
command-line option for particular project</li>
</ol>
<p>Below is a stable set of of user-defined options with description. If
not indicated otherwise, default for these options is that they are
undefined.<br>
</p>
<table border="1" cellspacing="0" cellpadding="4">
<caption>
<h4>User-defined options for STLport</h4>
</caption>
<tr>
<td><b>Controlling Macro</b></td>
<td><b>Description</b></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_OWN_IOSTREAMS
</b></font></td>
<td><font face="Arial, Helvetica" size="2">This switch is used to select
one from two major STLport iostream modes. Please visit <a href="select_io.html">"Getting Started"</a> section for details.
</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_NEW_IOSTREAMS
</b></font></td>
<td><font face="Arial, Helvetica" size="2">Suppress using new-style
iostreams even if they are available. </font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_IOSTREAMS
</b></font></td>
<td><font face="Arial, Helvetica" size="2">This switch is experimental and
is intended to be used in embedded environments. It makes STLport assume that
no iostreams are available at all. </font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_CUSTOM_IO
</b></font></td>
<td><font face="Arial, Helvetica" size="2">This switch is experimental. Define this if you do not instantiate basic_xxx iostream classes with custom types (which is most likely the case). "Custom" means types other than char, wchar and char_traits&lt;&gt;, like basic_ostream&lt;my_char_type, my_traits&lt;my_char_type&gt; &gt;. When this option is on, most non-inline template functions definitions for iostreams are not seen by the client. Default is off, just not to break compilation for those who do use those types. When on, it saves a lot of compile time for most compilers, also object and executable size for some. That also guarantees that you still use optimized standard i/o when you compile your program without optimization and link with optimized library. Option does not affect STLport library build; you may use the same binary library with and without this option, on per-project basis.</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_USE_DEBUG_LIB </b></font></td>
<td><font face="Arial, Helvetica" size="2">(Windows compilers only)
Normally, optimized STLport library is being automatically linked in even when you compile your project with _DEBUG set (Debug build). If you wish to use debug build of STLport library for your debug builds, define this option (you will also have to build STLport library with debug flags, via additional "make debug_static debug_dynamic" command, as "make all" only builds "release" and "stldebug" versions of the libraries).
</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_USE_STATIC_LIB, _STLP_USE_STATICX_LIB, _STLP_USE_DYNAMIC_LIB </b></font></td>
<td><font face="Arial, Helvetica" size="2">(Windows compilers only)
Normally, a version of STLport library iwhich corresponds to your RTL library setting is being automatically linked in (if you use dynamic RTL DLL, dynamic STLport DLL is being used, and vice versa).
If you wish to force use of particular (static, dynamic, or "staticx" which is static STLport lib built with dynamic RTL) STLport lib, please make use one of those options.
</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_OWN_NAMESPACE
</b></font></td>
<td><font face="Arial, Helvetica" size="2">Suppresses STLport use of
namespace <b>_STL</b>:: even if it is recommended, forces
STLport to use <b>std</b>::. Normally, STLport uses <b>_STL</b>::
namespace instead of <b>std</b>::, to prevent clashes with iostreams/string stuff that comes
with the compiler. </font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_USE_OWN_NAMESPACE
</b></font></td>
<td><font face="Arial, Helvetica" size="2">Forces STLport to use <b>_STL</b>::
namespace instead of <b>std</b>:: STLport sets this flag
automatically if _STLP_USE_NAMESPACES is set.</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_DONT_RENAME_STD
</b></font></td>
<td><font face="Arial, Helvetica" size="2">Precludes STLport from redefining <b>std</b>::
to <b>_STL</b>::. Define it only if renaming scheme does not work for you for some reason.
</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_DEBUG </b></font></td>
<td><font face="Arial, Helvetica" size="2">Turns the <a href="debug_mode.html">Debug
Mode</a> on. That gets you checked iterators and ranges.
Thread-safe. </font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_USE_SYSTEM_ASSERT
</b></font></td>
<td><font face="Arial, Helvetica" size="2">use the system-defined
assert instead of fprintf to stderr </font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_DEBUG_MESSAGE </b></font></td>
<td><font face="Arial, Helvetica" size="2">Uncomment this to force
all failed assertions to be directed through a user-defined global
function: void __stl_debug_message(const char * format_str, ...).
This allows you to take control of assertions for debugging
purposes. Note : If you set this macro, you must supply <b>__stl_debug_message</b> function definition somewhere. </font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_DEBUG_TERMINATE </b></font></td>
<td><font face="Arial, Helvetica" size="2">Uncomment this to force
all failed assertions to be executed through user-defined global function: void __stl_debug_terminate(void). This allows you to take control of assertion behaviour for debugging purposes. Default routine throws unique exception if _STLP_NO_DEBUG_EXCEPTIONS is not set, calls abort() otherwise. <br>Note : If you set this macro, you must supply __stl_debug_terminate function definition somewhere.
</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_DEBUG_EXCEPTIONS </b></font></td>
<td><font face="Arial, Helvetica" size="2"> Comment this out to enable throwing unique exceptions from default __stl_debug_terminate() instead of calling abort(). </font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_EXCEPTIONS </b></font></td>
<td><font face="Arial, Helvetica" size="2">Disables exception
handling code. </font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_NAMESPACES </b></font></td>
<td><font face="Arial, Helvetica" size="2">Puts STLport into global
namespace, even if the compiler supports namespaces. </font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_RELOPS_NAMESPACE
</b></font></td>
<td><font face="Arial, Helvetica" size="2">if defined, don't put the
relational operators in namespace <b>std::rel_ops</b>. </font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_REENTRANT </b></font></td>
<td><font face="Arial, Helvetica" size="2">Define this if your
project is multithreaded. STLport uses MT-safe allocator support
then. </font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_NOTHREADS </b></font></td>
<td><font face="Arial, Helvetica" size="2">If defined, STLport don't
use any multithreading support. </font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_NEW_C_HEADERS</b></font></td>
<td><font face="Arial, Helvetica" size="2">If defined, STLport don't
use native new-style C headers even if they are available. </font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_USE_RAW_SGI_ALLOCATORS
</b></font></td>
<td><font face="Arial, Helvetica" size="2">Force STLport to use
older SGI-style allocators as default ones for containers, instead
of standard-conforming <b>allocator</b>&lt;&gt;. </font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_USE_MALLOC </b></font></td>
<td><font face="Arial, Helvetica" size="2">This makes <b>allocator</b>&lt;&gt;
to do plain <b>malloc()</b> calls instead of using SGI optimized
node allocator engine. </font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_USE_NEWALLOC </b></font></td>
<td><font face="Arial, Helvetica" size="2">This makes <b>allocator</b>&lt;&gt;
to do plain <b>new()</b> calls instead of using SGI optimized node
allocator engine. </font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_DEBUG_ALLOC </b></font></td>
<td><font face="Arial, Helvetica" size="2">This makes <b>allocator</b>&lt;&gt;
to perform memory debugging, such as padding/checking for memory
consistency. </font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_DEBUG_UNINITIALIZED </b></font></td>
<td><font face="Arial, Helvetica" size="2">
Use this option to catch uninitialized members in your classes.
When it is set, construct() and destroy() fill the class storage
with _STLP_SHRED_BYTE (see below).
Note : _STLP_DEBUG and _STLP_DEBUG_ALLOC don't set this option automatically
</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_SHRED_BYTE </b></font></td>
<td><font face="Arial, Helvetica" size="2">Provides a definition for
the byte with which raw memory will be filled if _STLP_DEBUG_ALLOC or _STLP_DEBUG_UNINITIALIZED
is defined. Choose a value which is likely to cause a noticeable
problem if dereferenced or otherwise abused. A good value may
already be defined for your platform; see <b>stldebug.h</b> </font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_DONT_THROW_RANGE_ERRORS </b></font></td>
<td><font face="Arial, Helvetica" size="2">
This macro prevents instantiation of at() member function
for containers (vector and deque).
We do not instantiate at() that does not throw range errors -
if this macro is defined, at() method is not defined.
</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_MSVC50_COMPATIBILITY
</b></font></td>
<td><font face="Arial, Helvetica" size="2">This definition makes SGI
<b>reverse_iterator</b> to be compatible with other parts of MSVC
library. (With partial specialization, it just has no effect). Its
use is strongly discouraged - for MSVC5.0 configuration, it is
being set automatically. </font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_USE_MFC </b></font></td>
<td><font face="Arial, Helvetica" size="2">
You should define this macro if compiling with MFC - STLport &lt;stl/_config.h&gt;
then include &lt;afx.h&gt; instead of &lt;windows.h&gt; to get synchronisation primitives
</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS</b></font></td>
<td><font face="Arial, Helvetica" size="2">
Use minimum set of default arguments on template classes that have more
than one - for example map&lt;&gt;, set&lt;&gt;.
This has effect only if _STLP_LIMITED_DEFAULT_TEMPLATES is on.
</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_PROXY_ARROW_OPERATOR</b></font></td>
<td><font face="Arial, Helvetica" size="2">
By default, STLport uses proxy technique to enable operator -&gt; for
iterators even for those compilers that check the return type of
unused instantiations. If this causes problems for your project, turn this
switch on to disable proxy -&gt;() operators.
</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_USE_ABBREVS</b></font></td>
<td><font face="Arial, Helvetica" size="2">Use abbreviated class
names internally for linker benefit (don't affect interface). This
option is obsolete, but should work in this release.</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_USE_DECLSPEC
</b></font></td>
<td><font face="Arial, Helvetica" size="2">
(Obsolete, Windows only) This switch makes STLport symbols exported from DLL.
To use export feature, you should define this macro for all compilation units and
also define _STLP_DESIGNATED_DLL macro for one of your DLL's which is supposed to export
all STLport symbols. You must use this feature if you use default node allocator and pass
objects across DLL boundaries, and do not use STLport iostreams.
Defined automatically if you use STLport iostreams and
compile with /MD flag.
</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_DESIGNATED_DLL
</b></font></td>
<td><font face="Arial, Helvetica" size="2">
(Obsolete, Windows only) Designed to be used together with _STLP_USE_DECLSPEC switch to
make one of your DLL's to export STLport symbols for other modules.
The library which is designated to export DLL symbols, must have both of
those switches defined for compilation and it should include at least &lt;string&gt;
header from at least one source file. Normally you should not be using this, it is used by STLport internally to build STLport DLL.
</font></td>
</tr>
</table>
<p><b>Notes:</b></p>
<ul>
<li>When using tools like Purify (c), Codeguard (c) or BoundsChecker
(c), it is advised to <tt>#define _STLP_USE_MALLOC</tt> or <tt>_STLP_USE_NEWALLOC</tt>,
otherwise pointer checking will generally not be available on most
STL internal structures, thus defeating the purpose of those tools.</li>
</ul>
<p>&nbsp;</p>
<a name="compiler_switches"></a>
<h3>Compiler-specific switches</h3>
<p>Compiler-specific switches are STLport macros describing compiler (mis)features/bugs.Below is the
table describing them. They are designed in such a way that the compiler
that implements complete set of ANSI C++ features and has no bugs ;) would
have empty configuration file.</p>
STLport also provides a script that is designed to help you setting those numerous switches.
Please read <a href="auto_configure.html">Running configure</a> chapter to learn more about this tool.
<br><i>Note : <b>do not</b> expect STLport to be configured just by running "configure".
It is provided only as a tool to help in the initial configuration phase.</i>
<table border="1" cellspacing="0" cellpadding="4">
<caption>
<h4>STLport macros describing compiler features</h4>
</caption>
<tr>
<td><b>Controlling macro name</b></td>
<td><b>Description</b></td>
<td><b>Default</b></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NATIVE_INCLUDE_PATH
</b></font></td>
<td><font face="Arial, Helvetica" size="2">The path where native
compiler headers are located. STLport uses this information to
import <b>std</b>:: names into <b>_STL</b>:: namespace. Default
is <b>../include</b>. Hint : never install STLport headers in the
directory that ends with <b>include</b>. </font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_UINT32_T</b></font></td>
<td><font face="Arial, Helvetica" size="2">Unsigned 32-bit integral
type</font></td>
<td><font face="Arial, Helvetica" size="2">unsigned long</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_LONG_LONG</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if compiler
supports non-standard <b>long long</b> type</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_WCHAR_T</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if compiler
does not support <b>wchar_t</b> type</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_WCHAR_T_IS_USHORT
</b></font></td>
<td><font face="Arial, Helvetica" size="2">wchar_t is not a unique
type, and is actually a typedef to unsigned short </font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_LONG_DOUBLE</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if compiler
does not support <b>long double</b> type</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_TYPENAME</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if your compiler
does not support <b>typename </b>keyword</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_EXPLICIT</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if your compiler
does not support <b>explicit </b>keyword</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_MUTABLE</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if your compiler
does not support <b>mutable </b>keyword</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_NEW_STYLE_CASTS</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if compiler
does not support new-style <b>const_cast&lt;&gt;</b></font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_BOOL</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if the compiler
does not support <b>bool</b></font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_DONT_USE_BOOL_TYPEDEF</b></font></td>
<td><font face="Arial, Helvetica" size="2">Bool not supported, but
keyword is reserved for future use</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_YVALS_H</b></font></td>
<td><font face="Arial, Helvetica" size="2"><b>true/false</b> defined
in <b>&lt;yvals.h&gt;</b> header ( Visual C++ 4.2)</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_DEFAULT_TEMPLATE_PARAM</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if compiler
does not support default template parameters</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_DEFAULT_TYPE_PARAM</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if compiler
support only complete types as default parameters</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_LIMITED_DEFAULT_TEMPLATES</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if the compiler
cannot handle default non-type template parameters</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NON_TYPE_TMPL_PARAM_BUG</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if compiler has
trouble with functions getting non-type-parameterized classes as
parameters</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_STATIC_TEMPLATE_DATA</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if compiler does
not support static class data template definition</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_STATIC_CONST_INIT_BUG</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if compiler does
not support initialization of const static class data template members within class.</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_WEAK_ATTRIBUTE</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if your compiler
provides <b>__attribute((weak))__</b> construct as extension. Only needed if
the compiler can't handle static template data members (gcc 2.7.2)</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_HAS_NO_NAMESPACES</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if your compiler
does not support namespaces</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_BROKEN_USING_DIRECTIVE
</b></font></td>
<td><font size="2" face="Arial, Helvetica">"<b>using</b>"
keyword does not work with template types </font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_HAS_NO_EXCEPTIONS</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if your compiler
does not support exception-handling</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_EXCEPTION_SPEC</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if your compiler
does not support exception specifications</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_THROW_RETURN_BUG
</b></font></td>
<td><font face="Arial, Helvetica" size="2">Compiler requires <b>return</b>
statement after <b>throw</b>() </font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_NO_BAD_ALLOC </b></font></td>
<td><font face="Arial, Helvetica" size="2">Header &lt;<b>new</b>&gt;
that comes with the compiler does not define <b>bad_alloc</b>
exception </font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_MEMBER_TEMPLATES</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if compiler
does not support member templates</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_MEMBER_TEMPLATE_CLASSES</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if compiler
does not support member template classes</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_FRIEND_TEMPLATES</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if compiler
does not support friend templates</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_NO_QUALIFIED_FRIENDS
</b></font></td>
<td><font face="Arial, Helvetica" size="2">Compiler does not accept
friend declaration qualified with namespace name. </font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_CLASS_PARTIAL_SPECIALIZATION</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if compiler
does not support partial template class specialization</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS
</b></font></td>
<td><font size="2" face="Arial, Helvetica">Class being partially
specialized require full name (template parameters) of itself for
method declarations </font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_PARTIAL_SPECIALIZATION_BUG
</b></font></td>
<td><font face="Arial, Helvetica" size="2">Partial specialization
has bugs that prevent you from using new-style <b>reverse_iterator</b>
</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_MEMBER_SPECIALIZATION_BUG
</b></font></td>
<td><font face="Arial, Helvetica" size="2">Compiler has problems
specializing members of partially specialized class </font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_METHOD_SPECIALIZATION</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if the compiler
does not support specializations of single template method.</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_FUNC_PARTIAL_ORDERING</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if compiler
does not support partial template functions ordering</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if compiler
does not support full template specialization syntax</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS
</b></font></td>
<td><font face="Arial, Helvetica" size="2">Compiler does not support
explicit template arguments for functions </font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><b><font size="1" face="Arial, Helvetica">_STLP_AUTOMATIC_TYPE_TRAITS</font></b></td>
<td><font face="Arial, Helvetica" size="2">Defined if the compiler
specializes predefined class <b>type_traits&lt;T&gt;</b> for every
type. This is an extension</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><b><font size="1" face="Arial, Helvetica">_STLP_LOOP_INLINE_PROBLEMS</font></b></td>
<td><font face="Arial, Helvetica" size="2">Defined if your compiler
can't inline <b>while(), for()</b></font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><b><font size="1" face="Arial, Helvetica">_STLP_BASE_MATCH_BUG</font></b></td>
<td><font face="Arial, Helvetica" size="2">Defined if the compiler
fails to match a template function argument of base type</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><b><font size="1" face="Arial, Helvetica">_STLP_NONTEMPL_BASE_MATCH_BUG</font></b></td>
<td><font face="Arial, Helvetica" size="2">Defined if the compiler
fails to match a template function argument of base
(non-template)&nbsp;type</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><b><font size="1" face="Arial, Helvetica">_STLP_NESTED_TYPE_PARAM_BUG</font></b></td>
<td><font face="Arial, Helvetica" size="2">Defined if the compiler
rejects outline method definition explicitly taking nested types/typedefs</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_TYPENAME_ON_RETURN_TYPE
</b></font></td>
<td><font face="Arial, Helvetica" size="2">Compiler requires
typename keyword on outline method definition explicitly taking
nested types/typedefs </font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_BASE_TYPEDEF_BUG</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if your compiler
have serious problems with typedefs</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_BASE_TYPEDEF_OUTSIDE_BUG</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if the baseclass
typedefs not visible from outside</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_MEMBER_POINTER_PARAM_BUG</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if the compiler
can't handle pointer-to-member type as function parameter</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_UNINITIALIZABLE_PRIVATE</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if the compiler
has problems with static private data members initialization</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_STATIC_ARRAY_BUG</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if the compiler
has trouble instantiating static array members with dimension
defined as enum.</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_DEFAULT_CONSTRUCTOR_BUG</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if default
constructor for builtin integer type fails to initialize it to 0 </font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_CONST_CONSTRUCTOR_BUG</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if constructor
required to explicitly call member's default constructors for
const objects</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_TRIVIAL_CONSTRUCTOR_BUG</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if the compiler
has trouble calling <b>POD</b>-types constructors</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_TRIVIAL_DESTRUCTOR_BUG</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if the compiler
has trouble calling <b>POD</b>-types destructors</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_MULTI_CONST_TEMPLATE_ARG_BUG
</b></font></td>
<td><font face="Arial, Helvetica" size="2">problems specializing
maps/sets with key type being const </font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>__SGI_STL_NO_ARROW_OPERATOR
</b></font></td>
<td><font face="Arial, Helvetica" size="2">Compiler has deficiencie compiling
-&gt; operators for iterators. STLport provides proxy workaround for those. </font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_NO_AT_MEMBER_FUNCTION
</b></font></td>
<td><font face="Arial, Helvetica" size="2">Disables <b>at</b>()
member functions for containers </font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_HAS_NO_NEW_IOSTREAMS
</b></font></td>
<td><font face="Arial, Helvetica" size="2">Native C++ library does not provide
new-style templatized <b>iostreams</b> </font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_NO_EXCEPTION_HEADER
</b></font></td>
<td><font face="Arial, Helvetica" size="2">compiler lacks &lt;<b>exception</b>&gt;
header </font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_HAS_NO_NEW_C_HEADERS
</b></font></td>
<td><font face="Arial, Helvetica" size="2">Native library does not provide new-style headers
like &lt;<b>cstddef</b>&gt;, only old-style like: &lt;stddef.h&gt; </font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_NO_NEW_NEW_HEADER
</b></font></td>
<td><font face="Arial, Helvetica" size="2">Native library does not provide new-style
like &lt;<b>new</b>&gt; header. </font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_VENDOR_GLOBAL_STD </b></font></td>
<td><font face="Arial, Helvetica" size="2">compiler-supplied standard library
resides in global namespace, not <b>std</b>:: </font></td>
<td><font face="Arial, Helvetica" size="2">std::</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_VENDOR_GLOBAL_CSTD </b></font></td>
<td><font face="Arial, Helvetica" size="2">compiler-supplied &lt;<b>cstdio</b>&gt;
and the like put stuff in global namespace, not <b>std</b>:: </font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font size="1" face="Arial, Helvetica"><b>_STLP_RAND48</b></font></td>
<td><font face="Arial, Helvetica" size="2">Defined if C library has <b>lrand48()</b>
function</font></td>
<td><font face="Arial, Helvetica" size="2">Off</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_NATIVE_INCLUDE_PATH
</b></font></td>
<td><font face="Arial, Helvetica" size="2">Path to get native
compiler headers included. May be relative or absolute. </font></td>
<td><font face="Arial, Helvetica" size="2"><b>../include</b></font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_NATIVE_C_INCLUDE_PATH
</b></font></td>
<td><font face="Arial, Helvetica" size="2">Path to get native
compiler's old-style C headers (like <b>stdio.h</b>) included. May be relative or absolute. </font></td>
<td><font face="Arial, Helvetica" size="2"><b>../include</b></font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_NATIVE_CPP_C_INCLUDE_PATH
</b></font></td>
<td><font face="Arial, Helvetica" size="2">Path to get native
compiler new-style C headers (like <b>cstdio</b>) included. May be relative or absolute. </font></td>
<td><font face="Arial, Helvetica" size="2"><b>../include</b></font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_MAKE_HEADER </b></font></td>
<td><font face="Arial, Helvetica" size="2">This macro constructs
header path from directory and name. You may change it if your
compiler does not understand "/". </font></td>
<td><font face="Arial, Helvetica" size="2">&lt;<b>path/header</b>&gt;</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_NATIVE_HEADER(header)
</b></font></td>
<td><font face="Arial, Helvetica" size="2">This macro constructs
native include header path from include path and name. You may
have do define it if experiencing problems with preprocessor </font></td>
<td><font face="Arial, Helvetica" size="2">See <b>stl_config.h</b></font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_NATIVE_C_HEADER(header)
</b></font></td>
<td><font face="Arial, Helvetica" size="2">Same for old-style C headers </font></td>
<td><font face="Arial, Helvetica" size="2">See <b>stl_config.h</b></font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_NATIVE_CPP_C_HEADER(header)
</b></font></td>
<td><font face="Arial, Helvetica" size="2">Same for new-style C headers </font></td>
<td><font face="Arial, Helvetica" size="2">See <b>stl_config.h</b></font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica" size="1"><b>_STLP_LINK_TIME_INSTANTIATION
</b></font></td>
<td><font face="Arial, Helvetica" size="2">
This switch should be set on if the compiler supports separate template compilation model,
with non-inlined functions and methods being defined in implementation .c file.
</font></td>
<td><font face="Arial, Helvetica" size="2"><b>Off</b></font></td>
</tr>
</table>
<h4>&nbsp;</h4>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

View File

@@ -0,0 +1,56 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Copyrights and Permissions</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Copyrights and Permissions</span>
<p>&nbsp;</p>
<p>STLport library is</p>
<p><b><i>Copyright (c) 1999, 2000 Boris Fomitchev </i></b></p>
<p>See<a href="license.html"> license agreement</a> for details.</p>
<p>STLport is build upon the <a href="http://www.sgi.com/tech/stl/">SGI
STL distribution</a>, which is:</p>
<p><b><i>Copyright (c) 1994 Hewlett-Packard Company</i></b></p>
<p><b><i>Copyright (c) 1996,97,98,99 Silicon Graphics Computer Systems, Inc.</i></b></p>
<p>The STLport adaptation is historically</p>
<p><b><i>Copyright (c) 1997 Moscow Center for SPARC Technology.</i></b></p>
<p>STLport is provided pursuant to the following permission notices:</p>
<blockquote>
<p><i><font size="2">Permission to use, copy, modify, distribute and
sell this software and its documentation for any purpose is hereby
granted without fee, provided that the above copyright notice appear
in all copies and that both that copyright notice and this permission
notice appear in supporting documentation. Hewlett-Packard Company
makes no representations about the suitability of this software for
any purpose. It is provided "as is" without express or
implied warranty.</font></i></p>
<p><i><font size="2">Permission to use, copy, modify, distribute and
sell this software and its documentation for any purpose is hereby
granted without fee, provided that the above copyright notice appear
in all copies and that both that copyright notice and this permission
notice appear in supporting documentation. Silicon Graphics makes no
representations about the suitability of this software for any
purpose. It is provided "as is" without express or implied
warranty.</font></i></p>
</blockquote>
<blockquote>
<i><font size="2">Permission to use, copy, modify, distribute and sell
this software and its documentation for any purpose is hereby granted
without fee, provided that the above copyright notice appear in all
copies and that both that copyright notice and this permission notice
appear in supporting documentation. Moscow Center for SPARC Technology&nbsp;
makes no representations about the suitability of this software for
any purpose. It is provided "as is" without express or
implied warranty.</font></i>
</blockquote>
<p>The Exception Handling Test Suite is</p>
<blockquote>
<i>Copyright (c) 1997 Mark of the Unicorn, Inc. </i>
<p><i><font size="2">Permission to use, copy, modify, distribute and
sell this software and its documentation for any purpose is hereby
granted without fee, provided that the above copyright notice appear
in all copies and that both that copyright notice and this permission
notice appear in supporting documentation. Mark of the Unicorn makes
no representations about the suitability of this software for any
purpose. It is provided "as is" without express or implied
warranty. </font></i></p>
</blockquote>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

38
STLPORT/doc/cvs.html Normal file
View File

@@ -0,0 +1,38 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Early Access</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Early access</span>
<table valign="top" border="0" cellpadding="8" cellspacing="0" width="776">
<tr>
<td colspan="2">
<h3>Setting up CVS</h3>
Please download 'scvs' script from "http://www.stlport.com/beta/cvsaccess" directory.
To use it, you need three programs : perl, cvs and ssh installed on your system.
The script is already modified to work with stlpor.com under cygwin.
You might have to edit location for your perl installation and cvs program.
Use this script like that :
<p><b>
scvs -d pserver:cvs@www.stlport.com/stlport &lt;cvs command&gt;
</b>
</p>
<h3>CVS Accounts</h3>
Note : example above use "cvs" account -- this allows anonymous readonly access.
If you have been given individual account with write permissions, use your account name instead.
If you do not have individual account but wish to have one, please submit the patches that you made
(using read-only access and cvs diff) along with your request to <a href="mailto:boris@stlport.com">boris@stlport.com</a>.
More detailed instructions on using scvs script can be found at :
<a href="http://www.prima.eu.org/tobez/cvs-howto.html">http://www.prima.eu.org/tobez/cvs-howto.html</a>
<h3>Tags and Branches</h3>
STLport CVS repository provides static tags and branches. Branches are provided for bugfixes maintenance.
Please use static tags to retrieve particular snapshots.
Tags have the form : STLPORT&lt;VERSION_MAJOR&gt;&lt;VERSION_MINOR&gt;&lt;YYMMDD&gt;, where YYMMDD is the time stamp when the tag was created.
</td>
</tr>
</table>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

125
STLPORT/doc/debug_mode.html Normal file
View File

@@ -0,0 +1,125 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Debug Mode</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">STLport : Debug Mode</span>
<p><i><font size="2">by Boris Fomitchev</font></i></p>
<h3>Abstract</h3>
<p>Debug mode lets you find very obscure bugs in application code which uses STL iterators and algorithms. <br>
It performs runtime checking of iterator <i>validity and ownership</i> and <i>algorithm
preconditions</i>. <br>
When debug check reveals the bug,&nbsp; it terminates the program
with detailed diagnostics.</p>
<p>STLport in debug mode is as much <i>exception-safe</i> and<i>
thread-safe</i> as in release mode.</p>
<h3>Debugging facilities provided</h3>
<ul>
<li><b>"Safe iterators" for all STL containers</b>. <br>
They report detailed diagnostics when being used in invalid ways.</li>
</ul>
<ul>
<li><b>Checking of preconditions for algorithms and container methods</b>.
STLport checks the following reasonable set of preconditions:</li>
<ul>
<li>Range preconditions for random-access iterators</li>
<li>Iterator's ownership, validity and deferenceability</li>
<li>Container-specific preconditions for methods</li>
</ul>
</ul>
<h3>Implementation</h3>
<p>Checked iterators keep track of their container while the container
keeps track of them. The idea was introduced in <b><a href="http://www.horstmann.com/safestl.html">Cay
Horstmann's "Safe STL"</a></b>.</p>
<ul>
<li>If the container goes out of scope, its iterators are being
invalidated;</li>
<li>If certain iterators are being invalidated because of mutating
operation, all instances of this iterator are invalidated.</li>
</ul>
<h3>Usage</h3>
<p>To turn on the debug mode, you should somehow <b><tt>#define _STLP_DEBUG</tt></b>
macro before including any STL header. You can either supply the
definition via compiler command-line or within CXXFLAGS in your makefile:</p>
<p><b><tt>$&gt; CC -g -D_STLP_DEBUG foo.cpp</tt></b></p>
<p>Naturally, you may also wrap it into your project configuration
header :</p>
<p><b><tt># ifdef _NDEBUG<br>
# undef _STLP_DEBUG<br>
# else<br>
# define _STLP_DEBUG 1<br>
# endif</tt></b></p>
<p><b>Important</b> : you must recompile your project after changing <b><tt>_STLP_DEBUG</tt></b>
definition.</p>
<h3>Examples</h3>
<p>Here are some error examples with corresponding runtime output:</p>
<p><tt>char string[23] = "A string to be copied.";<br>
char result[23]; <br>
copy(string+<u>20</u>, string+<u>10</u>, result);</tt> <br>
<b>_debug.h:168 STL error : Range [first,last) is invalid <br>
algobase.h:369 STL assertion failure: __check_range(first, last)</b></p>
<p><tt>vector&lt;char&gt;::iterator i; <br>
char ii = *i; <br>
</tt>s<b>tldebug.h:152 STL error : Uninitialized or invalidated (by
mutating operation) iterator used<br>
vector.h:158 STL assertion failure: __check_dereferenceable(*this)</b></p>
<p><tt>vector&lt;char&gt;::iterator i=v2.begin(); <br>
v2.insert(v2.begin(),'!'); <br>
char ii = *i; <br>
</tt><b>_debug.h:152 STL error : Uninitialized or invalidated (by
mutating operation) iterator used<br>
vector.h:158 STL assertion failure: __check_dereferenceable(*this)</b></p>
<p><tt>vector&lt;int&gt; v; v.pop_back();<br>
</tt><b>vector.h:482 STL error : Trying to extract an object out from
empty container <br>
vector.h:482 STL assertion failure: !empty()</b></p>
<p><tt>vector &lt;int&gt; v1(10);<br>
for(int i = 0; i &lt; v1.size(); i++) <br>
v1[i] = i; vector &lt;int&gt; v2(10); <br>
copy(v1.begin(), <u><blink>v2</blink></u>.end(), v2.begin());<br>
</tt><b>_debug.h:61 STL error : Iterators used in expression are from
different owners<br>
vector.h:182 STL assertion failure: __check_same_owner(*this,y)</b></p>
<p><tt>list&lt;int&gt; l1(array1, array1 + 3); <br>
l1.erase(l1.<u>end()</u>);</tt><b> <br>
list.h:398 STL error : Past-the-end iterator could not be erased <br>
list.h:398 STL assertion failure: position.node!=node </b></p>
<p><tt>list&lt;int&gt; l1(array1, array1 + 3); <br>
list&lt;int&gt; l2(array2, array2 + 2); <br>
l1.erase(<u>l2</u>.begin());</tt><b> <br>
_debug.h:70 STL error : Container doesn't own the iterator <br>
list.h:397 STL assertion failure: __check_if_owner(node,position) </b></p>
<h3>Notes</h3>
<ul>
<li>Application code using <tt>T*</tt> to store <tt>vector::iterator</tt>
would not compile in debug mode. Such code should be fixed - the
standard does not specify <tt>vector::iterator</tt>, so different implementations
can use different types for it.</li>
<li>Miscellanous stuff used by debug engine (<tt>_debug.h</tt>) is
not documented on purpose. Never explicitly include or otherwise use
it in your code - it's non-standard and is subject to change.</li>
<li>The ability to throw exceptions instead of calling <tt>abort()</tt>
is provided since 3.2. Please comment out _STLP_NO_DEBUG_EXCEPTIONS switch which
disables it as default.</li>
<li> If those two defaults do not match your debugging needs,
you may force all failed assertions to be executed through user-defined global function:<br> void __stl_debug_terminate(void). This allows you to take control of assertion behavior for debugging purposes.</li>
<li>You can control the way the debug checking messages are being printed out by defining
your own debug output function. To do so, you should define _STLP_DEBUG_MESSAGE switch in stl_user_config.h and
provide your function with the following signature :<br>
void __stl_debug_message(const char * format_str, ...). The parameters are printf()-like.
STLport will then use it to format debug message output.</li>
<li>Some preconditions that cannot be checked without partial class
template specialization still left alone. (<i>example : for
copy(InputIterator first, InputIterator last, OutputIterator result)
algorithm, result should not be in range [first,last).</i> )</li>
<li>Unfortunately, the file/line pairs reported by debug engine always
point to STL code, not to application code. I see no way to fix that
(&nbsp;although the diagnostic certainly may be refined ). There's
no substitute for good debugger to walk up the stack and locate the
error.</li>
</ul>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

12
STLPORT/doc/doc.css Normal file
View File

@@ -0,0 +1,12 @@
BODY { margin: 0 0; background: #FFFFFF; font-family: "Tahoma", "Helvetica", "Arial", "sans-serif"; }
A:link {font-size: 14px; text-decoration:none; color: #0c70b6;}
A:visited {font-size: 14px; text-decoration:none; color: #0c70b6;}
.copyright { font-size: 10px; font-family: "Tahoma", "Helvetica", "Arial", "sans-serif"; line-height: 12px; color: #999999; }
.bottomNav { font-size: 11px; font-family: "Tahoma", "Helvetica", "Arial", "sans-serif"; text-decoration: none; font-weight: bold; color: #325A30; }
.heading { font-size: 18px; font-family: "Tahoma", "Helvetica", "Arial", "sans-serif"; line-height: 14px; color: #e35a23; }

View File

@@ -0,0 +1,85 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Exception Handling Testsuite</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Exception Handling Test Suite for STLport</span>
<p>
<font size="1"><em><strong>by Dave Abrahams, Boris Fomitchev</strong></em></font>
</p>
<h2>Synopsis</h2>
<p><b><tt>eh_test [-n &lt;iterations&gt;] [-s &lt;size&gt;] [-l] [-e]
[-q]/[-v] [-t]</tt></b></p>
<h4>Options:</h4>
<ul>
<li><tt>[<b>-n &lt;iterations&gt;</b>] </tt>: number of test
iterations, default==100;</li>
<li><tt>[<b>-s &lt;size&gt;</b>]</tt> : base value for random
container sizes, default==1000;</li>
<li><tt>[<b>-e</b>]</tt> : don't throw exceptions, test for leak in
normal conditions;</li>
<li><tt>[<b>-q</b>]</tt> : quiet mode;</li>
<li><tt>[<b>-v</b>]</tt> : verbose mode (default);</li>
<li><tt>[<b>-t</b>]</tt> : track each allocation;</li>
<li><tt>[<b>test_name</b> [<b>test_name</b>...]]</tt> : run <b>test_name</b>
tests (<b>default</b>==all). <br>
Names are : <b>algo, vector, bit_vector, list, slist, deque, set,
map, hash_set, hash_map, rope, string, bitset</b>.</li>
</ul>
<h2>The Story</h2>
<p>The testsuite was written by Dave Abrahams for testing of proposed EH
for SGI STL . Shortly, EH&nbsp;was merged into STLport v1.0. That wasn't
long until EH was introduced in&nbsp; SGI&nbsp;STL&nbsp;distribution,
too (a bit different approach was used). This test helped to locate and
fix some EH&nbsp;bugs in 2.0-2.02 releases of SGI STL. As a side effect,
it reveals problems in some compiler's EH&nbsp;implementation (typically
they show up when you are trying turning on some optimizations).</p>
<h2>Portability</h2>
<p>EH&nbsp;testsuite can be compiled and run with the following
compilers :</p>
<ul>
<li>SunPro CC 4.1-4.2 (passed OK)</li>
<li>Metrowerks CodeWarrior Pro 1 (passed OK)</li>
<li>Visual C++ 4.1 (hashed container tests won't compile, compiler bug
produce false alarms for list test, other passed.)</li>
<li>Visual C++ 5.0 (passed OK).</li>
<li>Borland C++ 5.0 (passed OK).</li>
<li>gcc-2.7.2 (without EH, actually ;))</li>
<li>egcs-970922 (fails to run, dumps core in __throw implemetation).</li>
</ul>
<p>Makefiles for <b>gcc</b>, <b>SUNPro</b>, <b>Visual C++</b> compilers
are provided with the suite. Look for <i>.mak</i> files in the
distribution. It should be not difficult to adjust one of them to your
compiler.</p>
<h2>How To</h2>
<p>EH testsuite comes in directory <b>test/eh</b> with your STLport
distribution. Edit appropriate makefile to fit your compiler and include
directories . After you've done, try "<i>make check</i>". That
should build test executable and run it with default options (see
Synopsis). If writing your own makefile or working from within some IDE,
you should specify the following switches to get proper testing :</p>
<p><tt>_STLP_USE_NEWALLOC</tt> - use new-based allocator (that will
promptly throw on common test scheme). Otherwise, only
assignment/comparison will throw,</p>
<p><tt>_STLP_USE_DEBUG_ALLOC</tt> - to catch other potential memory
problems.</p>
<p><tt>EH_NEW_HEADERS - </tt>if you wish to use new-style C++ headers.
This option may be useful to test some other STL&nbsp;implementation.</p>
<p>For Borland C++ 5.x , you have to <tt>#define _STLP_NO_NAMESPACES</tt>
to compile.</p>
<p>For 16-bit platforms, you have to #define NO_FAST_ALLOCATOR to
compile.</p>
<p>The testsuite may be used to test not only STLport adaptation against
particular compiler. It does not contain any adaptation-specific code,
so it may be used with regular SGI release (note <tt>_STLP_USE_NEWALLOC </tt>has
no effect<tt> </tt>then) or with other STL&nbsp;implementation (hash
containers and rope may not work).</p>
<h3>Copyright</h3>
<p>This software is<br>
<i>Copyright (c) 1997 Mark of the Unicorn, Inc. </i></p>
<p><i><font size="1">Permission to use, copy, modify, distribute and
sell this software and its documentation for any purpose is hereby
granted without fee, provided that the above copyright notice appear in
all copies and that both that copyright notice and this permission
notice appear in supporting documentation. Mark of the Unicorn makes no
representations about the suitability of this software for any purpose.
It is provided "as is" without express or implied warranty. </font></i>
</p>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

View File

@@ -0,0 +1,471 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Exception Handling</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Exception Safety in STLport</span>
<p>
<font size="2"><em><strong>by Dave Abrahams</strong></em></font>
</p>
<h2><a name="guarantees"></a>Basic Library Guarantees</h2>
<p><b>STLport makes the guarantee that</b> <b>no resources are leaked in
the face of exceptions</b>.</p>
<p><b>This means:</b></p>
<ul>
<li>By the time a container's destructor completes:</li>
<ul>
<li>It has returned all memory it has allocated to the appropriate
deallocation function.</li>
<li>The destructor has been called for all objects constructed by
the container.</li>
</ul>
<li>Algorithms destroy all temporary objects and deallocate all
temporary memory even if the algorithm does not complete due to an
exception.</li>
<li>Algorithms which construct objects (e.g. <tt>uninitialized_fill</tt>)
either complete successfully or destroy any objects they have
constructed at the time of the exception.</li>
<li>Algorithms which destroy objects always succeed.</li>
</ul>
<h4>Additionally:</h4>
<ul>
<li>Algorithms which operate on ranges of objects leave only
fully-constructed objects in those ranges if they terminate due to
an exception.</li>
<li>Containers continue to fulfill all of their requirements, even
after an exception occurs during a mutating function. For example, a
map will never give an inaccurate report of its size, or fail to
meet its performance requirements because the tree that implements
it has become unbalanced.</li>
<li>A stronger guarantee is available for some operations: that <i>if
the operation terminates due to an exception, program state will
remain unchanged</i>. For example, <tt>vector&lt;T,A&gt;::push_back()</tt>
leaves the vector unchanged if an exception is thrown, provided the
library client fulfills the <a href="#basic_requirements">basic
requirements</a> below. For some operations, the "<a href="#Strong%20Guarantee">strong
guarantee</a>" is available if additional requirements are
filled.</li>
</ul>
<p>&nbsp;</p>
<p><a name="basic_requirements"></a><b><font size="+2">Basic Client
Requirements</font></b></p>
<p><b>The <a href="#guarantees">library guarantees</a> above are
conditional on some requirements that library clients must fulfill.</b></p>
<p><b>The following operations must return normally - they are forbidden
to terminate due to an exception:</b></p>
<ul>
<li>Destructors of any classes used by the library. This includes all
classes used as library template parameters. It also includes all
classes which fulfill "type requirements" of classes used
as library templates- an allocator's <tt>size_type</tt>, for
example.</li>
<li>Valid uses of any of the required functionality of the following
types. Note that invalid uses (e.g. comparison of two iterators from
different containers) are not prohibited from throwing an exception.
Presumably, invalid uses would cause worse problems than resource
leaks:</li>
<ul>
<li>The ForwardIterator arguments to the following:</li>
<ul>
<li><tt>uninitialized_copy(InputIterator first, InputIterator
last, ForwardIterator result)</tt></li>
<li><tt>uninitialized_fill(ForwardIterator first, ForwardIterator
last, const T&amp; x)</tt></li>
<li><tt>uninitialized_fill_n(ForwardIterator first, Size n, const
T&amp; x)</tt></li>
<li><tt>destroy(ForwardIterator first, ForwardIterator last)</tt></li>
</ul>
<li>An allocator's <tt>deallocate()</tt> function</li>
<li>Any of the required allocator types:</li>
<ul>
<li><tt>pointer</tt></li>
<li><tt>const_pointer</tt></li>
<li><tt>reference</tt></li>
<li><tt>const_reference</tt></li>
<li><tt>size_type</tt></li>
<li><tt>difference_type</tt></li>
</ul>
</ul>
</ul>
<p>&nbsp;</p>
<p>Note: Algorithms like <tt>copy()</tt> expect that they are copying
into real objects. The use of <tt>raw_storage_iterator</tt> with most
algorithms is inherently exception-unsafe:</p>
<ul>
<p><tt>// objects of the same type as *iterator1 may be leaked if a
failure occurs.<br>
copy( iterator1, iterator2, raw_storage_iterator( ptr ) ); </tt></p>
</ul>
<p>Furthermore, there is no way to properly recover from this using an
enclosing <tt>try</tt>/<tt>catch </tt>block, because <tt>raw_storage_iterator</tt>
has no function in its public interface to tell you how far it has been
advanced.</p>
<p>&nbsp;</p>
<h2><a name="Strong%20Guarantee"></a>The "Strong Guarantee"</h2>
<p>In many programs, some objects will be destroyed automatically during
exception-unwinding. For these, the basic guarantee that resources won't
be leaked is good enough. If a program hopes to survive an exception and
continue running, though, it probably also uses long-lived containers
which are expected to survive past exception-recovery in a known state.
For example, a program could maintain a list of objects representing
tasks it is working on. If adding a task to that list fails, the program
may still need to rely on the list. If the list must survive an
exception intact, we need the strong guarantee:</p>
<ul>
<p><i>If an exception is thrown, the operation has no effects.</i></p>
</ul>
<p>You can get the strong guarantee by "brute force" for any
container operation as follows, provided the container's <tt>swap()</tt>
member function can't fail (this is true for most real-world
containers):</p>
<p><tt>container_type container_copy( original_container ); <br>
container_copy.mutating_operation(...); <br>
original_container.swap( container_copy );</tt></p>
<p>Fortunately, many mutating operations give the strong guarantee with
no additional requirements on the client. To get the strong guarantee
for others, you can either use the above technique or conform to some <a href="#additional_requirements">additional
requirements</a>.</p>
<p>&nbsp;</p>
<h3>Operations that give the "strong guarantee" with no
additional requirements</h3>
<p><a name="1"></a><i>( Operations labelled with * are guaranteed to
return normally if all <a href="#basic_requirements">basic requirements</a>
have been met) </i></p>
<ul>
<li><tt>uninitialized_fill()</tt></li>
<li><tt>uninitialized_copy()</tt></li>
<li><tt>uninitialized_fill_n()</tt></li>
<li><tt>deque&lt;T,A&gt;</tt> member functions:</li>
<ul>
<li><tt>swap(deque&lt;T,A&gt;&amp;)</tt> <a href="#1">*</a></li>
<li><tt>push_back(const T&amp;)</tt></li>
<li><tt>pop_back()</tt> <a href="#1">*</a></li>
<li><tt>push_front(const T&amp;)</tt></li>
<li><tt>pop_front()</tt> <a href="#1">*</a></li>
</ul>
<li><tt>list&lt;T,A&gt;</tt> member functions:</li>
<ul>
<li><tt>insert(iterator position, const T&amp; x = T())</tt></li>
<li><tt>insert(iterator position)</tt></li>
<li><tt>push_back(const T&amp;)</tt></li>
<li><tt>pop_back()</tt> <a href="#1">*</a></li>
<li><tt>push_front(const T&amp;)</tt></li>
<li><tt>pop_front()</tt> <a href="#1">*</a></li>
<li><tt>splice(iterator position, list&lt;T,Allocator&gt;&amp; x)</tt>
<a href="#1">*</a></li>
<li><tt>splice(iterator position, list&lt;T,Allocator&gt;&amp; x,
iterator i)</tt> <a href="#1">*</a></li>
<li><tt>splice(iterator position, list&lt;T,Allocator&gt;&amp; x,
iterator first, iterator last)</tt> <a href="#1">*</a></li>
<li><tt>swap(list&lt;T,A&gt;&amp;)</tt> <a href="#1">*</a></li>
<li><tt>reverse()</tt> <a href="#1">*</a></li>
<li><tt>erase(iterator position)</tt> <a href="#1">* </a></li>
<li><tt>erase(iterator first, iterator last)</tt> <a href="#1">* </a></li>
</ul>
<li><tt>vector&lt;T, A&gt;</tt> member functions:</li>
<ul>
<li><tt>reserve(size_type n)</tt></li>
<li><tt>swap(vector&lt;T,A&gt;&amp;)</tt> <a href="#1">*</a></li>
<li><tt>push_back(const T&amp;) </tt></li>
<li><tt>pop_back()</tt> <a href="#1">*</a></li>
</ul>
<li><tt>bit_vector&lt;A&gt;</tt> member functions:</li>
<ul>
<li><tt>reserve(size_type n)</tt></li>
<li><tt>swap(bit_vector&amp;)</tt> <a href="#1">*</a></li>
<li><tt>push_back(const T&amp;) </tt></li>
<li><tt>pop_back()</tt> <a href="#1">*</a></li>
<li><tt>insert(iterator position, bool x = bool())</tt></li>
<li><tt>insert(iterator position)</tt></li>
<li>insert(iterator position, const_iterator first, const_iterator
last)</li>
<li>insert(iterator position, const bool* first, const bool* last)</li>
<li>insert(iterator position, size_type n, bool x)</li>
<li><tt>erase(iterator position)</tt> <a href="#1">* </a></li>
<li><tt>erase(iterator first, iterator last)</tt> <a href="#1">* </a></li>
</ul>
<li><tt>map&lt;K, T, C, A&gt;</tt> member functions:</li>
<ul>
<li><tt>operator[](const key_type&amp; k)</tt></li>
<li><tt>insert(iterator position, const value_type&amp; x)</tt></li>
<li><tt>insert(const value_type&amp; x) </tt></li>
<li><tt>erase(const key_type&amp; x) <a href="#1">*</a> </tt></li>
<li><tt>erase(iterator position)</tt> <a href="#1">* </a></li>
<li><tt>erase(iterator first, iterator last)</tt> <a href="#1">* </a></li>
</ul>
<li><tt>set&lt;K, C, A&gt;</tt> member functions:</li>
<ul>
<li><tt>insert(iterator position, const value_type&amp; x)</tt></li>
<li><tt>insert(const value_type&amp; x)</tt></li>
<li><tt>erase(const key_type&amp; x)</tt> <a href="#1">*</a></li>
<li><tt>erase(iterator position)</tt> <a href="#1">* </a></li>
<li><tt>erase(iterator first, iterator last)</tt> <a href="#1">* </a></li>
</ul>
<li><tt>multimap&lt;K, T, C, A&gt;</tt> member functions:</li>
<ul>
<li><tt>insert(iterator position, const value_type&amp; x)</tt></li>
<li><tt>insert(const value_type&amp; x)</tt></li>
<li><tt>erase(const key_type&amp; x) </tt><a href="#1">*</a></li>
<li><tt>erase(iterator position)</tt> <a href="#1">* </a></li>
<li><tt>erase(iterator first, iterator last)</tt> <a href="#1">* </a></li>
</ul>
<li><tt>multiset&lt;K, C, A&gt;</tt> member functions:</li>
<ul>
<li><tt>insert(iterator position, const value_type&amp; x)</tt></li>
<li><tt>insert(const value_type&amp; x)</tt></li>
<li><tt>erase(const key_type&amp; x) </tt><a href="#1">*</a></li>
<li><tt>erase(iterator position)</tt> <a href="#1">* </a></li>
<li><tt>erase(iterator first, iterator last)</tt> <a href="#1">* </a></li>
</ul>
<li><tt>hash_map&lt;K, T, H, E, A&gt;</tt> member functions:</li>
<ul>
<li><tt>insert_noresize(const value_type&amp; obj)</tt></li>
<li><tt>erase(const key_type&amp; key)</tt> <a href="#1">*</a></li>
<li><tt>erase(iterator position)</tt> <a href="#1">* </a></li>
<li><tt>erase(iterator first, iterator last)</tt> <a href="#1">* </a></li>
</ul>
<li><tt>hash_multimap&lt;K, T, H, E, A&gt;</tt> member functions:</li>
<ul>
<li><tt>insert_noresize(const value_type&amp; obj)</tt></li>
<li><tt>erase(const key_type&amp; key)</tt> <a href="#1">*</a></li>
<li><tt>erase(iterator position)</tt> <a href="#1">* </a></li>
<li><tt>erase(iterator first, iterator last)</tt> <a href="#1">* </a></li>
</ul>
<li><tt>hash_set&lt;T, H, E, A&gt;</tt> member functions:</li>
<ul>
<li><tt>insert_noresize(const value_type&amp; obj)</tt></li>
<li><tt>erase(const key_type&amp; key)</tt> <a href="#1">*</a></li>
<li><tt>erase(iterator position)</tt> <a href="#1">* </a></li>
<li><tt>erase(iterator first, iterator last)</tt> <a href="#1">* </a></li>
</ul>
<li><tt>hash_multiset&lt;T, H, E, A&gt;</tt> member functions:</li>
<ul>
<li><tt>insert_noresize(const value_type&amp; obj)</tt></li>
<li><tt>erase(const key_type&amp; key) </tt><a href="#1">*</a></li>
<li><tt>erase(iterator position)</tt> <a href="#1">* </a></li>
<li><tt>erase(iterator first, iterator last)</tt> <a href="#1">* </a></li>
</ul>
<li><tt>clear()</tt> for all containers <a href="#1">* </a></li>
<li>all container const member functions <a href="#1">*</a></li>
<li>all constructors, by language definition (included for
completeness)</li>
</ul>
<p>&nbsp;</p>
<h3><a name="additional_requirements"></a><b><font size="+2">Strong
guarantee requirements for other mutating container operations</font></b></h3>
<p><a name="2"></a><i>Operations labelled with * are guaranteed to
return normally if all additional requirements have been met) </i></p>
<table border="2" cellspacing="2" cellpadding="2" width="80%">
<caption><b>Definition of terms</b></caption>
<tr>
<td valign="TOP"><b><i>Term</i></b></td>
<td><b><i>Meaning, when applied to a type <tt>T<br>
</tt></i></b><i>(<tt>x</tt> and <tt>y</tt>of type <tt>T</tt>)</i></td>
</tr>
<tr>
<td valign="TOP">"guaranteed copyable"</td>
<td valign="TOP"><tt>T z(x)</tt> and <tt>x = y</tt> may not exit via
exception.</td>
</tr>
<tr>
<td>"guaranteed equality-comparable"</td>
<td valign="TOP"><tt>x == y</tt> may not exit via exception.</td>
</tr>
<tr>
<td>"guaranteed comparable"</td>
<td><tt>x &lt; y</tt> may not exit via exception.</td>
</tr>
</table>
<p>&nbsp;</p>
<table border="2" cellspacing="2" cellpadding="2" width="95%">
<caption><b><tt>deque&lt;T,A&gt;</tt> member functions</b></caption>
<tr>
<td valign="TOP"><b><i>Function</i></b></td>
<td><b><i>Requirements</i></b></td>
</tr>
<tr>
<td valign="TOP"><tt>insert(iterator position, const T&amp; x)<br>
insert(iterator position)</tt></td>
<td valign="TOP"><tt>position == begin() || position == end()<br>
</tt><b>OR </b><tt>T</tt> guaranteed copyable</td>
</tr>
<tr>
<td><tt>erase(iterator position)</tt></td>
<td><tt>position == begin() || position == end() - 1<br>
</tt><b>OR </b><tt>T</tt> guaranteed copyable</td>
</tr>
<tr>
<td><tt>erase(iterator first, iterator last)</tt></td>
<td><tt>first == begin() || last == end()<br>
</tt><b>OR </b><tt>T</tt> guaranteed copyable</td>
</tr>
<tr>
<td><tt>resize(size_type new_size, const T&amp; x)<br>
resize(size_type new_size)</tt></td>
<td valign="TOP"><tt>new_size == size() + 1<br>
</tt><b>OR </b><tt>new_size &lt;= size()</tt> <a href="#2">*</a></td>
</tr>
</table>
<p>&nbsp;</p>
<table border="2" cellspacing="2" cellpadding="2" width="95%">
<caption><b><tt>list&lt;T,A&gt;</tt> member functions</b></caption>
<tr>
<td valign="TOP"><b><i>Function</i></b></td>
<td><b><i>Requirements</i></b></td>
</tr>
<tr>
<td valign="TOP"><tt>remove(const T&amp; value)</tt></td>
<td valign="TOP"><tt>T</tt> guaranteed equality-comparable</td>
</tr>
<tr>
<td><tt>unique()</tt></td>
<td valign="TOP"><tt>T</tt> guaranteed equality-comparable</td>
</tr>
<tr>
<td><tt>merge(list&lt;T, Alloc&gt;&amp; x)</tt></td>
<td><tt>T</tt> guaranteed comparable</td>
</tr>
<tr>
<td><tt>sort()</tt></td>
<td><tt>T</tt> guaranteed comparable</td>
</tr>
</table>
<p>&nbsp;</p>
<table border="2" cellspacing="2" cellpadding="2" width="95%">
<caption><b><tt>vector&lt;T,A&gt;</tt> member functions</b></caption>
<tr>
<td valign="TOP"><b><i>Function</i></b></td>
<td><b><i>Requirements</i></b></td>
</tr>
<tr>
<td valign="TOP"><tt>insert(iterator position, const T&amp; x)<br>
insert(iterator position)</tt></td>
<td valign="TOP"><tt>position == end()<br>
</tt><b>OR </b><tt>T</tt> guaranteed copyable</td>
</tr>
<tr>
<td><tt>insert (iterator position, const_iterator first,
const_iterator last);</tt>
<br><tt>void insert (iterator position, size_type n, const T&amp;
x);</tt></td>
<td valign="TOP"><tt>T</tt> guaranteed copyable</td>
</tr>
<tr>
<td><tt>erase(iterator position)</tt></td>
<td><tt>position == end() - 1<br>
</tt><b>OR </b><tt>T</tt> guaranteed copyable</td>
</tr>
<tr>
<td><tt>erase(iterator first, iterator last)</tt></td>
<td><tt>last == end()<br>
</tt><b>OR </b><tt>T</tt> guaranteed copyable</td>
</tr>
<tr valign="TOP">
<td><tt>resize(size_type new_size, const T&amp; x)<br>
resize(size_type new_size)</tt></td>
<td><tt>new_size == size() + 1<br>
</tt><b>OR </b><tt>T</tt> guaranteed copyable<br>
<b>OR </b><tt>new_size &lt;= size()</tt> <a href="#2">*</a></td>
</tr>
</table>
<p>&nbsp;</p>
<table border="2" cellspacing="2" cellpadding="2" width="95%">
<caption><b>Basic Associative Container member functions</b></caption>
<tr>
<td valign="TOP"><b><i>Function</i></b></td>
<td><b><i>Requirements</i></b></td>
</tr>
<tr>
<td valign="TOP"><tt>map&lt;Key,T,Compare,A&gt;::swap(map&lt;Key,T,Compare,A&gt;&amp;
amp; amp;)</tt></td>
<td valign="TOP"><tt>Compare </tt>guaranteed copyable <a href="#2">*</a></td>
</tr>
<tr>
<td><tt>multimap&lt;Key,T,Compare,A&gt;::swap(multimap&lt;Key,T,Compare,A&amp;a
mp;g t;&amp;)</tt></td>
<td valign="TOP"><tt>Compare </tt>guaranteed copyable <a href="#2">*</a></td>
</tr>
<tr valign="TOP">
<td><tt>set&lt;T,Compare,A&gt;::swap(set&lt;T,Compare,A&gt;&amp;)</tt></td>
<td><tt>Compare </tt>guaranteed copyable <a href="#2">*</a></td>
</tr>
<tr>
<td><tt>multiset&lt;T,Compare,A&gt;::swap(multiset&lt;T,Compare,A&gt;&amp;)
</tt></td>
<td><tt>Compare </tt>guaranteed copyable <a href="#2">*</a></td>
</tr>
</table>
<p>&nbsp;</p>
<table border="2" cellspacing="2" cellpadding="2" width="95%">
<caption><b>hash_map&lt;K, T, HashFcn, EqualKey, A&gt; member
functions</b></caption>
<tr>
<td valign="TOP"><b><i>Function</i></b></td>
<td><b><i>Requirements</i></b></td>
</tr>
<tr>
<td valign="TOP"><tt>swap(hash_map&lt;K, T, HashFcn, EqualKey,
A&gt;&amp;)</tt></td>
<td valign="TOP"><tt>HashFcn and EqualKey </tt>guaranteed copyable <a href="#2">*</a></td>
</tr>
<tr>
<td><tt>insert(const value_type&amp; obj)</tt></td>
<td valign="TOP"><tt>bucket_count() &gt;= size() + 1</tt></td>
</tr>
<tr valign="TOP">
<td><tt>operator[](const key_type&amp; k)</tt></td>
<td><tt>bucket_count() &gt;= size() + 1</tt></td>
</tr>
</table>
<p>&nbsp;</p>
<table border="2" cellspacing="2" cellpadding="2" width="95%">
<caption><b>hash_multimap&lt;K, T, HashFcn, EqualKey, A&gt; member
functions</b></caption>
<tr>
<td valign="TOP"><b><i>Function</i></b></td>
<td><b><i>Requirements</i></b></td>
</tr>
<tr>
<td valign="TOP"><tt>swap(hash_multimap&lt;K, T, HashFcn, EqualKey,
A&gt;&amp;)</tt></td>
<td valign="TOP"><tt>HashFcn and EqualKey </tt>guaranteed copyable <a href="#2">*</a></td>
</tr>
<tr>
<td><tt>insert(const value_type&amp; obj)</tt></td>
<td valign="TOP"><tt>bucket_count() &gt;= size() + 1</tt></td>
</tr>
</table>
<p>&nbsp;</p>
<table border="2" cellspacing="2" cellpadding="2" width="95%">
<caption><b>hash_set&lt;T, HashFcn, EqualKey, A&gt; member functions</b></caption>
<tr>
<td valign="TOP"><b><i>Function</i></b></td>
<td><b><i>Requirements</i></b></td>
</tr>
<tr>
<td valign="TOP"><tt>swap(hash_set&lt;K, T, HashFcn, EqualKey,
A&gt;&amp;)</tt></td>
<td valign="TOP"><tt>HashFcn and EqualKey </tt>guaranteed copyable <a href="#2">*</a></td>
</tr>
<tr>
<td><tt>insert(const value_type&amp; obj)</tt></td>
<td valign="TOP"><tt>bucket_count() &gt;= size() + 1</tt></td>
</tr>
</table>
<p>&nbsp;</p>
<table border="2" cellspacing="2" cellpadding="2" width="95%">
<caption><b>hash_multiset&lt;T, HashFcn, EqualKey, A&gt; member
functions</b></caption>
<tr>
<td valign="TOP"><b><i>Function</i></b></td>
<td><b><i>Requirements</i></b></td>
</tr>
<tr>
<td valign="TOP"><tt>swap(hash_multiset&lt;K, T, HashFcn, EqualKey,
A&gt;&amp;)</tt></td>
<td valign="TOP"><tt>HashFcn and EqualKey </tt>guaranteed copyable <a href="#2">*</a></td>
</tr>
<tr>
<td><tt>insert(const value_type&amp; obj)</tt></td>
<td valign="TOP"><tt>bucket_count() &gt;= size() + 1</tt></td>
</tr>
</table>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 B

56
STLPORT/doc/index.html Normal file
View File

@@ -0,0 +1,56 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: STLport Documentation Index</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">STLport Documentation Index</span>
<br><br>
<table border="0" cellpadding="8" cellspacing="0">
<tr>
<td valign="top" align="left" nowrap="">
<b>Introduction</b><br>
&nbsp; <a href="index.html">Documentation Index</a><br>
&nbsp; <a href="sgi_stl.html">SGI STL Base</a><br>
&nbsp; <a href="story.html">STLport Story</a><br>
<!-- &#160; <a href="projects.html">Portofolio</a> -->
<p><b>STLport Features</b><br>
&nbsp; <a href="platforms.html">Portability</a><br>
&nbsp; <a href="debug_mode.html">Debug Mode</a><br>
&nbsp; <a href="sgi_stl.html#thread_safety">Thread Safety</a><br>
&nbsp; <a href="exception_safety.html">Exception Safety</a>
</p>
<p><b>Getting Started</b><br>
&nbsp; <a href="install.html">Download and Install</a><br>
&nbsp; <a href="select_io.html">Select Streams Mode</a><br>
&nbsp; <a href="use_stlport.html">Compiling with STLport</a>
</p>
</td>
<td valign="top" align="left" nowrap="">
<p><b>White Papers</b><br>
&nbsp; <a href="release_notes.html">Release Notes</a><br>
<!-- &#160; <a href="FAQ.html">FAQ</a><br/> -->
&nbsp; <a href="compiler_readmes.html">READMEs</a><br>
&nbsp; <a href="vendor_interface.html">Interface with std::</a><br>
&nbsp; <a href="wrappers.html">Wrappers</a><br>
&nbsp; <a href="configure.html">Config manual</a><br>
&nbsp; <a href="testsuite.html">Regression Test</a><br>
&nbsp; <a href="eh_testsuite.html">Exception Test</a>
</p>
<p><b>Feedback</b><br>
&nbsp; <a href="bug_report.html">Bug Reports</a><br>
&nbsp; <a href="http://www.stlport.com/cgi-bin/forum/forum.cgi">Forum</a><br>
</p>
<p><b>Appendix</b><br>
&nbsp; <a href="thanks.html">Acknowledgements</a><br>
<!-- &#160; <a href="copyrights.html">Copyrights</a><br/> -->
&nbsp; <a href="license.html">Your Free Licence</a></p>
</td>
</tr>
</table>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

45
STLPORT/doc/install.html Normal file
View File

@@ -0,0 +1,45 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Getting Started: Installing STLport</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Getting Started: Installing STLport</span>
<h3><b><a name="download"></a>Download</b></h3>
To get STLport, please visit <a href="http://www.stlport.com/download.html">download page at stlport.com</a>.
It provides STLport releases from 2.x to the latest one as well as beta snapshots.
If you are interested in contributing to STLport development, please take a look at <a href="http://www.stlport.com/early_access.html">Early Access page</a>.
<h3><b><a name="unpack"></a>Unpack</b></h3>
<p>After downloading <b>STLport-XXX.tar.gz </b>[<b>zip</b>],&nbsp;
unpack it to some place where it is going to be accesible for all
compilers you plan to use with this installation.
<br><b>Note</b> : <b>Never</b> overwrite header files that come with the compiler,
even if you made a backup - this won't work!
Also, please make sure you do not rename this <b>"stlport"</b> subdirectory
into anything else - that may render installation unusable.
</p>
<h3><b><a name="adjust"></a>Setup Preferences</b></h3>
<p>Look through <tt>&lt;<b>stl/_site_config.h</b>&gt;</tt> and <tt>&lt;<b>stl_user_config.h</b>&gt;</tt>
to adjust <a href="configure.html">preferences</a>.</p>
<p>
<b>Do NOT</b> attempt to run "configure" script!
It is deprecated, moved to safe standalone
folder and should be used as a helper to create initial config for a new compiler only.
Your compiler should be auto-recognized.
Please edit appropriate configuration header for your compiler
directly if you have to make small compiler-specific configuration changes.
</p>
<p>Only if you recieve error message during compilation which explicitly says
<i><b>"Your compiler version is not recognized by STLport"</b></i>, you
will have to do major configuration of STLport before use.
To learn how to configure STLport, please read
<a href="configure.html">configuration manual</a>.
</p>
<p>Please be sure to read about <a href="select_io.html">STLport iostreams modes</a>
and select the one appropriate for your project before using the library.</p>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

68
STLPORT/doc/license.html Normal file
View File

@@ -0,0 +1,68 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: License Agreement</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">License Agreement</span>
<p><b>Boris Fomitchev</b> grants <b>Licensee</b> a non-exclusive,
non-transferable, royalty-free license to use <b>STLport</b> and its
documentation without fee.<br>
<br>
By downloading, using, or copying <b>STLport</b> or any portion thereof,&nbsp;
<b>Licensee</b> agrees to abide by the intellectual property laws and all other
applicable laws of the United States of America, and to all of the terms and
conditions of this Agreement.<br>
<br>
<b>Licensee</b> shall maintain the following copyright and permission&nbsp;
notices on <b>STLport </b>sources and its documentation unchanged :</p>
<b>Copyright 1999,2000 Boris Fomitchev</b><br>
<br>
This material is provided "as is", with absolutely no warranty
expressed or implied. Any use is at your own risk.<br>
Permission to use or copy this software for any purpose is hereby granted
without fee, provided the above notices are retained on all copies. Permission
to modify the code and to distribute modified code is granted, provided the
above notices are retained, and a notice that the code was modified is included
with the above copyright notice.
<p>The <b>Licensee</b> may distribute binaries compiled with <b>STLport</b>
(whether original or modified) without any royalties or restrictions.</p>
<p>The <b>Licensee</b> may distribute original or modified <b>STLport</b> sources,
provided that:</p>
<ul>
<li>The conditions indicated in the above permission notice are met;</li>
<li>The following copyright notices are retained when present, and conditions
provided in accompanying permission notices are met :</li>
</ul>
<p><b><i>Copyright 1994 Hewlett-Packard Company</i></b></p>
<p><b><i>Copyright 1996,97 Silicon Graphics Computer Systems, Inc.</i></b></p>
<p><b><i>Copyright 1997 Moscow Center for SPARC Technology.</i></b></p>
<blockquote>
<p><i><font size="2">Permission to use, copy, modify, distribute and sell this
software and its documentation for any purpose is hereby granted without fee,
provided that the above copyright notice appear in all copies and that both
that copyright notice and this permission notice appear in supporting
documentation. Hewlett-Packard Company makes no representations about the
suitability of this software for any purpose. It is provided "as is"
without express or implied warranty.</font></i></p>
<p><i><font size="2">Permission to use, copy, modify, distribute and sell this
software and its documentation for any purpose is hereby granted without fee,
provided that the above copyright notice appear in all copies and that both
that copyright notice and this permission notice appear in supporting
documentation. Silicon Graphics makes no representations about the suitability
of this software for any purpose. It is provided "as is" without
express or implied warranty.</font></i></p>
</blockquote>
<blockquote>
<i><font size="2">Permission to use, copy, modify, distribute and sell this
software and its documentation for any purpose is hereby granted without fee,
provided that the above copyright notice appear in all copies and that both
that copyright notice and this permission notice appear in supporting
documentation. Moscow Center for SPARC Technology&nbsp; makes no
representations about the suitability of this software for any purpose. It is
provided "as is" without express or implied warranty.</font></i>
</blockquote>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

View File

@@ -0,0 +1,50 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Platforms</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Compilers supported by STLport</span>
<p>Portability is a key feature of STLport. It allows for having single,
thoroughly tested code base on all platforms used in the project.</p>
<p>STLport was reported to work with the compilers listed below.</p>
<p>Please follow links to see README files for particular compilers.</p>
<ul>
<li><b><a href="README.sunpro.html">
SUN Workshop C++ Compilers 4.0.x-5.0, 5.1, 5.2 (Forte 6, 6u1, 6u2)</a>, for Solaris</b></li>
<li><b><a href="README.gcc.html">
GNU GCC 2.7.2-2.95, 3.0 Compilers</a>, for all GCC platforms</b></li>
<li><a href="README.xlC.html">
IBM xlC 3.1.4.0</a>, for AIX</li>
<li><b><a href="README.os390.html">
IBM OS/390 C/C++ 1.x - 2.x Compiler</a>, for OS/390
<i>(STLport is the only available and
<a href="http://www.software.ibm.com/ad/c390/cmvsstlp.htm">official</a>
ANSI library for this platform)</i></b></li>
<li><b>IBM VisualAge/ILE C++ for AS/400 Version 4 Release 4, for AS/400</b></li>
<li><b><a href="README.xlC.html">
IBM Visual Age C++ 3.x-5.x</a>, for OS/2 and Win32</b></li>
<li><b><a href="README.aCC.html">
HP ANSI C++ Compiler, for HP-UX</a></b></li>
<li><b>SGI MIPSpro C++ 7.x, for IRIX</b></li>
<li><b><a href="README.sgi40.html">
SGI MIPSpro C++ 4.0</a>, for IRIX</b></li>
<li><a href="README.DEC.html"><b>
DEC C++ V5.5-004, V6.x for OSF 3.2/4.0, for Digital Unix</b></a>.</li>
<li><b>Tandem NCC, for Tandem OS</b></li>
<li><b>SCO UDK C++, for UnixWare</b></li>
<li><b>Apogee C++ 4.0, for SUN Solaris</b></li>
<li><b>KAI C++ 3.1-4.x, for all KAI platforms</b></li>
<li><b>Portland Group C++ compiler ( pgCC), for all pgCC platforms</b></li>
<li><b><a href="README.VC++.html">Microsoft Visual C++ 4.x - 6.x, for Win32</a></b></li>
<li><b><a href="README.VC++.html">Microsoft Embedded Visual C++ 3.0</a></b></li>
<li><b><a href="README.BC.html">Borland C++ 5.02-5.5</a>, for Win16/32</b></li>
<li><b><a href="README.CW.html">Metrowerks CodeWarrior Pro 1.8-5.3</a>, for MacOS, Win32</b></li>
<li><b>Intel (R) C++ 4.0/4.5/5.0 Reference Compiler, for Win32</b></li>
<li><b>Watcom C++ 10.x-11.0, for DOS, Win16, Win32</b></li>
<li><b><a href="README.pow.html">Powersoft's Power++ 2.0</a>, for Win32</b></li>
<li><b>Symantec C++ 7x/8.x, for MacOS and Win32</b></li>
<li><b><a href="README.MPW.html">Apple MPW MrCpp and SCpp compilers</a>, for MacOS</b></li>
</ul>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

244
STLPORT/doc/projects.html Normal file
View File

@@ -0,0 +1,244 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Real World Projects</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">STLport Portfolio - Real World Projects</span>
<p>Many people still won't consider using STL in industrial projects.
The reason is often that the code could may turn out to be nonportable,
while it must also be compiled with some legacy compiler X on platform Y
. With STLport, you can use single tested&nbsp; STL&nbsp; codebase in a
multiplatform project.&nbsp; Below is very incomplete list of <b>software
projects using STLport&nbsp; </b><i>(thanks to all contributors who have
submitted the information)</i>.</p>
<p><i>Coming soon : <b>Add Your Project</b></i><br></p>
<hr width="100%">
<p><i>Organization: <a href="http://www.ipmce.su">Moscow Center for
SPARC Technology</a></i></p>
<h3>Project : CPU Architecture Simulation</h3>
<dl>
<dt><b>Description </b>:</dt>
<dd>Scalable set of compatible VLIW ISA CPU simulators varying in
speed/accuracy. Team of 6, extensive use of STL utilities and
concepts.</dd>
<dt><b>Platforms/compilers used:</b></dt>
<dd>Solaris 2.x/SunPro CC 4.2, to be ported to Windows NT/VC++.</dd>
</dl>
<h3>&nbsp;</h3>
<hr width="100%">
<i>Organization: <a href="http://www.motu.com">Mark of the Unicorn,
Inc.</a></i>
<h3>Product : "Composer's Mosaic"</h3>
<dt><b>Description </b>:</dt>
<dd>State-of-the-art music desktop publishing software for the
Macintosh. Provides a WYSIWYG environment in which you can produce
publication-quality music notation, from lead sheets to full
orchestra scores. Includes real-time MIDI playback and recording,
using the transcription engine that Keyboard magazine called
"The best we've ever seen". Also supports convenient
step-record and mouse and keyboard note entry. Supports standard
MIDI file format. Unlimited voices, staves, and voices per staff.
Unlimited Undo/Redo.</dd>
<dt><b>Platforms/compilers used:</b></dt>
<dd>Mac/CodeWarrior Pro 1</dd>
<p><b>Availability :</b> demo version coming in a few weeks.</p>
<p>&nbsp;</p>
<hr width="100%">
<p><i>Organization: <a href="http://www.motu.com">Mark of the Unicorn,
Inc.</a></i></p>
<h3>Product : "FreeStyle"</h3>
<dt><b>Description </b>:</dt>
<dd>Trackless MIDI sequencing and notation program for songwriters and
arrangers, combining simplicity and ease-of-use with sophisticated
features that allow users to work in musically intuitive ways.</dd>
<dt><b>Platforms/compilers used:</b></dt>
<dd>Mac/CodeWarrior Pro 1 , Windows/Borland C++</dd>
<p><b>Availability :</b> demo version coming in a few weeks.</p>
<p>&nbsp;</p>
<hr width="100%">
<p><i>Organization: <a href="http://www.usc.edu">University of
Southern California</a></i></p>
<h3><a href="http://selforg.usc.edu:8376/~dyweb/frp.html">Project :
Face Recognition</a></h3>
<dt><b>Description </b>:</dt>
<dd>Face recognition system called FLAVOR(formerly called Eidos),
which uses an elastic graph matching algorithm.</dd>
<dt><b>Platforms/compilers used:</b></dt>
<dd>IRIX 6.2 on<b> </b>SGI Power Challenge XL/SGI MipsPro C++ v. 7.1,<b>
</b>Wintel port coming.</dd>
<p>&nbsp;</p>
<hr width="100%">
<p><i>Organization: <a href="http://www.ucla.edu">University of
California at Los Angeles </a>, <a href="http://www.cs.ucla.edu">Computer
Science Department</a></i> <br>
<i><a href="http://vlsicad.cs.ucla.edu">VLSI CAD Laboratory - ABKGroup</a></i></p>
<h3>Project : VLSI placement/routing</h3>
<dt><b>Description </b>:</dt>
<dd>Extensively use most aspects of STL in algorithm research for
placement and routing of VLSI circuits. Developers at site: 5.
Working code using STL: exceeds 20,000 lines.</dd>
<dt><b>Platforms/compilers used:</b></dt>
<dd>SunPro CC4.2 (Solaris) and MSVC++ 5.0 (Windows NT/'95)</dd>
<p><i>Contact email: &lt;abk@cs.ucla.edu&gt; &lt;imarkov@cs.ucla.edu&gt;</i></p>
<p>&nbsp;</p>
<hr width="100%">
<p><i>Organization:<a href="mailto:100023.3267@compuserve.com">Askesis
B.V</a></i></p>
<h3>Product : "ICAS"</h3>
<dt><b>Description </b>:</dt>
<dd>A client/server patient database management system for the
intensive care departement in the hospital of the University of
Nijmegen in the Netherlands. Includes a TCP/IP Winsocket, an ODBC
class library and a code generator for creating the database code
based on the ODBC class library. Uses the container classes heavily.</dd>
<dt><b>Platforms/compilers used:</b></dt>
<dd>IBM Visual Age C++ for Windows, DB/2 for Windows NT, Windows
NT/Windows 95 and Windows 3.11.</dd>
<dt><b>Availability :</b></dt>
<dd>The TCP/IP and ODBC database libary with the code generator will
be released in under GNU Library Genereral Public Licence within a
few weeks.</dd>
<p>&nbsp;</p>
<hr width="100%">
<p><i>Organization: <a href="http://www.entegrity.com">Entegrity
Solutions Inc</a></i></p>
<h3>Product : "Security Development Platform"</h3>
<dt><b>Description </b>:</dt>
<dd>A comprehensive framework/library for developping secure
applications. Includes symmetric and assymetric cryptography and
complete public key infrastructure (CA) functionality. Extensive use
of STL throughout the project.</dd>
<dt><b>Platforms/compilers used:</b></dt>
<dd>Solaris 2.5 with SunCC 4.2 using STL adaption + extra basic_string.
Windows NT4 with MS Visual C++ 5.0 using MS STL implementation.
Compatibility between MS STL and STL adaption is good when limiting
usage to common classes.</dd>
<dt><b>Availability :</b></dt>
<br>
Beta release (NT only) due end of September.&nbsp;
<hr width="100%">
<p><i>Organization: <a href="http://darwin.cwru.edu">Case Western
Reserve University School of Medicine,</a></i> <br>
<i><a href="http://darwin.cwru.edu">Department of Molecular and
Genetic Epidemiology, S.A.G.E. Group</a></i></p>
<h3>Product : "S.A.G.E. (Statistical Analysis for Genetic
Epidemiology)"</h3>
<dt><b>Description </b>:</dt>
<dd>For detailed package information, see <a href="http://darwin.cwru.edu.">http://darwin.cwru.edu.</a>
Use of the STL : in upcoming 4.0 release, ~50k+ lines of code relies
heavily on the standard library containers and to a lesser degree on
the standard algorithms. Code also compiles with Kuck &amp;
Associate's modified Moderna STL and DeltaLogic's XTL.</dd>
<dt><b>Platforms/compilers used:</b></dt>
<dd>Alpha Digital Unix 4.0/g++ 2.7.2.1, Digital C++ 5.5 ; Sparc
Solaris 2.5/g++ 2.7.2.1, SunPro C++; i386 Linux 2.x/g++ 2.7.2.1</dd>
<dt><b>Availability :</b> check <a href="http://darwin.mhmc.cwru.edu/pub/sage.html">S.A.G.E
homepage</a>.</dt>
<dt><i>Contact e-mail: </i><a href="mailto:jacobs@darwin.cwru.edu">jacobs@darwin.cwru.edu</a></dt>
<dt>&nbsp;</dt>
<hr width="100%">
<p><i>Organization: </i><a href="mailto:info@formatek.com">Formatek
Inc.</a></p>
<h3>Product : "Softmap"</h3>
<dt><b>Description </b>:</dt>
<dd><b>SoftMap</b> is a GIS software bundled to a set of standard maps
(topographic maps, city maps, thematic maps) on CD-ROM to which
complementary georeferenced data can be added: topologically
structured nodes, vectors, polygons, icons and texts. As SoftMap is
a multimedia software, it is possible to link to the above graphic
elements attributes, images, external files, data base records etc.</dd>
<dt><b>Platforms/compilers used:</b></dt>
<dd>Windows/Borland C++</dd>
<dt><b>Availability :</b> check <a href="http://www.naturinfo.com">http://www.naturinfo.com</a>.</dt>
<dt><b>Contact e-mail:</b> <a href="mailto:info@formatek.com">info@formatek.com</a></dt>
<dt>&nbsp;</dt>
<hr width="100%">
<p><i>Organization: <a href="http://www.int.com">Interactive Network
Technologies, Inc (INT)</a></i></p>
<h3>Product : "Carnac", Graphics Toolkit</h3>
<dt><b>Description </b>:</dt>
<dd><b>Carnac</b> is a multi-platform high-performance graphics
toolkit written in C++ targeted at handling of huge volumes of
graphics information: maps, geoscience, satellite images and so on.
Carnac includes database components (spatial-organized geometry,
visual attributes), view management, data management, distributed
components and platform-specific drivers..</dd>
<dt><b>Platforms/compilers used:</b></dt>
<dd>Microsoft Windows NT, Sun Solaris, SGI IRIX and IBM AIX. Other
platforms may be added.</dd>
<dt><b>Availability:</b></dt>
<dd>check the <a href="http://www.int.com/product/carnac/index.html">Carnac
Web Page</a>.</dd>
<dt><b>Comments from Carnac developers:</b></dt>
<dd>To handle this diversity and to keep our code-base reasonably
small and manageable we use internally a lot of new features of
upcoming ANSI C++ standard: templates, exception handling, standard
library based on STL. The biggest problem of our multi-platform
project was a diversity of C++ compilers. They have a variety of
different bugs and "features", and somewhat incompatible
interpretations of templates. Some of them didn't support HP STL we
started with. HP STL had a limited set of containers (notably it
lacks hash-based containers). ObjectSpace STL was modeled after HP
STL and had the same problems. We decided to go with SGI STL as most
comprehensive STL implementation available. While it worked fine on
Windows NT and SGI, we had troubles with other platforms. Adaptation
of SGI STL (STLport) really improved this situation. We use original
SGI STL 2.03 on Windows NT and SGI IRIX and SGI STL port 2.03 on Sun
Solaris and IBM AIX. Both libraries work out-of-box on these
platforms. I should add that STLport has very important features ---
it incorporates a debug mode, which is crucial for big projects,
thread-safety and exception safety. SGI STL and STLport are free,
easy-to-use, up-to-date and evolving, close to ANSI C++ draft
standard and THEY WORK ON EXISTING COMPILERS!!! That's why we chose
SGI STL for our project.</dd>
<br>
Eugene Lazutkin, Senior Software Analyst <br>
Interactive Network Technologies, Inc.
<dt>&nbsp;</dt>
<hr width="100%">
<br>
<i>Organization: <a href="http://www.claris.com">Claris Corporation</a></i>
<h3>Project : ClarisWorks New Code Base</h3>
<dt><b>Description </b>:</dt>
<dd>ClarisWorks is a productivity package that includes
word-processing, drawing, spreadsheet, and paint capabilities all
integrated in one package.&nbsp; It is currently available on MacOS
as well as Windows 95/NT.</dd>
<br>
MacWeek rates us 4.5 diamonds (out of five). PCWeek says we are all
the Office you need. <br>
&nbsp;
<dt><b>Platforms/compilers used:</b></dt>
<dd>&nbsp;&nbsp;&nbsp; MacOS/CodeWarrior Pro 2</dd>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Win32/Visual
C++ 5.0 sp2 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WinCE/Visual
C++ 5.0 sp2 <br>
&nbsp;
<dt><b>Availability :</b></dt>
<br>
You can buy ClarisWorks 5.0 currently, although it is not written
using STLport, you can get a look at what we are working on.&nbsp;
<hr width="100%">
<br>
&nbsp; <br>
<i>Organization: <a href="http://www.uni-paderborn.de/cs/">University
of Paderborn, Germany</a></i>
<h3>Project : <a href="http://www.uni-paderborn.de/cs/padfem/">PadFEM</a></h3>
<dt><b>Description </b>:</dt>
<br>
&nbsp;&nbsp;&nbsp; PadFEM is a project of the University of Paderborn,
Germany, dealing <br>
with parallel adaptive finite element simulations. <br>
&nbsp;
<dt><b>Platforms/compilers used:</b></dt>
<br>
g++ compiler (2.7.2 and 2.8.0) on Sun workstations (Solaris) and <br>
massive parallel computers. <br>
&nbsp;
<dt><b>Availability :</b></dt>
<br>
&nbsp; More informations are available on the PadFEM homepage at <br>
<a href="http://www.uni-paderborn.de/cs/padfem/">http://www.uni-paderborn.de/cs/padfem/</a>.
<br>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

View File

@@ -0,0 +1,176 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Release Notes</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">STLport 4.5 Release Notes</span>
<p>
Please see etc/ChangeLog for the list of changes since 4.0.
A number of new platforms are supported; STLport iostreams ported to many new platforms.
4.5 should provide for much greater reliability and efficiency, especially in iostreams part.
Code bloat should be significantly reduced. Versioning is introduced for dynamic libraries.
</p>
<span class="heading">STLport 4.0 Release Notes</span>
<p>
STLport 4.0 is a major release. Finally, it offers complete C++ standard library!
Here is a list of major changes in 4.0 :
<ul>
<li>Complete ANSI C++ standard library, including &lt;complex&gt; and SGI iostreams.</li>
<li>Can be configured to use either SGI or native iostreams.</li>
<li>Debug mode completely redesigned. Debug mode containers are
implemented in terms of wrappers around non-debug ones.
That provides for more clean and efficient implementation.
In Debug Mode, different namespace <b>_STLD::</b> is being used,
so no link-time clashes between debug and non-debug versions are possible.</li>
<li>New platforms - gcc-2.95, Mingw32, Borland C++ Builder 5.5, SUN CC 6.0 Early Access, SUN CC in compatibility mode.</li>
</ul>
Minor changes:
<ul>
<li> std:: is not used for STLport namespace even with SGI iostreams,
to avoid possible clashes and facilitate 3rd-party library use.
Same macro redefinition technique for _STL:: used to keep clients
code which uses literal std::.</li>
<li>C library headers wrapping changed to account for multiple inclusion tricks
(needed by gcc-2.95 mostly)</li>
<li>auto_ptr updated, now it passes polymorphic tests with VC++</li>
<li>config changes - "configure" made obsolete and moved into "stlport/config/new_compiler"</li>
<li>Lot of minor bugfixes.</li>
</ul>
</p>
<h2><font color="#000080">STLport 3.2.1 Release Notes</font></h2>
<p>STLport 3.2.1 is a minor release in terms of functionality, but it is a huge
leap forward in terms of usability. </p>
<h2>std::renaming</h2>
3.2.1 finally solved the conflict between STLport string and std::string, which
used to be worked around by using namespace stlport::, to avoid link- and run-time
clashes. Refer to <a href="vendor_interface.html">"Cooperation with native standard library"</a>
section for details.
In 3.2.1, new, completely transparent scheme introduced to redefine <b>"std::"</b> in user
sources to <b>"stlport::"</b> via macros. Before 3.2.1, it was not possible, because not all headers were provided
with necessary wrappers.
Now, when user writes <b>"std::"</b> in application code, it yields the same results as if he wrote <b>"stlport::"</b>.<br>
The biggest advantage is that now absolutely no modifications in client code are needed to use.
STLport instead of native STL lib, which turns STLport into seamless drop-in component!
<h2>Windows improvements</h2>
STLport 3.2.1 provides the mechanism to export static members of default node allocator
from a designated user's DLL, which solves the problem observed with default allocator
and passing objects across DLL boundaries. Currently, one of user's DLL is supposed to
be designated to export STLport symbols. That will change as soon as STLport will provide
iostreams library.<p></p>
For MT compilation, <b>&lt;windows.h&gt;</b> is not included anymore to get synchronization
function prototypes. That significally reduces compilation time.
<p></p>
<h2>Quality improvements</h2>
<p>3.2.1 provides further code bloat reduction - hashtable uses vector <b>&lt;void*&gt;</b> internally.</p>
<h2>New platforms</h2>
Configuration files provided for DEC C++ 6.x/5.x , Borland C++ 5.02, KAI C++.
Windows CE configuration provided.
<hr>
<h2><font color="#000080">STLport 3.2 Release Notes</font></h2>
<p>STLport 3.2 is a major change from 3.12. It provides new components, new wrappers
and fixes many portability issues.</p>
<h2>New Components</h2>
New standard header files are provided : &lt;limits;&gt; and &lt;valarray&gt;.
Also, STLport now provide complete set of C library headers which are currently
wrappers for either old-style or new-style native C library headers.
<h2>Headers reorganization</h2>
Main STLport include directory renamed to <b>stlport</b>.
Old HP-style STL headers moved to <b>stlport/hp</b> directory.
<h2>Quality improvements</h2>
<p>3.2 provides new workarounds for standard allocators : EBO (empty-base optimization),
for automatic space optimization for instanceless allocators. Allocators with instances
now can be used with any compiler. Chunking problem is fixed - no memory overuse.
</p>
<p>Major restructuring - non-inline code moved to .c implementation files.
That makes huge code bloat reduction for compilers that support separate compilation model,
like IBM xlC. If this model is not supported, .c file is being included in corresponding .h file.
</p>
<p><a href="debug_mode.html">Debug</a> mode redesigned for less code bloat and memory footprint.
Now it use single-linked lists for iterators lists and tables for error reporting. Also it provides more flexible control on error reporting for user - now you can control whether debug aasertion throws an exception or not, or to supply your own termination routine in addition to reporting one.
</p>
<h2>New platforms</h2>
Configuration files provided for Apogee C++, Borland C++ Builder 4.
<h2>Smoother portability</h2>
<p>New workarounds are used for compilers with limited capabilities. Standard forms of distance()
and operator -&gt; for iterators is supported for them in 3.2. Additional user-level switch
_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS is added to use minimum set of default arguments on
template classes that have more than one - for example map&lt;&gt;, set&lt;&gt;. This is supposed to help compiling existing standard code which use shortest notation.
Many other portability issues reported for 3.12 are fixed, including workaround for famous Sun CC 4.2 bug. _STLP_USE_MFC switch added for MFC cooperation.
</p>
<h2>Configuration engine changes</h2>
<p><a href="configure.html">Configuration</a> switches changed - those describing compiler misfeatures changed so that
the compiler that implements complete ANSI C++ Standard and has no bugs would have empty
configuration file.
</p>
<br>
<hr>
<h2><font color="#000080">STLport 3.12 Release Notes</font></h2>
<h2>Configuration changes</h2>
<p>In 3.12, the confuguration headers stlcomp.h and configure script reside in
config/ directory. stlcomp.h has been splitted to compiler-specific-headers. As now stl_config.h
includes &lt;config/stlcomp.h&gt;, your compiler must be able to understand UNIX-style paths.
Most compilers do that automatically, but some (MetroWerks CodeWarrior) require setting the option to do that..</p>
<h2>Cooperation with compiler's C++ library</h2>
<p>STLport 3.12 is capable of&nbsp; using separate namespace <b>stlport::</b>
to avoid conflicts with standard C++ library that comes with the
compiler. If your compiler provides new-style <b>&lt;iostream&gt;</b>,
please be sure to read the <a href="vendor_interface.html">document
describing this technique</a>.</p>
<h2>New-style iostreams:</h2>
<p>In STLport 3.12, <b>_STLP_USE_NEW_IOSTREAMS&nbsp; </b>macro controls
whether you are using templatized iostreams or not. This setting is
important - STLport's <b>&lt;iostream&gt;</b> imports appropriate
version of native iostreams (&lt;<b>iostream</b>&gt; vs. &lt;<b>iostream.h</b>&gt;
depending on it. This also affects the choice of <a href="vendor_interface.html#option_2">own
namespace mode</a>.</p>
<p>Use of other new-style header names like <tt>&lt;<b>vector</b>&gt;</tt>
with STLport is highly recommended. </p>
<h2>allocator&lt;&gt;</h2>
<p>In STLport 3.12, the default <b>_Alloc</b> parameter to standard
container is always <b>allocator&lt;&gt;</b> (unlike in SGI STL, where
it is only so when the compiler supports partial specialization and
other new features).</p>
<h2>Underscored&nbsp; names</h2>
<p>All inernal names in STLport 3.12 starts with undercsore
("_"), as specified by C++ standard.</p>
<h2><a name="new%20headers"></a>New-style C library headers</h2>
In this release, <b>_STLP_USE_NEW_STYLE_HEADERS</b> only controls
STLport choice of using new-style C library headers : &lt;cstdio&gt; vs.
&lt;stdio.h&gt;, etc.
<h2>Bitset - additional parameter</h2>
<p>SGI STL introduced extra template parameter BufSize for bitset : <b>_WordT,
</b>which defaults to unsigned long. For 64-bits architectures, you may
wish to change it to be long long. Note that explicit use of extra
parameter will lead to non-portability with other STL implementations.</p>
<h2>Deque - additional parameter</h2>
<p>SGI STL introduced extra template parameter BufSize for deque : <tt>deque&lt;class
T, class Alloc, size_t BufSize=0&gt;</tt>. <br>
That allows you to specify deque buffer size on per-instance basis. </p>
<p>Some compilers (<b>Borland, Visual, SunPro, ..</b>.) are unhappy
about non-type template parameters (particularly when deque is being
passed as parameter to functions). For these compilers, only default
buffer size option is available. You may still specify buffer size using
<tt>__deque__&lt;T,Alloc,BufSize&gt;</tt>. </p>
<p> Note that explicit use of extra parameter will lead to
non-portability with other STL implementations. You may force full
version to be the default ( <tt>deque&lt;class T, class Alloc=allocator&lt;T&gt;,
size_t BufSize=0&gt;</tt> ) by disabling <tt>_STLP_NON_TYPE_TMPL_PARAM_BUG</tt>
switch. Note that you may have problems instantiating template functions
taking deque as its argument then.</p>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

View File

@@ -0,0 +1,79 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Getting Started: Selecting IOStreams mode</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Selecting IOStreams Mode</span>
<h3><b>Major IOStream Modes</b></h3>
STLport 4.0 may be used in two different major modes :
<ul>
<li><b>With STLport iostreams (default)</b>. In this mode, you are going to use iostreams
and complex libraries provided by STLport.
To do so, first you have to build STLport library from sources
provided in "src" subdirectory and link your programs with it.
This is major change since pre-4.0 releases, please read the instructions carefully.</li>
<li><b>Without STLport iostreams</b>. In this mode, STLport will use wrappers around
your compiler's iostreams and complex libraries, just like in STLport
releases prior to 4.0.</li>
</ul>
For any of these modes, please make sure
<b>"stlport"</b> directory containing header files
is the <b>first</b> one in your include search path when you compile the project<br>
<h3><a name="no_sgi_iostreams"></a>Installing STLport for use without STLport iostream library ("wrapper mode")</h3>
In this mode, you will use wrappers around your compiler's iostreams
libabry, as in previous STLport releases.
All you have to do to use STLport in this mode is to uncomment
<b>_STLP_NO_OWN_IOSTREAMS</b> setting in <b>"stlport/stl/_site_config.h"</b>
to disable use of STLport iostreams and to use wrappers around your existing iostreams.
(For SUN CC, you still have to go to "src" subdirectory and do "make" or at least "make prepare" to produce additional .SUNWCCh files necessary for compilation)
Note though :
<ul>
<li>For the most modern compilers which implements Koenig lookup properly, this option may not be available due to ambiguities during namespace lookup. Example: gcc-3.0</li>
<li>New-style ANSI iostreams and/or complex library
may not be provided by your compiler vendor;</li>
<li>If provided, vendor iostreams may appear to be slower than STLport version.</li>
</ul>
If you have decided to disable STLport iostreams, you may stop reading here.
To use wrapper mode, you do not have to build any binary libraries, as everything you need
is contained in the header files already.
<h3><a name="beta"></a>Building STLport iostreams library (Default Mode)</h3>
In this mode, you will use STLport implementation of iostreams instead of the one that comes
with your compiler. It does contain some non-template code so you have to build STLport
iostreams library in <b>"src"</b> directory to link your project with.
Below are step-by-step instructions to build STLport library:
<ol>
<li>Do make sure you have followed instructions for default installation above.</li>
<li>Go to <b>"src"</b> subdirectory. It contains various makefiles for different compilers.
If iostreams library is not yet ported to your compiler (please see <a href="release_notes.html">Release Notes</a> for details), you may revert to use "wrapper" mode or port it. Please refer
to <a href="porting_iostreams.html">porting document</a> to learn how to port iostreams library
to your compiler. The porting procedure is usually straightforward on UNIXes.
</li>
<li>Using appropriate makefile, do <b>"make clean all"</b> to build STLport libraries
(makefiles are set up to build several different flavors - debug/nondebug,
static/dynamic versions).
<i>Note : your make program may have different name, like "nmake" for Visual C++, so, with "nmake", do "nmake clean all"</i>
</li>
<li>If make fails, you may try fixing the build yourself and/or report it to <a href="http://www.stlport.com/cgi-bin/forum/dcboard.cgi">STLport Forum</a>.
</li>
<li>Do <b>"make install"</b> to install resulting libraries into <b>"lib"</b> subdirectory. On Windows, this step also copies .dll libraries to system directory to be accessible at runtime.</li>
</ol>
<h3>Testing STLport</h3>
STLport provides two <b>test suites</b> - <a href="testsuite.html">regression
test</a> and <a href="eh_testsuite.html">exception handling test</a>.<br>
It is recommended that you build and run them in place to verify your new STLport installation is OK.
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

86
STLPORT/doc/sgi_stl.html Normal file
View File

@@ -0,0 +1,86 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: SGI STL Overview</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">SGI Standard Template Library</span>
<h3>Overview</h3>
<p class="FOOTNOTE"><i>Silicon Graphics has made its implementation of the C++
Standard Template Library freely available to the public. The SGI
Standard Template Library features thread safety, improved memory
utilization, improved run-time efficiency, and new data structures,
including hash tables; it also includes a comprehensive conceptual
taxonomy of generic software components.</i></p>
<p><font size="1">cite from SF BA <a href="http://www.centeradv.com">Center
for Advanced Technology</a>&nbsp; C++&nbsp; ISG presentation</font></p>
Visit SGI <a href="http://www.sgi.com/Technology/STL">Standard
Template Library User's Guide</a> page to learn more about SGI STL. That
excellent site contain full STL documentation, distribution to download
and useful links.
<h3><a name="efficiency"></a>Efficiency</h3>
<p>These are major improvements that make SGI STL the most efficient:</p>
<ul>
<li><b>Rich set of algorithm specializations.</b> What everybody is
looking for in generic library,&nbsp; it's the <b>generic interface</b>,
not the <b>same code</b> for every type instantiated. Utilizing&nbsp;
<b>__type_traits</b> technique, SGI STL optimizes <b>copy(T*, T*, T*
)</b> call for <b>T</b> being builtin type into a single <b>memmove()</b>
call, and so on.</li>
<li><b>Node allocators.</b> SGI STL implements allocator&lt;T&gt; as a
wrapper over&nbsp; thread-safe node allocator engine which is
fine-tuned to handle allocation of relatively small chunks of memory
very efficiently.</li>
</ul>
<h3><b><a name="thread_safety"></a>Thread safety </b></h3>
<p>Please refer to SGI site for <a href="http://www.sgi.com/Technology/STL/thread_safety.html">detailed
document on thread safety</a>. Basic points are:</p>
<ul>
<li><b>simultaneous read access to the same container from within
separate threads is safe;</b></li>
<li><b>simultaneous access to distinct containers (not shared between
threads) is safe;</b></li>
<li><b>user must provide synchronization for all accesses if any
thread may modify shared container.</b></li>
</ul>
<h3><b>Exception safety</b></h3>
<p>SGI STL is exception-safe. STLport <a href="exception_safety.html">document
on exception safety</a> describes STL guarantees and client requirements.</p>
<h3><b>Standard compliance</b></h3>
<p>SGI STL is committed to close compliance to C++ Standard. With the
latest release in Feb 99 and experimental effort continued through 2000,
it incorporates the latest "word of the standard".</p>
<h3><b>Reliability</b></h3>
<p>SGI STL is being shipped with GNU C++ since 2.8.x.<br>
That is enormous amount of installations which provide solid feedback to
get bugs fixed.</p>
<h3><b>Important extensions</b></h3>
<p>SGI STL provides the following extensions compared to the C++
standard:</p>
<ul>
<li><b>hashed containers:</b> hash_set, hash_multiset, hash_map,
hash_multimap.</li>
<li><b>single-linked lists</b> - often very reasonable tradeoff.</li>
<li><b>ropes:</b> alternative representation of strings which scale
well to very large strings</li>
</ul>
<h3>Public distribution</h3>
<p>SGI STL is being distributed free of charge and restrictions:</p>
<p><b><i>Copyright (c) 1994 Hewlett-Packard Company</i></b></p>
<p><b><i>Copyright (c) 1996,97 Silicon Graphics Computer Systems, Inc.</i></b></p>
<p><i><font size="2">Permission to use, copy, modify, distribute and
sell this software and its documentation for any purpose is hereby
granted without fee, provided that the above copyright notice appear in
all copies and that both that copyright notice and this permission
notice appear in supporting documentation. Hewlett-Packard Company makes
no representations about the suitability of this software for any
purpose. It is provided "as is" without express or implied
warranty.</font></i></p>
<p><i><font size="2">Permission to use, copy, modify, distribute and
sell this software and its documentation for any purpose is hereby
granted without fee, provided that the above copyright notice appear in
all copies and that both that copyright notice and this permission
notice appear in supporting documentation. Silicon Graphics makes no
representations about the suitability of this software for any purpose.
It is provided "as is" without express or implied warranty.</font></i>
</p>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

43
STLPORT/doc/story.html Normal file
View File

@@ -0,0 +1,43 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: History</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">STLport Story</span>
<address class="FOOTNOTE">by Boris Fomitchev</address>
<h3>First Step</h3>
I started STLport project in Jan'97, shortly after first release of SGI STL.
Back then, I was working for <a href="http://www.elbrus.ru">Moscow Center for SPARC Technology</a>.
I made a quick-and-dirty port of SGI STL for gcc-2.7.2 and SUN CC 4.2 for internal use.
Very proud of myself, I submitted my changes back to SGI team.
Matt Austern (still leading library developer) was kind enough to respond to me.
However, I realized SGI team were not interested at all in extra portability. So I built my own Web page and started distributing my humble port from there.
I named it "Adapted SGI STL" (weird, huh ?). Reasonable name appeared only a few months later.
<h3>"With a little help..."</h3>
Once the initial port availability was announced, I started to receive strong feedback from
users. Many people happened to be interested and willing to contribute to this development.
With their help, it only took me a few months to port it to most popular compilers.
At the same time, I started to realize infinite potential for improvements in this library.
<h3>Going Ahead</h3>
The first time STLport went ahead of SGI STL was introduction of exception handling support. Dave Abrahams implemented exception-safe standard containers and algorithms on the base of SGI STL to present to ANSI C++ Commitee. At the time, no EH guarantees/requirements were present in the draft standard. Dave proposed to merge his changes into STLport, for maintenance reasons, which I happily did. In the meantime, SGI somewhat independently implemented the exception-safety guarantees in the proposal Dave brought before the committee with Greg Colvin. The STLport exception-handling testsuite was instrumental in getting these implementations right. Dave and Greg managed to get the proposal approved by the standards commitee, due in part to the existence of two working implementations.
<h3>Making the Difference</h3>
Debug Mode was implemented after "Safe STL" (debug version of HP STL, by Cay Horstmann) in 1997. It is still the feature which makes STLport different from all other standard libraries. No matter how simple the idea of this mode might look, it took several complete redesigns to get it to its current level. I am very pleased to be able to present this unique feature.
<h3>Letting Go</h3>
I have to confess that there was a time when I was serious about selling STLport as a commercial library.
It took me two years to get a slight idea of how the industry works. So I decided to stick with open source.
<h3>Growing Up</h3>
Using open source component does not necessarily mean relying on self-maintenance and volunteers good will.
In 1999, STLport Consulting, Inc. was founded. We offer STLport support contracts as well as custom development and
other consulting services. You may reach us at <a href="mailto:consulting@stlport.com">consulting@stlport.com</a>.
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

View File

@@ -0,0 +1,52 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Testsuite</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">STLport Test Suite</span>
<p>
<font size="1"><em><strong>by Boris Fomitchev</strong></em></font>
</p>
<h2>Abstract</h2>
<p><b>STLport test suite performs extensive test of</b> <b>basic STLport
functionality</b>.<br>
One of the problems one is faced when deciding whether using STL is the
question of reliability. It's a common place when compiler crashes on
templates.<br>
Obvious question is - how can I be sure the compiler produces valid code
when it does <b>not</b> crash ?&nbsp; <br>
This test suite answers to this question. It doesn't use too complex
construct with STL items. But it does instantiate about every item and
checks if it works properly.</p>
<h2>The Story</h2>
<p>This test suite is derived from <a href="http://www.cygnus.com">Cygnus
Solutions</a> STL test suite, which is based on <a href="http://www.objectspace.com">ObjectSpace
</a>STL examples. The changes that have been made mostly involve
restructuring. You can run a single short test for particular STL
construct , or try to compile them all and link to single executable.
You may also test if your compiler can handle extremely long source
files by compiling a single source including all others.</p>
<h2>Portability</h2>
<p>Makefiles for most supported compilers are provided with the suite. Look for <i>.mak</i>
files in the distribution. It should be not difficult to adjust one of
them to your compiler.</p>
<h2>How To</h2>
<p>The test suite comes in directory <b>test/eh</b> with your STLport
distribution.<br>
You may have to edit appropriate makefile to fit your compiler and
include directories . <br>
After you've done, try "<i>make check</i>". This target is
output (<i>stl_test.out</i>) of single executable containing all the
tests. <br>
Compare it with <i>stl_test.exp</i> output. There should be no
differences. Note that some tests use random number generators. <i>stl_test.exp</i>
is for those having <b>lrand48()</b> function. If your configuration
uses <b>rand() </b>function, you should compare the result with <i>stl_test.rand.exp</i>.
Obviously, <b>there is no guarantee for matching of different rand()
implementations</b>.<br>
If some test fails to compile, you may try "make <i>test_name</i>.out"
to produce single test executable and run it.</p>
<h3>Linux (glibc)&nbsp;note</h3>
<p>GNU&nbsp;libc, being used widely on Linux platforms, has different
random generator implementation than one used on most UNIX platforms.
You should ignore the output difference of tests using random generator.
</p>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

198
STLPORT/doc/thanks.html Normal file
View File

@@ -0,0 +1,198 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Acknowledgements</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Acknowledgements</span>
<p>Special thanks to:</p>
<ul>
<li><b>Alexander Stepanov</b> for his fundamental work;</li>
<li><b>Matt Austern</b>, for his valuable collaboration</li>
<li><b>Dave Abrahams</b>, for his continuous help, exception-handling code contribution,
EH testsuite and Metrowerks support</li>
<li><b>Cay Horstmann</b>, for debug approach example</li>
</ul>
Thanks to all <b>contributors</b> who
have submitted bug reports, patches and suggestions:
<table border="0" cellpadding="4" cellspacing="0" align="center">
<tr>
<td align="left">
<dir>
<li>Matt Austern</li>
<li>Lo Russo Graziano</li>
<li>Kevin G. Walker</li>
<li>Enno Rehling</li>
<li>Jan Didrik Andersen</li>
<li>Cheng-Yen (Vinnie) Liang</li>
<li>Jeff Hanson</li>
<li>Matt Brincho</li>
<li>Oleg Alexsandrovich</li>
<li>Martin Abernethy</li>
<li>Eelco de Lange</li>
<li>Warren Young</li>
<li>Dave Abrahams</li>
<li>Damian Gilmurray</li>
<li>Mark Wells</li>
<li>Jeremy Grodberg</li>
<li>Ralph Zeller</li>
<li>Julian C. Cummings</li>
<li>Josh Levenberg</li>
<li>Egor Elagin</li>
<li>Sean Donnelly</li>
<li>Eric Bloodworth</li>
<li>Harri Heimo P Hakula</li>
<li>John Maddock</li>
<li>Per Sabelstrom</li>
<li>Franck Lebastard</li>
<li>Jeff Greif</li>
<li>Marcelo Cantos</li>
<li>John Stevenson-Hoare</li>
<li>Ryszard Kabatek</li>
<li>Eugene Lazutkin</li>
<li>David Polock</li>
<li>Steve Barnes</li>
<li>Chris McKillop</li>
<li>Dan Candela</li>
<li>Joost Kraaijeveld</li>
<li>Raymond Nijssen</li>
<li>Paul Maragakis</li>
<li>Max Moroz</li>
<li>Mark Elbrecht</li>
<li>Steven Youngs</li>
<li>Joe Buck</li>
<li>Doni Grande</li>
<li>Catherine Lung</li>
<li>Joachim Achtzehnter</li>
<li>Steven Woolgar</li>
<li>Michael Carr</li>
<li>Simon-Pierre Cadieux</li>
<li>Tinny Ng</li>
<li>Bjorn Fahller</li>
<li>Alexander Vanic</li>
<li>Roland Hoogendijk</li>
<li>Chichiang Wan</li>
<li>Chris Atwood</li>
<li>Esser Arno</li>
<li>Gary Powell</li>
<li>Guy Gascoigne</li>
<li>Ilya Sharapov</li>
<li>Aldona Majorek</li>
<li>Tsutomu Yoshida</li>
<li>Vasile Gaburici</li>
<li>Clive Bluston</li>
<li>Harold Putman</li>
<li>Hongyao Zhu</li>
<li>Stephane Rouleau</li>
<li>Robert Kopac</li>
<li>Steven Serocki</li>
<li>Matti Rintala</li>
<li>Ilya Chvetsov</li>
<li>Edward Ball</li>
<li>Mike Pyle</li>
<li>Todd Richmond</li>
<li>Gavin Wood</li>
<li>Alain Miniussi</li>
<li>Michael Entin</li>
<li>Kevin Wooten</li>
<li>Kees de Bruin</li>
<li>Parcival Willems</li>
<li>Anton Sergeev</li>
<li>Todd Rider</li>
<li>Niran Bala</li>
<li>Will Fike</li>
<li>Petr Ovchenkov</li>
<li>Marc W. Mengel</li>
<li>Willie Arbuckle</li>
<li>Matthew Kelly</li>
</dir>
</td>
<td align="left">
<dir>
<li>Mikhail Leonov</li>
<li>E.Musser</li>
<li>Andrew Waters</li>
<li>Bruce Alderson</li>
<li>Ben Nason</li>
<li>Danny Smith</li>
<li>Andrey Khovanskiy</li>
<li>Ben Liblit</li>
<li>Mike Steed</li>
<li>Sean Cavanaugh</li>
<li>John Hynes</li>
<li>Glen Summers</li>
<li>Dirk Schreib</li>
<li>Jeff Sparkes</li>
<li>Ricardo Gayoso</li>
<li>John Wiegley</li>
<li>Craig Powers</li>
<li>Bryan Byrnes</li>
<li>Vijay Ramachandran</li>
<li>Ed Brey</li>
<li>Matthew Collins</li>
<li>Jack Andrews</li>
<li>Bernd Mohr</li>
<li>Charles Burfoot</li>
<li>Brett Denner</li>
<li>Serge Pashkov</li>
<li>George Trojan</li>
<li>Bruce Dawson</li>
<li>Adam Gates</li>
<li>Levente Farkas</li>
<li>Mark Laffoon</li>
<li>Holger Stasch</li>
<li>Anton Lapach</li>
<li>Ingo Donasch</li>
<li>Jack Andrews</li>
<li>Jason Taylor</li>
<li>Thomas Witt</li>
<li>Mat Marcus</li>
<li>Jesse Jones</li>
<li>Jim Cole</li>
<li>Rene van Oostrum</li>
<li>Kenny Simpson</li>
<li>Gerd Hoeren</li>
<li>Tom Widmer</li>
<li>Vadim Egorov</li>
<li>Dean Sturtevant</li>
<li>Gavin Collins</li>
<li>Alberto Barbati</li>
<li>Todd Wilson</li>
<li>Per Liboriussen</li>
<li>Michael Rauch</li>
<li>Tanes Sriviroolchai</li>
<li>Patrick Luby</li>
<li>Joachim Achtzehnter</li>
<li>Phillip Toland</li>
<li>Val Melamed</li>
<li>Johannes Brunen</li>
<li>Sergei Nikolaev</li>
<li>Levente Farkas</li>
<li>Rainer Schnitker</li>
<li>Carlos Paniago</li>
<li>Yotam Medini</li>
<li>Anton Ephanov</li>
<li>Doug Gilbert</li>
<li>Steven Green</li>
<li>Andreas Malzahn</li>
<li>Whitney Kew</li>
<li>Dan Ingold</li>
<li>Ed James-Beckerman</li>
<li>John Daniel</li>
<li>Marcello Pietrobon</li>
<li>Mukesh Kapoor</li>
<li>Jens Maurer</li>
<li>Stephen Baker</li>
<li>Thomas Meischner</li>
<li>Bruce Florman</li>
<li>Paul Ghezzi</li>
<li>Tobias Ernst</li>
<li>Steve Loves</li>
<li>Piers Haken</li>
<li>Michael Kopp</li>
<li>Synge Todo</li>
</dir>
</td>
</tr>
</table>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

View File

@@ -0,0 +1,27 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Getting Started: Compiling with STLport</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Compiling Your Project with STLport</span>
<p>
Please make sure
<b>"stlport"</b> directory containing header files
is the <b>first</b> one in your include search path when you compile the project</p>
<p>
<i>Note: for SunPro CC 5.0 and higher, there is special directory <b>"stlport/SC5"</b>
to be set in search path due to specific SUNpro search rules)</i>
</p>
<h3>Special Notes for STLport as a dynamic library</h3>
<p>
When using STLport as a dynamic library, please make sure you put in the <b>PATH</b>
and distribute it together with your executable. This extra dependency is certainly
in favor of using static linking. However, if your project deploys any
Win DLL's using STLport, you <b>have</b> to use STLport as Win DLL, too. This is because
it contains some static variables (like <b>cerr</b> stream) which would otherwise be duplicated
in every DLL. This problem does not arise in Unix world.</p>
<p>
<i>[ Visual C++ specific ]</i> If using STLport as DLL, please be sure to use <b>/MD[d]</b>
compiler option to pick up all dynamic libraries.
</p>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

View File

@@ -0,0 +1,48 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Native C++ Library Interface</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">STLport and Vendor's C++ Library</span>
<p>Modern compilers come with more or less complete ANSI standard C++
library.&nbsp; <a name="native"></a>Below, term "<b>native</b>"
is being used to refer to standard C++ headers and object code libraries
supplied with the compiler.</p>
<p>The problem that arises when you want to use STLport with them, is
that putting STLport into namespace <b>std::</b> may violate <b>ODR</b>(One
Definition Rule). This can happen if some parts of <a href="#native">native</a>
library (such as <b>string</b>, <b>locale, iostream</b>) are
instantiated already and <b>compiled into</b> native runtime C++ support
libraries.</p> <br>
Example : Visual C++ 6.x
<p> In practice, if the compiler supplies&nbsp; new-style <b>&lt;iostream&gt;,</b>
you have this problem almost for sure - typically that means you have
some <b>&lt;string&gt;</b> stuff compiled into native C++ object
library. The clash can happen even if you do not utilize new-style
iostreams.</p>
<p>Even if you use STLport with its own iostreams, which means your code do not
use any part of native C++ standard library, you may still encounter clashes at
link stage. Just magine using 3rd-party lib which was compiled with
native library.<br> </p>
<p><b>To resolve this namespace conflict, after long experiments,
it was decided to put STLport into its own namespace "_STL::"</b>.
<br>
This provides seamless drop-in compatibility and ensures no conflicts
are ever possible.</p>
<p>To provide more portability for your code and to make sure
you use <b>_STL::</b> components,
not the native <b>std::</b> one, <i>STLport provides macro redefinition
of <b>std::</b> into <b>_STL::</b></i>.
This is completely transparent to the user. </p>
<p>
As STLport code uses namespace different from <b>std::</b>,
it never clashes with native library - neither at compile nor at link time.
</p>
<p>For the most modern compilers which implements Koenig lookup properly, "wrapper mode" w/o STLport iostreams may not be available due to ambiguities during namespace lookup. Example: gcc-3.0.
</p>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>

52
STLPORT/doc/wrappers.html Normal file
View File

@@ -0,0 +1,52 @@
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>STLport: Wrappers Technique</title><link href="doc.css" type="text/css" rel="stylesheet"></head><body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" vlink="#314A30" link="#314A30" text="black" bgcolor="white"><table border="0" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img border="0" height="14" width="1" src="images/trans.gif"><br><a href="../index.html"><img src="images/stl_logo_doc.gif" border="0" height="80" width="80"></a><a href="http://www.stlport.com"><img border="0" height="80" width="461" src="images/t_doc2.gif"></a><br><img src="images/trans.gif" border="0" height="24" width="1"><br><img src="images/black.gif" border="0" height="1" width="776"><br><img src="images/trans.gif" border="0" height="24" width="1"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="10" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776">
<span class="heading">Wrapper Technique in STLport</span>
<p>
Considerable point of non-portability was the lack of default
template class parameters in many compilers. C++ template syntax doesn't
allow an easy way to hide that behind any macro magic.
<br>STLport uses wrapper technique to work around that:<br>
Full functionality for <i>'container'</i> is implemented via class <i>'__container__'</i>.
</p>
<p>For example:</p>
<pre><tt>#ifdef _STLP_DEFAULT_TYPE_PARAM
template &lt;class T, class Alloc = alloc&gt;
#else
#&nbsp; define vector __vector
template &lt;class T, class Alloc&gt;
#endif
class vector {
public:
......
#ifdef _STLP_DEFAULT_TYPE_PARAM
define __vector__ vector
# else
template &lt;class T&gt;
class vector : public __vector__&lt;T,alloc&gt;&nbsp;
{
.....
#define __vector__ __vector
# endif /* _STLP_DEFAULT_TYPE_PARAM */</tt></pre>
So, you are provided with two versions of container: with and without
default parameters. It buys you a way to access full functionality while
not breaking code using the short notation. <br>
If you wish to specify the allocator parameter, use <tt>__vector__</tt>.
For default alloc parameter, use <tt>vector</tt>. <br>
I would recommend that you <tt>#define</tt> some alias for <tt>__vector__</tt>,
to be able to switch easily. <br>
If you don't use different allocators, don't bother.
<p><b>New in STLport 3.2:</b><br>
<tt>_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS</tt> switch is introduced for user to take control
of wrappers behavior with classes that have more than one default template argument. With this switch defined,
STLport will use minimum set of default arguments on template classes that have more than one -
for example map&lt;&gt;, set&lt;&gt;.
This is supposed to help compiling existing standard code which use shortest notation.</p>
<p>Here is the list of compilers that cannot handle <b>dependant</b>
default template parameters:<br>
SunPro CC, BC++ 4.52, VC++ 4.2, xlC 3.1.4, DEC C++ 5.5, Visual Age C++
3.0.</p>
</td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="20" width="50"><br><a href="index.html">Table of Contents</a><br></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="40" width="80"><br><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/black.gif" border="0" height="1" width="776"></td></tr><tr valign="top" align="left"><td width="24"><img src="images/trans.gif" border="0" height="1" width="24"></td><td width="776"><img src="images/trans.gif" border="0" height="5" width="50"><br><span class="copyright">Copyright 2001 by STLport</span><br><img src="images/trans.gif" border="0" height="50" width="80"></td></tr></table></body></html>