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

142
STLPORT/INSTALL Normal file
View File

@@ -0,0 +1,142 @@
**********************************************************************
* INSTALL file for STLport 4.6.0 *
* *
**********************************************************************
STLport-4.6 is a full ANSI C++ Standard library.
This distribution contains STLport sources only, no binaries.
To use STLport iostreams, you have to build STLport library from sources in "src"
directory and link your programs with it.
This is major change since pre-4.0 releases, please read the instructions carefully.
==== Unpacking and installing STLport ==========
1) Unpack STLport archive to a directory accessible during compilation.
NOTE : DO NOT overwrite header files coming with the compiler, even if you made
a backup - this won't work ! Most probably, you've already unpacked the archive before
reading this file though ;)
2) Make sure "stlport" directory of this distribution comes before compiler's one
in your search path when you compile the project;
Note: for SunPro CC 5.0 and higher, there used to be special directory "stlport/SC5"
this is now obsolete, please make sure you do not use it anymore.
3) Make sure you do not rename this "stlport" subdirectory -
that may result in compilation errors.
NOTE : Do NOT attempt to run "configure" ! 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 recognized by STLport source code with no configuring.
Please edit appropriate configuration header for your compiler
directly if you have to make compiler-specific configuration changes.
4) Go to "src" subdirectory. It contains various makefiles for different
compilers. If you are not able to find makefile for your particular
compiler, please use one that looks most similar to your make engine to
create your own.
Verify you can do command line compiles. IDE users may have to do something
special, like add environment variables (for Microsoft) or install
additional compiler components (for Metrowerks), before they can use their
command line compilers.
IMPORTANT :
If you DO NOT plan to use STLport iostreams implementation, you do not have to build the library.
Please do this instead :
4-1) Using appropriate makefile, do "make -f <your compiler name>.mak prepare".
Please do not skip this! On some platforms, it creates necessary symbolic links.
If you do build STLport iostream, this step is performed automatically when you do "make all".
4-2) uncomment _STLP_NO_OWN_IOSTREAMS setting in "stlport/stl_user_config.h" to disable use
of STLport iostreams and to use wrappers around your existing iostreams.
After disabling STLport iostreams, you will use wrappers around your compiler's iostreams
libabry, as in previous STLport releases.
No binary library for STLport needs to be built in this case.
Note though :
- new-style ANSI iostreams may not be available on your system;
- compiler's iostreams are most likely slower than STLport version.
If you have decided to disable STLport iostreams, you may stop reading here.
==== Building STLport iostreams library ==========
Below are step-by-step instructions to build STLport streams library:
5) Using appropriate makefile, do "make clean all" to build the STLport libraries
(makefiles are set up to build several different flavors - debug/nondebug,
static/dynamic versions).
Optionally, do "make install" to copy STLport headers and libraries to shared location.
Note : your "make" program may have different name, like "nmake" for Visual C++.
Examples :
1. If you are building STLport for just one compiler, you may do something like that
(DOS syntax for Visual C++ below):
copy vc6.mak makefile
nmake clean all
nmake install
2. If you plan to build STLport with multiple compilers, use "make -f" :
make -f gcc.mak clean install
make -f sunpro.mak clean install
This will build and install STLport for gcc & SUN CC.
"install" target works on most platforms.
On Win32, it does the following :
- copies STLport headers in "stlport" subdirectory of your compiler's INCLUDE directory;
- copies STLport .lib files in your compiler's LIB directory;
- copies STLport DLLs to Windows system directory so they can be found at runtime.
On UNIX, it does the following :
- copies STLport headers in "stlport" subdirectory of system's local include directory (default is /usr/local/include);
- copies STLport .a and .so files to system local library directory (default is /usr/local/lib);
6) If build fails, you may choose to :
- try fixing the build ;
- wait until somebody else will submit corresponding changes to be incorporated in next STLport
release/snapshot. To use STLport w/o its own iostreams, please do step 3a).
In case you do patch STLport, please submit your patches to support@stlport.com or (better)
to STLport Forum (http://www.stlport.com/cgi-bin/forum/dcboard.cgi)
7) Do "make install" to install resulting libraries into "./lib" subdirectory.
==== Linking your application with STLport library ==========
8) Supply the "lib" subdirectory to the library search path and add desired
library to the list of libraries to link with.
Examples (imagine you have mytest.cpp in the same directory as this file is):
With gcc : gcc -I./stlport mytest.cpp -L./lib/ -lstlport_gcc
With DEC CC : cxx -I./stlport mytest.cpp -L./lib/ -lstlport_deccxx
With SUN CC : CC -I./stlport mytest.cpp -L./lib/ -lstlport_sunpro
.....
[ Visual C++ specific ] For VC++, you do not have to specify "stlport-msvc-XXX.lib" explicitly,
as it is being choosen and forced to link automatically by "#pragma"'s in stlport/config/stl_select_lib.h.
Appropriate version is being selected based on /MD[d] vs /MT[d] options and __STL_DEBUG setting.
All you have to do is to set library search path for the linker.
Example :
cl.exe /I.\stlport mytest.cpp /link /libpath:.\lib /MD
9) If you linked your application with shared STLport library (.so or .dll), please make your .so or
.dll's to be found in PATH at runtime. On Windows, the simplest way to do it
is to copy all .dll's to Windows system directory. Or, you might choose to add directory
containing STLport to the PATH environment string.
10) Have fun !
10/31/03, Boris Fomitchev.

53
STLPORT/README Normal file
View File

@@ -0,0 +1,53 @@
**********************************************************************
* README file for STLport 4.6 *
* *
**********************************************************************
This directory contains STLport-4.6 release.
What's inside :
README - this file
INSTALL - installation instructions
stlport - main STLport include directory
src - source and makefiles for iostreams implementation
lib - installation directory for STLport library (if you use STLport iostreams only)
test/regression - regression test, using wrapper iostreams
test/eh - exception handling test using STLport iostreams
etc - miscellanous files (ChangeLog, TODO, scripts, etc.)
GETTING STLPORT
To download the latest version of STLport, please be sure to visit
http://www.stlport.com/download.html
LEGALESE
This software is being distributed under the following terms :
*
*
* Copyright (c) 1994
* Hewlett-Packard Company
*
* Copyright (c) 1996-1999
* Silicon Graphics Computer Systems, Inc.
*
* Copyright (c) 1997
* Moscow Center for SPARC Technology
*
* Copyright (c) 1999, 2000, 2001, 2002
* Boris Fomitchev
*
* This material is provided "as is", with absolutely no warranty expressed
* or implied. Any use is at your own risk.
*
* 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.
*
**********************************************************************

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>

996
STLPORT/etc/ChangeLog Normal file
View File

@@ -0,0 +1,996 @@
The following changes were made in 4.6 since 4.5.3 release:
---
* A few ANSI conformance fixes (thanks Richard Peng)
* Performance optimization for string::reserve (thanks Marc)
---
* icc patches applied (Thanks Blaine Kubesh)
* _thread.c, _thread.h: merged thread redesign from CVS (thanks Petr Ovchenkov)
----
* iostream.cpp, locale_impl.cpp : static initialization made robust for case of
dynamic loader circular depandancies (Thanks Alexey Sarytchev for the report)
----
* _function.h : integration of a new workaround for mem_fun_* family
for compiler having return void bug (Thanks Pavel Kuznetsov).
* stl_solaris.h : v8plus compilation fix (Thanks Mukesh Kapoor)
* num_put_float.cpp : FreeBSD fix
* _construct.h : fixed case for compilers with default integer
constructor bug
---
* fstream.cpp : text file stream position bug correction (thanks Christopher Kohlert)
---
* _num_put.c : Correction of the display of the min 64 bits signed integer values
like numeric_limits<__int64>::min() on WIN32 for instance (thanks Anders Dalvander)
---
* _num_put.c : Add of the '+' sign when requested for the unsigned integer display
(thanks Francois Dumont)
---
* debug : many missing iterator invalidation corrected (thanks Detlev V.Davidson and Francois Dumont)
---
* _new.h : introduction of a new config compiler switch for those which do define
bad_alloc but that do not throw it! (thanks ?)
---
* _new.h : class nothrow_t changed to struct nothrow_t (Thanks Francois Dumont)
---
* _bvector.h : Addition of the |= and &= operator on the _Bit_reference struct (thanks Ed Rice)
---
* Performance bug in type_traits.h fixed (Thanks Francois Dumont)
---
* Added Linux spin lock code ()
---
* Added GCC-3.x configurations
* Fixed HP aCC support
* Added OpenWatcom support
* version numbers bumped
* iostreams ported to EMX (gcc on OS/2) (Thanks Martin Schaffoener)
* iostreams ported to CRAY Unicos C90, T90, and J90 (Thanks Geir Johansen)
* stl_sunpro.h : fixed mbstate definition for SUN 4.2 (thanks lengzq)
* complex.cpp, _complex.h : template<> used for specializations
* _num_put.c : unised locale variable removed (thanks Petr Ovchenkov)
* _algo.h : __reverse beautified (thanks Kabanov)
* dll_main.cpp : force_link() forced to be linked in
* stl_msvc.h : config changes for .NET
* _auto_ptr.h : "struct" changed to "class"
* _istream.c : M_read_unbuffered fixed (thanks Stefan Schwarzer )
* stl_gcc.h : added missing inclusion for SCO platform (thanks Emmanuel Soden)
* _tree.c : optimized insert_unique (thanks Timothy)
* _algo.c : relaxed type requirements for lower_bound, upper_bound, binary_search
* _algo.h : adjacent_find() expressed with compare-function flavour
* cpp_runtime/typeinfo : made adjustments for .NET (Thanks Daniel)
* cstd/cassert : guard removed (thanks Evan Cheng)
The following changes were made in 4.5.3 since 4.5.1 release:
* iostreams ported to Windows CE (thanks Andrew Waters)
* iostreams ported to AmigaOS (thanks Steven Solie)
* iostreams ported to NCR 3.x (thanks Emmanuel Soden)
* _hash_map::operator[] : enhanced to avoid calling default object constructor
(Thanks Yuri Taranenko for the report)
* Identifier "__value" changed everywhere to "__val" to avoid clashes with Microsoft's "managed C++" keyword (thanks Crow for the report)
* Most containers : swap() fixed to swap non-stateless allocators correctly (thanks Scott Meyers)
* _sstream : fix to account for ios_base::app flag properly
* type_traits.h : _IsOKToMemCpy() fixed to only allow memcpy() for same type arguments (thanks Ed Brey for the report)
* stl/_num_put.c, stl/_list.c : workarounds for Debian gcc (thanks Levente Farkas)
* <typeinfo> : fixed MS workaround (thanks Wil Evers, Andrew Ushakov)
* _pthread_alloc.h : added per_thread_allocator class; returns memory to the same thread it's been allocated in.
* _iterator_old.h : restored ->() operator for MSVC (thanks Daniel Anderson)
* a bunch of MPW fixes (thanks Tsutomu Yoshida)
* _config_compat.h : fixed compatibility definition for _STLP_NO_EXCEPTIONS (thanks Nicolas)
* _fstream.c : fixed bug in _M_seek_init (thanks Pavel Kuznetsov)
* _rope.h : rope<>::swap() methods fixed for non-partial ordering case (thanks Eric Musser)
* comlex_trig.cpp : fixed bug on SGI (thanks Mortis)
* A bunch of fixes for HP aCC compilation with -AA option (thanks John Bossom)
* *.c files : added conditional inclusion of corresponding *.h file to fix xlC issues with -tempinc option (thanks Alla Bogolyubov for the report)
* _auto_ptr.h : "struct" changed to "class" (thanks Alex Pinsker for the report)
* _config.h/stl_user_config.h : handling of macro _STLP_WHOLE_VENDOR_STD rectified
* _num_put.c : do_put(const void*) changed to output pointers in hex format (thanks Alex Rosenberg)
* test/eh/test_algobase.cpp : fixed alignment to work on 64-bit architectures
The following changes were made in 4.5.1 beta 1 since 4.5 release:
* _config.h, _epilog.h : new namespace inclusion schema implemented for own iostreams mode
(no std:: redefinition; _STL:: namespace imported into std::, instead of std:: imported to _STL.
C library header files wrappers become obsolete if this mode is used and no own namespace is selected.
They will be moved out to distinct directory in the next release, and default is going to be no own namespace
with own iostreams.)
For some compilers (VC6), this only works with _STLP_NO_OWN_NAMESPACE and _STLP_OWN_IOSTREAMS settings.
* iostreams ported to SCO OpenServer (thanks Emmanuel Soden)
* sparc_atomic.s : added "stbar" to fix multiprocessor crashes on SPARC
* dll_main.cpp : forced link of Bs_G static data members (thanks Sandy Martel). Function wrapped in STLport namespace.
* _alloc.c : fixed _STLP_CHUNK_MALLOC for debug malloc configuration (thanks Markus Sch<63>pflin)
* _config_compat.h : fixed compatibility section for _STLP_NO_OWN_IOSTREAMS
* fstram.cpp , vc6.unicode.mak : fixed bug in wide streams handling for VC6 (thanks Jim Dolter)
* etc/*.txt : files list broken up into several categories for future reorganization
* stl_msvc.h : fixed library selection for .NET (Thanks Franz Zetting)
* _ftsream.h, iostream.cpp : fixed compilation for _STLP_NO_EXTENSIONS case (thanks Ben Dorman for the report)
* char_traits.h : fpos<> operators == made members (thanks Thomas Witt)
* _threads.h : added using directive for Solaris x86 compile (thanks Mukesh Kapoor)
* _threads.h : fixed InterlockedXXX definitions for VC++ 6.0 SP5 (thanks AndreasM)
* gcc-install-apple-macosx.mak : INSTALL_STEP set to install_unix (Thanks Tron Thomas)
* common.mak : default install directory for Unix set to /usr/local
* _string.h : _M_null expressed via _STLP_DEFAULT_CONSTRUCTED (Thanks Anthony)
* _site_config.h : made sure _STLP_NO_THREADS are set if _NOTHREADS is on (Thanks Jeppe Madsen)
* _config.h : _STLP_WIN32THREADS is set (bugfix) ( thanks to Andreas Malzahn )
* _num_put.c, common_rules.mak : patches by Levente Farkas
* etc/STLport-4.5.1.spec : spec file to build STLport-4.5.1 RPM added (thanks Levente Farkas)
* _auto_ptr.h , _debug.c, _debug.h : debug check for auto_ptr pointer added (thanks Gerd Hoeren for the idea)
* debug/_vector.h : invalidation for erase() corrected not to invalidate current iterator (Thanks ALberto Barbati)
* stl_bc.h : restored automatic library link directive for cases when STLport is not a native library
* _auto_ptr.h : template constructor conversion bug fixed (thanks mbergal)
* MIngw32 patches integrated (thanks Wu Yongwei)
* src/complex_impl.h : case for DEC CXX changed to general, instead of extension functions for float and long double, to get it compliled with CC 6.1 (thanks Tony McConnell)
* dll_main.cpp : added __malloc_alloc instantiation (thanks Michael Ehrig)
* _debug.c : fixed race condition in _M_detach (thanks Achim Stremplat)
* test/*/hpacc.mak : fixed flags and libs (thanks Michael Ehrig)
* typeinfo : added fix for MS VC ::bad_cast confusion (thanks Alberto Barbati)
* debug/_vector.h : removed extra guard for MSCV around member template constructor (thanks Alberto Barbati)
* _fstream.h : added extension basic_fstream<> constructors taking protection parameter (thanks Mukesh Kapoor for the idea)
* stl_sunpro.h : added additional C include directory choice for Solaris 6&7 (thanks John E. Bossom)
* _vector.c : added _vector.h inclusion for _STLP_LINK_TIME_INSTANTIATION case (thanks Alex Vanic)
* _num_put.c : fixed overflow case with grouping (thanks Will Evers)
* _istreambuf_iterator.h : fixed distance_type return type (thanks Anthony Williams)
* debug/_vector.h : debug version of push_back() added (thanks)
* Iostreams ported to LynxOS 3.0 (thanks Dmitry Azovtsev)
* wrappers/*.h : added inclusions of the master header to fix xlC 3.x compile (Thanks Dmitry Azovtsev)
* Changes for BCB6 integration (thanks Nathan York)
* Removed all dead code blocks marked by #if OBSOLETE and #if 0
* Updates build spec file for Linux rpm (thanks Levene Farkas, Harold van Oostrom)
* complex_trig.cpp : limits changed to be static, for performance optimization (thanks Sergei Nikolaev)
* _algo.c : eliminated default-constructed iterators, to lift unnecessary restriction (thanks Tonci Tomic )
* _vector.h : fixed bug in assign() : copy used instead of __copy_aux (Thanks Tim Finer)
* stl_sunpro.h : restored _STLP_HAS_NO_NEW_C_HEADERS switch for SUN CC 4.2
* <new> : __stl_new definition put into the namespace (thanks Satoshi Nakamura)
* bcb*.mak : fixed md command and DYN_LINK (thanks Kirby Zhou)
* stl_user_config.h : added _STLP_USE_CUSTOM_CHAR_TYPES_IO switch to optimize iostreams for default case
* debug/_vector.h : fixed debug check bug (thanks Gerd Hoeren)
* _alloc.h : allocator::construct uses std::_Construct (thanks Gert Grossmann)
* stl/_alloc_old.h : restored (thanks Gert Grossmann)
* stl/_threads.h : fixed _STLP_ATOMIC_xxx macros for DEC (thanks Gert Grossman)
* src/_locale_impl.cpp : added missing guards for codecvt<> in _STLP_NO_MBSTATE_T case
The following changes were made in 4.5 release since 4.5 beta 8 :
* _threads.h, debug/_debug.h etc : STLport iostreams library made binary compatible with user code compiler w/o multithreaded switch, for some platforms
* config/stl_msvc.h, <cmath> : corrected _STLP_NO_USING_FOR_GLOBAL_FUNCTIONS for VC++ 6.0 SP5
(Thanks Alberto Barbati)
* src/vc6.mak : RC macro definition restored (Thanks Graham)
* stl/_cmath.h, <cmath> : parts of code moved to <cmath> as <valarray> uses it (Thanks Synge Todo)
* stl/_tree.c : fixed insert_unique() with a hint bug (Thanks Serge Pashkov)
* src/gcc-*.mak : removed -nostdinc++ option
* stl_solaris.h : definition of _STLP_SUNPRO_EXCLUDE made dependant on _XOPEN macro instead of SUN CC macros (Thanks ecohen for the report)
* fstream.cpp : mmap_chunk made to be 1M instead of 16M as was originally intended (thanks Alexey Starikovskiy)
* stl_sunpro.h : _STLP_LIMITED_DEFAULT_TEMPLATES not defined for compat mode anymore ( thanks Michael Kopp)
* dll_main.cpp : added instantiation for _Swap_lock_struct<> (thanks simonb)
* _ostream.c : fixed formatting bug for width()==1
* config/_epilog.h : added option pop section for Borland.
* stl/_threads.h : fixed InterlockedXXX declarations for MS .NET (thanks Piers Haken)
* vc7.mak makefile added for MS VC++ 7.0 (.NET)
* fixed _STLP_ITERATOR_CATEGORY, etc. for Mwerks CodeWarrior 5.0
* stl/_num_put.c : fixed operator<<(void*) to use _STLP_LONG_LONG where available.
* _STLP_WHOLE_VENDOR_STD option is back supported (Thanks anton ephanov for the input)
* _cmath.h : added guard to mask additional overloads (thanks Tim Smith)
* stl_solaris.h : mbstate_t stuff defined here, old-style C headers used (Thanks Mukesh Kapoor)
* type_traits.h : __default_constructed() inlined (Thanks Matt Davies)
* new.h : fix for gcc-3.0 to look in backward directory (Thanks Ken)
* stlport/using/h/streambuf.h added (Thanks Gennadiy)
* A bunch of changes for Borland static and DLL compile (Thanks Nathan York)
* stl/_algo.c : fixed find_end() bug (Thanks Alberto Barbati)
* stl/_queue.h : priority_queue<>::_comp renamed to "comp" as standard states (thanks Todd Greer)
* _limits.c : added correct data member representations for AS400 and Alpha machines (thanks Holger Stash)
* _vector.h : added check to avoid calling allocator<>::deallocate(0) (thanks Stephen Cleary)
* config/_prolog.h, config/_epilog.h : added push/pop pack(8) pragmas for MSVC (thanks Todd Greer, Alberto Barbati)
* gcc.mak's : default spelling for "-pthreads" option changed to "-pthread" as more platforms use that.
The following changes were made in 4.5 beta 8 since 4.5 beta 7 :
* stl/_fstream.c : _M_underflow bug fix for custom codecvt facets (thanks Alberto Barbati)
* bcc55.mak : c_locale.c added to the link command (thanks Steve Loves)
* _iterator_base.h & many other places : iterator tags are being accepted by const reference
instead of value, to fix segmentation faults experienced on certain platforms with beta7.
That also should improve efficiency on same platforms (apparently, empty unreferenced
objects with no constructors/destructors were copied on the stack when passed by value).
Accompanied change eliminates hardcoded deference hack used in previous beta.
Thanks everybody who reported this.
* stl_user_config.h : added _STLP_GCC_USES_GNU_LD switch. This is for those platforms
where native linker does not let gcc to implement automatic instantiation of static
template data members (Tru64, AIX, HP-UX).
It is being put in this file as there is no automatic way to check if we are using GNU ld or not.
* _range_erors.h : depandancy on <stdexcept> and <string> removed for own iostreams mode
(thanks Doug Gilbert)
* debug/_list.h : "typename" added in new methods (thanks Doug Gilbert)
* _config.h, src/common_macros.mak : beta version number bumped
* src/ftream.cpp, c_locale_win32.c : fixes for UNICODE compilation (thanks Valo)
* stl_gcc.h, etc : changes for GCC support on Tru64 (thanks Tobias Ernst)
* _alloc.c : for MS VC, malloc_dbg only used when _STLP_DEBUG_ALLOC is set, not for all debug configs
(Thanks Anton Ephanov)
* test/eh/gcc.mak : directories stuff fixed (Thanks Brodie)
* stl/_complex.h : fixed declarations for long double specializations (Thanks Tsutomu Yoshida)
* locale_byname.cpp, etc. : fixes for Apple compilers by Tsutomu Yoshida.
* _ios_base.h : __evenk id changed not to clash with MS VC++ 7 (thanks Paul Ghezzi)
* _fstream.c : added basic_filebuf constructor workaround for compiler which do not initialize builtins
to zero when default constructed (thanks Alberto Barbati)
* _locale.h : relaxed guerd around templated locale constructor (thanks Alberto Barbati)
* stl_mwerks.h : changes to accomodate CodeWarrior 6.2 (thanks cprosser)
* stl/_cmath.h : extracted from <cmath> for better decoupling
* stl/_std_prolog.h, stl/_std_epilog.h : hooks for future alternative namespace inclusion style.
* config/stl_gcc.h : gcc-3.0 now supported
* src/gcc-beos.h : only static library is being built (dynamic stil don't work) (thanks John Maddock)
* using/iostream : included using/istream and using/ostream
* dll_main.cpp : force_link() fix to prevent numeric_limits static members and
_M_increment/decrement from _tree.c from being optimized out by VC++
(thanks Sofus Mortensen, Alberto Barbati )
* _alloc.c : added CHECK_NULL_ALLOC for _STLP_CHUNK_ALLOC with malloc, to throw exception if malloc returns 0 (thanks ghunt)
* stl_bc.h, <exception> : fixed Borland C++ import of unexpected handler stuff
* stl_ibm.h, etc. : fixes for IBM VisualAge 5.02 to compile
* type_traits.h : bool2type<> changed to be parameterized on int, to work around SUN CC bugs (probably others, too)
The following changes were made in 4.5 beta 7 since 4.1 beta 6 :
* sparc_atomic.s : file missing from the distribution restored
* etc/ subdirectory created; miscellanous files moved there
* STLport ported to BeOs, complete with iostreams (thanks John Maddock)
* Macro _STLP_NO_SGI_IOSTREAMS renamed to _STLP_NO_OWN_IOSTREAMS, old references to SGI removed;
* "prepare" target added to all makefiles in src/; should be run before using STLport;
on most platforms it's empty, on some of them it creates necessary symbolic links, etc.
* stl/_deque.h : deque<>::erase bug (introduced in 4.1b4) fixed (thanks to BruceFlorman)
: default parameter in constructor bug fixed (Thanks to Alex Vanic)
* stl_msvc.h : explicit template function agruments enabled for VC++;
* stl_wince.h : added <windows.h> inclusion
* stl/_limits.h : numeric_limits<bool>::digits changed from 0 to 1 (Thanks Mukesh Kapoor)
* stl/_function_base.h : added __identity_element() (extension name), _numeric.h : this one used instead of identity_element() (Thanks Hafeez)
* stl_msvc.h : explicit template function agruments enabled for VC++;
use_facet<> now fully conforms to the standard with VC++. (Thanks Jeff Kohn for the input)
* fstream.cpp : LARGE_INTEGER used to work around Intel shift instruction bug (thanks Thomas Meischner)
* fstream.cpp : ULL macro fixed for Win32
* fstream.cpp : Added test for for INVALID_HANDLE_VALUE and NULL base and _M_view_id,
for _M_close on Win32 (Thanks Stephen Baker)
* fstream.cpp : Fixed corner case with mmap() on EOF (Thanks Jens Maurer)
* _istream.c : fixed _M_read_buffered sssso that it does not skip delimiters (Thanks Gerd Hoeren)
* stl/_string.h : operator __std_string() uses constructor with a size to correctly initialize string containing null chars (Thanks Armin)
* iomanip : added operator for setfill object and istream (was ostream only) (Thanks Mukesh Kapoor)
* stl/_locale.h , stl_intel.h : fixes for Intel 5.0 compiler (Thanks Anton and Marcello Pietrobon)
* stl_solaris.h : added _STLP_NO_NATIVE_WIDE_FUNCTIONS
* New makefiles added for Intel C++ 5.0 and VC++ 6.0 in src/, test/eh, test/regression (Thanks to Marcello Pietrobon)
* _STLP_NO_LONG_DOUBLE case handled for STLport iostreams as well (thanks John Daniel)
* SUN CC compiler template cache is being properly cleaned up (Thanks Whitney Kew)
* dll_main.cpp : added extern "C" around DllMain() (Thanks Danny Smith)
* type_traits.h : added bool parameter to shut up warnings on some compilers (Thanks glassman)
* stl/_rope.h/.c, src/mrcpp.mak, src/mrc.mak, stl/_tree.h : MPW & MRC fixes by Tsutomu Yoshida
* stl_gcc.h : added path for <exceptions> et al for gcc-2.95.3 on FreeBSD (Thanks to
* _tree.h /_tree.c : pointers used as return values instead of iterators for implementation
functions, for efficiency.
* _algo.h/.c : added leading underscrore to some symbols (Thanks to Ed James-Beckerman for the report)
* dll_main.cpp : fixed nothrow object initialization (Thanks to Dan Ingold)
* beta suffix in common_macros.mak updated (thanks to Whitney Kew)
* c_locale_win32.c : incomple fix for locale completed (thanks to Alberto Barbati)
* c_locale.h : _Locale_ALPHA definition for VC++ and mingw32 fixed (thanks Danny Smith)
* _threads.h : fixed _DECTHREADS block to work on both DEC and HP
* _hash_set.h : fixed typo in MSVC++ bug workaround ( Thanks to Jon_Hanson for the report)
* stlport/strstream.h : fixed inclusion for MSVC 6 (Thanks Joachim Achtzehnter)
* _config.h : _STLP_RETHROW changed to avoid warnings with NO_EXCEPTIONS (thanks Richmond)
* _hashtable.c : prime list definition made consistent (thanks Rainer Schnitker)
* stl_hpacc.h : _STLP_FORCE_ALLOCATORS workaround used for Version 3.15 also (thanks Rainer Schnitker)
* stl/_string_io.c : fixed using directive in operator >>() (thanks Rainer Schnitker)
* debug/_deque.h : a check in erase() fixed (thanks Andreas Malzahn)
* debug/_list.h : added remove() to do iterator invalidation; range erase() fixed to do invalidation
* stl_watcom.h : added switches; disabled own iosterams by default;
enabled ->() operator for iterators (thanks Steven Green)
* <exception> : added throw spec for what(); stl_sgi.h : made _STLP_NO_EXCEPTIONS depend on __EXCEPTIONS macro (Thanks Anton Ephanov)
* _string_io.c : operator << : fixed width() interpretation bug
* stl_hpacc.h/cmath : fixed HP aCC settings for -AA option (thanks Doug Gilbert)
The following changes were made in 4.1 beta 6 since 4.1 beta 5 :
* _istream.h, _ostream.h, _ios.h, _fstream.h : guard macros fixed to not clash with .h files in "stlport" directory
Also all uses of those macros fixed. (thanks to Gerd Hoeren for the report)
* _debug.c/_debug.h : fixed swap() for rb_tree and list (thanks to Gerd Hoeren for the report)
swap() changed not to invalidate any iterators, as prescribed by the standard
* forced _REENTRANT to be defined when compiling with STLport iostreams and _STLP_DEBUG
(without _STLP_DEBUG it seems to be binary compatible even without that)
* facets_byname.cpp source introduced to replace all xx_byname.cpp files;
restored separate facets .cpp complilation (they used to be included in locale_impl.cpp)
* introduced _STLP_USE_PERTHREAD_ALLOC to optionally use per-thread allocator
(_Pthread_alloc from _pthread_alloc.h) as the deafult node allocator. Only works with pthreads for now.
* Switches _STLP_DONT_REDEFINE_STD and _STLP_WHOLE_VENOR_STD are back (thanks to Anton Ephanov for the report)
* _vector.h : fixed bug in template version of insert (Thanks to Yotam Medini for the report)
* monetary.cpp : unneded hack for cygwin removed (thanks to Dean Sturtevant)
* <iostream> : fixed _STLP_OUTERMOST_HEADER_ID macro
* cin/cout/cerr redefined if no namespaces and SGI iostreams are used, for all compilers, just in case.
* _sparc_atomic.h : fixed and improved atomic ops for gcc
* test/regression : non-backward-compatible old-style __STL_xx macros use changed to _STLP_xx
* config/st_gcc.h : disabled non-standard "extern" use for non-DLL templates
* mingw32 - used 'windows.h replacement' section in _threads.h (thanks to Danny Smith)
* locale Win32 bug fixed (thanks to Alberto Balbarti)
* mingw32 : _STLP_CONST_INIT_BUG defined for dll (thanks to Danny Smith)
* "make clean" glitches fixed (thanks to Whitney Kew for the report)
* _fstream.c : fixed codecvt bug for variable width encoding
* _STLP_ABORT macro introduced to avoid clashes with third-party sw redefining abort() (thanks to Jerry)
* c_locale_win32 : fixed parse bug in __ParseLocaleString (thanks to Danny Smith)
* extra declspecs removed from templates to fix VC++ 7.0 ; only concrete classes have specifiers (thanks to Holger Stasch for the report)
* stl_msvc.h, _hashtable.h/.c : fixes for IA64 compilation (thanks to Rainer Schnitker )
* fixed bugs in "make install" on Unix (thanks to Carlos Paniago)
* dll_main.cpp : DisableThreadLibraryCalls used for optimization (thanks to Alberto Barbati)
* dll_main.cpp : a dummy function added to force <limits> guts for static VC++ link (thanks to Alberto Barbati)
* gcc-linux.mak : flags fixed (thanks to Levente Farkas )
* stl_msvc.h, stl_intel.h : fixed __ICL version test (thanks to Serge Pashkov)
* versioning schema changed on Windows to have .dll extension (thanks everybody for the feedback)
* NetBSD makefiles fixed
* A bunch of fixes by Tsutomu Yoshida : MPW fixes plus :
* stl/_config.h : I believe the definition for _STLP_STD under debug/non-debug configurations swapped.
* typeinfo.h : added check for _STLP_NO_NEW_HEADER for using declaration.
Otherwise three classes will not be included in the namespace std when #include <typeinfo>.
* _istream.c : use of bind2nd (which required _function.h inclusion) changed to use alternate functor (thanks to Sergei Nikolaev)
* stl_msvc.h : removed erroneous _STLP_USE_TEMPLATE_EXPORT setting which caused major code bloat for native streams builds on VC++ (Thanks to Johannes Brunen for the report)
* _string_io.c : fixed Intel C++ compilation bug in native streams mode
* fstream.cpp : added write-sharing for fstream file handle (Thanks to Leland Best)
* stl_gcc.h : disabled wide function imports for linux (some xx_POSIX macro should be really used; disabled for all linuxes for now). Thanks everybody for the reports.
* KAI C++ 4.0 is now supported on SUN
* MAC OS X compilation fixed (thanks Patrick Luby for the patch)
* HP aCC fixes by Michael Tsirkin
* "INF/NAN" string representation for uppercase changed to "Inf/NaN" to behave like printf() on most systems.
* debug/_iterator.c : fixed SUN 6.0 compiler internal error
* typeinfo.h : global scope used to import bad_cast, etc. (thanks to Val Melamed)
* debug/_list.h : missing template versions of remove_if(), merge() added. Missing regular sort() added.
(Thanks to dgehri)
* debug/_slist.h : missing sort() (template and regular) interface added
* _istream.h : eliminated warning about comparison with unsigned (Thanks to Gerd Hoeren for the report)
* template constructors for containers changed to be one version with default allocator agrument, where possible.
* remaining _STL_ prefixes changed to _STLP_
* Solaris 7 compilation fixed
* fstream.cpp : seek() allowed to seek past the end of the stream (Thanks to Phillip Toland for the input)
The following changes were made in 4.1 beta 5 since 4.1 beta 4 :
* All internal macros changed to have prefix _STLP_ instead of __STL or __STLPORT or __SGI_STL.
That is to allow seamless wrapping on platforms that use SGI STL as native STL/iostreams.
For backward compatibility, most of user-settable __STL_xxx macros are accepted.
* Versioning of shared libraries made UNIX-compliant
* Some temporary lifetime problems in SGI iostreams which may introduce memory corruption, fixed.
* <new> : fixed memory leak bug due to unclever macro expansion in __stl_new (thanks to Joachim Achtzehnter)
* stl/_tree.h : fixed several bugs in new code for corner cases in insert_equal()/insert_unique() with a hint
(thanks to Micheal Tsirkin for the report and patch)
* _vector.h:284 : __copy call fixed to be __copy_aux (thanks to Alex Vanic)
* _config.h : fixed static build bug due to __STL_EXPOSE_GLOBALS_IMPLEMENTATION typo (thanks to Serge Pashkov)
* fstream.cpp: __pioinfo definition for mingw32 fixed (Thanks to Danny Smith)
* *.SUNWCCh files changed to regular files; moved to "stlport" directory
* pthread_alloc : split into <pthread_alloc>/<stl/_pthread_alloc.h>
* lightweight atomic ops used on SPARC v8plus and v9 (gcc and SUN CC)
* Mac OS X support introduced (thanks to Patrick Luby)
* SGI iostreams ported to DJGPP (thanks to Tanes Sriviroolchai)
* SGI iostreams ported to NetBSD (thanks to Michael Rauch)
* FreeBSD build fixed, now builds for wchar_t too
* DEC CXX build fixed; restricted to dynamic lib only
* SGI MIPSpro build fixed; GNU make has to be used
* Set of HP fixes by Michael Tsirkin
* Set of Watcom fixes by Ricardo Gayozo
* Bunch of Apple MRC/MPW fixes by Tsutomu Yoshida integrated
* Bunch of iostream fixes for Cygwin, Borland and Intel 4.5, by Serge Pashkov
* debug/_list.h : added checking versions of pop_back/pop_front (thanks to Per Liboriussen)
* src/c_locale_win32.c : fix for VC5sp3 (thanks to Petr Ovchenkov), fix for day of week order (thanks to Danny Smith),
fix for null-termination in my_ltoa (thanks to Serge Pashkov)
* Some warnings in debug mode fixed (thanks to Marco)
* type_traits.h : IsP functions return types changed to be more portable (thanks to Serge Pashkov for the suggestion),
__cdecl added for Win (thanks to Todd Wilson)
* debug/_tree.h : added owner check for erase() (thanks to Alberto Barbati)
* stl/_ostream.h : << operator specializations added for compilers w/o partial ordering
(thanks to Alberto Barbati for pointing this out).
* "make install" on UNIX : fixed the target not to remove lib directory;
default installdir restored to be /usr/local (thanks to Jeff de Vries for the input)
* _construct.h : extra cast for __STL_SHRED_BYTE removed (thanks to khesin)
* _relops.h header obsoleted; some extra includes removed
* __STL_STATIC_CONST_INIT_BUG use normalized; now it's used for all compilers not able
to treat const members as coplile-time constants; enum used for them (e.g VC++).
Thanks to Dean Sturtevant and Gavin Collins for the ideas.
* stlport/cmath : fixed SUN CC 5.0 compatibility mode bug (thanks to ade for the report)
* debug/_hashtable.h : fixed equal_range() bug (thanks to decraft for the report)
* streambuf.cpp/_streambuf.h : fixes xsgetn() bug (thanks to Vadim Egorov)
* istreambuf_iterator<> : nonconforming behaviour fixed (thanks to Tom Widmer)
* _num_put.c : fixed corner case for 0x8000000 output.
* num_get<> : extra get() and do_get() members for "int" and "short" removed; istream operators changed accordingly
* _itreambuf_iterator.h/_ostreambuf_iterator.h introduced to decouple those from num_get/num_put
* gcc makefiles in src : "-fno-implement-inlines" removed
* Added workaround for gcc's limits.h and SUN Ultra with -mcpu=ultrasparc in 32-bit mode.
* ios_base:: type for constants made "int" for all compilers, as it more efficient and perfectly compliant.
* debug/_hashtable.h : fixed typo in swap() ( thanks to Gerd Hoeren for the report)
* debug/_string.h : +() operators defined unconditionally ( thanks to Gerd Hoeren for the report)
* _istream.c : removed dependancy on _function.h (thanks to Kenny Simpson for the report)
* _limits.c : fixed little-endian representation of infinity & NaN (thanks to Rene van Oostrum)
* _stdio_file.h : fixed postdecr macro for 64-bit Solaris (thanks to Jim Cole)
The following changes were made in 4.1 beta 4 since 4.1 beta 3 :
* Simulation of class partial specialization (thanks to Mat Marcus and Jesse Jones of Adobe)
used to provide following enhancements :
- type_traits are automatically specialized for all pointer types for all compilers,
which makes them able to utilize type_traits-based optimizations when dealing with pointer types,
automatically.
- all functions specialized for pointers and optimized via __type_traits
( like copy()/copy_backward(), _uninitialized_xx) now enjoy this optimization for all compilers!
- generic __value_type()/__difference_type()/__iterator_category() are written so user does not have
to supply any of its own even when partial specialization is not available.
(Note : gcc-2.7 and VC++ 5.x, 6.x have bugs which prevents them from using this enhancement, still)
* <iterator> : by default, non-standard iterator query names like
value_type()/difference_type()/iterator_category() are not used
* <algo> : major revision:
- algorithms without explicit Compare() function expressed via the one that has it where possible.
This considerably reduces header size and reduces code bloat for programs which use both flavours of
those algorithms.
- some function bodies moved between .c and .h
- all functions used internally moved out to _algobase.h, so no other header includes <_algo.h> anymore
- find() specialized for random access iterators regardless of partial spec.
* Dynamic libraries (.DLL and .so) : name versioning used to prevent clashes between STLport versions
* src/ : code regrouped between .cpp files to provide for less executable size with dumb linkers;
* locale subsystem initialization : startup changed to use statically allocated structures as much as possible;
* <stl/_function.h> : basic stuff moved to _function_base.h ;
other STL headers now include _function_base.h instead
* _threads.h : MT support for OS/2 added (only tested with VAC++)
* _stdio_file.h : added support for Solaris in ELF64 mode (thanks to Holger Stasch)
* stl/_hashtable.h : [] operator for hash_map optimized to take no more than find() when element is present
(Thanks to Thomas Witt et al.)
* _ostream.h : fix for default unsigned char (thanks to Holger Stasch)
* all __STL_ABBREVS abbreviations moved aside in _abbrevs.h header.
* Fujitsu C++ Compiler support added (thanks to Holger Stasch)
* Initial SGI iostreams port to OS/390 introduced (thanks to Holger Stasch).
* More on SGI iostreams port to xlC 5.0 (thanks to Holger Stasch).
* Fixes for SGI MIPSpro compilers (Thanks to Ralph)
* Fixes for HP aCC compiler (Thanks to Michael Tsirkin)
* stlport/SC5 directory : removed C library .h files to fix circular inclusion problem with WS6.0 + C programs.
* hash_map::swap() in debug mode fixed (thanks to Anton)
* __STL_COMPILE_INSTANTIATE hack for DEC removed (thanks to Ralph)
* __STL_INLINE_STRING_LITERAL_BUG defined for HP aCC ( thanks to Jason Taylor)
* _bitset.h - member workaround operators made const (thanks to dzwick)
* _bitset.h/.c, hashtable.h -- small bugfixes (thanks to Levente Farkas)
* <exception> - now includes exception.h if only that is available.
* vector::assign() inplemented for vector::iterator when member templates are not available (Thanks to dzwick)
* fstream.cpp : __pioinfo used for MinGW32 (thanks to Danny Smith)
The following changes were made in 4.1 beta 3 since 4.1 beta 2 :
* list<>::clear() : protected access bug fixed
* __STL_MUTEX_INITIALIZER set back to PTHREAD_MUTEX_INITIALIZER for pthreads case,
as some platforms (eg AIX) do not treat zero-initialized mutex as valid one (thanks to Alex Vanic, Jack Andrews for help)
* stl/_limits.c : fixed typo preventing numeric limits constants to be defined for __STL_LITTLE_ENDIAN,
constants initialization fixed (thanks to Ingo Donasch)
* real implementation of locales for Win32 contributed by Anton Lapach (thanks !) merged in.
* stl_user_config.h, _config.h : changed default to not define relops:: operators
in __STL_NO_NAMESPACES mode.
* _numeric_facets.c/num_put.cpp : printing of integer do not use sprintf() anymore
* "install" target implemented for UNIX & VC++ Makefiles. It now installs headers and libraries.
* "src" : files merged to get less compilation time and less space overhead for imperfect compilers
* "debug" flavour of STLport excluded from default build and auto-select ;
please use __STL_USE_DEBUG_LIB and build debug STLport lib explicitly with "make debug_dynamic"
if you really need it). "all" now builds 2 kinds : "release" and "STLdebug", for static and dynamic builds.
* stlport_prefix.h : WIN32_LEAN_AND_MEAN set for Win32 build of STLport library, for speed.
* FreeBSD compile fixed; makefiles added.
* All "__init" changed to "_Init" to fix clashes with DEC conventions (thanks to Holger Stasch)
* _range_errors.h -- fixed to always set __STL_EXTERN_RANGE_ERRORS for SGI iostreams (thanks to Serge Pashkov)
* *gcc* mak : some files renamed to gcc-platform mak
* "extern template" extension used for gcc & standard i/o classes, to reduce code bloat in application's .o
* "extern template" extension used for VC++ & standard i/o classes (was for DLL only)
* _iterator.h : added template(and non-template) assignment operator for reverse_iterator<> (thanks to psw). Obsolete HP-style code moved to _iterator_old.h
* _alloc.h : obsolete code for raw SGI allocators support moved to separate header, for compile-time improvement
* More iostreams code conditionally moved out for clients who only use standard i/o and can set __STL_NO_CUSTOM_IO flag
* <iostream>, <locale> : initialization of locale subsystem made independent of standard streams.
sync_with_stdio call before iostream initialization now works.
* <fstream>, <fstream.h> : added initialization code for locale , same as in <locale>
(thanks to George Trojan for the report)
* fstream.cpp : fixed resource leak in case memory map fails on Win32 (thanks to Mark Laffoon)
* <cmath>, <cstdlib> : added additonal overload signatures required by chapter 26.5 of ANSI (thanks to Levente Farkas for
the suggestion), plus "long long" flavour where applicable.
* __STL_LONG_LONG generalized to support __int64 on Win32 (thanks to Adam Gates for the suggestion)
* _fstream.h : added constructor from file descriptor, as extension (thanks to eric_a_benson)
* _fstream.h : added basic_filebuf<>::fd() file descriptor accessor, as extension (thanks to George Trojan)
* stl_sunpro.h : strstream masked for CC 4.2 to avoid virtual table clash (thanks to Ken)
* stl_msvc.h : member templates allowed for VC5, it's capable of hadling most of them (same restrictions as VC6 -- inline).
* debug/_debug.c : slightly changed format of debug message to please VC++ IDE (thanks for Bruce Dawson for the suggestion)
* src/sgi_mipspro.mak added, for SGI MIPSPro compilation
* merged series of HP/SUN minor fixes by Petr Ovchenkov
* merged series of Intel 4.5 fixes by Serge
* vc_common.mak : -Yd dropped, as obsolete (thanks to psw)
* _range_errors.h:95 : unused argument removed (thanks to George Trojan)
* _string_io.h : refined _WRTLING workaround for Watcom (thanks to Serge Pashkov)
* _threads.h : fixed SGI threads dafines for gcc on IRIX (thanks to Brett Denner for the report)
* <typeinfo.h>, <typeinfo> : mutually-exclusive machanism added to allow including both in same unit.
* Inclusion of SGI iostreams headers put to some order; _streambuf_iterator.h file introduced to resolve circular dependancies
The following changes were made in 4.1 beta 2 since 4.1 beta 1 :
* _algobase.h : fixed __STL_DECLARE_COPY_TRIVIAL definition
(thanks to Charles Burfoot for the report)
* _algobase.h : added copy_backward specializations for builtin types for compilers w/o partial spec.
* _char_traits.h : fixed zero-length check for copy (thanks to Michael Tsirkin)
* msvc_warnings_off.h : fixed "and" typo
(thanks to Charles Burfoot for the report)
* num_put_float.cpp : fixed rounding for "g" format (thanks to Bernd Mohr for the report)
* Initial port of iostreams to xlC 5.0 added (thanks to Jack Andrews)
* stl_sunpro.h : a fix for Forte config (Thanks to Alex Vanic for the report)
* old_hp/iterator.h : fixed iterator_category()/etc. import
* _threads.h : __stl_atomic_t used instead of "unsigned long" (thanks to Alex Vanic for the report)
* using/iomanip : old-streams path used for native iomanip.h (thanks to Michael Tsirkin for the report).
* _bitset.h , _bitset.c : direct STL_THROW replaced with __stl_throw_xxx calls (thanks to Michael Tsirkin for the report)
* range_errors.h/cpp : added functions to support throwing of overflow_error and invalid_argument
* _threads.h : enganced HP-specific guards for HP-UX 11 (thanks to Matthew Collins for the report)
* _string.h : compare() bugfix (thanks to Anton Sergeev)
* moneypunct_byname_w.cpp : rolled back wrong bugfix (thanks to Ken)
* _vector.h, _deque.h, _list.h : nonstandard versions of push_back()/push_front()
moved under __STL_NO_ANACHRONISMS guard (thanks to Ed Brey)
* _tree.c, _list.c, _slist.c, _debug.c : compile-time improvements
* _tree.h/c, _list.h/c, _slist.h/c, _vector.h/c, _string.h/c : using directive for data members
changed to explicit "this->".
* _complex.h : signatures of some methods changed to take value_type instead of const value_type&,
for better conformance (thanks to Petr Ovchenkov)
* Bunch of fixes to compile with gcc on HP-UX 10, 11 (thanks to Petr Ovchenkov)
* Code duplication for __STL_INLINE_MEMBER_TEMPLATES removed -- corresponding methods are always inlined
* stl_sunpro.h : fix for "-compat" mode (thanks to Vijay Ramachandran)
* pthread.h : new wrapper added
* Added custom prolog/epilog for HP aCC to select kthreads on HP-UX 11 (Thanks to Michael Tsirkin)
* <new> : fixed throw specification for bad_alloc (has to be inherited)
* Macro __STL_NATIVE_CPP_RUNTIME_INCLUDE_PATH introduced to specify separate path for <exception>, <typeinfo>, <new>.
(thanks to Bryan Byrnes)
* <stdio_streambuf> : moved from stlport/stl to stlport directory, for SGI compatibility
The following changes were made in 4.1 beta 1 since 4.0 :
* Sun Forte 6.0 C++ configuration provided (thanks to Alexander Vanic for the input)
* _threads.h/_config.h : added efficient support for atomic operations for
DEC CXX and Watcom (thanks to Ricardo Gayoso for the input).
Macros __STL_ATOMIC_xxx introduced to facilitate this.
* _tree.h : optimizations to lower number of comparisons (thanks to Craig Powers for the patch)
* _tree.h, _hashtable.h and clients : added templated find() as an extension (thanks to Michael Tsirkin for the suggestion)
* _tree.h : changed some inlining for performance optimization
* __node_alloc:: allocate broken into two functions for better inlining
* _threads.h : added PTHREAD_MUTEX_INITIALIZER guard for HP workaround
* stl_bc.h : option set to control alignment and virtual table behaviour to be consistent;
library name adjusted to stlport_bcc55_xxx
* _algobase.h, _uninitialized.h, char_traits.h -- optimized out empty memcpy() calls
(thanks to Michael Tsirkin for the report).
* _iterator.h : fixed reverse_iterator::operator+(int, reverse_iterator) resolution
(thanks to Anton Sergeev for the input)
* _bitset.h : bitset<>::test bugfix (thanks to Anton Sergeev for the patch)
* complex_trig.cpp : use of __STL_NO_LONG_DOUBLE made consistent, fixes for Borland on Linux
(thanks to John Wiegley for the input)
* moneypunct_byname_w.cpp : bugfixes for string copying (thanks to Anton Sergeev for the input)
* Watcom-specific fixes (thanks to Ricardo Gayoso for the input)
* src/common_macros.mak : some intermediate targets added (thanks to Jeremy for the suggestion)
* _debug.c : fixes for Win CE (thanks to John Hynes for the patch)
* Intel CC 4.0-specific fixes (thanks to Sean Cavanaugh for the input)
* _list.c : workaround for Watcom C++ (thanks to Mike Steed for the report)
* __STL_NO_NATIVE_WIDE_STREAMS definition fixed (thanks to Glen Summers for the patch)
* cast macros fixed to be more robust (thanks to Geoff Oakham for the report)
* "strstream.h" native inclusion for VC 6.0 fixed (thanks to Sathish T C for the report)
* debug/_string.h : improvement to string with __STL_DEBUG w/o member templates
(thanks to Paul Furnanz for the report)
* debug/_string.h : fixed internal compiler error for VC++ 5.x (thanks to chvetsov for the report)
* cstdio, stl/_streambuf.h : fixes to allow gcc compilation with -ansi flag
* workaround for cin/cout renaming on HPUX11 for -D_REENTRANT (thankf to Jeff Sparkes for the report)
* cin/cout/cerr/clog renaming in STLport for CC 4.0 and SGI iostreams,
to avoid symbol clashes with native ones (thanks to Dirk Schreib for the report)
* type_info scope fixes for VC++ 6.0 (thanks to Sathish T C for the report)
* typeinfo.h using fixes (thanks to Glen Summers for the input)
* stlcomp.h : fixes to allow compilation of .c modules with VAC++, Sun CC, DEC CC, Watcom CC
(thanks to Dmitry A.Steklenev, Jonathan Richardson for the report)
* debug/_tree.h : fixed insert_unique() bug (thanks to Ben Liblit for the report)
* regression/gcc.mak made non-dependant on "." in the path
(thanks to Thomas Matelich for the report)
* hmset1.cpp fixed to compile under OS390 ( thanks to Andrey Khovanskiy for the report)

668
STLPORT/etc/ChangeLog-4.0 Normal file
View File

@@ -0,0 +1,668 @@
The following fix was made in 4.0 since 4.0 Release Candidate :
* _threads.h/_config.h : for all platforms, static mutexes made non-indirect
* _iterator_base.h : made possible to choose between iterator_traits approach
and old-style iterator queries like iterator_category(), value_type(), etc.
(Thanks to John R. Bandela for pointing this out)
* _config.h, stl_user_config.h : introduced __STL_OLD_HP_ITERATOR_QUERIES switch to
allow old-style and new-style iterator queries (for all compilers).
iterator_traits<> made always defined.
* _ptr_specialize.h - specializations of type_traits<> for compilers w/o partial spec
moved into separate file. Added iterator_traits<> specializations for pointer types
for __STL_NO_OLD_HP_ITERATOR_QUERIES case. Macro __STL_POINTERS_SPECIALIZE is now available
to specialize both type_traits and iterator_traits for a pointer to user-defined
type (latter for standard-style iterator queries mode only)
* vc5.mak : __STL_NO_FORCE_INSTANTIATE flag restored
* _site_config.h : if __STL_NO_NEW_IOSTREAMS or __STL_NO_IOSTREAMS specified,
SGI iostreams are being turned off. __STL_NO_SGI_IOSTREAMS moved into stl_user_config.h
(Thanks to Sathish T C for the report)
* stl_watcom.h : _REENTRANT is being set if _MT is set (thanks to Ricardo E. Gayoso for the input)
The following fix was made in 4.0 Release Candidate :
* _threads.h, _alloc.c : fixed use of _STL_mutex_base instead of _STL_STATIC_MUTEX macro
The following changes were made in 4.0 Release Candidate since 4.0 beta 8:
* fstream.cpp : WIN32 fstreambuf::open flag mapping fixed
(thanks to Alberto Barbati for the reports)
* ctype.cpp : fixed classic table regarding ios_base::print/ios_base::space
conflict (thanks to Alberto Barbati for the report)
* cmath : added same workaround for SUN's math exception/std::exception name clash
as was there in math.h before
* _streambuf.c : added "typename" to out-of-line functions (thanks to Michael Tsirkin for the report)
* README fixed to be consistent about SGI iostreams setting (thanks to Ed Brey for the report)
* _bitset.h : fixed SUN CC 4.2 crash with -g option (thanks to Alex Vanic for the report),
fixed bug in bitset<>::reference base bitset typedef
* _threads.h/.c - fixed issue with inconsistent system's macro for initialization
and warning about partially bracketed initializer
* debug/_vector.h : fixed _Vector_nonconst_traits specialization for bit_vector
(thanks for Dave Abrahams for the fix & reminder)
* config/msvc.h - addidional level 4 warnings suppressed (thanks to Ed Brey for the report)
* _ios.h : fixed DLL export decl for MSVC (thanks to Alberto Barbati for the report)
* stdio_streambuf.cpp : compatibility fix for glibc 2.2 (thanks to Bill Shanahan for the patch)
* _iterator_base.h : added iterator<output_iterator_tag, void,..> specialization;
_stream_iterator.h : ostream_iterator changed to inherit from iterator<>
(thanks to Raphael Bossek for the report)
* INSTALL : added some exaples and fixed typos (thanks to Beman Dawes for the report)
* _site_config.h : more consistency checks for MT (thanks to John Maddock for the input)
* _messages_facets.h : added DLL export decls (thanks to John Maddock for the report)
* complex_io_w.cpp : fixed specialization syntax for aCC (thanks to Paul E. Blanchard for the report)
* complex_exp.cpp : fixed pow() bug for negative arguments (thanks to Anton Sergeev for the report)
* _fstream.h/_streambuf.h : MRC/MPW workarounds (thanks for Tsutomu Yoshida for the report)
* using/fstream.h : added missing end-of-line (thanks to Jean-Francois Panisset for the report)
* <typeinfo> : workaround for VC++ 6.0 defining type_info in gobal namespace (thanks to Bosko Ivanisevic for pointing that out)
* _threads.h/_threads.c/pthread_alloc : improved pthreads portability (thatnks to Michael Tsirkin for the patch)
* _debug.h/_debug.c : __STL_ASSERT/__STL_VERBOSE_ASSERT/__STL_VERBOSE_RETUN macros guarded to be overridable by user (thanks to Tony Gould for the input)
* _valarray.h : added assert to operator=
* config/vc_select_lib.h : added _AFXDLL recognition (thanks to Andrew Phipps for input)
* _rope.h : added default constructors to please gcc-2.7.2
* _set.h/_hash_set.h : pointer and reference typedefs fixed (thanks to Anton Sergeev for the report)
* stl/_config.h : stl_user config.h included prior to other parts of configuration
(thanks to Frank Samuel for the report)
The following changes were made in 4.0 beta 8 since 4.0 beta 7:
* Merged changes for 06/08 SGI library snapshot; mostly in locale
* Merged series of fixes/workarounds by Tsutomu Yoshida (thanks!):
* _rope.c - fixed memory leak bug;
* _debug.c/_debug.h - added extra zero-initialization for more robustness;
* _list.h - MPW - specific fixes;
* _hashtable.h - fixed debug renaming clash for __STL_USE_ABBREVS
* EH workarounds to make Apple compilers behave
* _fstream.c : fixed tellg() bug in text mode
* <csignal> : added sig_atomic_t import
* series of fixes for HP aCC 1.23 ( thanks to Michael Tsirkin for the patch ):
_bvector.h : all relops are specialized;
stl_hpacc.h - fixed config;
hpacc.mak : added makefiles for HP aCC in src and test
debug/_iterator.h, debug/_vector.h - removed future errors due to baseclass member use
* <cstdlib> : added import of system() call (thanks to Petr Ovchenkov for the report)
* _REENTRANT is now set by default to be on for all SGI iostreams compilations.
Same is being enforced if SGI iostreams are used.
* _pair.h : added workaround for make_pair in case of char literals
(extension, only works with partial function order)
* config/stl_gcc.h - fixed configuration problem for "g++-3" directory used in Cygnus and Mingw
distributions for gcc-2.95.2, while all other platforms use "g++". Added recognition section.
Thanks to Dave Abrahams for the report.
* config/stl_mlc.h : added support for MLC compiler (thanks to Anton Sergeev for the patch)
* <memory> : auto_ptr simplified (thanks to Kon Tantos for problem report)
* num_get.cpp : included <ostream> to get external symbols right.
* stl_ibm.h : __STL_NO_TYPEINFO added for OS/2 (thanks to Willie Arbuckle for the report)
* stl_bc.h : fixed enforcement of static library until dynamic made to work (thanks to J. Lambert for the report)
* src/stlport.rc : improved version definition to work with mingw32, <winres.h> changed to <windows.h>
* src/mingw32.mak : Made use of stlport.rc for DLL build (thanks to Danny Smith for the suggestion)
* debug/_vector.h : name clash removed for _Base (thanks to Will Fike for the report)
* _monetary.h - added "static const bool intl" member to meneypunct<> templates
(thanks to Anton Sergeev for the report)
* _bitset.h : added forward friend decraration for reference (thanks to Anton Sergeev for the report)
* _tree.h : made _Rb_tree_base_iterator::_M_node initialized in default constructor (thanks to Dean Sturtevant for the report)
* _set.h : reinterpret_cast<> changed to C-style cast (thanks to Dave Abrahams for the suggestion)
* Use of raw SGI allocators (like __node_alloc) as an allocator parameter deprecated,
available only with __STL_USE_RAW_SGI_ALLOCATORS macro. May be removed later.
__allocator<T> still available unless __STL_NO_EXTENSIONS is specified
* _limits.h/_limits.c - alignment fix for Solaris;
* Modified __format_float* routines to take long double as parameter;
(thatnks to Anthony Williams for the patch)
* debug/_iterator.h - wrappers for noncompliant compilers moved under
#ifdef __SGI_STL_NO_ARROW_OPERATOR (thanks to Dave Abrahams for the input)
* _numeric_facets.h - num_put<> , num_get<> virtual members made outline to work
aroung gcc-2.95 bug.
* <cstdio> : undefined obsolete C macros : getchar/putchar & the like.
* ctype.cpp : fixed bug with ctype<char>::is (const char*, const char*, mask)
* ctype.cpp : fixed is(print) for certain platforms where print is a separate flag
* ftstream.cpp : fixed corner case bug for Win32 text output (thanks for Dirk Schreib for the report)
* _streambuf.h, _fstream.h, stdio_strembuf.h : fixed overflow/pbackfail() virtuals definition;
* _bitset.h : _M_copy_from_string fixed for non-member-template case (thanks to Alex Vanic for the report)
* gcc-glibc.mak, common_macros.mak : GLIBC compilation fixes (thanks to Thomas Witt for the report)
* WCHAR_MIN, WCHAR_MAX definitions moved from <limits> to <cwchar>
* char_traits<char>::to_char_type : parameter changed to int
* <cstddef> included in <new> (for size_t)
* _codecvt<>::do_length: fixed first parameter to be const mbstate_t &;
virtual fns moved into .cpp, to work aroung gcc bugs
* _complex.h : fixed complex<>::operator= and constructors signature to take const T&
* _istream.c : fixed formatted input involving binary '0'
* locale_impl.cpp : insertion of time_put<wchar_t> fixed
The following changes were made in 4.0 beta 7 since 4.0 beta 6:
* Merged series of fixes/workarounds by Tsutomu Yoshida (thanks!):
* cmath, _complex.h, stl_apple.h, _deque.h - MPW/MRC specific workarounds
* _bitset.h - removed the obsolete _WordT template parameters.
* _ctype.h, _codecvt.h, _collate.h, _istream.h, _messages_facets.h, _monetary.c
_monetary.h, _numeric_facets.h, _time_facets.h - added workaround for locale's nested class.
* _ostream.c_ostream.h - added proposed modification against the <ostream> circular inclusion problem.
* test/eh/test_deque.cpp - removed the obsolete template argument
* _bitset.h - removed obsolete adaptor (thanks to Alex Vanic for the report)
* _[io]stream.h - removed extra DLL specs (thanks to Danny Smith for the report)
* stl_msvc.h - fixed bug caused static lib to always be selected
* gcc.mak - fixed AR definition for static link
* Added workaround for static locale::id member in DLL for mingw32 (thanks for Danny Smith for the report)
* _string_io.h : added _widen() to get getline() compile with wchar (somewhat missing in b6 , thanks to Mikhail Leonov for reminder)
* threads.h - fixed guards for DreamSega WinCE (thanks to Ben Nason for the report)
* fstream.cpp : fixed truncation for WIN32 (thanks to Bruce Alderson for the report)
* _istream.c/_M_ignore_unbuffered() - fixed count bug
* _istream.c/ readsome() : fixed extra failbit setting on eof
* __get_integer - enhanced using a table; input value made unchanged in case of error.
* __get_base_or_zero - more code factored out
* stl_wince.h : fixed assert() definition for Win CE (thanks to Andrew Waters for the report)
* vc_select_lib.h " fixed __declspec selection for Win CE (thanks to Andrew Waters for the report)
* _rope.c - fixed bug in _S_destr_concat_char_iter (thanks to E.Musser for the fix)
* debug/_vector.h - fixed DLL export for vector<void*>
* _vector.h, _deque.h, _bvector.h - obsolete guards around at() methods removed ;
* type_traits.h - WinCE compatibility fixes for -> operator definition ;
* _vector.h, _deque,h - removed extra casts (thanks to Andrew Waters for the report)
* _algobase.h - optimized lexicografical_compare() overload for char*
The following changes were made in 4.0 beta 6 since 4.0 beta 5:
* Merged changes from SGI STL snapshots 04/03, 04/14, 04/18.
* Iostreams ported to Apple MPW/MRC (thanks to Tsutomu Yoshida for the contribution)
* Iostreams ported to OSF1/Tru64 (thanks to Marc W. Mengel for the contribution)
* Iostreams ported to FreeBSD ( Thanks to Sms for the contribution)
* <deque> : extra template parameter removed
* locale::id, locale::facet : reverted to nested classes as standard prescribes
* _string_io.h : added _widen() to get getline() compile with wchar (thanks to Mikhail Leonov for the patch)
* collate_byname[_w].cpp : fixes for VC++ 5.0 build w/__STL_DEBUG (thanks to Petr Ovchenkov for the patch)
* <complex> : __STL_COMPLEX_NAMESPACE defined before inclusion of impl. header
(thanks to Matthew Kelly for the patch)
* makefiles in "src" : improved to get each compiler to put object files in separate directory :
./obj/$(COMP)/Debug, etc. COMP is given some default value for each compiler, but may be also overridden.
* "src" subdirectory : added stlport_prefix.h file for precompiled header support;
VC++ makefiles make use of them
* stl/_iterator_base.h : provided __STL_NONTEMPL_BASE_MATCH_BUG
workaround for new form of distance().
* <limits> : added cast to WCHAR_MAX definition (thanks for Dave Abrahams for the report).
* stl_user_config.h, stl/_config.h - setting splitted and organized more properly.
* time_facets.cpp - extra instantiations removed (thanks to Matti Rintala for the report).
* stdio_streambuf.h : added explicit qualifications of C lib functions for gcc-2.91
* SGI code used for compatibility w/older versions are guarded with #ifndef __STL_NO_ANACHRONISMS
* SGI extensions are guarded with #ifndef __STL_NO_EXTENSIONS
* SGI/HP anachronisms are guarded with #ifndef __STL_NO_ANACHRONISMS
* <typeinfo> : .h file included if __STL_NO_NEW_NEW header is set
(thanks to Willie Arbuckle for the report)
* Suppresed spurious BC55 warnings about iterators
* complex_io.h - fixed operators declarations for MetroWerks
* debug/_slist.h - cleaned up use of stl_debug_do obsolete macro (thanks to Matti Rintala)
* debug/_iterator.h, debug/_vector.h - fixed relaxed iterator constructors (thanks to Dave Abrahams for the patch)
* stl/_complex.h - fixes for gcc-2.95 on IRIX (thanks to Marc W. Mengel)
* debug/_iterator.h : fixed relaxed const/non-const iterator construction for debug mode
(thanks to Dave Abrahams for the patch)
* collate : added workaround for SUNpro linker (thanks to Petr Ovchenkov for the fix)
* _ios.h, _streambuf.h - added obsolete stuff required by the standard
* _config.h/stdexcept - introduced __STL_NOTHROW_INHERITED to be used when we actually need
exception specification due to inheritance (thanks to Joe for the report)
* _locale.h:104 : fixed ummaned parameters
* _tempbuf.h - fixed absent inclusion of _tempbuf.c
* <exception> : relaxed rules for importing vendor symbols
* _deque.h - added != operator
* _streambuf.h - fixed snextc() bug for wchar_t
* <ostream>, _numeric_facets.h - circular dependency resolved
* stl/_iosfwd.h - added include guard
* basic_[io]stream::sentry made inner class again (as per standard)
for non-DLL compilations.
* vector<void*> is used in locale implementation to reduce code bloat,
vector<void*> exported from DLL
* <stdexcept> : exported more stuff
* stl_intel.h : ICL config merged into stl_msvc.h
* gcc.mak - fixed for shared target
The following changes were made in 4.0 beta 5 since 4.0 beta 4:
* _hastable.c:263 : removed inneeded cast (thanks to Will Fike for the report)
* debug/_string.h : added conversion to non-SGI string (thanks to Todd Richmond for the report)
* _complex.h : fixed DLL declarations for i/o operators
* _ostream.h : fixed sentry behavoiur and DLL specs.
* _istream.h : fixed DLL specs, optimized some try/catch blocks
* _vector.h : fixed vector::insert body definition for __STL_INLINE_MEMBER_TEMPLATES
* <exception> : more compilers listed as having full exception header
* debug/_debug.h : added namespace to __STL_ASSERT for EH test which uses this internal macro.
* resource info fixed (thanks to Michael Entin for the report)
* debug/_string.h : fixed _M_start resolution bug (thanks to Rob for the report )
* <new> : added import of new_handler stuff from vendor namespace (thanks to Niran Bala for the report).
* src/c_locale_glibc - missed directory contents restored (thanks to Todd Rider for the report)
* mwerks_prj - project updated for new file set, target names for x86 changed to conform to common schema
* _ostream.c/_istream.c : fixed lookup for _S_eof symbol (thanks to Anton Sergeev for the report)
* _ios.h - fixed VC++ DLL warning for specializations
* stl_ibm.h - disabled "long long" due to incomplete support on MVS by request (thanks to Tinny Ng)
* char_traits.h - worked around weird gcc internal bug (__sz identifier changed to _Sz)
The following changes were made in 4.0 beta 4 since 4.0 beta 3:
* "src" directory : source divided into smaller parts to be more manageable and to
get more cache locality
* throw specifications removed (macros made void) - thanks to Dave Abrahams for the suggestion
* stl/_list.c - fixed reverse() "inline",
_deque.h - fixed cast bug for xlC (thanks to Alex Vanic for the reports)
* stl/_strstream.h - fixed DLL specs (thanks to Parcival Willems for the report)
* stl/_string.h, debug/_string.h - fixed conversion from native string with __STL_DEBUG
(thanks to Todd Richmond for the report).
* stl/_istream.h - fixed clash of "__N" symbol with ctype.h macro for some compilers
(thanks to Kees de Bruin for the report)
* Configuration fixed for Borland C++ 5.02 compiler [ deque still does not work with it ]
* gcc-2.7.2 configuration fixed
* SGI iostreams now work for Borland 5.5 with static lib , some problems with
locale initialization when DLL is used.
* __get_c_string exported in DLL (thanks to Ed Ball for the report).
* ENDIAN fixes for CodeWarrior/DEC (thanks to Kevin Wooten for bringing this up)
* wrap_std/h/strstream.h - added missing wrapper (Thanks to Laurent for the report)
* stl_hpacc.h - fixed #endif bug,
_limits.h/.c - fixed array initialization,
_string_io.h, _locale.h - fixed circular dependancy,
_set.[hc], _hashtable.c, _set.h - added __REINTERPRET_CAST need by some compilers;
_i[o]stream.c, _rope.[hc] - lookup fixed for dependant symbols
(thanks to Alain Miniussi for the reports)
After-release minor bugfixes for beta3:
* stl/_list.c - fixed reverse() [ new SGI code, merged unported first ]
Thanks for everybody who reported it.
* stl/_bvector.h : fixed ambiguity problem with relational iterators
for __STL_NO_BOOL case (thanks to Alex Vanic for the report).
* stl/_alloc.c, stl/_threads.c - fixed static member definitions for compilers
that lack automatic static data members (gcc-2.7). Thanks to Huang-Ming Huang
for the report.
* standard wide streams initialization bug on Win32 fixed (thanks to Harold Putman for the
report)
The following changes were made in 4.0 beta 3 since 4.0 beta 2:
* Merged SGI changes from 02/18 snapshot.
* Ming32W (gcc Win32 port using MS runtime lib) is now fully supported.
* .dll build schema improved, now builds with mingw32 and Borland C++
(Borland has some problem with numeric i/o)
* VC++ version bugfixes in <xstring>/<xutility>/<xstring>
(thanks to Todd Richmond for the report)
* _bvector.h - relational operators defined only for "bit_vector",
not for "vector" specializations (thanks to Edward Ball for the report)
* src/locale_impl.h - fixed multiple defined symbol problem with gcc
(Thanks to Matti Rintala for the report)
* config/stl_ibm.h - __STL_NO_TYPEINFO added (thanks for Tinny Ng).
* <string> : _stl_string_io.h/c introduced to fight inter-dependencies
* _bvector.h - added fix for -tempinc compilation on AIX (thanks to Alex Vanic for the patch)
* fstream.cpp - _M_write bug for Win32 text mode fixed (thanks to Mike Pyle)
* _string.h : debug version included prior to _string.c;
* debug/_debug.h/.c, debug/_deque.h, debug/_string.h - fixed debug mode bugs;
Apple compilers config fixes / iostream wrapping fixes / EH test fixes,
(thanks to Tsutomu Youshida for the patch)
* csetjmp/setjmp.h - guards added against VC++ #defines (thanks to Gavin Wood)
* stl/_iosfwd.h : __STL_DEFAULT_CONSTRUCTED used instead of __STL_NULL_CHAR_INIT
(thanks to Alex Vanic for the report)
* __stl_get_c_string() - made extern non-template for SGI iostreams mode.
* __cdecl calling convention fixes - now works for debug & non-debug code.
* _limits.h/.c : static data moved from inline functions into a class.
* stlport_msvc.rc resource file added for DLL's (thanks to Michael Entin)
* stlport/config/stl_wince.h : added abort()/assert() definitions
(thanks to Gavin Wood for the report)
* Initial iostreams port for xlC (thanks to Alexander Vanic for the patch).
* config files - made safe for C compilers
* src/c_locale_stub.c - made structure for full platform-dependent
locales other than "C". Glibc implementation merged.
The following changes were made in 4.0 release candidate 2 since 4.0 release candidate 1:
* Solid approach to __STL_DEFAULT_CONSTRUCTOR_BUG problem implemented,
rope.h typo fixed (thanks to Alex Vanic for the report)
* getline and stream operators moved from _istream.c to _string.c
where they belong (thanks for Petr Ovchenkov)
* <new> fixed to import nothrow and nothrow_t
* Borland C++ 5.5 (free compiler) supported (iostreams won't compile yet).
* SUN CC 6.0 EA - new features unabled (most announced features still don't work though)
* HP ACC configuration updated, some fixes for new aCC beta(thanks to Alain Miniussi).
* Windows CE compatibility fixed (thanks to Gavin Wood for the report)
* <sstream> fixed for non-SGI case, ios.cpp bug in __STL_NO_EXCEPTIONS
mode fixed, debug iterators fix (thanks to Todd Richmond).
* VC++ 5.0 and 4.2 compatibility fixed (thanks to Ilya for the report)
* __cdecl calling convention explicitly specified for VC++ & static/global functions.
* vc_common.mk : debug type changed to CV (thanks to Mike Pyle for the solution)
* fstream.cpp : Win32 text mode : bugs fixed, SGI code used.
fixed _M_open() creation flags for Win32 (thanks to Mike Pyle for the report)
* "install" target added for VC++ to install .dll's into Win system directory.
* __STL_USE_STATIC_LIB switch added to add flexibility to VC++ linking.
* __stl_debug_message for WIN32/Unicode/MFC improved
(thanks to Edward Ball, Chvetsov for the reports)
* MVS fix for auto_ptr<> (thanks to Tinny Ng)
* debug/_tree.h, debug/_vector.h "typename" fixes, thanks to Matti Rintala.
* c_locale.h : fix for Solaris 2.5.x (thanks to B. K. Oxley)
* _bvector.h : Watcom compatibility fixed (thanks to Ricardo E. Gayoso for the report)
* __STL_DONT_REDEFINE_STD flag behaviour fixed
The following changes were made in 4.0 release candidate 1 since 3.2.2 Beta 4 :
* Merged changes made to SGI standard library snapshot on 01/28.
* Fixed bug with istream reading numbers in hex mode (thanks to Dave Abrahams
for the patch).
* Debug mode redesigned (again) - no extra namespaces is being used
Finally, it works for MSVC and all other platforms.
* __SGI_STL_OWN_IOSTREAMS made to be the default mode except few platforms
not provided with makefiles to build STLport yet.
* Changed strategy on redefinig std:: namespace.
prolog/epilog technology used to get clean namespace wrapping.
It also allows for managing stack of pragmas
(see stlport/stl/config/_prolog.h,_epilog.h) to get rid of warnings.
Note : default namespace changed to _STL:: to satisfy implementation
constraints and to allow for more compact symbols.
"stlport::" namespace is still defined for backwards compatibility.
* iostreams library now compiles on HP with aCC (thanks to Steven Serocki for the patch).
* Configuration for SUN Workshop 6.0 EA provided.
* For VC++, corresponding [selected by /MT(d) or /MD(d) switch]
STLport iostreams library is being linked automatically - all you
need is to put library in lib search path or specify additional library path.
* Ability to turn on all warnings in your own code if you're using
a compiler with appropriate support (e.g. MSVC6).
* Small fixes posted to the forum integrated:
* config/stl_wince.h : added __STL_HAS_NO_NEW_C_HEADERS switch
* wrap_std/strsream : fixed preprocessor bug, strstream.h included
when not using new-style headers
* other fixes
The following changes were made in 3.2.2 beta 4 since 3.2.2 Beta 3:
* Merged changes made to SGI standard library snapshot on 01/10.
* Major restructuring of header files - for maintainability and
8.3 filesystems benefit.
* Major debug mode improvements - new debug mode now works with
VC++, gcc, intel, SUNpro, MetroWerks.
* Regression test suite changed to new-style headers - thanks to
Dima Pasechnik for the initial port.
* <rope> fixes for Watcom
* many miscellanous fixes.
The following changes were made in 3.2.2 beta 3 since 3.2.2 Beta 2:
* Merged changes made to SGI standard library snapshot in December.
* 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 stlport:: used to keep clients
code with literal std:: happy as in native iostreams mode.
* C library headers wrapping changed to allow multiple inclusion tricks
(needed by gcc-2.95 mostly)
* gcc-2.95 and CodeWarrior configurations updated.
* HP aCC fixes applied.
* Visual C++ - added static library targets, build refined.
Fixed memory-mapping bugs.
* auto_ptr updated, now it passes polymorphic tests with VC++.
* Many small bugfixes.
The following changes were made in 3.2.2 beta 2 since 3.2.2 Beta 1:
* Fixed SUN CC deque<> problem with -g
* Added configuration and makefiles for DEC VMS, Borland and Win32 gcc.
* Merged changes made to November SGI standard library snapshot.
* config changes - "configure" made obsolete and moved into "stlport/config/new_compiler".
* __STL_TYPENAME_ON_RETURN_TYPE handling changed.
* Miscellanous fixes.
The following changes were made in 3.2.2 Beta 1 since 3.2.1 release:
* SGI iostreams adopted. To use SGI iostreams, user have to set
__SGI_STL_OWN_IOSTREAMS flag and to build the library in "src"
directory to link with. Please read INSTALL file for detailed
instructions.
Default setting is NOT to use SGI iostreams (wrappers used as before).
* 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 and
binary compatibility between debug and non-debug versions.
* Additional configurations added for platforms :
- gcc-2.95
- SUNpro CC 5.0 in "compatibility" mode
"configure" made obsolete.
* Bugfixes reported by users since 3.2.1 release merged
The following changes were made in 3.2.1 since 3.2 release:
* Now, by default, STLPort renames std:: namespace for user
if __STL_USE_OWN_NAMESPACE is used. To make it possible, many new
wrapper headers introduced. Internally, STLport uses stlport:: namespace,
so no link- or run- time clashes are possible, and you don't have to rebuild
the runtime lib (which you don't want to).
This feature makes STLport usable out-of-the box, without any modifications
for client code, with any compiler.
* Code bloat reduction : hashtable<T> uses vector<void*> internally.
* Vector : efficiency/code bloat reduction fixes.
* Visual C++ : DLL export is supported for allocators and strings. To use it,
please define __STL_USE_DECLSPEC in all modules and __STL_DESIGNATED_DLL
for the DLL which is supposed to instantiate STLport exports (at least one
source of this DLL must include <string>.
* Visual C++ : for MT synchronization, <windows.h> is not included anymore.
* For Sunpro C++ 5.0 : all headers are linked into stlport/SC5, so only
one include path is needed. Note that SC5.0 has problems with relative
search path. It is easy to work around : in your makefiles, instead of
"STL_INCL=../.." , write "STL_INCL=${PWD}/../..".
* Configuration files provided for compilers :
KAI C++
DEC C++ (6.x, 5.x)
Borland 5.02 is back on the road (finally !)
* Windows CE config provided for Visual C++.
* __STL_NO_IOSTREAMS switch introduced for embedded platforms.
* Lots of minor config fixes and improvements for various platforms.

36
STLPORT/etc/README Normal file
View File

@@ -0,0 +1,36 @@
***********************************************
This directory contains miscellanous files for STLport-4.6 release.
***********************************************
PROJECT COORDINATION FILES
* ChangeLog - Log of changes since STLport 4.0 release
* ChangeLog-4.0 - Log of changes before STLport 4.0 release
* TODO - Some future plans and directions
CVS HOUSEKEEPING, SCRIPTS
* cvsignore - ignore patterns to use with GNU 'tar' command
* scvs - script to use CVS through SSH tunneling (the default
method at cvs.stlport.com)
INDEPENDENT PACKAGING SUPPORT
* STLport-4.5.1.spec : spec file to build RPM for STLport-4.5.1
INTERNAL INSTALLATION SUPPORT
* std_headers_xxx.txt - a list of headers to be placed in various dirs
LOGOS
* stlport_powered_red.gif Those are "Powered by STLport" logos. You are more than welcome
stlport_powered_white.gif to put those logos on webpages for your product if it uses STLport.
GOODIES
* msvcincl.dat - the file to be placed in Windows directory
to exclude STLport files from VC++ dependancy checks

View File

@@ -0,0 +1,96 @@
%define MAKEFILE gcc-linux.mak
Summary: Complete C++ standard library
Name: STLport
Version: 4.5.1
Release: 1
Copyright: free (see license), see /usr/share/doc/%{name}-%{version}/license.html
URL: http://www.stlport.org/
Packager: Levente Farkas <lfarkas@mindmaker.hu>
Group: System Environment/Languages
Icon: stlport_powered_white.gif
Source0: http://www.stlport.org/archive/%{name}-%{version}.tar.gz
Patch0: STLport-rename.patch
#Patch1: STLport-rules.patch
#Patch2: STLport-install-dir.patch
Buildroot: %{_tmppath}/%{name}-%{version}-%(id -u -n)
%description
STLport is a multiplatform STL implementation based on SGI STL.
This package contains the runtime library for STLport.
%package -n STLport-devel
Summary: Complete C++ standard library header files and libraries
Group: Development/Libraries
Requires: STLport = %{version}
%description -n STLport-devel
STLport is a multiplatform STL implementation based on SGI STL. Complete
C++ standard library, including <complex> and SGI STL iostreams. If you
would like to use your code with STLport add
"-nostdinc++ -I/usr/include/stlport" when compile and -lstlport_gcc when
link (eg: gcc -nostdinc++ -I/usr/include/stlport x.cc -lstlport_gcc).
%prep
%setup
%patch0 -p1
#%patch1 -p1
#%patch2 -p1
%build
cd src
make -f %{MAKEFILE} INSTALLDIR=$RPM_BUILD_ROOT/usr clean all
%install
rm -rf $RPM_BUILD_ROOT
cd src
make -f %{MAKEFILE} INSTALLDIR=$RPM_BUILD_ROOT/usr install
cd $RPM_BUILD_ROOT/usr/include/stlport
ln -s . ext
%clean
rm -rf $RPM_BUILD_ROOT
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%post -n STLport-devel
/sbin/ldconfig
%postun -n STLport-devel
/sbin/ldconfig
%files
%defattr(-,root,root)
%doc doc/license.html
/usr/lib/libstlport_gcc.so
#/usr/lib/libstlport_gcc.so.%{version}
/usr/lib/libstlport_gcc.so.4.5
%files -n STLport-devel
%defattr(-,root,root)
%doc INSTALL README doc etc test
/usr/lib/libstlport_gcc*.a
/usr/lib/libstlport_gcc_*debug.so*
/usr/include/*
%changelog
* Mon Dec 10 2001 Levente Farkas <lfarkas@mindmaker.hu>
- upgrade to 4.5.1
* Fri Nov 16 2001 Levente Farkas <lfarkas@mindmaker.hu>
- merge with Harold's changes
* Thu Nov 15 2001 <stlport@lanceerplaats.nl>
- rebuild for RedHat 7.2, spec file fixes.
* Tue Oct 2 2001 Levente Farkas <lfarkas@mindmaker.hu>
- upgrade to 4.5
* Thu Oct 26 2000 Levente Farkas <lfarkas@mindmaker.hu>
- upgrade to 4.1-b3
* Thu Jul 17 2000 Levente Farkas <lfarkas@mindmaker.hu>
- initial release use STLport-4.0

View File

@@ -0,0 +1,96 @@
%define MAKEFILE gcc-linux.mak
Summary: Complete C++ standard library
Name: STLport
Version: 4.5.3
Release: 1
Copyright: free (see license), see /usr/share/doc/%{name}-%{version}/license.html
URL: http://www.stlport.org/
Packager: Levente Farkas <lfarkas@mindmaker.hu>
Group: System Environment/Languages
Icon: stlport_powered_white.gif
Source0: http://www.stlport.org/archive/%{name}-%{version}.tar.gz
#Patch0: STLport-rename.patch
#Patch1: STLport-rules.patch
#Patch2: STLport-install-dir.patch
Buildroot: %{_tmppath}/%{name}-%{version}-%(id -u -n)
%description
STLport is a multiplatform STL implementation based on SGI STL.
This package contains the runtime library for STLport.
%package -n STLport-devel
Summary: Complete C++ standard library header files and libraries
Group: Development/Libraries
Requires: STLport = %{version}
%description -n STLport-devel
STLport is a multiplatform STL implementation based on SGI STL. Complete
C++ standard library, including <complex> and SGI STL iostreams. If you
would like to use your code with STLport add
"-nostdinc++ -I/usr/include/stlport" when compile and -lstlport_gcc when
link (eg: gcc -nostdinc++ -I/usr/include/stlport x.cc -lstlport_gcc).
%prep
%setup
%patch0 -p1
#%patch1 -p1
#%patch2 -p1
%build
cd src
make -f %{MAKEFILE} INSTALLDIR=$RPM_BUILD_ROOT/usr clean all
%install
rm -rf $RPM_BUILD_ROOT
cd src
make -f %{MAKEFILE} INSTALLDIR=$RPM_BUILD_ROOT/usr install
cd $RPM_BUILD_ROOT/usr/include/stlport
ln -s . ext
%clean
rm -rf $RPM_BUILD_ROOT
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%post -n STLport-devel
/sbin/ldconfig
%postun -n STLport-devel
/sbin/ldconfig
%files
%defattr(-,root,root)
%doc doc/license.html
/usr/lib/libstlport_gcc.so
#/usr/lib/libstlport_gcc.so.%{version}
/usr/lib/libstlport_gcc.so.4.5
%files -n STLport-devel
%defattr(-,root,root)
%doc INSTALL README doc etc test
/usr/lib/libstlport_gcc*.a
/usr/lib/libstlport_gcc_*debug.so*
/usr/include/*
%changelog
* Mon Dec 10 2001 Levente Farkas <lfarkas@mindmaker.hu>
- upgrade to 4.5.1
* Fri Nov 16 2001 Levente Farkas <lfarkas@mindmaker.hu>
- merge with Harold's changes
* Thu Nov 15 2001 <stlport@lanceerplaats.nl>
- rebuild for RedHat 7.2, spec file fixes.
* Tue Oct 2 2001 Levente Farkas <lfarkas@mindmaker.hu>
- upgrade to 4.5
* Thu Oct 26 2000 Levente Farkas <lfarkas@mindmaker.hu>
- upgrade to 4.1-b3
* Thu Jul 17 2000 Levente Farkas <lfarkas@mindmaker.hu>
- initial release use STLport-4.0

View File

@@ -0,0 +1,99 @@
%define MAKEFILE gcc-linux.mak
Summary: Complete C++ standard library
Name: STLport
Version: 4.6
Release: 1
Copyright: free (see license), see /usr/share/doc/%{name}-%{version}/license.html
URL: http://www.stlport.org/
Packager: Levente Farkas <lfarkas@mindmaker.hu>
Group: System Environment/Languages
Icon: stlport_powered_white.gif
Source0: http://www.stlport.org/archive/%{name}-%{version}.tar.gz
#Patch0: STLport-rename.patch
#Patch1: STLport-rules.patch
#Patch2: STLport-install-dir.patch
Buildroot: %{_tmppath}/%{name}-%{version}-%(id -u -n)
%description
STLport is a multiplatform STL implementation based on SGI STL.
This package contains the runtime library for STLport.
%package -n STLport-devel
Summary: Complete C++ standard library header files and libraries
Group: Development/Libraries
Requires: STLport = %{version}
%description -n STLport-devel
STLport is a multiplatform STL implementation based on SGI STL. Complete
C++ standard library, including <complex> and SGI STL iostreams. If you
would like to use your code with STLport add
"-nostdinc++ -I/usr/include/stlport" when compile and -lstlport_gcc when
link (eg: gcc -nostdinc++ -I/usr/include/stlport x.cc -lstlport_gcc).
%prep
%setup
%patch0 -p1
#%patch1 -p1
#%patch2 -p1
%build
cd src
make -f %{MAKEFILE} INSTALLDIR=$RPM_BUILD_ROOT/usr clean all
%install
rm -rf $RPM_BUILD_ROOT
cd src
make -f %{MAKEFILE} INSTALLDIR=$RPM_BUILD_ROOT/usr install
cd $RPM_BUILD_ROOT/usr/include/stlport
ln -s . ext
%clean
rm -rf $RPM_BUILD_ROOT
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%post -n STLport-devel
/sbin/ldconfig
%postun -n STLport-devel
/sbin/ldconfig
%files
%defattr(-,root,root)
%doc doc/license.html
/usr/lib/libstlport_gcc.so
#/usr/lib/libstlport_gcc.so.%{version}
/usr/lib/libstlport_gcc.so.4.6
%files -n STLport-devel
%defattr(-,root,root)
%doc INSTALL README doc etc test
/usr/lib/libstlport_gcc*.a
/usr/lib/libstlport_gcc_*debug.so*
/usr/include/*
%changelog
* Fri Oct 31 2003 <boris@stlport.com>
- upgrade to 4.6
* Mon Dec 10 2001 Levente Farkas <lfarkas@mindmaker.hu>
- upgrade to 4.5.1
* Fri Nov 16 2001 Levente Farkas <lfarkas@mindmaker.hu>
- merge with Harold's changes
* Thu Nov 15 2001 <stlport@lanceerplaats.nl>
- rebuild for RedHat 7.2, spec file fixes.
* Tue Oct 2 2001 Levente Farkas <lfarkas@mindmaker.hu>
- upgrade to 4.5
* Thu Oct 26 2000 Levente Farkas <lfarkas@mindmaker.hu>
- upgrade to 4.1-b3
* Thu Jul 17 2000 Levente Farkas <lfarkas@mindmaker.hu>
- initial release use STLport-4.0

36
STLPORT/etc/TODO Normal file
View File

@@ -0,0 +1,36 @@
**********************************************************************
* TODO file for STLport *
* *
**********************************************************************
This file lists various prospective things to do with STLport.
Please feel free to contribute to implementing any of these.
Please submit results back to STLport coordinator
( boris@stlport.com, http://www.stlport.com/forum ).
Below, numbers in "[]" brackets indicate priority.
[1] Make sure that the libary compiled with thread support,
is binary compatible with _NOTHREADS compiled projects. Hint - now it's NOT.
[1] More makefiles in src directory.
[1] More detailed installation/build instructions.
[2] More detailed documentation.
[1] User-friendly installation scripts.
[3] iostreams efficiency analysis.
[3] iostream/STL benchmarking against other implementations.
[3] An "undef" script to expand macros and produce more readable
STLport headers customized for given configuration automatically.
[1] More points to add to this file ;).

22
STLPORT/etc/cvsignore Normal file
View File

@@ -0,0 +1,22 @@
ignore
dev
fix
lib
*.o
*.obj
*~
*.exe
*.dll
*.core
*.bak
*.out
*.pdb
*.pch
.*
core
CVS
SunWS_cache
Templates.DB
*.gz
doc
make_snap.sh

309
STLPORT/etc/msvcincl.dat Normal file
View File

@@ -0,0 +1,309 @@
algo.h
algobase.h
algorith.h
algorithm
alloc.h
bitset
bitset.h
bvector.h
cassert
cassert.h
cctype
cctype.h
cerrno
cerrno.h
cfloat
cfloat.h
char_traits.h
climits
climits.h
clocale
clocale.h
cmath
cmath.h
complex
complex.h
concept_checks.h
configure
configure.in
csetjmp
csetjmp.h
csignal
csignal.h
cstdarg
cstdarg.h
cstddef
cstddef.h
cstdio
cstdio.h
cstdlib
cstdlib.h
cstring
cstring.h
ctime
ctime.h
ctype.h
cwchar
cwchar.h
cwctype
cwctype.h
c_locale.h
defalloc.h
deque
deque.h
exceptio.h
exception
exception.h
export
fstream
fstream.h
function.h
functional
hashtable.h
hash_map
hash_map.h
hash_set
hash_set.h
heap.h
iomanip
iomanip.h
ios
ios.h
iosfwd
iosfwd.h
iostream
iostream.h
istream
istream.h
iterator
iterator.h
limits
limits.h
list
list.h
locale
locale.h
map
map.h
math.h
mem.h
memory
memory.h
mmemory.h
msl_string.h
multimap.h
multiset.h
new
new.h
numeric
numeric.h
numeric.h
ostream
ostream.h
pair.h
pthread.h
pthread_alloc
pthread_alloc.h
queue
queue.h
rope
rope.h
set
set.h
setjmp.h
signal.h
slist
slist.h
sstream
sstream.h
stack
stack.h
stdarg.h
stddef.h
stddef.h
stdexcep.h
stdexcept
stdio.h
stdio_streambuf
stdlib.h
stdlib.h
stlcomp.h
stlconf.h.in
stl_apcc.h
stl_apple.bak.h
stl_apple.h
stl_as400.h
stl_bc.h
stl_como.h
stl_confix.h
stl_dec.h
stl_dec_vms.h
stl_fujitsu.h
stl_gcc.h
stl_hpacc.h
stl_ibm.h
stl_intel.h
stl_kai.h
stl_mlc.h
stl_msvc.h
stl_mwerks.h
stl_mycomp.h
stl_sco.h
stl_select_lib.h
stl_sgi.h
stl_solaris.h
stl_sunpro.h
stl_symantec.h
stl_tmpl.h
stl_user_config.h
stl_watcom.h
stl_wince.h
streambu.h
streambuf
streambuf.h
string
string.h
strstrea.h
strstream
strstream.h
tempbuf.h
time.h
tree.h
typeinfo
typeinfo.h
type_traits.h
utility
utility.h
valarray
valarray.h
vc_select_lib.h
vector
vector.h
wchar.h
wctype.h
_abbrevs.h
_algo.c
_algo.h
_algobase.c
_algobase.h
_alloc.c
_alloc.h
_alloc_old.h
_auto_ptr.h
_bitset.c
_bitset.h
_bvector.h
_check_config.h
_codecvt.h
_collate.h
_complex.c
_complex.h
_config.h
_config_compat.h
_config_compat_post.h
_construct.h
_ctraits_fns.h
_ctype.h
_cwchar.h
_debug.c
_debug.h
_deque.c
_deque.h
_epilog.h
_epilog.h
_exception.h
_fstream.c
_fstream.h
_function.h
_function_base.h
_hashtable.c
_hashtable.h
_hash_fun.h
_hash_map.h
_hash_set.h
_heap.c
_heap.h
_ios.c
_ios.h
_iosfwd.h
_ios_base.h
_istream.c
_istream.h
_istreambuf_iterator.h
_iterator.h
_iterator.h
_iterator_base.h
_iterator_old.h
_limits.c
_limits.h
_list.c
_list.h
_list.h
_locale.h
_map.h
_messages_facets.h
_mmap.h
_monetary.c
_monetary.h
_msvc_warnings_off.h
_null_stream.h
_numeric.c
_numeric.h
_numpunct.h
_num_get.c
_num_get.h
_num_put.c
_num_put.h
_ostream.c
_ostream.h
_ostreambuf_iterator.h
_pair.h
_prolog.h
_pthread_alloc.h
_ptrs_specialize.h
_queue.h
_range_errors.h
_raw_storage_iter.h
_relops.h
_relops_cont.h
_relops_template.h
_rope.c
_rope.h
_set.h
_set_operators.h
_site_config.h
_slist.c
_slist.h
_slist_base.c
_slist_base.h
_sparc_atomic.h
_sstream.c
_sstream.h
_stack.h
_stdio_file.h
_stdio_file.h.new
_streambuf.c
_streambuf.h
_streambuf_iterator.h
_stream_iterator.h
_string.c
_string.h
_string_fwd.c
_string_fwd.h
_string_hash.h
_string_io.c
_string_io.h
_strstream.h
_tempbuf.c
_tempbuf.h
_threads.c
_threads.h
_time_facets.c
_time_facets.h
_tree.c
_tree.h
_uninitialized.h
_valarray.c
_valarray.h
_vector.c
_vector.h

192
STLPORT/etc/scvs Normal file
View File

@@ -0,0 +1,192 @@
#!/usr/bin/perl
# Note : you may have to edit path to Perl above, according to your system setup
#
# modified for ssh+chroot setup by Anton Berezin <tobez@plab.ku.dk> #
# Synopsys : scvs -d :pserver:cvs@www.stlport.com/stlport <cvs command> # (this is for read-only anonymous access via "cvs" user)
# Please use your cvs login name if you have one instead of "cvs" above, to be able to commit your changes
#
#--
# tunable variables
#--
# Set this if it does not work otherwise
# $tune_cvs_server_name = "cvs.stlport.com";
# where cvs program is located on the client system
$tune_local_cvs_cmd = "cvs";
# remote pserver port to use
# for explanation, see
# http://www.prima.eu.org/tobez/cvs-howto.html#inetd
$tune_remote_cvs_port = 2410;
# local pserver port; you probably don't want to change this
$tune_local_cvs_port = 2401;
# ssh command to use; the default is good for UNIX clients
$tune_ssh_cmd = "ssh";
# the user on the server side cvs runs as
$tune_ssh_user = "cvs";
#--
# end of tunable variables
# there is no need to modify anything below
#--
#############################################################################
# CVS settings
$CVS_CMD=$tune_local_cvs_cmd;
$CVS_PORT=$tune_remote_cvs_port;
$CVS_LOCAL_PORT=$tune_local_cvs_port;
# the values below will be needed only if the repository is specified via the
# command line or the CVSROOT environment variable, and in those cases they
# will be extracted from there. However, for funny results you can uncomment
# these two lines.
# $CVS_HOST="www.stlport.com";
# $CVS_USER="cvs";
#############################################################################
# SSH settings
# ssh2 does not seem to work with our -L port:host:hostport argument, so make
# sure we will use ssh1.
$SSH_CMD=$tune_ssh_cmd;
# This should be the user on whose behalf the tunneling is made. It is
# typically a user that cannot do any harm, has no password and uses a program
# like nologin (but one that will wait) as a shell.
$SSH_USER=$tune_ssh_user;
# This value should also automagically be set from the repository name.
# However, if that host is not running sshd, you may want to tunnel through
# another host and modify and uncomment the line below.
# $SSH_HOST=$CVS_HOST
# This value is used if the repository cannot be determined from the
# commandline or the CVSROOT variable. Modify this for your local situation.
$SSH_DEFAULT_HOST=$tune_cvs_server_name;
# Port at which the sshd on the remote server runs. Default is 22.
# $SSH_PORT=22;
# This should be left unmodified, as it makes no sense changing this. Unless
# some future version (or perhaps even the current version) of cvs allow you
# to specify the remote repository's port.
$SSH_LOCAL_PORT=$CVS_LOCAL_PORT;
#############################################################################
# & parse_repository ({{rep}})
# . extracts the method, user, host, port and directory from {{rep}}.
# . There are four possibilities:
# - /path/to/repository
# - :method:/path/to/repository
# - :user@hostname:/path/to/repository
# - :method:user@hostname:/path/to/repository
# non-standard repositories. Has only been tested for :pserver: method.
#
sub parse_repository
{
my $rep = $_[0];
my ($dir,$user,$host,$method);
# determine the directory
$rep =~ s/:(\/.*)$// && do { $dir=$1; };
if (not $dir)
{ $rep =~ s/(\/.*)$// && do {$dir = $1; }; }
# determine the hostname and the username
$rep =~ s/:([^:]*)@(.*)$// && do { $user = $1; $host = $2; };
if (not $host)
{ $rep =~ s/:([^:]+)$// && do { $host = $1; }; }
# all that is left now is the method
$rep =~ s/^:([^:]*)// && do { $method = $1; };
# if there is still anything left, we have an error, warn the user
if ($rep)
{ print STDERR "Warning: repository parsed wrong ('$rep' ignored).\n"; }
# print STDERR "DEBUG: dir=$dir, user=$user, host=$host, method=$method\n";
return ($method, $user, $host, $dir);
}
#############################################################################
# main
# should be changed to a general cmdline parsing routine.
# get the repository's name from the commandline or the CVSROOT environment
# variable.
if ($ARGV[0] eq "-d")
{
$rep="$ARGV[1]";
shift; shift;
}
else
{
$rep = $ENV{'CVSROOT'};
}
# print STDERR "DEBUG: rep = $rep\n";
# parse the repository
($method, $user, $host, $dir) = parse_repository $rep;
# print "met: $method, user: $user, host: $host, dir: $dir\n";
# construct the local fake cvs server name.
if ($method) { $cvs_serv = ":$method:"; }
if ($user) { $cvs_serv .= "$user\@"; }
if ($rep) { $cvs_serv .= "localhost:"; }
if ($dir) { $cvs_serv .= $dir; }
# print STDERR "DEBUG: cvs_serv = $cvs_serv\n";
# construct the tunneling command
$SSH_HOST |= $host;
# print STDERR "DEBUG: SSH_HOST=$SSH_HOST\n";
$SSH_HOST |= $SSH_DEFAULT_HOST;
# print STDERR "DEBUG: SSH_HOST=$SSH_HOST\n";
if ($SSH_USER)
{ $ssh_serv="$SSH_USER\@$SSH_HOST"; }
else
{ $ssh_serv="$SSH_HOST"; }
# print "ssh_serv: $ssh_serv\n";
$tunnel_cmd = "$SSH_CMD $ssh_serv -x -f"
. ( ($SSH_PORT) ? " -p $(SSH_PORT)" : "" )
. " -L $SSH_LOCAL_PORT:$SSH_HOST:$CVS_PORT open";
# print STDERR "DEBUG: tunnel_cmd: $tunnel_cmd\n";
# execute the tunneling, and read the response from the server
open (TUNNELSH,"$tunnel_cmd |") or die "Could not execute $tunnel_cmd!";
chomp ($magicword = <TUNNELSH>);
# print STDERR "DEBUG: magicword = $magicword!\n";
# Now we can call system to execute the cvs command.
# print STDERR "Doing: $CVS_CMD|", ( ($cvs_serv) ? ('-d |', "$cvs_serv|") : ( ) ) , "@ARGV", "|\n";
$exitcode =
system "$CVS_CMD", ( ($cvs_serv) ? ('-d', $cvs_serv) : () ) , @ARGV;
if ($exitcode) { print STDERR "Could not execute CVS command!\n"; }
# close the tunnel
#print STDERR "DEBUG: ", ( "$SSH_CMD $ssh_serv -q -x -f"
# . ( ($SSH_PORT) ? " -p $SSH_PORT" : "" )
# . " $magicword" );
# print STDERR "before close\n";
system ( "$SSH_CMD $ssh_serv -q -x -f"
. ( ($SSH_PORT) ? " -p $SSH_PORT" : "" )
. " $magicword" );
# print STDERR "right after close\n";

View File

@@ -0,0 +1,34 @@
algorithm
bitset
complex
deque
fstream
functional
hash_map
hash_set
iomanip
ios
iosfwd
iostream
istream
iterator
limits
list
locale
map
memory
numeric
ostream
pthread_alloc
queue
set
slist
sstream
stack
stdexcept
streambuf
string
strstream
utility
valarray
vector

View File

@@ -0,0 +1,17 @@
cassert
cctype
cerrno
cfloat
climits
clocale
cmath
csetjmp
csignal
cstdarg
cstddef
cstdio
cstdlib
cstring
ctime
cwchar
cwctype

View File

@@ -0,0 +1,13 @@
ctype.h
locale.h
math.h
setjmp.h
signal.h
stdarg.h
stddef.h
stdio.h
stdlib.h
string.h
time.h
wchar.h
wctype.h

View File

@@ -0,0 +1,8 @@
fstream.h
iomanip.h
ios.h
iostream.h
istream.h
ostream.h
streambuf.h
strstream.h

View File

@@ -0,0 +1,3 @@
exception
new
typeinfo

View File

@@ -0,0 +1,3 @@
exception.h
new.h
typeinfo.h

Binary file not shown.

After

Width:  |  Height:  |  Size: 1005 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

179
STLPORT/src/MrCpp.mak Normal file
View File

@@ -0,0 +1,179 @@
MAKEFILE = MrCpp.mak
<EFBFBD>MondoBuild<EFBFBD> = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified
Sym-PPC = -sym on
!ifdef DEBUG
config_ = .PPC.DBG
MrCpp_DebugOptions = -inline none,global -opt none {Sym-PPC}
STL_DebugOptions = -d _STLP_DEBUG -d _STLP_DEBUG_ALLOC -d _STLP_DEBUG_UNINITIALIZED
!else
config_ = .PPC
MrCpp_DebugOptions =
STL_DebugOptions =
!endif
ObjDir = :{config_}:
SrcDir = :
Includes = -i : -i "{STL}" -i "{CIncludes}"
MrCpp_Options = -ansi on -ansifor -bool on -exceptions on -rtti on -align power -j0 -traceback -opt size -inline 3,global -includes unix_mac
STL_Options = #-d _STLP_USE_NEWALLOC <20>
#-d _STLP_NO_SGI_IOSTREAMS <20>
# end
Link_options = <20>
-c 'MPS ' <20>
-mf <20>
-d <20>
-Linkfaster off <20>
#{Sym-PPC} <20>
# end
### Default Rules ###
"{ObjDir}" <EFBFBD> "{SrcDir}"
.cpp.x <EFBFBD> .cpp # {<7B>MondoBuild<6C>}
###
echo "<22>nCompiling: '"{depDir}{default}.cpp"'"
"{MrCpp}" {depDir}{default}.cpp <20>
-o {targDir}{default}.cpp.x <20>
{Includes} <20>
{MrCpp_Options} {MrCpp_DebugOptions} {other_MrCpp_Options} <20>
{STL_Options} {STL_DebugOptions} {other_STL_Options}
if "{status}"
set compile_status 1
end
### Optional Dependencies ###
setup <EFBFBD> $OutOfDate
###
echo "<22>n# Target: '"{ObjDir}"'"
unset compile_status
if !`exists "{ObjDir}"`
newfolder "{ObjDir}"
end
### Build this target to generate "include file" dependencies. ###
Dependencies <EFBFBD> $OutOfDate #*TY 02/26/2000 - MakeDepend does not work unless all mentioned include directory exists
###
echo "<22>nUpdating: {MAKEFILE} Dependencies"
MakeDepend <20>
-append {MAKEFILE} <20>
-ignore "{CIncludes}" <20>
-objdir "{ObjDir}" <20>
-objext .x <20>
{Includes} <20>
{SrcFiles}
##################################################################################
# {stl}:src: build rule
##################################################################################
### Source Files ###
STLportLibSrcFiles = <20>
c_locale_stub.cpp <09>
codecvt.cpp <09>
collate.cpp <09>
complex.cpp <09>
complex_exp.cpp <09>
complex_io.cpp <09>
complex_io_w.cpp <09>
complex_trig.cpp <09>
ctype.cpp <09>
dll_main.cpp <09>
fstream.cpp <09>
ios.cpp <09>
iostream.cpp <09>
istream.cpp <09>
locale.cpp <09>
locale_catalog.cpp <09>
facets_byname.cpp <09>
locale_impl.cpp <09>
messages.cpp <09>
monetary.cpp <09>
num_get.cpp <09>
num_get_float.cpp <09>
num_put.cpp <09>
num_put_float.cpp <09>
numpunct.cpp <09>
ostream.cpp <09>
sstream.cpp <09>
stdio_streambuf.cpp <09>
streambuf.cpp <09>
string_w.cpp <09>
strstream.cpp <09>
time_facets.cpp <09>
# end #*TY 11/25/2000 - updated for STLport.4.1
### Object Files ###
STLportLibObjFiles-PPC = <20>
{ObjDir}c_locale_stub.cpp.x <09>
{ObjDir}codecvt.cpp.x <09>
{ObjDir}collate.cpp.x <09>
{ObjDir}complex.cpp.x <09>
{ObjDir}complex_exp.cpp.x <09>
{ObjDir}complex_io.cpp.x <09>
{ObjDir}complex_io_w.cpp.x <09>
{ObjDir}complex_trig.cpp.x <09>
{ObjDir}ctype.cpp.x <09>
{ObjDir}dll_main.cpp.x <09>
{ObjDir}fstream.cpp.x <09>
{ObjDir}ios.cpp.x <09>
{ObjDir}iostream.cpp.x <09>
{ObjDir}istream.cpp.x <09>
{ObjDir}locale.cpp.x <09>
{ObjDir}locale_catalog.cpp.x <09>
{ObjDir}facets_byname.cpp.x <09>
{ObjDir}locale_impl.cpp.x <09>
{ObjDir}messages.cpp.x <09>
{ObjDir}monetary.cpp.x <09>
{ObjDir}num_get.cpp.x <09>
{ObjDir}num_get_float.cpp.x <09>
{ObjDir}num_put.cpp.x <09>
{ObjDir}num_put_float.cpp.x <09>
{ObjDir}numpunct.cpp.x <09>
{ObjDir}ostream.cpp.x <09>
{ObjDir}sstream.cpp.x <09>
{ObjDir}stdio_streambuf.cpp.x <09>
{ObjDir}streambuf.cpp.x <09>
{ObjDir}string_w.cpp.x <09>
{ObjDir}strstream.cpp.x <09>
{ObjDir}time_facets.cpp.x <09>
# end #*TY 11/25/2000 - updated for STLport.4.1
### Build Rules ###
build <EFBFBD><EFBFBD> setup
build <EFBFBD><EFBFBD> "{ObjDir}"STLportLib{config_}.o
install <EFBFBD><EFBFBD> build
###
echo "<22>nInstalling: <20>{stl<74>}:lib:STLportLib{config_}.o"
if !`exists "{stl}":lib:`
newfolder "{stl}":lib:
end
duplicate -y "{ObjDir}"STLportLib{config_}.o "{stl}":lib:STLportLib{config_}.o
"{ObjDir}"STLportLib{config_}.o <EFBFBD><EFBFBD> {STLportLibObjFiles-PPC} {<EFBFBD>MondoBuild<EFBFBD>}
###
echo "<22>nLibbing: {Targ}"
PPCLink <20>
-xm l <20>
-t 'XCOF' <20>
-o {Targ} <20>
{STLportLibObjFiles-PPC} <20>
{Link_options} <20>
{Sym-PPC} <20>
# end

196
STLPORT/src/SCpp.mak Normal file
View File

@@ -0,0 +1,196 @@
MAKEFILE = SCpp.mak
<EFBFBD>MondoBuild<EFBFBD> = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified
Sym-68K = -sym on
!ifdef DEBUG
config_ = .68K.DBG
SCpp_DebugOptions = -inline none,global -opt none -frames {Sym-68K}
STL_DebugOptions = -d _STLP_DEBUG -d _STLP_DEBUG_ALLOC -d _STLP_DEBUG_UNINITIALIZED
!else
config_ = .68K
SCpp_DebugOptions =
STL_DebugOptions =
!endif
ObjDir = :{config_}:
SrcDir = :
Includes = -i : -i "{STL}" -i "{CIncludes}"
SCpp_Options = -model far -ansi on -ansifor -bool on -exceptions on -rtti on -b2 -mbg full -opt all -inline all,global -includes unix_mac -w 12
STL_Options = #-d _STLP_USE_NEWALLOC <20>
#-d _STLP_NO_SGI_IOSTREAMS <20>
# end
Link_options = <20>
-c 'MPS ' <20>
-mf <20>
-d <20>
-w <20>
-model far <20>
-srtsg all <20>
#{Sym-68K} <20>
# end
### Default Rules ###
"{ObjDir}" <EFBFBD> "{SrcDir}"
.cpp.o <EFBFBD> .cpp # {<7B>MondoBuild<6C>}
###
echo "<22>nCompiling: '"{depDir}{default}.cpp"'"
"{SCpp}" {depDir}{default}.cpp <20>
-o {targDir}{default}.cpp.o <20>
-seg "{default}" <20>
{Includes} <20>
{SCpp_Options} {SCpp_DebugOptions} {other_SCpp_Options} <20>
{STL_Options} {STL_DebugOptions} {other_STL_Options}
if "{status}"
set compile_status 1
end
### Optional Dependencies ###
setup <EFBFBD> $OutOfDate
###
echo "<22>n# Target: '"{ObjDir}"'"
unset compile_status
if !`exists "{ObjDir}"`
newfolder "{ObjDir}"
end
### Build this target to generate "include file" dependencies. ###
Dependencies <EFBFBD> $OutOfDate #*TY 02/26/2000 - MakeDepend does not work unless all mentioned include directory exists
###
echo "<22>nUpdating: {MAKEFILE} Dependencies"
MakeDepend <20>
-append {MAKEFILE} <20>
-ignore "{CIncludes}" <20>
-objdir "{ObjDir}" <20>
-objext .x <20>
{Includes} <20>
{SrcFiles}
##################################################################################
# {stl}:src: build rule
##################################################################################
### Source Files ###
STLportLibSrcFiles = <20>
c_locale_stub.cpp <09>
codecvt.cpp <09>
collate.cpp <09>
complex.cpp <09>
complex_exp.cpp <09>
complex_io.cpp <09>
complex_io_w.cpp <09>
complex_trig.cpp <09>
ctype.cpp <09>
dll_main.cpp <09>
fstream.cpp <09>
ios.cpp <09>
iostream.cpp <09>
istream.cpp <09>
locale.cpp <09>
locale_catalog.cpp <09>
facets_byname.cpp <09>
locale_impl.cpp <09>
messages.cpp <09>
monetary.cpp <09>
num_get.cpp <09>
num_get_float.cpp <09>
num_put.cpp <09>
num_put_float.cpp <09>
numpunct.cpp <09>
ostream.cpp <09>
sstream.cpp <09>
stdio_streambuf.cpp <09>
streambuf.cpp <09>
string_w.cpp <09>
strstream.cpp <09>
time_facets.cpp <09>
# end #*TY 11/25/2000 - updated for STLport.4.1
### Object Files ###
STLportLibObjFiles1-68K = <20>
{ObjDir}c_locale_stub.cpp.o <09>
{ObjDir}codecvt.cpp.o <09>
{ObjDir}collate.cpp.o <09>
{ObjDir}complex.cpp.o <09>
{ObjDir}complex_exp.cpp.o <09>
{ObjDir}complex_io.cpp.o <09>
{ObjDir}complex_io_w.cpp.o <09>
{ObjDir}complex_trig.cpp.o <09>
{ObjDir}ctype.cpp.o <09>
{ObjDir}dll_main.cpp.o <09>
{ObjDir}fstream.cpp.o <09>
{ObjDir}ios.cpp.o <09>
{ObjDir}iostream.cpp.o <09>
{ObjDir}istream.cpp.o <09>
{ObjDir}locale.cpp.o <09>
{ObjDir}locale_catalog.cpp.o <09>
#
STLportLibObjFiles2-68K = <20>
{ObjDir}facets_byname.cpp.o <09>
{ObjDir}locale_impl.cpp.o <09>
{ObjDir}messages.cpp.o <09>
{ObjDir}monetary.cpp.o <09>
{ObjDir}num_get.cpp.o <09>
{ObjDir}num_get_float.cpp.o <09>
{ObjDir}num_put.cpp.o <09>
{ObjDir}num_put_float.cpp.o <09>
{ObjDir}numpunct.cpp.o <09>
{ObjDir}ostream.cpp.o <09>
{ObjDir}sstream.cpp.o <09>
{ObjDir}stdio_streambuf.cpp.o <09>
{ObjDir}streambuf.cpp.o <09>
{ObjDir}string_w.cpp.o <09>
{ObjDir}strstream.cpp.o <09>
{ObjDir}time_facets.cpp.o <09>
# end #*TY 11/25/2000 - updated for STLport.4.1
### Build Rules ###
build <EFBFBD><EFBFBD> setup
build <EFBFBD><EFBFBD> "{ObjDir}"STLportLib{config_}.o
"{ObjDir}"STLportLib{config_}.o <EFBFBD><EFBFBD> {STLportLibObjFiles1-68K} {STLportLibObjFiles2-68K} {<EFBFBD>MondoBuild<EFBFBD>}
###
echo "<22>nLibbing: {Targ}"
Lib <20>
-o "{ObjDir}"STLportLib1{config_}.o <20>
{STLportLibObjFiles1-68K} <20>
-mf <20>
-d <20>
-sym on <20>
# end
Lib <20>
-o "{ObjDir}"STLportLib2{config_}.o <20>
{STLportLibObjFiles2-68K} <20>
-mf <20>
-d <20>
-sym on <20>
# end
Lib <20>
-o {Targ} <20>
"{ObjDir}"STLportLib1{config_}.o "{ObjDir}"STLportLib2{config_}.o <20>
-mf <20>
-d <20>
-sym on <20>
# end
install <EFBFBD><EFBFBD> build
###
echo "<22>nInstalling: <20>{stl<74>}:lib:STLportLib{config_}.o"
if !`exists "{stl}":lib:`
newfolder "{stl}":lib:
end
duplicate -y "{ObjDir}"STLportLib{config_}.o "{stl}":lib:STLportLib{config_}.o

View File

@@ -0,0 +1,13 @@
# ifndef ALIGNED_BUFFER_H
# define ALIGNED_BUFFER_H
_STLP_BEGIN_NAMESPACE
// this is for fake initialization
template<class T>
union _Stl_aligned_buffer {
char buf[sizeof(T)];
struct { double a; double b; } padding;
};
_STLP_END_NAMESPACE
# endif

234
STLPORT/src/bc502.mak Normal file
View File

@@ -0,0 +1,234 @@
# ---------------------------------------------------------------------------
CPP=cpp32
CC=bcc32 -P
CXX=bcc32
RC=brc32
COMP=BCC502
LIB_BASENAME=stlport_bcb
# ---------------------------------------------------------------------------
LINK_OUT=
DYNLINK_OUT=
LINK = tlib /P128
DYN_LINK = ilink32
OBJEXT=obj
DYNEXT=dll
STEXT=lib
RM=@erase /F /Q
PATH_SEP=\\
MKDIR=mkdir
STATIC_SUFFIX=_static
INSTALL_STEP=install_bc
# static builds, but cannot be used - some weird compile errors..
all : all_dynamic
!include common_macros_windows.mak
DYNAMIC_DEFS=_RTLDLL
STATIC_DEFS=_LIB;_STLP_NO_FORCE_INSTANTIATE
LINKSTARTUP= c0d32.obj
FLAGS_COMMON= -I.;..\stlport\BC50;..\stlport;$(BCB)\include -j1 -w -c -w-par -w-inl -tWM
FLAGS_COMMON_static = $(FLAGS_COMMON) -D$(SYSDEFINES);$(USERDEFINES);$(STATIC_DEFS)
FLAGS_COMMON_dynamic = $(FLAGS_COMMON) -D$(SYSDEFINES);$(USERDEFINES);$(DYNAMIC_DEFS) -tWD
LDFLAGS_COMMON=-Gn -Gi -Tpd -aa -L$(MAKEDIR)\..\lib -x
LDFLAGS_COMMON_static= $(LDFLAGS_COMMON)
LDFLAGS_COMMON_dynamic= $(LDFLAGS_COMMON)
LDFLAGS_RELEASE_static= $(LDFLAGS_COMMON_static) $(LINKSTARTUP)
LDFLAGS_DEBUG_static= $(LDFLAGS_COMMON_static) $(LINKSTARTUP)
LDFLAGS_STLDEBUG_static= $(LDFLAGS_COMMON_static) $(LINKSTARTUP)
LDFLAGS_RELEASE_dynamic= $(LDFLAGS_COMMON_dynamic) $(LINKSTARTUP)
LDFLAGS_DEBUG_dynamic= $(LDFLAGS_COMMON_dynamic) $(LINKSTARTUP)
LDFLAGS_STLDEBUG_dynamic= $(LDFLAGS_COMMON_dynamic) $(LINKSTARTUP)
LDLIBS_RELEASE_dynamic= import32.lib cw32mti.lib
LDLIBS_DEBUG_dynamic= import32.lib cw32mti.lib
LDLIBS_STLDEBUG_dynamic= import32.lib cw32mti.lib
CXXFLAGS_RELEASE_static= $(FLAGS_COMMON_static) -O2 -n$(RELEASE_OBJDIR_static)
CXXFLAGS_DEBUG_static= $(FLAGS_COMMON_static) -v -N -x -xp -n$(DEBUG_OBJDIR_static)
CXXFLAGS_STLDEBUG_static= $(FLAGS_COMMON_static) -v -N -x -xp -n$(STLDEBUG_OBJDIR_static) -D_STLP_DEBUG
CXXFLAGS_RELEASE_dynamic= $(FLAGS_COMMON_dynamic) -O2 -n$(RELEASE_OBJDIR_dynamic)
CXXFLAGS_DEBUG_dynamic= $(FLAGS_COMMON_dynamic) -v -N -x -xp -n$(DEBUG_OBJDIR_dynamic)
CXXFLAGS_STLDEBUG_dynamic= $(FLAGS_COMMON_dynamic) -v -N -x -xp -n$(STLDEBUG_OBJDIR_dynamic) -D_STLP_DEBUG
RELEASE_LINK_COMMANDS_static=\
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_exp.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_io.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_trig.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)dll_main.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)ios.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)streambuf.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)iostream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)istream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)ostream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)fstream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)strstream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)sstream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)codecvt.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)collate.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)ctype.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)messages.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)monetary.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)num_get.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)num_get_float.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)num_put.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)num_put_float.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)numpunct.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)time_facets.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)locale.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)locale_catalog.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)facets_byname.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)locale_impl.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_io_w.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)string_w.$(OBJEXT)
DEBUG_LINK_COMMANDS_static= \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_exp.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_io.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_trig.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)dll_main.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)ios.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)streambuf.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)iostream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)istream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)ostream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)fstream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)strstream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)sstream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)codecvt.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)collate.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)ctype.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)messages.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)monetary.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)num_get.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)num_get_float.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)num_put.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)num_put_float.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)numpunct.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)time_facets.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)locale.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)locale_catalog.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)facets_byname.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)locale_impl.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_io_w.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)string_w.$(OBJEXT)
STLDEBUG_LINK_COMMANDS_static= \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_exp.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_io.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_trig.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)dll_main.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)ios.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)streambuf.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)iostream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)istream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)ostream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)fstream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)strstream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)sstream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)codecvt.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)collate.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)ctype.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)messages.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)monetary.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_get.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_get_float.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_put.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_put_float.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)numpunct.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)time_facets.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)locale.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)locale_catalog.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)facets_byname.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)locale_impl.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_io_w.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)string_w.$(OBJEXT)
#
# Target directories
#
#
$(OUTDIR) :
$(MKDIR) $(OUTDIR)
$(RELEASE_OBJDIR_dynamic) :
$(MKDIR) $(RELEASE_OBJDIR_dynamic)
$(DEBUG_OBJDIR_dynamic) :
$(MKDIR) $(DEBUG_OBJDIR_dynamic)
$(STLDEBUG_OBJDIR_dynamic) :
$(MKDIR) $(STLDEBUG_OBJDIR_dynamic)
$(RELEASE_OBJDIR_static) :
$(MKDIR) $(RELEASE_OBJDIR_static)
$(DEBUG_OBJDIR_static) :
$(MKDIR) $(DEBUG_OBJDIR_static)
$(STLDEBUG_OBJDIR_static) :
$(MKDIR) $(STLDEBUG_OBJDIR_static)
###### Targets ##################
all_static : $(ALL_STATIC_LIBS)
all_dynamic : $(ALL_DYNAMIC_LIBS)
install : $(INSTALL_STEP)
clean : $(CLEAN_SPECIFIC)
-$(RM) $(RELEASE_OBJDIR_static) $(DEBUG_OBJDIR_static) \
$(STLDEBUG_OBJDIR_static) $(RELEASE_OBJDIR_dynamic) \
$(DEBUG_OBJDIR_dynamic) $(STLDEBUG_OBJDIR_dynamic)
clobber : clean
-$(RM) $(OUTDIR)$(PATH_SEP)$(DEBUG_NAME).* \
$(OUTDIR)$(PATH_SEP)$(RELEASE_NAME).* $(OUTDIR)$(PATH_SEP)$(STLDEBUG_NAME).*
$(OUTDIR)$(PATH_SEP)$(RELEASE_DYNLIB) : $(OUTDIR) $(RELEASE_OBJDIR_dynamic) $(DEF_FILE) $(RELEASE_OBJECTS_dynamic)
$(DYN_LINK) $(LDFLAGS_RELEASE_dynamic) $(RELEASE_OBJECTS_dynamic) , $(OUTDIR)$(PATH_SEP)$(RELEASE_DYNLIB),,$(LDLIBS_RELEASE_dynamic)
$(OUTDIR)$(PATH_SEP)$(DEBUG_DYNLIB) : $(OUTDIR) $(DEBUG_OBJDIR_dynamic) $(DEF_FILE) $(DEBUG_OBJECTS_dynamic)
$(DYN_LINK) $(LDFLAGS_DEBUG_dynamic) $(DEBUG_OBJECTS_dynamic), $(DYNLINK_OUT)$(OUTDIR)$(PATH_SEP)$(DEBUG_DYNLIB) ,, $(LDLIBS_DEBUG_dynamic)
$(OUTDIR)$(PATH_SEP)$(STLDEBUG_DYNLIB) : $(OUTDIR) $(STLDEBUG_OBJDIR_dynamic) $(DEF_FILE) $(STLDEBUG_OBJECTS_dynamic)
$(DYN_LINK) $(LDFLAGS_STLDEBUG_dynamic) $(STLDEBUG_OBJECTS_dynamic) , $(DYNLINK_OUT)$(OUTDIR)$(PATH_SEP)$(STLDEBUG_DYNLIB) ,, $(LDLIBS_STLDEBUG_dynamic)
$(OUTDIR)$(PATH_SEP)$(RELEASE_LIB) : $(OUTDIR) $(RELEASE_OBJDIR_static) $(DEF_FILE) $(RELEASE_OBJECTS_static)
$(LINK) $(OUTDIR)$(PATH_SEP)$(RELEASE_LIB) $(RELEASE_LINK_COMMANDS_static)
$(OUTDIR)$(PATH_SEP)$(DEBUG_LIB) : $(OUTDIR) $(DEBUG_OBJDIR_static) $(DEF_FILE) $(DEBUG_OBJECTS_static)
$(LINK) $(OUTDIR)$(PATH_SEP)$(DEBUG_LIB) $(DEBUG_LINK_COMMANDS_static)
$(OUTDIR)$(PATH_SEP)$(STLDEBUG_LIB) : $(OUTDIR) $(STLDEBUG_OBJDIR_static) $(DEF_FILE) $(STLDEBUG_OBJECTS_static)
$(LINK) $(OUTDIR)$(PATH_SEP)$(STLDEBUG_LIB) $(STLDEBUG_LINK_COMMANDS_static)
#########################################
# ---------------------------------------------------------------------------
!include nmake_common.mak
.cpp.i:
$(CPP) $(CXXFLAGS_RELEASE_dynamic) -n. -Sr -Ss -Sd {$< }
# ---------------------------------------------------------------------------
# ---------------------------------------------------------------------------

253
STLPORT/src/bcb.mak Normal file
View File

@@ -0,0 +1,253 @@
# ---------------------------------------------------------------------------
!if !$d(BCB)
BCB = $(MAKEDIR)\..
!endif
CPP=cpp32
CC=bcc32 -P
CXX=bcc32
RC=brc32
COMP=BCB
LIB_BASENAME=stlp
# ---------------------------------------------------------------------------
LINK_OUT=
DYNLINK_OUT=
LINK = tlib /P256
# Use objs in RTL build tree
DYN_LINK = ilink32 -L$(BCB)\lib
OBJEXT=obj
DYNEXT=dll
STEXT=lib
# We use 4NT, which does not know about /Q
#RM=-rd /S /Q
RM=-rd /S
PATH_SEP=\\
MKDIR=-mkdir
STATIC_SUFFIX=st
INSTALL_STEP=install_bc
all : platform all_dynamic all_static
!include common_macros_windows.mak
#RM=-rd /S /Q
RM=-rd /S
MKDIR=-mkdir
DYNAMIC_DEFS=_RTLDLL;_WIN32;_DLL;_STLP_DESIGNATED_DLL
STATIC_DEFS=_LIB;_WIN32;_STLP_NO_FORCE_INSTANTIATE
LINKSTARTUP= c0d32.obj
FLAGS_COMMON= -I.;..\stlport;$(BCB)\include;$(BCB)\include\windows -jb -j1 -w -c -w-par -w-inl -w-stl
FLAGS_COMMON_static = $(FLAGS_COMMON) -D$(SYSDEFINES);$(USERDEFINES);$(STATIC_DEFS)
FLAGS_COMMON_dynamic = $(FLAGS_COMMON) -D$(SYSDEFINES);$(USERDEFINES);$(DYNAMIC_DEFS) -tWDR
# -L$(MAKEDIR)\..\lib removed ...it should get ilink32.cfg values instead
LDFLAGS_COMMON=-Gn -Gi -Tpd -aa -x
LDFLAGS_COMMON_static= $(LDFLAGS_COMMON)
LDFLAGS_COMMON_dynamic= $(LDFLAGS_COMMON)
LDFLAGS_RELEASE_static= $(LDFLAGS_COMMON_static) $(LINKSTARTUP)
LDFLAGS_DEBUG_static= $(LDFLAGS_COMMON_static) $(LINKSTARTUP)
LDFLAGS_STLDEBUG_static= $(LDFLAGS_COMMON_static) $(LINKSTARTUP)
LDFLAGS_RELEASE_dynamic= $(LDFLAGS_COMMON_dynamic) $(LINKSTARTUP)
LDFLAGS_DEBUG_dynamic= $(LDFLAGS_COMMON_dynamic) $(LINKSTARTUP)
LDFLAGS_STLDEBUG_dynamic= $(LDFLAGS_COMMON_dynamic) $(LINKSTARTUP)
LDLIBS_RELEASE_dynamic= import32.lib cw32i.lib
LDLIBS_DEBUG_dynamic= import32.lib cw32i.lib
LDLIBS_STLDEBUG_dynamic= import32.lib cw32i.lib
CXXFLAGS_RELEASE_static= $(FLAGS_COMMON_static) -O2 -n$(RELEASE_OBJDIR_static)
CXXFLAGS_DEBUG_static= $(FLAGS_COMMON_static) -v -N -x -xp -n$(DEBUG_OBJDIR_static)
CXXFLAGS_STLDEBUG_static= $(FLAGS_COMMON_static) -v -N -x -xp -n$(STLDEBUG_OBJDIR_static) -D_STLP_DEBUG
CXXFLAGS_RELEASE_dynamic= $(FLAGS_COMMON_dynamic) -O2 -n$(RELEASE_OBJDIR_dynamic)
CXXFLAGS_DEBUG_dynamic= $(FLAGS_COMMON_dynamic) -v -N -x -xp -n$(DEBUG_OBJDIR_dynamic)
CXXFLAGS_STLDEBUG_dynamic= $(FLAGS_COMMON_dynamic) -v -N -x -xp -n$(STLDEBUG_OBJDIR_dynamic) -D_STLP_DEBUG
RELEASE_LINK_COMMANDS_static=\
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_exp.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_io.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_trig.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)dll_main.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)ios.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)streambuf.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)iostream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)istream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)ostream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)fstream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)strstream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)sstream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)codecvt.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)collate.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)ctype.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)messages.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)monetary.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)num_get.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)num_get_float.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)num_put.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)num_put_float.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)numpunct.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)time_facets.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)locale.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)locale_catalog.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)facets_byname.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)locale_impl.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)c_locale.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)c_locale_stub.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_io_w.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)string_w.$(OBJEXT)
DEBUG_LINK_COMMANDS_static= \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_exp.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_io.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_trig.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)dll_main.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)ios.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)streambuf.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)iostream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)istream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)ostream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)fstream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)strstream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)sstream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)codecvt.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)collate.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)ctype.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)messages.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)monetary.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)num_get.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)num_get_float.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)num_put.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)num_put_float.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)numpunct.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)time_facets.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)locale.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)locale_catalog.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)facets_byname.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)locale_impl.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)c_locale.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)c_locale_stub.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_io_w.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)string_w.$(OBJEXT)
STLDEBUG_LINK_COMMANDS_static= \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_exp.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_io.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_trig.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)dll_main.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)ios.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)streambuf.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)iostream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)istream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)ostream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)fstream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)strstream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)sstream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)codecvt.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)collate.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)ctype.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)messages.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)monetary.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_get.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_get_float.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_put.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_put_float.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)numpunct.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)time_facets.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)locale.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)locale_catalog.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)facets_byname.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)locale_impl.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)c_locale.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)c_locale_stub.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_io_w.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)string_w.$(OBJEXT)
#
# Target directories
#
#
$(RELEASE_OBJDIR_dynamic) :
$(MKDIR) $(RELEASE_OBJDIR_dynamic)
$(DEBUG_OBJDIR_dynamic) :
$(MKDIR) $(DEBUG_OBJDIR_dynamic)
$(STLDEBUG_OBJDIR_dynamic) :
$(MKDIR) $(STLDEBUG_OBJDIR_dynamic)
$(RELEASE_OBJDIR_static) :
$(MKDIR) $(RELEASE_OBJDIR_static)
$(DEBUG_OBJDIR_static) :
$(MKDIR) $(DEBUG_OBJDIR_static)
$(STLDEBUG_OBJDIR_static) :
$(MKDIR) $(STLDEBUG_OBJDIR_static)
###### Targets ##################
all_static : $(ALL_STATIC_LIBS)
all_dynamic : $(ALL_DYNAMIC_LIBS)
install : $(INSTALL_STEP)
clean : $(CLEAN_SPECIFIC)
-$(RM) $(RELEASE_OBJDIR_static) $(DEBUG_OBJDIR_static) \
$(STLDEBUG_OBJDIR_static) $(RELEASE_OBJDIR_dynamic) \
$(DEBUG_OBJDIR_dynamic) $(STLDEBUG_OBJDIR_dynamic)
clobber : clean
-$(RM) $(OUTDIR)$(PATH_SEP)$(DEBUG_NAME).* \
$(OUTDIR)$(PATH_SEP)$(RELEASE_NAME).* $(OUTDIR)$(PATH_SEP)$(STLDEBUG_NAME).*
#create a compiler platform directory
platform:
-$(MKDIR) $(OBJDIR_COMMON)
-$(MKDIR) $(OBJDIR)
$(OUTDIR)$(PATH_SEP)$(RELEASE_DYNLIB) : $(RELEASE_OBJDIR_dynamic) $(DEF_FILE) $(RELEASE_OBJECTS_dynamic)
$(DYN_LINK) $(LDFLAGS_RELEASE_dynamic) $(RELEASE_OBJECTS_dynamic) , $(OUTDIR)$(PATH_SEP)$(RELEASE_DYNLIB),,$(LDLIBS_RELEASE_dynamic)
$(OUTDIR)$(PATH_SEP)$(DEBUG_DYNLIB) : $(DEBUG_OBJDIR_dynamic) $(DEF_FILE) $(DEBUG_OBJECTS_dynamic)
$(DYN_LINK) $(LDFLAGS_DEBUG_dynamic) $(DEBUG_OBJECTS_dynamic), $(DYNLINK_OUT)$(OUTDIR)$(PATH_SEP)$(DEBUG_DYNLIB) ,, $(LDLIBS_DEBUG_dynamic)
$(OUTDIR)$(PATH_SEP)$(STLDEBUG_DYNLIB) : $(STLDEBUG_OBJDIR_dynamic) $(DEF_FILE) $(STLDEBUG_OBJECTS_dynamic)
$(DYN_LINK) $(LDFLAGS_STLDEBUG_dynamic) $(STLDEBUG_OBJECTS_dynamic) , $(DYNLINK_OUT)$(OUTDIR)$(PATH_SEP)$(STLDEBUG_DYNLIB) ,, $(LDLIBS_STLDEBUG_dynamic)
$(OUTDIR)$(PATH_SEP)$(RELEASE_LIB) : $(RELEASE_OBJDIR_static) $(DEF_FILE) $(RELEASE_OBJECTS_static)
$(LINK) $(OUTDIR)$(PATH_SEP)$(RELEASE_LIB) $(RELEASE_LINK_COMMANDS_static)
$(OUTDIR)$(PATH_SEP)$(DEBUG_LIB) : $(DEBUG_OBJDIR_static) $(DEF_FILE) $(DEBUG_OBJECTS_static)
$(LINK) $(OUTDIR)$(PATH_SEP)$(DEBUG_LIB) $(DEBUG_LINK_COMMANDS_static)
$(OUTDIR)$(PATH_SEP)$(STLDEBUG_LIB) : $(STLDEBUG_OBJDIR_static) $(DEF_FILE) $(STLDEBUG_OBJECTS_static)
$(LINK) $(OUTDIR)$(PATH_SEP)$(STLDEBUG_LIB) $(STLDEBUG_LINK_COMMANDS_static)
#########################################
# ---------------------------------------------------------------------------
!include nmake_common.mak
.cpp.i:
$(CPP) $(CXXFLAGS_DEBUG_dynamic) -n. -Sr -Ss -Sd {$< }
# ---------------------------------------------------------------------------
# ---------------------------------------------------------------------------

253
STLPORT/src/bcb55.mak Normal file
View File

@@ -0,0 +1,253 @@
# ---------------------------------------------------------------------------
!if !$d(BCB)
BCB = $(MAKEDIR)\..
!endif
CPP=cpp32
CC=bcc32 -P
CXX=bcc32
RC=brc32
COMP=BCB
LIB_BASENAME=stlp
# ---------------------------------------------------------------------------
LINK_OUT=
DYNLINK_OUT=
LINK = tlib /P256
# Use objs in RTL build tree
DYN_LINK = ilink32 -L$(BCB)\lib
OBJEXT=obj
DYNEXT=dll
STEXT=lib
# We use 4NT, which does not know about /Q
#RM=-rd /S /Q
RM=-rd /S
PATH_SEP=\\
MKDIR=-md
STATIC_SUFFIX=st
INSTALL_STEP=install_bc
all : platform all_dynamic all_static
!include common_macros_windows.mak
#RM=-rd /S /Q
RM=-rd /S
MKDIR=-md
DYNAMIC_DEFS=_RTLDLL;_WIN32;_DLL;_STLP_DESIGNATED_DLL
STATIC_DEFS=_LIB;_WIN32;_STLP_NO_FORCE_INSTANTIATE
LINKSTARTUP= c0d32.obj
FLAGS_COMMON= -I.;..\stlport;$(BCB)\include;$(BCB)\include\windows -jb -j1 -w -c -w-par -w-inl -w-stl
FLAGS_COMMON_static = $(FLAGS_COMMON) -D$(SYSDEFINES);$(USERDEFINES);$(STATIC_DEFS)
FLAGS_COMMON_dynamic = $(FLAGS_COMMON) -D$(SYSDEFINES);$(USERDEFINES);$(DYNAMIC_DEFS) -tWDR
# -L$(MAKEDIR)\..\lib removed ...it should get ilink32.cfg values instead
LDFLAGS_COMMON=-Gn -Gi -Tpd -aa -x
LDFLAGS_COMMON_static= $(LDFLAGS_COMMON)
LDFLAGS_COMMON_dynamic= $(LDFLAGS_COMMON)
LDFLAGS_RELEASE_static= $(LDFLAGS_COMMON_static) $(LINKSTARTUP)
LDFLAGS_DEBUG_static= $(LDFLAGS_COMMON_static) $(LINKSTARTUP)
LDFLAGS_STLDEBUG_static= $(LDFLAGS_COMMON_static) $(LINKSTARTUP)
LDFLAGS_RELEASE_dynamic= $(LDFLAGS_COMMON_dynamic) $(LINKSTARTUP)
LDFLAGS_DEBUG_dynamic= $(LDFLAGS_COMMON_dynamic) $(LINKSTARTUP)
LDFLAGS_STLDEBUG_dynamic= $(LDFLAGS_COMMON_dynamic) $(LINKSTARTUP)
LDLIBS_RELEASE_dynamic= import32.lib cw32i.lib
LDLIBS_DEBUG_dynamic= import32.lib cw32i.lib
LDLIBS_STLDEBUG_dynamic= import32.lib cw32i.lib
CXXFLAGS_RELEASE_static= $(FLAGS_COMMON_static) -O2 -n$(RELEASE_OBJDIR_static)
CXXFLAGS_DEBUG_static= $(FLAGS_COMMON_static) -v -N -x -xp -n$(DEBUG_OBJDIR_static)
CXXFLAGS_STLDEBUG_static= $(FLAGS_COMMON_static) -v -N -x -xp -n$(STLDEBUG_OBJDIR_static) -D_STLP_DEBUG
CXXFLAGS_RELEASE_dynamic= $(FLAGS_COMMON_dynamic) -O2 -n$(RELEASE_OBJDIR_dynamic)
CXXFLAGS_DEBUG_dynamic= $(FLAGS_COMMON_dynamic) -v -N -x -xp -n$(DEBUG_OBJDIR_dynamic)
CXXFLAGS_STLDEBUG_dynamic= $(FLAGS_COMMON_dynamic) -v -N -x -xp -n$(STLDEBUG_OBJDIR_dynamic) -D_STLP_DEBUG
RELEASE_LINK_COMMANDS_static=\
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_exp.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_io.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_trig.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)dll_main.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)ios.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)streambuf.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)iostream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)istream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)ostream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)fstream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)strstream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)sstream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)codecvt.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)collate.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)ctype.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)messages.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)monetary.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)num_get.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)num_get_float.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)num_put.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)num_put_float.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)numpunct.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)time_facets.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)locale.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)locale_catalog.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)facets_byname.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)locale_impl.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)c_locale.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)c_locale_stub.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_io_w.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)string_w.$(OBJEXT)
DEBUG_LINK_COMMANDS_static= \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_exp.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_io.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_trig.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)dll_main.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)ios.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)streambuf.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)iostream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)istream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)ostream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)fstream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)strstream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)sstream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)codecvt.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)collate.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)ctype.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)messages.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)monetary.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)num_get.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)num_get_float.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)num_put.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)num_put_float.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)numpunct.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)time_facets.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)locale.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)locale_catalog.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)facets_byname.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)locale_impl.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)c_locale.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)c_locale_stub.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_io_w.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)string_w.$(OBJEXT)
STLDEBUG_LINK_COMMANDS_static= \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_exp.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_io.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_trig.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)dll_main.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)ios.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)streambuf.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)iostream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)istream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)ostream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)fstream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)strstream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)sstream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)codecvt.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)collate.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)ctype.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)messages.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)monetary.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_get.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_get_float.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_put.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_put_float.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)numpunct.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)time_facets.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)locale.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)locale_catalog.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)facets_byname.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)locale_impl.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)c_locale.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)c_locale_stub.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_io_w.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)string_w.$(OBJEXT)
#
# Target directories
#
#
$(RELEASE_OBJDIR_dynamic) :
$(MKDIR) $(RELEASE_OBJDIR_dynamic)
$(DEBUG_OBJDIR_dynamic) :
$(MKDIR) $(DEBUG_OBJDIR_dynamic)
$(STLDEBUG_OBJDIR_dynamic) :
$(MKDIR) $(STLDEBUG_OBJDIR_dynamic)
$(RELEASE_OBJDIR_static) :
$(MKDIR) $(RELEASE_OBJDIR_static)
$(DEBUG_OBJDIR_static) :
$(MKDIR) $(DEBUG_OBJDIR_static)
$(STLDEBUG_OBJDIR_static) :
$(MKDIR) $(STLDEBUG_OBJDIR_static)
###### Targets ##################
all_static : $(ALL_STATIC_LIBS)
all_dynamic : $(ALL_DYNAMIC_LIBS)
install : $(INSTALL_STEP)
clean : $(CLEAN_SPECIFIC)
-$(RM) $(RELEASE_OBJDIR_static) $(DEBUG_OBJDIR_static) \
$(STLDEBUG_OBJDIR_static) $(RELEASE_OBJDIR_dynamic) \
$(DEBUG_OBJDIR_dynamic) $(STLDEBUG_OBJDIR_dynamic)
clobber : clean
-$(RM) $(OUTDIR)$(PATH_SEP)$(DEBUG_NAME).* \
$(OUTDIR)$(PATH_SEP)$(RELEASE_NAME).* $(OUTDIR)$(PATH_SEP)$(STLDEBUG_NAME).*
#create a compiler platform directory
platform:
-$(MKDIR) $(OBJDIR_COMMON)
-$(MKDIR) $(OBJDIR)
$(OUTDIR)$(PATH_SEP)$(RELEASE_DYNLIB) : $(RELEASE_OBJDIR_dynamic) $(DEF_FILE) $(RELEASE_OBJECTS_dynamic)
$(DYN_LINK) $(LDFLAGS_RELEASE_dynamic) $(RELEASE_OBJECTS_dynamic) , $(OUTDIR)$(PATH_SEP)$(RELEASE_DYNLIB),,$(LDLIBS_RELEASE_dynamic)
$(OUTDIR)$(PATH_SEP)$(DEBUG_DYNLIB) : $(DEBUG_OBJDIR_dynamic) $(DEF_FILE) $(DEBUG_OBJECTS_dynamic)
$(DYN_LINK) $(LDFLAGS_DEBUG_dynamic) $(DEBUG_OBJECTS_dynamic), $(DYNLINK_OUT)$(OUTDIR)$(PATH_SEP)$(DEBUG_DYNLIB) ,, $(LDLIBS_DEBUG_dynamic)
$(OUTDIR)$(PATH_SEP)$(STLDEBUG_DYNLIB) : $(STLDEBUG_OBJDIR_dynamic) $(DEF_FILE) $(STLDEBUG_OBJECTS_dynamic)
$(DYN_LINK) $(LDFLAGS_STLDEBUG_dynamic) $(STLDEBUG_OBJECTS_dynamic) , $(DYNLINK_OUT)$(OUTDIR)$(PATH_SEP)$(STLDEBUG_DYNLIB) ,, $(LDLIBS_STLDEBUG_dynamic)
$(OUTDIR)$(PATH_SEP)$(RELEASE_LIB) : $(RELEASE_OBJDIR_static) $(DEF_FILE) $(RELEASE_OBJECTS_static)
$(LINK) $(OUTDIR)$(PATH_SEP)$(RELEASE_LIB) $(RELEASE_LINK_COMMANDS_static)
$(OUTDIR)$(PATH_SEP)$(DEBUG_LIB) : $(DEBUG_OBJDIR_static) $(DEF_FILE) $(DEBUG_OBJECTS_static)
$(LINK) $(OUTDIR)$(PATH_SEP)$(DEBUG_LIB) $(DEBUG_LINK_COMMANDS_static)
$(OUTDIR)$(PATH_SEP)$(STLDEBUG_LIB) : $(STLDEBUG_OBJDIR_static) $(DEF_FILE) $(STLDEBUG_OBJECTS_static)
$(LINK) $(OUTDIR)$(PATH_SEP)$(STLDEBUG_LIB) $(STLDEBUG_LINK_COMMANDS_static)
#########################################
# ---------------------------------------------------------------------------
!include nmake_common.mak
.cpp.i:
$(CPP) $(CXXFLAGS_DEBUG_dynamic) -n. -Sr -Ss -Sd {$< }
# ---------------------------------------------------------------------------
# ---------------------------------------------------------------------------

254
STLPORT/src/bcb60.mak Normal file
View File

@@ -0,0 +1,254 @@
# ---------------------------------------------------------------------------
!if !$d(BCB)
BCB = $(MAKEDIR)\..
!endif
CPP=cpp32
CC=bcc32 -P
CXX=bcc32
RC=brc32
COMP=BCB
LIB_BASENAME=stlp
# ---------------------------------------------------------------------------
LINK_OUT=
DYNLINK_OUT=
LINK = tlib /P256
# Use objs in RTL build tree
DYN_LINK = ilink32 -L$(BCB)\lib
OBJEXT=obj
DYNEXT=dll
STEXT=lib
# We use 4NT, which does not know about /Q
#RM=-rd /S /Q
RM=-rd /S
PATH_SEP=\\
MKDIR=-md
STATIC_SUFFIX=st
INSTALL_STEP=install_bc
all : platform all_dynamic all_static
!include common_macros_windows.mak
#RM=-rd /S /Q
RM=-rd /S
MKDIR=-md
DYNAMIC_DEFS=_RTLDLL;_WIN32;_DLL;_STLP_DESIGNATED_DLL
STATIC_DEFS=_LIB;_WIN32;_STLP_NO_FORCE_INSTANTIATE;_STLP_DESIGNATED_DLL
LINKSTARTUP= c0d32.obj
FLAGS_COMMON= -I.;..\stlport;$(BCB)\include;$(BCB)\include\windows -jb -j1 -w -c -w-par -w-inl -w-stl
FLAGS_COMMON_static = $(FLAGS_COMMON) -D$(SYSDEFINES);$(USERDEFINES);$(STATIC_DEFS)
FLAGS_COMMON_dynamic = $(FLAGS_COMMON) -D$(SYSDEFINES);$(USERDEFINES);$(DYNAMIC_DEFS) -tWDR
# -L$(MAKEDIR)\..\lib removed ...it should get ilink32.cfg values instead
LDFLAGS_COMMON=-Gn -Gi -Tpd -aa -x
LDFLAGS_COMMON_static= $(LDFLAGS_COMMON)
LDFLAGS_COMMON_dynamic= $(LDFLAGS_COMMON)
LDFLAGS_RELEASE_static= $(LDFLAGS_COMMON_static) $(LINKSTARTUP)
LDFLAGS_DEBUG_static= $(LDFLAGS_COMMON_static) $(LINKSTARTUP)
LDFLAGS_STLDEBUG_static= $(LDFLAGS_COMMON_static) $(LINKSTARTUP)
LDFLAGS_RELEASE_dynamic= $(LDFLAGS_COMMON_dynamic) $(LINKSTARTUP)
LDFLAGS_DEBUG_dynamic= $(LDFLAGS_COMMON_dynamic) $(LINKSTARTUP)
LDFLAGS_STLDEBUG_dynamic= $(LDFLAGS_COMMON_dynamic) $(LINKSTARTUP)
LDLIBS_RELEASE_dynamic= import32.lib cw32i.lib
LDLIBS_DEBUG_dynamic= import32.lib cw32i.lib
LDLIBS_STLDEBUG_dynamic= import32.lib cw32i.lib
CXXFLAGS_RELEASE_static= $(FLAGS_COMMON_static) -O2 -n$(RELEASE_OBJDIR_static)
CXXFLAGS_DEBUG_static= $(FLAGS_COMMON_static) -v -N -x -xp -n$(DEBUG_OBJDIR_static)
CXXFLAGS_STLDEBUG_static= $(FLAGS_COMMON_static) -v -N -x -xp -n$(STLDEBUG_OBJDIR_static) -D_STLP_DEBUG
CXXFLAGS_RELEASE_dynamic= $(FLAGS_COMMON_dynamic) -O2 -n$(RELEASE_OBJDIR_dynamic)
CXXFLAGS_DEBUG_dynamic= $(FLAGS_COMMON_dynamic) -v -N -x -xp -n$(DEBUG_OBJDIR_dynamic)
CXXFLAGS_STLDEBUG_dynamic= $(FLAGS_COMMON_dynamic) -v -N -x -xp -n$(STLDEBUG_OBJDIR_dynamic) -D_STLP_DEBUG
RELEASE_LINK_COMMANDS_static=\
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_exp.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_io.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_trig.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)dll_main.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)ios.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)streambuf.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)iostream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)istream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)ostream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)fstream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)strstream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)sstream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)codecvt.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)collate.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)ctype.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)messages.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)monetary.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)num_get.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)num_get_float.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)num_put.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)num_put_float.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)numpunct.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)time_facets.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)locale.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)locale_catalog.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)facets_byname.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)locale_impl.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)c_locale.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)c_locale_stub.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_io_w.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)string_w.$(OBJEXT)
DEBUG_LINK_COMMANDS_static= \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_exp.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_io.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_trig.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)dll_main.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)ios.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)streambuf.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)iostream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)istream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)ostream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)fstream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)strstream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)sstream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)codecvt.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)collate.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)ctype.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)messages.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)monetary.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)num_get.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)num_get_float.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)num_put.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)num_put_float.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)numpunct.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)time_facets.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)locale.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)locale_catalog.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)facets_byname.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)locale_impl.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)c_locale.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)c_locale_stub.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_io_w.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)string_w.$(OBJEXT)
STLDEBUG_LINK_COMMANDS_static= \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_exp.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_io.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_trig.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)dll_main.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)ios.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)streambuf.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)iostream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)istream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)ostream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)fstream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)strstream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)sstream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)codecvt.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)collate.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)ctype.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)messages.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)monetary.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_get.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_get_float.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_put.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_put_float.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)numpunct.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)time_facets.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)locale.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)locale_catalog.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)facets_byname.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)locale_impl.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)c_locale.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)c_locale_stub.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_io_w.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)string_w.$(OBJEXT)
#
# Target directories
#
#
$(RELEASE_OBJDIR_dynamic) :
$(MKDIR) $(RELEASE_OBJDIR_dynamic)
$(DEBUG_OBJDIR_dynamic) :
$(MKDIR) $(DEBUG_OBJDIR_dynamic)
$(STLDEBUG_OBJDIR_dynamic) :
$(MKDIR) $(STLDEBUG_OBJDIR_dynamic)
$(RELEASE_OBJDIR_static) :
$(MKDIR) $(RELEASE_OBJDIR_static)
$(DEBUG_OBJDIR_static) :
$(MKDIR) $(DEBUG_OBJDIR_static)
$(STLDEBUG_OBJDIR_static) :
$(MKDIR) $(STLDEBUG_OBJDIR_static)
###### Targets ##################
all_static : $(ALL_STATIC_LIBS)
all_dynamic : $(ALL_DYNAMIC_LIBS)
install : $(INSTALL_STEP)
clean : $(CLEAN_SPECIFIC)
-$(RM) $(RELEASE_OBJDIR_static) $(DEBUG_OBJDIR_static) \
$(STLDEBUG_OBJDIR_static) $(RELEASE_OBJDIR_dynamic) \
$(DEBUG_OBJDIR_dynamic) $(STLDEBUG_OBJDIR_dynamic)
clobber : clean
-$(RM) $(OUTDIR)$(PATH_SEP)$(DEBUG_NAME).* \
$(OUTDIR)$(PATH_SEP)$(RELEASE_NAME).* $(OUTDIR)$(PATH_SEP)$(STLDEBUG_NAME).*
#create a compiler platform directory
platform:
-$(MKDIR) $(OBJDIR_COMMON)
-$(MKDIR) $(OBJDIR)
$(OUTDIR)$(PATH_SEP)$(RELEASE_DYNLIB) : $(RELEASE_OBJDIR_dynamic) $(DEF_FILE) $(RELEASE_OBJECTS_dynamic)
$(DYN_LINK) $(LDFLAGS_RELEASE_dynamic) $(RELEASE_OBJECTS_dynamic) , $(OUTDIR)$(PATH_SEP)$(RELEASE_DYNLIB),,$(LDLIBS_RELEASE_dynamic)
$(OUTDIR)$(PATH_SEP)$(DEBUG_DYNLIB) : $(DEBUG_OBJDIR_dynamic) $(DEF_FILE) $(DEBUG_OBJECTS_dynamic)
$(DYN_LINK) $(LDFLAGS_DEBUG_dynamic) $(DEBUG_OBJECTS_dynamic), $(DYNLINK_OUT)$(OUTDIR)$(PATH_SEP)$(DEBUG_DYNLIB) ,, $(LDLIBS_DEBUG_dynamic)
$(OUTDIR)$(PATH_SEP)$(STLDEBUG_DYNLIB) : $(STLDEBUG_OBJDIR_dynamic) $(DEF_FILE) $(STLDEBUG_OBJECTS_dynamic)
$(DYN_LINK) $(LDFLAGS_STLDEBUG_dynamic) $(STLDEBUG_OBJECTS_dynamic) , $(DYNLINK_OUT)$(OUTDIR)$(PATH_SEP)$(STLDEBUG_DYNLIB) ,, $(LDLIBS_STLDEBUG_dynamic)
$(OUTDIR)$(PATH_SEP)$(RELEASE_LIB) : $(RELEASE_OBJDIR_static) $(DEF_FILE) $(RELEASE_OBJECTS_static)
$(LINK) $(OUTDIR)$(PATH_SEP)$(RELEASE_LIB) $(RELEASE_LINK_COMMANDS_static)
$(OUTDIR)$(PATH_SEP)$(DEBUG_LIB) : $(DEBUG_OBJDIR_static) $(DEF_FILE) $(DEBUG_OBJECTS_static)
$(LINK) $(OUTDIR)$(PATH_SEP)$(DEBUG_LIB) $(DEBUG_LINK_COMMANDS_static)
$(OUTDIR)$(PATH_SEP)$(STLDEBUG_LIB) : $(STLDEBUG_OBJDIR_static) $(DEF_FILE) $(STLDEBUG_OBJECTS_static)
$(LINK) $(OUTDIR)$(PATH_SEP)$(STLDEBUG_LIB) $(STLDEBUG_LINK_COMMANDS_static)
#########################################
# ---------------------------------------------------------------------------
!include nmake_common.mak
.cpp.i:
$(CPP) $(FLAGS_COMMON_static) -n. -Sr -Ss -Sd {$< }
# ---------------------------------------------------------------------------
# ---------------------------------------------------------------------------

253
STLPORT/src/bcb60mt.mak Normal file
View File

@@ -0,0 +1,253 @@
# ---------------------------------------------------------------------------
!if !$d(BCB)
BCB = $(MAKEDIR)\..
!endif
CPP=cpp32
CC=bcc32 -P
CXX=bcc32
RC=brc32
COMP=BCB60MT
LIB_BASENAME=stlpmt
# ---------------------------------------------------------------------------
LINK_OUT=
DYNLINK_OUT=
LINK = tlib /P256
# Use objs in RTL build tree
DYN_LINK = ilink32 -L$(BCB)\..\lib
OBJEXT=obj
DYNEXT=dll
STEXT=lib
# We use 4NT, which does not know about /Q
#RM=-rd /S /Q
RM=-rd /S
PATH_SEP=\\
MKDIR=-md /S
STATIC_SUFFIX=st
INSTALL_STEP=install_bc
all : platform all_dynamic all_static
!include common_macros_windows.mak
#RM=-rd /S /Q
RM=-rd /S
MKDIR=-md /S
DYNAMIC_DEFS=_RTLDLL;_WIN32;_DLL;_STLP_DESIGNATED_DLL
STATIC_DEFS=_LIB;_WIN32;_STLP_NO_FORCE_INSTANTIATE
LINKSTARTUP= c0d32.obj
FLAGS_COMMON= -I.;..\stlport;$(BCB)\include;$(BCB)\include\windows -jb -j1 -w -c -w-par -w-inl -tWM -w-stl
FLAGS_COMMON_static = $(FLAGS_COMMON) -D$(SYSDEFINES);$(USERDEFINES);$(STATIC_DEFS)
FLAGS_COMMON_dynamic = $(FLAGS_COMMON) -D$(SYSDEFINES);$(USERDEFINES);$(DYNAMIC_DEFS) -tWDR
# -L$(MAKEDIR)\..\lib removed ...it should get ilink32.cfg values instead
LDFLAGS_COMMON=-Gn -Gi -Tpd -aa -x
LDFLAGS_COMMON_static= $(LDFLAGS_COMMON)
LDFLAGS_COMMON_dynamic= $(LDFLAGS_COMMON)
LDFLAGS_RELEASE_static= $(LDFLAGS_COMMON_static) $(LINKSTARTUP)
LDFLAGS_DEBUG_static= $(LDFLAGS_COMMON_static) $(LINKSTARTUP)
LDFLAGS_STLDEBUG_static= $(LDFLAGS_COMMON_static) $(LINKSTARTUP)
LDFLAGS_RELEASE_dynamic= $(LDFLAGS_COMMON_dynamic) $(LINKSTARTUP)
LDFLAGS_DEBUG_dynamic= $(LDFLAGS_COMMON_dynamic) $(LINKSTARTUP)
LDFLAGS_STLDEBUG_dynamic= $(LDFLAGS_COMMON_dynamic) $(LINKSTARTUP)
LDLIBS_RELEASE_dynamic= import32.lib cw32mti.lib
LDLIBS_DEBUG_dynamic= import32.lib cw32mti.lib
LDLIBS_STLDEBUG_dynamic= import32.lib cw32mti.lib
CXXFLAGS_RELEASE_static= $(FLAGS_COMMON_static) -O2 -n$(RELEASE_OBJDIR_static)
CXXFLAGS_DEBUG_static= $(FLAGS_COMMON_static) -v -N -x -xp -n$(DEBUG_OBJDIR_static)
CXXFLAGS_STLDEBUG_static= $(FLAGS_COMMON_static) -v -N -x -xp -n$(STLDEBUG_OBJDIR_static) -D_STLP_DEBUG
CXXFLAGS_RELEASE_dynamic= $(FLAGS_COMMON_dynamic) -O2 -n$(RELEASE_OBJDIR_dynamic)
CXXFLAGS_DEBUG_dynamic= $(FLAGS_COMMON_dynamic) -v -N -x -xp -n$(DEBUG_OBJDIR_dynamic)
CXXFLAGS_STLDEBUG_dynamic= $(FLAGS_COMMON_dynamic) -v -N -x -xp -n$(STLDEBUG_OBJDIR_dynamic) -D_STLP_DEBUG
RELEASE_LINK_COMMANDS_static=\
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_exp.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_io.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_trig.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)dll_main.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)ios.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)streambuf.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)iostream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)istream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)ostream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)fstream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)strstream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)sstream.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)codecvt.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)collate.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)ctype.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)messages.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)monetary.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)num_get.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)num_get_float.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)num_put.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)num_put_float.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)numpunct.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)time_facets.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)locale.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)locale_catalog.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)facets_byname.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)locale_impl.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)c_locale.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)c_locale_stub.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_io_w.$(OBJEXT) \
+$(RELEASE_OBJDIR_static)$(PATH_SEP)string_w.$(OBJEXT)
DEBUG_LINK_COMMANDS_static= \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_exp.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_io.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_trig.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)dll_main.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)ios.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)streambuf.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)iostream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)istream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)ostream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)fstream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)strstream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)sstream.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)codecvt.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)collate.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)ctype.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)messages.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)monetary.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)num_get.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)num_get_float.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)num_put.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)num_put_float.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)numpunct.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)time_facets.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)locale.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)locale_catalog.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)facets_byname.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)locale_impl.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)c_locale.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)c_locale_stub.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_io_w.$(OBJEXT) \
+$(DEBUG_OBJDIR_static)$(PATH_SEP)string_w.$(OBJEXT)
STLDEBUG_LINK_COMMANDS_static= \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_exp.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_io.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_trig.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)dll_main.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)ios.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)streambuf.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)iostream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)istream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)ostream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)fstream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)strstream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)sstream.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)codecvt.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)collate.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)ctype.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)messages.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)monetary.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_get.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_get_float.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_put.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_put_float.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)numpunct.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)time_facets.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)locale.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)locale_catalog.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)facets_byname.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)locale_impl.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)c_locale.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)c_locale_stub.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_io_w.$(OBJEXT) \
+$(STLDEBUG_OBJDIR_static)$(PATH_SEP)string_w.$(OBJEXT)
#
# Target directories
#
#
$(RELEASE_OBJDIR_dynamic) :
$(MKDIR) $(RELEASE_OBJDIR_dynamic)
$(DEBUG_OBJDIR_dynamic) :
$(MKDIR) $(DEBUG_OBJDIR_dynamic)
$(STLDEBUG_OBJDIR_dynamic) :
$(MKDIR) $(STLDEBUG_OBJDIR_dynamic)
$(RELEASE_OBJDIR_static) :
$(MKDIR) $(RELEASE_OBJDIR_static)
$(DEBUG_OBJDIR_static) :
$(MKDIR) $(DEBUG_OBJDIR_static)
$(STLDEBUG_OBJDIR_static) :
$(MKDIR) $(STLDEBUG_OBJDIR_static)
###### Targets ##################
all_static : $(ALL_STATIC_LIBS)
all_dynamic : $(ALL_DYNAMIC_LIBS)
install : $(INSTALL_STEP)
clean : $(CLEAN_SPECIFIC)
-$(RM) $(RELEASE_OBJDIR_static) $(DEBUG_OBJDIR_static) \
$(STLDEBUG_OBJDIR_static) $(RELEASE_OBJDIR_dynamic) \
$(DEBUG_OBJDIR_dynamic) $(STLDEBUG_OBJDIR_dynamic)
clobber : clean
-$(RM) $(OUTDIR)$(PATH_SEP)$(DEBUG_NAME).* \
$(OUTDIR)$(PATH_SEP)$(RELEASE_NAME).* $(OUTDIR)$(PATH_SEP)$(STLDEBUG_NAME).*
#create a compiler platform directory
platform:
-$(MKDIR) $(OBJDIR_COMMON)
-$(MKDIR) $(OBJDIR)
$(OUTDIR)$(PATH_SEP)$(RELEASE_DYNLIB) : $(RELEASE_OBJDIR_dynamic) $(DEF_FILE) $(RELEASE_OBJECTS_dynamic)
$(DYN_LINK) $(LDFLAGS_RELEASE_dynamic) $(RELEASE_OBJECTS_dynamic) , $(OUTDIR)$(PATH_SEP)$(RELEASE_DYNLIB),,$(LDLIBS_RELEASE_dynamic)
$(OUTDIR)$(PATH_SEP)$(DEBUG_DYNLIB) : $(DEBUG_OBJDIR_dynamic) $(DEF_FILE) $(DEBUG_OBJECTS_dynamic)
$(DYN_LINK) $(LDFLAGS_DEBUG_dynamic) $(DEBUG_OBJECTS_dynamic), $(DYNLINK_OUT)$(OUTDIR)$(PATH_SEP)$(DEBUG_DYNLIB) ,, $(LDLIBS_DEBUG_dynamic)
$(OUTDIR)$(PATH_SEP)$(STLDEBUG_DYNLIB) : $(STLDEBUG_OBJDIR_dynamic) $(DEF_FILE) $(STLDEBUG_OBJECTS_dynamic)
$(DYN_LINK) $(LDFLAGS_STLDEBUG_dynamic) $(STLDEBUG_OBJECTS_dynamic) , $(DYNLINK_OUT)$(OUTDIR)$(PATH_SEP)$(STLDEBUG_DYNLIB) ,, $(LDLIBS_STLDEBUG_dynamic)
$(OUTDIR)$(PATH_SEP)$(RELEASE_LIB) : $(RELEASE_OBJDIR_static) $(DEF_FILE) $(RELEASE_OBJECTS_static)
$(LINK) $(OUTDIR)$(PATH_SEP)$(RELEASE_LIB) $(RELEASE_LINK_COMMANDS_static)
$(OUTDIR)$(PATH_SEP)$(DEBUG_LIB) : $(DEBUG_OBJDIR_static) $(DEF_FILE) $(DEBUG_OBJECTS_static)
$(LINK) $(OUTDIR)$(PATH_SEP)$(DEBUG_LIB) $(DEBUG_LINK_COMMANDS_static)
$(OUTDIR)$(PATH_SEP)$(STLDEBUG_LIB) : $(STLDEBUG_OBJDIR_static) $(DEF_FILE) $(STLDEBUG_OBJECTS_static)
$(LINK) $(OUTDIR)$(PATH_SEP)$(STLDEBUG_LIB) $(STLDEBUG_LINK_COMMANDS_static)
#########################################
# ---------------------------------------------------------------------------
!include nmake_common.mak
.cpp.i:
$(CPP) $(CXXFLAGS_DEBUG_dynamic) -n. -Sr -Ss -Sd {$< }
# ---------------------------------------------------------------------------
# ---------------------------------------------------------------------------

87
STLPORT/src/beos-setup Normal file
View File

@@ -0,0 +1,87 @@
#!/bin/sh
function intel_setup
{
files='alloca assert ctype dirent err fcntl float new inttypes libio limits locale malloc math memory signal stdarg stddef stdio stdlib string time va_list wchar wctype'
for file in $files; do
echo '#include_next "'"$file"'.h"' > "../stlport/beos/$file"'.h'
echo '#include_next "'"c$file"'"' > "../stlport/beos/c$file"''
done
files='fstream new exception typeinfo iomanip iosfwd iostream istream ostream stdexcept stdiostream stream streambuf strstream'
for file in $files; do
echo '#include_next "'"$file"'.h"' > "../stlport/beos/$file"'.h'
echo '#include_next "'"$file"'"' > "../stlport/beos/$file"''
done
}
function intel_uninstall
{
rm -fr ~/config/include/stlport
cd ../lib
for file in libstlport_gcc*; do
rm -f ~/config/lib/$file
done
rm -f ~/config/lib/libstlport_gcc*.so
}
function intel_install
{
cp -R ../stlport ~/config/include
cd ../lib
for file in libstlport_gcc*.so.*; do
basename=`echo $file | sed 's/\(.*\.so\).*/\1/'`
cp $file ~/config/lib
if test "$file" != "$basename"; then
ln -s ~/config/lib/$file ~/config/lib/$basename
fi
done
for file in libstlport_gcc*.a; do
cp $file ~/config/lib
done
echo include files are in ~/config/include
echo libraries are in ~/config/lib
}
if test $# -ne 1; then
echo usage:
echo " beos-setup -setup # sets up headers"
echo " beos-setup -install # installs STLPort"
echo " beos-setup -uninstall #uninstalls STLPort"
else
if test $1 = "-setup"; then
intel_setup
exit 0
fi
if test $1 = "-uninstall"; then
intel_uninstall
exit 0
fi
if test $1 = "-install"; then
intel_install
exit 0
fi
echo unknown option $*
exit 1
fi

View File

@@ -0,0 +1,16 @@
tempIncConst = tempinc
buildDir = .
tempIncDir = $(buildDir)/$(tempIncConst)
TempInc_CFiles := $(wildcard $(tempIncDir)/*.C)
TempInc_OFiles := $(patsubst %.C,%.o, $(TempInc_CFiles))
all.PHONY : $(TempInc_OFiles)
%.o : %.C
@echo "Compiling File $@"
@xlC_r \
-I/tools/STLport-4.0/stlport -qmaxerr=10 -qtempinc=$(tempIncDir)
-qrtti=all -qsrcmsg \
-o $(@) \
-c $<

View File

@@ -0,0 +1,18 @@
#!/bin/sh
GNUMake=gmake
MakeFile=build-tempinc-xlc.mk
PassNumber=0
echo "Building the AIX tempinc directory."
echo "Calling $MakeFile."
until { $GNUMake -f $MakeFile -q ; }
do
let PassNumber=$PassNumber+1
echo "Pass Number: $PassNumber"
if { ! $GNUMake -f $MakeFile ; } then
echo "An error occurred.. aborting"
exit 1;
fi
done
echo "Finished the AIX tempinc directory."

37
STLPORT/src/c_locale.c Normal file
View File

@@ -0,0 +1,37 @@
/*
* Copyright (c) 1999
* Silicon Graphics Computer Systems, Inc.
*
* Copyright (c) 1999
* Boris Fomitchev
*
* This material is provided "as is", with absolutely no warranty expressed
* or implied. Any use is at your own risk.
*
* 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.
*
*/
# include "stlport_prefix.h"
# include <stdlib.h>
# ifdef _STLP_REAL_LOCALE_IMPLEMENTED
# include <limits.h>
# include "c_locale.h"
# if defined (WIN32) || defined (_WIN32)
# include "c_locale_win32/c_locale_win32.c"
# elif defined (_STLP_USE_GLIBC) && ! defined (__CYGWIN__)
# if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
# include "c_locale_glibc/c_locale_glibc2.c"
# else
# include "c_locale_glibc/c_locale_glibc.c"
# endif
# elif defined __ISCPP__
# include "c_locale_is/c_locale_is.cpp"
# endif
# endif

407
STLPORT/src/c_locale.h Normal file
View File

@@ -0,0 +1,407 @@
/*
* Copyright (c) 1999
* Silicon Graphics Computer Systems, Inc.
*
* Copyright (c) 1999
* Boris Fomitchev
*
* This material is provided "as is", with absolutely no warranty expressed
* or implied. Any use is at your own risk.
*
* 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.
*
*/
/*
* It is impossible to write the C++ locale library in terms of locales
* as defined in the C standard. Instead, we write the C++ locale and I/O
* library in terms of a low level C-like interface. This file defines
* that interface.
*
* The low-level locale interface can't be written portably; there
* must be a version of it for each platform that the C++ library
* is ported to. On many systems this interface may be a thin wrapper
* for existing functionality.
*/
#ifndef _STLP_C_LOCALE_IMPL_H
# define _STLP_C_LOCALE_IMPL_H
# include <stl/c_locale.h>
// # include <wchar.h>
# include <stl/_cwchar.h>
#define _Locale_MAX_SIMPLE_NAME 256
/*
* A number: the maximum length of a simple locale name.
* (i.e. a name like like en_US, as opposed to a name like
* en_US/de_AT/de_AT/es_MX/en_US/en_US) */
#define _Locale_MAX_COMPOSITE_NAME 6*(_Locale_MAX_SIMPLE_NAME+3)
/*
* Maximum length of a composite locale.
*/
#ifdef __cplusplus
_STLP_BEGIN_NAMESPACE
extern "C" {
#endif
/*
* Typedefs:
*/
#if defined (__GNUC__) || defined (_KCC) || defined(__ICC)
typedef unsigned short int _Locale_mask_t;
#else
typedef unsigned int _Locale_mask_t;
#endif
void * _Locale_ctype_create(const char *);
void * _Locale_numeric_create(const char *);
void * _Locale_time_create(const char *);
void * _Locale_collate_create(const char *);
void * _Locale_monetary_create(const char *);
void * _Locale_messages_create(const char *);
/*
* The char* argument is a simple locale name.
* These functions return NULL to indicate failure.
* The char* argument is a simple locale name, which may not
* be "". These functions return NULL to indicate failure.
*/
const char * _Locale_ctype_default(char * __buf);
const char * _Locale_numeric_default(char * __buf);
const char * _Locale_time_default(char * __buf);
const char * _Locale_collate_default(char * __buf);
const char * _Locale_monetary_default(char * __buf);
const char * _Locale_messages_default(char * __buf);
/*
* Returns the name of the user's default locale in each
* category, as a null-terminated string. A NULL value
* means the default "C" locale.
*/
char * _Locale_ctype_name(const void *, char *);
char * _Locale_numeric_name(const void *, char *);
char * _Locale_time_name(const void *, char *);
char * _Locale_collate_name(const void *, char *);
char * _Locale_monetary_name(const void *, char *);
char * _Locale_messages_name(const void *, char *);
/*
* __buf points to a buffer that can hold at least _Locale_MAX_SIMPLE_NAME
* characters. These functions store the name, as a null-terminated
* string, in __buf.
*/
void _Locale_ctype_destroy(void *);
void _Locale_numeric_destroy(void *);
void _Locale_time_destroy(void *);
void _Locale_collate_destroy(void *);
void _Locale_monetary_destroy(void *);
void _Locale_messages_destroy(void *);
char * _Locale_extract_ctype_name(const char *cname, char *__buf);
char * _Locale_extract_numeric_name(const char *cname, char *__buf);
char * _Locale_extract_time_name(const char *cname, char *__buf);
char * _Locale_extract_collate_name(const char *cname, char *__buf);
char * _Locale_extract_monetary_name(const char *cname, char *__buf);
char * _Locale_extract_messages_name(const char *cname, char *__buf);
/*
* cname is a (possibly composite) locale name---i.e. a name that can
* be passed to setlocale. _buf points to an array large enough to
* store at least _Locale_MAX_SIMPLE_NAME characters, and each of these
* functions extracts the name of a single category, stores it in buf
* as a null-terminated string, and returns buf.
*/
char * _Locale_compose_name(char *__buf,
const char *__Ctype, const char *__Numeric,
const char *__Time, const char *__Collate,
const char *__Monetary, const char *__Messages,
const char *__DefaultName);
/*
* The inputs to this function are six null-terminated strings: the
* names of a locale's six categories. Locale names for non-standard
* categories are taken from __DefaultName.
* __buf is a pointer to an array large enough to store at least
* _Locale_MAX_COMPOSITE_NAME characters.
* This function constructs a (possibly composite) name describing the
* locale as a whole, stores that name in buf as a null-terminated
* string, and returns buf.
*/
/*
* FUNCTIONS THAT USE CTYPE
*/
/*
* Narrow character functions:
*/
const _Locale_mask_t * _Locale_ctype_table(struct _Locale_ctype *);
/*
* Returns a pointer to the beginning of the ctype table. The table is
* at least 257 bytes long; if p is the pointer returned by this
* function, then p[c] is valid if c is EOF or if p is any value of
* type unsigned char.
*/
int _Locale_toupper(struct _Locale_ctype *, int);
int _Locale_tolower(struct _Locale_ctype *, int);
/*
* c is either EOF, or an unsigned char value.
*/
# ifndef _STLP_NO_WCHAR_T
/*
* Wide character functions:
*/
_Locale_mask_t _Locale_wchar_ctype(struct _Locale_ctype *, wint_t,
_Locale_mask_t);
wint_t _Locale_wchar_tolower(struct _Locale_ctype *, wint_t);
wint_t _Locale_wchar_toupper(struct _Locale_ctype *, wint_t);
# endif
# if !defined ( _STLP_NO_MBSTATE_T )
/*
* Multibyte functions:
*/
int _Locale_mb_cur_max (struct _Locale_ctype *);
/*
* Returns the number of bytes of the longest allowed multibyte
* character in the current encoding.
*/
int _Locale_mb_cur_min (struct _Locale_ctype *);
/*
* Returns the number of bytes of the shortest allowed multibyte
* character in the current encoding.
*/
int _Locale_is_stateless (struct _Locale_ctype *);
/*
* Returns 1 if the current multibyte encoding is stateless
* and does not require the use of an mbstate_t value.
*/
# ifndef _STLP_NO_WCHAR_T
wint_t _Locale_btowc(struct _Locale_ctype *, int);
int _Locale_wctob(struct _Locale_ctype *, wint_t);
/*
* Just like btowc and wctob, from 4.6.5.1 of the C standard, Normative
* Addendum 1. (And just like widen/narrow, from clause 22 of the C++
* standard.)
*/
size_t _Locale_mbtowc(struct _Locale_ctype *,
wchar_t *,
const char *, size_t,
mbstate_t *);
/*
* Almost identical to mbrtowc, from 4.6.5.3.2 of NA1. The only
* important difference is that mbrtowc treats null wide characters
* as special, and we don't. Specifically: examines the characters
* in [from, from + n), extracts a single wide character, and stores
* it in *to. Modifies shift_state if appropriate. The return value,
* which is always positive, is the number of characters extracted from
* the input sequence. Return value is (size_t) -1 if there was an
* encoding error in the input sequence, and (size_t) -2 if
* [from, from + n) is correct but not complete. None of the pointer
* arguments may be null pointers.
*/
size_t _Locale_wctomb(struct _Locale_ctype *,
char *, size_t,
const wchar_t,
mbstate_t *);
/*
* Again, very similar to wcrtomb. The differences are that (1) it
* doesn't treat null characters as special; and (2) it stores at most
* n characters. Converts c to a multibyte sequence, stores that
* sequence in the array 'to', and returns the length of the sequence.
* Modifies shift_state if appropriate. The return value is (size_t) -1
* if c is not a valid wide character, and (size_t) -2 if the length of
* the multibyte character sequence is greater than n.
*/
# endif
size_t _Locale_unshift(struct _Locale_ctype *,
mbstate_t *,
char *, size_t, char **);
/*
* Inserts whatever characters are necessary to restore st to an
* initial shift state. Sets *next to buf + m, where m is the number
* of characters inserted. (0 <= m <= n.) Returns m to indicate
* success, (size_t) -1 to indicate error, (size_t) -2 to indicate
* partial success (more than n characters needed). For success or partial
* success, sets *next to buf + m.
*/
# endif /* _STLP_NO_MBSTATE_T */
/*
* FUNCTIONS THAT USE COLLATE
*/
int _Locale_strcmp(struct _Locale_collate *,
const char *, size_t,
const char *, size_t);
# ifndef _STLP_NO_WCHAR_T
int _Locale_strwcmp(struct _Locale_collate *,
const wchar_t *, size_t,
const wchar_t *, size_t);
# endif
/*
* Compares the two sequences [s1, s1 + n1) and [s2, s2 + n2). Neither
* sequence is assumed to be null-terminated, and null characters
* aren't special. If the two sequences are the same up through
* min(n1, n2), then the sequence that compares less is whichever one
* is shorter.
*/
size_t _Locale_strxfrm(struct _Locale_collate *,
char *, size_t,
const char *, size_t);
# ifndef _STLP_NO_WCHAR_T
size_t _Locale_strwxfrm(struct _Locale_collate *,
wchar_t *, size_t,
const wchar_t *, size_t);
# endif
/*
* Creates a transformed version of the string [s2, s2 + n2). The
* string may contain embedded null characters; nulls aren't special.
* The transformed string begins at s1, and contains at most n1
* characters. The return value is the length of the transformed
* string. If the return value is greater than n1 then this is an
* error condition: it indicates that there wasn't enough space. In
* that case, the contents of [s1, s1 + n1) is unspecified.
*/
/*
* FUNCTIONS THAT USE NUMERIC
*/
char _Locale_decimal_point(struct _Locale_numeric *);
char _Locale_thousands_sep(struct _Locale_numeric *);
const char * _Locale_grouping(struct _Locale_numeric *);
/*
* Equivalent to the first three fields in struct lconv. (C standard,
* section 7.4.)
*/
const char * _Locale_true(struct _Locale_numeric *);
const char * _Locale_false(struct _Locale_numeric *);
/*
* Return "true" and "false" in English locales, and something
* appropriate in non-English locales.
*/
/*
* FUNCTIONS THAT USE MONETARY
*/
const char * _Locale_int_curr_symbol(struct _Locale_monetary *);
const char * _Locale_currency_symbol(struct _Locale_monetary *);
char _Locale_mon_decimal_point(struct _Locale_monetary *);
char _Locale_mon_thousands_sep(struct _Locale_monetary *);
const char * _Locale_mon_grouping(struct _Locale_monetary *);
const char * _Locale_positive_sign(struct _Locale_monetary *);
const char * _Locale_negative_sign(struct _Locale_monetary *);
char _Locale_int_frac_digits(struct _Locale_monetary *);
char _Locale_frac_digits(struct _Locale_monetary *);
int _Locale_p_cs_precedes(struct _Locale_monetary *);
int _Locale_p_sep_by_space(struct _Locale_monetary *);
int _Locale_p_sign_posn(struct _Locale_monetary *);
int _Locale_n_cs_precedes(struct _Locale_monetary *);
int _Locale_n_sep_by_space(struct _Locale_monetary *);
int _Locale_n_sign_posn(struct _Locale_monetary *);
/*
* Return the obvious fields of struct lconv.
*/
/*
* FUNCTIONS THAT USE TIME
*/
const char * _Locale_full_monthname(struct _Locale_time *, int);
const char * _Locale_abbrev_monthname(struct _Locale_time *, int);
/*
* month is in the range [0, 12).
*/
const char * _Locale_full_dayofweek(struct _Locale_time *, int);
const char * _Locale_abbrev_dayofweek(struct _Locale_time *, int);
/*
* day is in the range [0, 7). Sunday is 0.
*/
const char * _Locale_d_t_fmt(struct _Locale_time *);
const char * _Locale_d_fmt(struct _Locale_time *);
const char * _Locale_t_fmt(struct _Locale_time *);
const char * _Locale_long_d_t_fmt(struct _Locale_time*);
const char * _Locale_long_d_fmt(struct _Locale_time*);
const char * _Locale_am_str(struct _Locale_time *);
const char * _Locale_pm_str(struct _Locale_time *);
const char * _Locale_t_fmt_ampm(struct _Locale_time *);
/*
* FUNCTIONS THAT USE MESSAGES
*/
int _Locale_catopen(struct _Locale_messages*, const char*);
/*
* Very similar to catopen, except that it uses L to determine
* which catalog to open.
*/
void _Locale_catclose(struct _Locale_messages*, int);
/*
* catalog is a value that was returned by a previous call to
* _Locale_catopen
*/
const char * _Locale_catgets(struct _Locale_messages *, int,
int, int,const char *);
/*
* Returns a string, identified by a set index and a message index,
* from an opened message catalog. Returns default if no such
* string exists.
*/
# ifdef __cplusplus
}
_STLP_END_NAMESPACE
# endif
# endif /* _STLP_C_LOCALE_IMPL_H */

View File

@@ -0,0 +1,774 @@
/*
* Copyright (c) 1999
* Silicon Graphics Computer Systems, Inc.
*
* 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.
*/
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#ifdef _POSIX_MAPPED_FILES
# include <sys/mman.h>
#endif
#include <stl/c_locale.h>
#include <limits.h>
#include <wctype.h>
/* #include <libc-lock.h> */
#include <locale.h>
#include <argz.h>
#include "gcc_localeinfo.h"
wint_t btowc(int c);
int wctob (wint_t c);
size_t mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps);
size_t wcrtomb (char *s, wchar_t wc, mbstate_t *ps);
size_t mbrlen (const char* s, size_t n, mbstate_t *ps);
#include <nl_types.h>
typedef struct _Locale_ctype {
const struct locale_data* gcc_data;
const int* __tolower;
const int* __toupper;
_Locale_mask_t* __class;
} L_ctype_t;
typedef struct _Locale_numeric {
const struct locale_data* gcc_data;
} L_numeric_t;
typedef struct _Locale_time {
const struct locale_data* gcc_data;
} L_time_t;
typedef struct _Locale_collate {
const struct locale_data* gcc_data;
} L_collate_t;
typedef struct _Locale_monetary {
const struct locale_data* gcc_data;
} L_monetary_t;
typedef struct _Locale_messages {
const struct locale_data* gcc_data;
} L_messages_t;
static char *
_Locale_extract_name ( const char *cname, char *into, int category )
{
int i = 0;
const char * end;
if ( cname[0] != '/' )
return strcpy(into, cname); /* simple locale name */
for ( i = 0; i <= category; i ++ ) {
while ( *cname != '\0' && *cname != '/' )
cname++;
if ( *cname == '\0' )
return into;
cname++;
}
if ( *cname == '\0' )
return into;
end = cname;
while ( *end != '\0' && *end != '/' )
end++;
strncpy ( into, cname, end - cname );
into [ end - cname ] = '\0';
return into;
}
char* _Locale_name(const struct locale_data* gcc_data,
char* buf)
{
if (!(gcc_data && gcc_data->name)) return 0;
strncpy(buf, gcc_data->name, _Locale_MAX_SIMPLE_NAME);
buf [ _Locale_MAX_SIMPLE_NAME - 1 ] = '\0';
return buf;
}
/* calls _nl_find_locale which is a function internal to the glibc
locale implementation that loads locale data in from the data
files. The locale_data struct has information for all categories.
In the following implementation we use a locale_data struct for
each category for simplicity, though there is an obvious waste in
doing that. */
const struct locale_data *
_Find_locale (char *locale_path, size_t locale_path_len,
int category, char **name)
{
return __nl_find_locale(locale_path, locale_path_len, category, name);
}
static void
_Remove_locale (int locale, struct locale_data *data)
{
/* this should eventually call _nl_remove_locale() in glibc 2.1 */
}
/* couldn't find where LOCALE_PATH was defined in glibc,
but this is the directory it is defined to -JGS */
#define __LOCALE_PATH "/usr/share/locale"
const struct locale_data*
_Category_create(const char * name, int category)
{
/* JGS, where should this path come from? */
char* locpath_var;
char* locale_path = NULL;
size_t locale_path_len = 0;
locpath_var = __secure_getenv("LOCPATH");
if (locpath_var != NULL && locpath_var[0] != '\0')
if (argz_create_sep (locpath_var, ':',
&locale_path, &locale_path_len) != 0)
return NULL;
if (argz_add_sep (&locale_path, &locale_path_len, __LOCALE_PATH, ':') != 0)
return NULL;
return _Find_locale(locale_path, locale_path_len,
category, (char**)&name);
}
static const char* get_default_locale(char* buf) {
char* lang = getenv("LANG");
if (lang == NULL || lang[0] == '\0') {
buf[0] = '\0';
return NULL;
}
else {
strcpy(buf, lang);
return buf;
}
}
const char* _Locale_ctype_default(char* buf) {
char fullname[_Locale_MAX_COMPOSITE_NAME];
if (get_default_locale(fullname) == NULL)
return NULL;
else
return _Locale_extract_ctype_name(fullname, buf);
}
const char* _Locale_numeric_default(char* buf) {
char fullname[_Locale_MAX_COMPOSITE_NAME];
if (get_default_locale(fullname) == NULL)
return NULL;
else
return _Locale_extract_numeric_name(fullname, buf);
}
const char* _Locale_time_default(char* buf) {
char fullname[_Locale_MAX_COMPOSITE_NAME];
if (get_default_locale(fullname) == NULL)
return NULL;
else
return _Locale_extract_time_name(fullname, buf);
}
const char* _Locale_collate_default(char* buf) {
char fullname[_Locale_MAX_COMPOSITE_NAME];
if (get_default_locale(fullname) == NULL)
return NULL;
else
return _Locale_extract_collate_name(fullname, buf);
}
const char* _Locale_monetary_default(char* buf) {
char fullname[_Locale_MAX_COMPOSITE_NAME];
if (get_default_locale(fullname) == NULL)
return NULL;
else
return _Locale_extract_monetary_name(fullname, buf);
}
const char* _Locale_messages_default(char* buf) {
char fullname[_Locale_MAX_COMPOSITE_NAME];
if (get_default_locale(fullname) == NULL)
return NULL;
else
return _Locale_extract_messages_name(fullname, buf);
}
/****** Numeric Category ******/
void*
_Locale_numeric_create(const char * name) {
L_numeric_t* lnum = (L_numeric_t*)malloc(sizeof(L_numeric_t));
lnum->gcc_data = _Category_create(name, LC_NUMERIC);
return (void*)lnum;
}
char* _Locale_numeric_name(const void* lnum,
char* buf) {
return _Locale_name(((struct _Locale_ctype*)lnum)->gcc_data, buf);
}
void _Locale_numeric_destroy(void* lnum)
{
_Remove_locale(LC_NUMERIC, (struct locale_data *)((struct _Locale_ctype*)lnum)->gcc_data);
free(lnum);
}
char* _Locale_extract_numeric_name(const char* cname, char* buf)
{
return _Locale_extract_name(cname, buf, LC_NUMERIC);
}
char _Locale_decimal_point(struct _Locale_numeric* lnum)
{
return lnum->gcc_data->values[_NL_ITEM_INDEX(DECIMAL_POINT)].string[0];
}
char _Locale_thousands_sep(struct _Locale_numeric* lnum)
{
return lnum->gcc_data->values[_NL_ITEM_INDEX(THOUSANDS_SEP)].string[0];
}
const char* _Locale_grouping(struct _Locale_numeric * lnum)
{
return lnum->gcc_data->values[_NL_ITEM_INDEX(GROUPING)].string;
}
/* JGS: gcc/linux does not provide true/false names in their
* locale data files
*/
static const char* __true_name = "true";
static const char* __false_name = "false";
const char * _Locale_true(struct _Locale_numeric *l)
{ return __true_name; }
const char * _Locale_false(struct _Locale_numeric *l)
{ return __false_name; }
/****** Monetary Category ******/
void* _Locale_monetary_create(const char* name) {
L_monetary_t* lmon = (L_monetary_t*)malloc(sizeof(L_monetary_t));
lmon->gcc_data = _Category_create(name, LC_MONETARY);
return lmon;
}
char* _Locale_monetary_name(const void* lmon,
char* buf) {
return _Locale_name(((struct _Locale_monetary*)lmon)->gcc_data, buf);
}
void _Locale_monetary_destroy(void*lmon) {
_Remove_locale(LC_MONETARY, (struct locale_data *)((struct _Locale_monetary*)lmon)->gcc_data);
free(lmon);
}
char* _Locale_extract_monetary_name(const char* cname, char* buf) {
return _Locale_extract_name(cname, buf, LC_MONETARY);
}
const char* _Locale_int_curr_symbol(struct _Locale_monetary* lmon) {
return lmon->gcc_data->values[_NL_ITEM_INDEX(INT_CURR_SYMBOL)].string;
}
const char* _Locale_currency_symbol(struct _Locale_monetary* lmon) {
return lmon->gcc_data->values[_NL_ITEM_INDEX(CURRENCY_SYMBOL)].string;
}
char _Locale_mon_decimal_point(struct _Locale_monetary* lmon) {
return lmon->gcc_data->values[_NL_ITEM_INDEX(MON_DECIMAL_POINT)].string[0];
}
char _Locale_mon_thousands_sep(struct _Locale_monetary* lmon) {
return lmon->gcc_data->values[_NL_ITEM_INDEX(MON_THOUSANDS_SEP)].string[0];
}
const char* _Locale_mon_grouping(struct _Locale_monetary* lmon) {
return lmon->gcc_data->values[_NL_ITEM_INDEX(MON_GROUPING)].string;
}
const char* _Locale_positive_sign(struct _Locale_monetary* lmon) {
return lmon->gcc_data->values[_NL_ITEM_INDEX(POSITIVE_SIGN)].string;
}
const char* _Locale_negative_sign(struct _Locale_monetary* lmon) {
return lmon->gcc_data->values[_NL_ITEM_INDEX(NEGATIVE_SIGN)].string;
}
char _Locale_int_frac_digits(struct _Locale_monetary* lmon) {
return lmon->gcc_data->values[_NL_ITEM_INDEX(INT_FRAC_DIGITS)].string[0];
}
char _Locale_frac_digits(struct _Locale_monetary* lmon) {
return lmon->gcc_data->values[_NL_ITEM_INDEX(FRAC_DIGITS)].string[0];
}
int _Locale_p_cs_precedes(struct _Locale_monetary* lmon) {
return lmon->gcc_data->values[_NL_ITEM_INDEX(P_CS_PRECEDES)].word;
}
int _Locale_p_sep_by_space(struct _Locale_monetary* lmon) {
return lmon->gcc_data->values[_NL_ITEM_INDEX(P_SEP_BY_SPACE)].word;
}
int _Locale_p_sign_posn(struct _Locale_monetary* lmon) {
return lmon->gcc_data->values[_NL_ITEM_INDEX(P_SIGN_POSN)].word;
}
int _Locale_n_cs_precedes(struct _Locale_monetary* lmon) {
return lmon->gcc_data->values[_NL_ITEM_INDEX(N_CS_PRECEDES)].word;
}
int _Locale_n_sep_by_space(struct _Locale_monetary* lmon) {
return lmon->gcc_data->values[_NL_ITEM_INDEX(N_SEP_BY_SPACE)].word;
}
int _Locale_n_sign_posn(struct _Locale_monetary* lmon) {
return lmon->gcc_data->values[_NL_ITEM_INDEX(N_SIGN_POSN)].word;
}
/****** Time Category ******/
void* _Locale_time_create(const char * name) {
L_time_t* ltime = (L_time_t*)malloc(sizeof(L_time_t));
ltime->gcc_data = _Category_create(name, LC_TIME);
return ltime;
}
char* _Locale_time_name(const void* ltime,
char* buf) {
return _Locale_name(((struct _Locale_time*)ltime)->gcc_data, buf);
}
char* _Locale_extract_time_name(const char* cname, char* buf) {
return _Locale_extract_name(cname, buf, LC_TIME);
}
void _Locale_time_destroy(void* ltime) {
_Remove_locale(LC_TIME, (struct locale_data *)((struct _Locale_time*)ltime)->gcc_data);
free(ltime);
}
const char * _Locale_full_monthname(struct _Locale_time *ltime, int month) {
const char **names = (const char **)&(ltime->gcc_data->values[_NL_ITEM_INDEX(MON_1)]);
return names[month];
}
const char * _Locale_abbrev_monthname(struct _Locale_time *ltime, int month) {
const char **names = (const char **)&(ltime->gcc_data->values[_NL_ITEM_INDEX(ABMON_1)]);
return names[month];
}
const char * _Locale_full_dayofweek(struct _Locale_time *ltime, int day) {
const char **names = (const char **)&(ltime->gcc_data->values[_NL_ITEM_INDEX(DAY_1)]);
return names[day];
}
const char * _Locale_abbrev_dayofweek(struct _Locale_time *ltime, int day) {
const char **names = (const char **)&(ltime->gcc_data->values[_NL_ITEM_INDEX(ABDAY_1)]);
return names[day];
}
const char* _Locale_d_t_fmt(struct _Locale_time* ltime) {
return ltime->gcc_data->values[_NL_ITEM_INDEX(D_T_FMT)].string;
}
const char* _Locale_long_d_t_fmt(struct _Locale_time* ltime) {
return ltime->gcc_data->values[_NL_ITEM_INDEX(D_T_FMT)].string;
}
const char* _Locale_d_fmt(struct _Locale_time* ltime)
{
return ltime->gcc_data->values[_NL_ITEM_INDEX(D_FMT)].string;
}
const char* _Locale_long_d_fmt(struct _Locale_time* ltime)
{
return ltime->gcc_data->values[_NL_ITEM_INDEX(D_FMT)].string;
}
const char* _Locale_t_fmt(struct _Locale_time* ltime) {
return ltime->gcc_data->values[_NL_ITEM_INDEX(T_FMT)].string;
}
const char* _Locale_am_str(struct _Locale_time* ltime) {
return ltime->gcc_data->values[_NL_ITEM_INDEX(AM_STR)].string;
}
const char* _Locale_pm_str(struct _Locale_time* ltime) {
return ltime->gcc_data->values[_NL_ITEM_INDEX(PM_STR)].string;
}
const char* _Locale_t_fmt_ampm(struct _Locale_time* ltime)
{
return ltime->gcc_data->values[_NL_ITEM_INDEX(T_FMT_AMPM)].string;
}
/****** Messages Category ******/
void* _Locale_messages_create(const char * name) {
L_messages_t* lmsg = (L_messages_t*)malloc(sizeof(L_messages_t));
lmsg->gcc_data = _Category_create(name, LC_MESSAGES);
return lmsg;
}
char* _Locale_messages_name(const void* lmsg, char* buf) {
return _Locale_name(((struct _Locale_messages*)lmsg)->gcc_data, buf);
}
void _Locale_messages_destroy(void* lmsg) {
_Remove_locale(LC_MESSAGES, (struct locale_data *)((struct _Locale_messages*)lmsg)->gcc_data);
free(lmsg);
}
char* _Locale_extract_messages_name(const char* cname, char* buf) {
return _Locale_extract_name(cname, buf, LC_MESSAGES);
}
/*
Could not find support for locale specific messages in glibc
Also, this C locale interface should use a typedef for the catalog
instead of just an int. Currently I'm casting a void* (nl_catd)
back and forth to and int.
-JGS
*/
int _Locale_catopen(struct _Locale_messages*l, const char* cat_name) {
return (int)catopen(cat_name, 0); /* JGS, don't know about the flag */
}
void _Locale_catclose(struct _Locale_messages*l, int catalog) {
catclose((nl_catd)catalog);
}
const char* _Locale_catgets(struct _Locale_messages*l, int catalog,
int set_num, int msg_num,
const char *dfault){
return catgets((nl_catd)catalog, set_num, msg_num, dfault);
}
/****** ctype Category ******/
/*
gcc uses a different set of masks for wide characters than for
normal characters. However, the C++ standard requires there
to be only one set of masks for both. Therefore we must
translate the mask values from the wide characters to the
mask values for the normal characters. -JGS
*/
static _Locale_mask_t _Map_wchar_mask_to_char_mask(wctype_t m) {
_Locale_mask_t ret = 0;
if (m & _ISwcntrl) ret |= _Locale_CNTRL;
if (m & _ISwupper) ret |= _Locale_UPPER;
if (m & _ISwlower) ret |= _Locale_LOWER;
if (m & _ISwdigit) ret |= _Locale_DIGIT;
if (m & _ISwxdigit) ret |= _Locale_XDIGIT;
if (m & _ISwpunct) ret |= _Locale_PUNCT;
if (m & _ISwspace) ret |= _Locale_SPACE;
if (m & _ISwprint) ret |= _Locale_PRINT;
if (m & _ISwalpha) ret |= _Locale_ALPHA;
return ret;
}
void* _Locale_ctype_create(const char * name) {
const union locale_data_value *ctypes;
L_ctype_t* lctype;
lctype = (L_ctype_t*)malloc(sizeof(L_ctype_t));
lctype->gcc_data = _Category_create(name, LC_CTYPE);
ctypes = lctype->gcc_data->values;
lctype->__class = (_Locale_mask_t *)
(ctypes[_NL_ITEM_INDEX (_NL_CTYPE_CLASS)] .string) + 128;
#if BYTE_ORDER == BIG_ENDIAN
lctype->__tolower = (const int *)
(ctypes[_NL_ITEM_INDEX (_NL_CTYPE_TOLOWER_EB)].string) + 128;
lctype->__toupper = (const int *)
(ctypes[_NL_ITEM_INDEX (_NL_CTYPE_TOUPPER_EB)].string) + 128;
#elif BYTE_ORDER == LITTLE_ENDIAN
lctype->__tolower = (const int *)
(ctypes[_NL_ITEM_INDEX (_NL_CTYPE_TOLOWER_EL)].string) + 128;
lctype->__toupper = (const int *)
(ctypes[_NL_ITEM_INDEX (_NL_CTYPE_TOUPPER_EL)].string) + 128;
#else
#error bizarre byte order
#endif
return lctype;
}
char* _Locale_ctype_name(const void* lctype,
char* buf) {
return _Locale_name(((struct _Locale_ctype*)lctype)->gcc_data, buf);
}
void _Locale_ctype_destroy(void* lctype) {
_Remove_locale(LC_CTYPE, (struct locale_data *)((struct _Locale_ctype*)lctype)->gcc_data);
free(lctype);
}
char* _Locale_extract_ctype_name(const char* cname, char* buf) {
return _Locale_extract_name(cname, buf, LC_CTYPE);
}
const _Locale_mask_t* _Locale_ctype_table(struct _Locale_ctype* lctype) {
return lctype->__class;
}
int _Locale_toupper(struct _Locale_ctype* lctype, int c) {
return lctype->__toupper[c];
}
int _Locale_tolower(struct _Locale_ctype* lctype, int c) {
return lctype->__tolower[c];
}
/* Wide Character Functions */
static inline size_t
cname_lookup (wint_t wc, const struct locale_data* loc)
{
unsigned int *__nl_ctype_names;
unsigned int hash_size, hash_layers;
size_t result, cnt;
#if BYTE_ORDER == BIG_ENDIAN
__nl_ctype_names = (unsigned int*)loc->values[_NL_ITEM_INDEX(_NL_CTYPE_NAMES_EB)].string;
#elif BYTE_ORDER == LITTLE_ENDIAN
__nl_ctype_names = (unsigned int*)loc->values[_NL_ITEM_INDEX(_NL_CTYPE_NAMES_EL)].string;
#else
#error bizarre byte order
#endif
hash_size = loc->values[_NL_ITEM_INDEX(_NL_CTYPE_HASH_SIZE)].word;
hash_layers = loc->values[_NL_ITEM_INDEX(_NL_CTYPE_HASH_LAYERS)].word;
result = wc % hash_size;
for (cnt = 0; cnt < hash_layers; ++cnt) {
if (__nl_ctype_names[result] == wc)
break;
result += hash_size;
}
return cnt < hash_layers ? result : ~((size_t) 0);
}
_Locale_mask_t _Locale_wchar_ctype(struct _Locale_ctype* loc, wint_t wc,
_Locale_mask_t which_bits) {
const struct locale_data* locale = loc->gcc_data;
const unsigned int *class32_b;
size_t idx;
idx = cname_lookup (wc, locale);
if (idx == ~((size_t) 0))
return 0;
class32_b = (u_int32_t *)
locale->values[_NL_ITEM_INDEX (_NL_CTYPE_CLASS32)].string;
return _Map_wchar_mask_to_char_mask( class32_b[idx] ) & which_bits;
}
wint_t
__towctrans_ld (wint_t wc, wctrans_t desc, const struct locale_data* locale)
{
size_t idx;
idx = cname_lookup (wc, locale);
if (idx == ~((size_t) 0))
/* Character is not known. Default action is to simply return it. */
return wc;
return (wint_t) desc[idx];
}
wint_t _Locale_wchar_tolower(struct _Locale_ctype* locale, wint_t wc) {
return __towctrans_ld (wc, (const unsigned int *)locale->__tolower, locale->gcc_data);
}
wint_t _Locale_wchar_toupper(struct _Locale_ctype* locale, wint_t wc) {
return __towctrans_ld (wc, (const unsigned int *)locale->__toupper, locale->gcc_data);
}
int _Locale_mb_cur_max (struct _Locale_ctype *lctype) {
return lctype->gcc_data->values[_NL_ITEM_INDEX(_NL_CTYPE_MB_CUR_MAX)].word;
}
int _Locale_mb_cur_min (struct _Locale_ctype *l) {
return 1; /* JGS just a guess */
}
int _Locale_is_stateless (struct _Locale_ctype *l) { return 1; }
wint_t _Locale_btowc(struct _Locale_ctype *l, int c) {
return btowc(c);
}
/*
glibc currently doesn't support locale dependent conversion,
which affects the following functions. When it does, then
these functions will need to change. Hopeully, the
just the calls to the glibc functions will need to be
replaced.
-JGS
*/
int _Locale_wctob(struct _Locale_ctype *l, wint_t c) {
return wctob(c);
}
size_t _Locale_mbtowc(struct _Locale_ctype *l,
wchar_t *to,
const char *from, size_t n,
mbstate_t *shift_state)
{
int ret;
if (to)
ret = mbrtowc(to, from, n, shift_state);
else
ret = mbrlen(from, n, shift_state);
return ret;
}
size_t _Locale_wctomb(struct _Locale_ctype *l,
char *to, size_t n,
const wchar_t c,
mbstate_t *shift_state)
{
char buf [MB_LEN_MAX];
int ret;
char* mb = buf;
ret = wcrtomb(mb, c, shift_state);
if (ret > n)
return (size_t)-2;
else if (ret <= 0)
return ret;
n = ret;
while (n--)
*to++ = *mb++;
return ret;
}
size_t _Locale_unshift(struct _Locale_ctype *l,
mbstate_t * st,
char *buf, size_t n, char **next) {
*next = buf; /* JGS stateless, so don't need to do anything? */
return 0;
}
/****** Collate Category ******/
void* _Locale_collate_create(const char * name) {
L_collate_t* lcollate = (L_collate_t*)malloc(sizeof(L_collate_t));
lcollate->gcc_data = _Category_create(name, LC_COLLATE);
return lcollate;
}
char* _Locale_collate_name(const void* lcollate, char* buf) {
return _Locale_name(((struct _Locale_collate*)lcollate)->gcc_data, buf);
}
void _Locale_collate_destroy(void* lcollate) {
_Remove_locale(LC_COLLATE, (struct locale_data *)((struct _Locale_collate*)lcollate)->gcc_data);
free(lcollate);
}
char* _Locale_extract_collate_name(const char* cname, char* buf) {
return _Locale_extract_name(cname, buf, LC_COLLATE);
}
/* copied from the IRIX version -JGS */
char* _Locale_compose_name(char* buf,
const char* ctype, const char* numeric,
const char* time, const char* collate,
const char* monetary, const char* messages,
const char *default_name)
{
(void) default_name;
if ( !strcmp ( ctype, numeric ) &&
!strcmp ( ctype, time ) &&
!strcmp ( ctype, collate ) &&
!strcmp ( ctype, monetary ) &&
!strcmp ( ctype, messages ) )
return strcpy ( buf, ctype );
strcpy ( buf, "/" );
strcat ( buf, ctype );
strcat ( buf, "/" );
strcat ( buf, numeric );
strcat ( buf, "/" );
strcat ( buf, time );
strcat ( buf, "/" );
strcat ( buf, collate );
strcat ( buf, "/" );
strcat ( buf, monetary );
strcat ( buf, "/" );
strcat ( buf, messages );
return buf;
}
/*
glibc doesn't have a locale specific strcmp
This doesn't ignore null chars the way it should
*/
int
_Locale_strcmp(struct _Locale_collate * l,
const char *s1, size_t n1,
const char *s2, size_t n2)
{
int ret;
int minN = n1 < n2 ? n1 : n2;
ret = strncmp(s1, s2, minN);
if (ret == 0) {
if (n1 < n2) return -1;
else if (n1 > n2) return 1;
else return 0;
} else
return ret;
}
int _Locale_strwcmp(struct _Locale_collate*l,
const wchar_t*s1, size_t n1,
const wchar_t*s2, size_t n2)
{
int ret;
int minN = n1 < n2 ? n1 : n2;
ret = wcsncmp(s1, s2, minN);
if (ret == 0) {
if (n1 < n2) return -1;
else if (n1 > n2) return 1;
else return 0;
} else
return ret;
}
size_t _Locale_strxfrm(struct _Locale_collate* lcollate,
char* dest, size_t destN, const char* src, size_t srcN)
{
size_t n;
n = strxfrm(dest, src, destN);
if (n > destN)
return (size_t)-1;
dest[n] = 0;
return n;
}
size_t _Locale_strwxfrm(struct _Locale_collate* lcollate,
wchar_t* dest, size_t destN,
const wchar_t* src, size_t srcN)
{
size_t n;
n = wcsxfrm(dest, src, destN);
if (n > destN)
return (size_t)-1;
dest[n] = 0;
return n;
}

View File

@@ -0,0 +1,207 @@
/* localeinfo.h -- declarations for internal libc locale interfaces
Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef _LOCALEINFO_H
#define _LOCALEINFO_H 1
#include <stddef.h>
#include <langinfo.h>
#include <time.h>
#include <sys/types.h>
/* stuff from loadinfo.h */
#ifndef PARAMS
# if __STDC__
# define PARAMS(args) args
# else
# define PARAMS(args) ()
# endif
#endif
/* Encoding of locale name parts. */
#define CEN_REVISION 1
#define CEN_SPONSOR 2
#define CEN_SPECIAL 4
#define XPG_NORM_CODESET 8
#define XPG_CODESET 16
#define TERRITORY 32
#define CEN_AUDIENCE 64
#define XPG_MODIFIER 128
#define CEN_SPECIFIC (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE)
#define XPG_SPECIFIC (XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER)
struct loaded_l10nfile
{
const char *filename;
int decided;
const void *data;
struct loaded_l10nfile *next;
struct loaded_l10nfile *successor[1];
};
extern const char *_nl_normalize_codeset PARAMS ((const char *codeset,
size_t name_len));
extern struct loaded_l10nfile *
_nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list,
const char *dirlist, size_t dirlist_len, int mask,
const char *language, const char *territory,
const char *codeset,
const char *normalized_codeset,
const char *modifier, const char *special,
const char *sponsor, const char *revision,
const char *filename, int do_allocate));
extern const char *_nl_expand_alias PARAMS ((const char *name));
extern int _nl_explode_name PARAMS ((char *name, const char **language,
const char **modifier,
const char **territory,
const char **codeset,
const char **normalized_codeset,
const char **special,
const char **sponsor,
const char **revision));
/* Magic number at the beginning of a locale data file for CATEGORY. */
#define LIMAGIC(category) (0x960617de ^ (category))
/* Two special weight constants for the collation data. */
#define FORWARD_CHAR ((wchar_t) 0xfffffffd)
#define ELLIPSIS_CHAR ((wchar_t) 0xfffffffe)
#define IGNORE_CHAR ((wchar_t) 0xffffffff)
#define MAX_USAGE_COUNT (UINT_MAX - 1)
#define UNDELETABLE UINT_MAX
/* Structure describing locale data in core for a category. */
struct locale_data
{
const char *name;
const char *filedata; /* Region mapping the file data. */
off_t filesize; /* Size of the file (and the region). */
// unsigned int usage_count;
// int mmaped;
unsigned int nstrings; /* Number of strings below. */
union locale_data_value
{
const wchar_t *wstr;
const char *string;
unsigned int word;
}
values[0]; /* Items, usually pointers into `filedata'. */
};
/* We know three kinds of collation sorting rules. */
enum coll_sort_rule
{
illegal_0__,
sort_forward,
sort_backward,
illegal_3__,
sort_position,
sort_forward_position,
sort_backward_position,
sort_mask
};
/* We can map the types of the entries into a few categories. */
enum value_type
{
none,
string,
stringarray,
byte,
bytearray,
word
};
/* Structure to access `era' information from LC_TIME. */
struct era_entry
{
u_int32_t direction; /* Contains '+' or '-'. */
int32_t offset;
int32_t start_date[3];
int32_t stop_date[3];
const char name_fmt[0];
};
extern const char *const _nl_category_names[LC_ALL + 1];
extern const size_t _nl_category_name_sizes[LC_ALL + 1];
extern const struct locale_data * *const _nl_current[LC_ALL];
/* Name of the standard locale. */
extern const char _nl_C_name[];
/* Extract the current CATEGORY locale's string for ITEM. */
#define _NL_CURRENT(category, item) \
(_nl_current_##category->values[_NL_ITEM_INDEX (item)].string)
/* Extract the current CATEGORY locale's word for ITEM. */
#define _NL_CURRENT_WORD(category, item) \
(_nl_current_##category->values[_NL_ITEM_INDEX (item)].word)
/* This is used in lc-CATEGORY.c to define _nl_current_CATEGORY. */
#define _NL_CURRENT_DEFINE(category) \
extern const struct locale_data _nl_C_##category; \
const struct locale_data *_nl_current_##category = &_nl_C_##category
/* Load the locale data for CATEGORY from the file specified by *NAME.
If *NAME is "", use environment variables as specified by POSIX,
and fill in *NAME with the actual name used. The directories
listed in LOCALE_PATH are searched for the locale files. */
extern const struct locale_data *_nl_find_locale (const char *locale_path,
size_t locale_path_len,
int category, char **name);
/* Try to load the file described by FILE. */
extern void _nl_load_locale (struct loaded_l10nfile *file, int category);
/* Return `era' entry which corresponds to TP. Used in strftime. */
struct era_entry *_nl_get_era_entry (const struct tm *tp);
/* Return `alt_digit' which corresponds to NUMBER. Used in strftime. */
const char *_nl_get_alt_digit (unsigned int number);
/* Global variables for LC_COLLATE category data. */
extern const u_int32_t *__collate_table;
extern const u_int32_t *__collate_extra;
extern const u_int32_t *__collate_element_hash;
extern const char *__collate_element_strings;
extern const wchar_t *__collate_element_values;
extern const u_int32_t *__collate_symbol_hash;
extern const char *__collate_symbol_strings;
extern const u_int32_t *__collate_symbol_classes;
#endif /* localeinfo.h */

View File

@@ -0,0 +1,279 @@
/*
* Copyright (c) 1999
* Silicon Graphics Computer Systems, Inc.
*
* Copyright (c) 1999
* Boris Fomitchev
*
* This material is provided "as is", with absolutely no warranty expressed
* or implied. Any use is at your own risk.
*
* 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.
*
*/
# include "stlport_prefix.h"
#include "c_locale.h"
#include <limits.h>
# ifdef _STLP_REAL_LOCALE_IMPLEMENTED
// here, we'll put C locale implementation for those compilers where
// it has to be done in C++
# else
/* This is a "stub" implementation of the "c_locale.h" interface,
intended for operating systems where we have not yet written
a real implementation. A C++ library using this stub implementation
is still standard-conforming, since the C++ standard does not require
that any locales other than "C" be supported.
*/
/* Framework functions */
struct _Locale_ctype /* { } */ ;
struct _Locale_numeric /* { } */;
struct _Locale_time /* { } */;
struct _Locale_collate /*{ } */;
struct _Locale_monetary /* { } */;
struct _Locale_messages /* { } */;
# ifdef __cplusplus
_STLP_BEGIN_NAMESPACE
extern "C" {
# define __DUMMY_PAR
# define __DUMMY_PAR1
# define __DUMMY_PAR2
# define __DUMMY_PAR3
# define __DUMMY_PAR4
# define __DUMMY_PAR5
# define __DUMMY_PAR6
# define __DUMMY_PAR7
# define __DUMMY_PAR8
# endif
void* _Locale_ctype_create(const char * __DUMMY_PAR)
{ return 0; }
void* _Locale_numeric_create(const char * __DUMMY_PAR)
{ return 0; }
void*_Locale_time_create(const char * __DUMMY_PAR)
{ return 0; }
void* _Locale_collate_create(const char *__DUMMY_PAR)
{ return 0; }
void* _Locale_monetary_create(const char * __DUMMY_PAR)
{ return 0; }
void* _Locale_messages_create(const char *__DUMMY_PAR)
{ return 0; }
const char* _Locale_ctype_default(char*) { return 0; }
const char* _Locale_numeric_default(char *) { return 0; }
const char* _Locale_time_default(char*) { return 0; }
const char* _Locale_collate_default(char*) { return 0; }
const char* _Locale_monetary_default(char*) { return 0; }
const char* _Locale_messages_default(char*) { return 0; }
char* _Locale_ctype_name(const void* __DUMMY_PAR1, char* __DUMMY_PAR)
{ return 0; }
char* _Locale_numeric_name(const void* __DUMMY_PAR1, char* __DUMMY_PAR)
{ return 0; }
char* _Locale_time_name(const void* __DUMMY_PAR1, char* __DUMMY_PAR)
{ return 0; }
char* _Locale_collate_name(const void* __DUMMY_PAR1, char* __DUMMY_PAR)
{ return 0; }
char* _Locale_monetary_name(const void* __DUMMY_PAR1, char* __DUMMY_PAR)
{ return 0; }
char* _Locale_messages_name(const void* __DUMMY_PAR1, char* __DUMMY_PAR)
{ return 0; }
void _Locale_ctype_destroy(void* __DUMMY_PAR) {}
void _Locale_numeric_destroy(void* __DUMMY_PAR) {}
void _Locale_time_destroy(void* __DUMMY_PAR) {}
void _Locale_collate_destroy(void* __DUMMY_PAR) {}
void _Locale_monetary_destroy(void* __DUMMY_PAR) {}
void _Locale_messages_destroy(void* __DUMMY_PAR) {}
char* _Locale_extract_ctype_name(const char* __DUMMY_PAR1, char* __DUMMY_PAR)
{ return 0; }
char* _Locale_extract_numeric_name(const char*__DUMMY_PAR1, char* __DUMMY_PAR)
{ return 0; }
char* _Locale_extract_time_name(const char*__DUMMY_PAR1, char* __DUMMY_PAR)
{ return 0; }
char* _Locale_extract_collate_name(const char*__DUMMY_PAR1, char* __DUMMY_PAR)
{ return 0; }
char* _Locale_extract_monetary_name(const char*__DUMMY_PAR1, char* __DUMMY_PAR)
{ return 0; }
char* _Locale_extract_messages_name(const char*__DUMMY_PAR1, char* __DUMMY_PAR)
{ return 0; }
char* _Locale_compose_name(char*__DUMMY_PAR1, const char*__DUMMY_PAR2, const char*__DUMMY_PAR3,
const char*__DUMMY_PAR4,
const char*__DUMMY_PAR5, const char*__DUMMY_PAR6, const char*__DUMMY_PAR7, const char*__DUMMY_PAR8)
{ return 0; }
/* ctype */
const _Locale_mask_t* _Locale_ctype_table(struct _Locale_ctype* __DUMMY_PAR)
{ return 0; }
int _Locale_toupper(struct _Locale_ctype*__DUMMY_PAR1, int __DUMMY_PAR) { return 0; }
int _Locale_tolower(struct _Locale_ctype*__DUMMY_PAR1, int __DUMMY_PAR) { return 0; }
# ifndef _STLP_NO_WCHAR_T
_Locale_mask_t _Locale_wchar_ctype(struct _Locale_ctype*__DUMMY_PAR1, wint_t __DUMMY_PAR2, _Locale_mask_t __DUMMY_PAR3)
{ return 0; }
wint_t _Locale_wchar_tolower(struct _Locale_ctype*__DUMMY_PAR1, wint_t __DUMMY_PAR)
{ return 0; }
wint_t _Locale_wchar_toupper(struct _Locale_ctype*__DUMMY_PAR1, wint_t __DUMMY_PAR)
{ return 0; }
# endif
# ifndef _STLP_NO_MBSTATE_T
int _Locale_mb_cur_max (struct _Locale_ctype * __DUMMY_PAR) { return 0; }
int _Locale_mb_cur_min (struct _Locale_ctype * __DUMMY_PAR) { return 0; }
int _Locale_is_stateless (struct _Locale_ctype * __DUMMY_PAR) { return 1; }
#ifndef _STLP_NO_WCHAR_T
wint_t _Locale_btowc(struct _Locale_ctype * __DUMMY_PAR1, int __DUMMY_PAR) { return 0; }
int _Locale_wctob(struct _Locale_ctype * __DUMMY_PAR2, wint_t __DUMMY_PAR) { return 0; }
size_t _Locale_mbtowc(struct _Locale_ctype *__DUMMY_PAR1,
wchar_t *__DUMMY_PAR2,
const char *__DUMMY_PAR3, size_t __DUMMY_PAR4,
mbstate_t *__DUMMY_PAR5) {
return (size_t) -1;
}
size_t _Locale_wctomb(struct _Locale_ctype *__DUMMY_PAR1,
char *__DUMMY_PAR2, size_t __DUMMY_PAR3,
const wchar_t __DUMMY_PAR4,
mbstate_t *__DUMMY_PAR5) {
return (size_t) -1;
}
# endif
size_t _Locale_unshift(struct _Locale_ctype *__DUMMY_PAR1,
mbstate_t *__DUMMY_PAR2,
char *__DUMMY_PAR3, size_t __DUMMY_PAR4, char ** __DUMMY_PAR5) {
return (size_t) -1;
}
# endif /* _STLP_NO_MBSTATE_T */
/* Collate */
int _Locale_strcmp(struct _Locale_collate* __DUMMY_PAR1,
const char* __DUMMY_PAR2, size_t __DUMMY_PAR3, const char* __DUMMY_PAR4,
size_t __DUMMY_PAR5) {
return 0;
}
# ifndef _STLP_NO_WCHAR_T
int _Locale_strwcmp(struct _Locale_collate* __DUMMY_PAR1,
const wchar_t* __DUMMY_PAR2, size_t __DUMMY_PAR3,
const wchar_t* __DUMMY_PAR4, size_t __DUMMY_PAR5) {
return 0;
}
# endif
size_t _Locale_strxfrm(struct _Locale_collate* __DUMMY_PAR1,
char* __DUMMY_PAR2, size_t __DUMMY_PAR3,
const char* __DUMMY_PAR4, size_t __DUMMY_PAR5) {
return 0;
}
# ifndef _STLP_NO_WCHAR_T
size_t _Locale_strwxfrm(struct _Locale_collate* __DUMMY_PAR1,
wchar_t* __DUMMY_PAR2, size_t __DUMMY_PAR3,
const wchar_t* __DUMMY_PAR4, size_t __DUMMY_PAR5)
{
return 0;
}
# endif
/* Numeric */
char _Locale_decimal_point(struct _Locale_numeric* __DUMMY_PAR) { return '.'; }
char _Locale_thousands_sep(struct _Locale_numeric* __DUMMY_PAR) { return ','; }
const char* _Locale_grouping(struct _Locale_numeric * __DUMMY_PAR)
{ return ""; }
const char * _Locale_true(struct _Locale_numeric * __DUMMY_PAR) { return 0; }
const char * _Locale_false(struct _Locale_numeric * __DUMMY_PAR) { return 0; }
/* Monetary */
const char* _Locale_int_curr_symbol(struct _Locale_monetary * __DUMMY_PAR)
{ return 0; }
const char* _Locale_currency_symbol(struct _Locale_monetary * __DUMMY_PAR)
{ return 0; }
char _Locale_mon_decimal_point(struct _Locale_monetary * __DUMMY_PAR)
{ return '.'; }
char _Locale_mon_thousands_sep(struct _Locale_monetary * __DUMMY_PAR)
{ return ','; }
const char* _Locale_mon_grouping(struct _Locale_monetary * __DUMMY_PAR)
{ return ""; }
const char* _Locale_positive_sign(struct _Locale_monetary * __DUMMY_PAR)
{ return ""; }
const char* _Locale_negative_sign(struct _Locale_monetary * __DUMMY_PAR)
{ return ""; }
char _Locale_int_frac_digits(struct _Locale_monetary * __DUMMY_PAR)
{ return CHAR_MAX; }
char _Locale_frac_digits(struct _Locale_monetary * __DUMMY_PAR)
{ return CHAR_MAX; }
int _Locale_p_cs_precedes(struct _Locale_monetary * __DUMMY_PAR)
{ return CHAR_MAX; }
int _Locale_p_sep_by_space(struct _Locale_monetary * __DUMMY_PAR)
{ return CHAR_MAX; }
int _Locale_p_sign_posn(struct _Locale_monetary * __DUMMY_PAR)
{ return CHAR_MAX; }
int _Locale_n_cs_precedes(struct _Locale_monetary * __DUMMY_PAR)
{ return CHAR_MAX; }
int _Locale_n_sep_by_space(struct _Locale_monetary * __DUMMY_PAR)
{ return CHAR_MAX; }
int _Locale_n_sign_posn(struct _Locale_monetary * __DUMMY_PAR)
{ return CHAR_MAX; }
/* Time */
const char * _Locale_full_monthname(struct _Locale_time * __DUMMY_PAR1, int __DUMMY_PAR2)
{ return 0; }
const char * _Locale_abbrev_monthname(struct _Locale_time * __DUMMY_PAR1, int __DUMMY_PAR2)
{ return 0; }
const char * _Locale_full_dayofweek(struct _Locale_time * __DUMMY_PAR1, int __DUMMY_PAR2)
{ return 0; }
const char * _Locale_abbrev_dayofweek(struct _Locale_time * __DUMMY_PAR1, int __DUMMY_PAR2)
{ return 0; }
const char* _Locale_d_t_fmt(struct _Locale_time* __DUMMY_PAR) { return 0; }
const char* _Locale_d_fmt(struct _Locale_time* __DUMMY_PAR) { return 0; }
const char* _Locale_t_fmt(struct _Locale_time* __DUMMY_PAR) { return 0; }
const char* _Locale_long_d_t_fmt(struct _Locale_time* __DUMMY_PAR){ return 0; }
const char* _Locale_long_d_fmt(struct _Locale_time* __DUMMY_PAR) { return 0; }
const char* _Locale_am_str(struct _Locale_time* __DUMMY_PAR) { return 0; }
const char* _Locale_pm_str(struct _Locale_time* __DUMMY_PAR) { return 0; }
const char* _Locale_t_fmt_ampm(struct _Locale_time* __DUMMY_PAR) { return 0; }
/* Messages */
int _Locale_catopen(struct _Locale_messages* __DUMMY_PAR1, const char* __DUMMY_PAR)
{ return -1; }
void _Locale_catclose(struct _Locale_messages* __DUMMY_PAR1, int __DUMMY_PAR) {}
const char* _Locale_catgets(struct _Locale_messages* __DUMMY_PAR1, int __DUMMY_PAR2,
int __DUMMY_PAR3, int __DUMMY_PAR4,
const char *dfault)
{ return dfault; }
#ifdef __cplusplus
} /* extern C */
_STLP_END_NAMESPACE
#endif
#endif /* real locale */

File diff suppressed because it is too large Load Diff

165
STLPORT/src/codecvt.cpp Normal file
View File

@@ -0,0 +1,165 @@
/*
* Copyright (c) 1999
* Silicon Graphics Computer Systems, Inc.
*
* Copyright (c) 1999
* Boris Fomitchev
*
* This material is provided "as is", with absolutely no warranty expressed
* or implied. Any use is at your own risk.
*
* 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.
*
*/
# include "stlport_prefix.h"
# ifndef _STLP_NO_MBSTATE_T
#include <stl/_codecvt.h>
#include <stl/_algobase.h>
_STLP_BEGIN_NAMESPACE
//----------------------------------------------------------------------
// codecvt<char, char, mbstate_t>
codecvt<char, char, mbstate_t>::~codecvt() {}
int codecvt<char, char, mbstate_t>::do_length(const mbstate_t&,
const char* from,
const char* end,
size_t mx) const
{
return (int)(min) ( __STATIC_CAST(size_t, (end - from)), mx);
}
int codecvt<char, char, mbstate_t>::do_max_length() const _STLP_NOTHROW
{
return 1;
}
bool
codecvt<char, char, mbstate_t>::do_always_noconv() const _STLP_NOTHROW
{
return true;
}
int
codecvt<char, char, mbstate_t>::do_encoding() const _STLP_NOTHROW
{
return 1;
}
codecvt_base::result
codecvt<char, char, mbstate_t>::do_unshift(mbstate_t& /* __state */,
char* __to,
char* /* __to_limit */,
char*& __to_next) const
{ __to_next = __to; return noconv; }
codecvt_base::result
codecvt<char, char, mbstate_t>::do_in (mbstate_t& /* __state */ ,
const char* __from,
const char* /* __from_end */,
const char*& __from_next,
char* __to,
char* /* __to_end */,
char*& __to_next) const
{ __from_next = __from; __to_next = __to; return noconv; }
codecvt_base::result
codecvt<char, char, mbstate_t>::do_out(mbstate_t& /* __state */,
const char* __from,
const char* /* __from_end */,
const char*& __from_next,
char* __to,
char* /* __to_limit */,
char*& __to_next) const
{ __from_next = __from; __to_next = __to; return noconv; }
# ifndef _STLP_NO_WCHAR_T
//----------------------------------------------------------------------
// codecvt<wchar_t, char, mbstate_t>
codecvt<wchar_t, char, mbstate_t>::~codecvt() {}
codecvt<wchar_t, char, mbstate_t>::result
codecvt<wchar_t, char, mbstate_t>::do_out(state_type& /* state */,
const intern_type* from,
const intern_type* from_end,
const intern_type*& from_next,
extern_type* to,
extern_type* to_limit,
extern_type*& to_next) const
{
ptrdiff_t len = (min) (from_end - from, to_limit - to);
copy(from, from + len, to);
from_next = from + len;
to_next = to + len;
return ok;
}
codecvt<wchar_t, char, mbstate_t>::result
codecvt<wchar_t, char, mbstate_t>::do_in (state_type& /* state */,
const extern_type* from,
const extern_type* from_end,
const extern_type*& from_next,
intern_type* to,
intern_type* to_limit,
intern_type*& to_next) const
{
ptrdiff_t len = (min) (from_end - from, to_limit - to);
copy(from, from + len, to);
from_next = from + len;
to_next = to + len;
return ok;
}
codecvt<wchar_t, char, mbstate_t>::result
codecvt<wchar_t, char, mbstate_t>::do_unshift(state_type& /* state */,
extern_type* to,
extern_type* ,
extern_type*& to_next) const
{
to_next = to;
return noconv;
}
int codecvt<wchar_t, char, mbstate_t>::do_encoding() const _STLP_NOTHROW {
return 1;
}
bool codecvt<wchar_t, char, mbstate_t>::do_always_noconv() const _STLP_NOTHROW
{
return true;
}
int codecvt<wchar_t, char, mbstate_t>::do_length(const state_type&,
const extern_type* from,
const extern_type* end,
size_t mx) const
{
return (int)(min) ((size_t) (end - from), mx);
}
int codecvt<wchar_t, char, mbstate_t>::do_max_length() const _STLP_NOTHROW {
return 1;
}
# endif /* wchar_t */
_STLP_END_NAMESPACE
# endif /* _STLP_NO_MBSTATE_T */
// Local Variables:
// mode:C++
// End:

83
STLPORT/src/collate.cpp Normal file
View File

@@ -0,0 +1,83 @@
/*
* Copyright (c) 1999
* Silicon Graphics Computer Systems, Inc.
*
* Copyright (c) 1999
* Boris Fomitchev
*
* This material is provided "as is", with absolutely no warranty expressed
* or implied. Any use is at your own risk.
*
* 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.
*
*/
# include "stlport_prefix.h"
#include "stl/_collate.h"
_STLP_BEGIN_NAMESPACE
// collate<char>
collate<char>::~collate() {}
int collate<char>::do_compare(const char* low1, const char* high1,
const char* low2, const char* high2) const
{
return __lexicographical_compare_3way(low1, high1, low2, high2);
}
string collate<char>::do_transform(const char* low, const char* high) const
{
return string(low, high);
}
long collate<char>::do_hash(const char* low, const char* high) const {
unsigned long result = 0;
for ( ; low < high; ++low)
result = 5 * result + *low;
return result;
}
# ifndef _STLP_NO_WCHAR_T
// collate<wchar_t>
collate<wchar_t>::~collate() {}
int
collate<wchar_t>::do_compare(const wchar_t* low1, const wchar_t* high1,
const wchar_t* low2, const wchar_t* high2) const
{
return __lexicographical_compare_3way(low1, high1, low2, high2);
}
wstring
collate<wchar_t>::do_transform(const wchar_t* low, const wchar_t* high) const
{
return wstring(low, high);
}
long collate<wchar_t>::do_hash(const wchar_t* low, const wchar_t* high) const
{
unsigned long result = 0;
for ( ; low < high; ++low)
result = 5 * result + *low;
return result;
}
# endif
_STLP_END_NAMESPACE
// Local Variables:
// mode:C++
// End:

View File

@@ -0,0 +1,416 @@
SHELL=/bin/sh
#
# Versioning
#
VERSION_MAJOR=4
VERSION_MINOR=6
# This one is not always present; it should be empty for release versions.
# We do not assume any binary compatibility for betas.
BETA_SUFFIX=
VERSION_SUFFIX= .$(VERSION_MAJOR).$(VERSION_MINOR)$(BETA_SUFFIX)
WIN_VERSION_SUFFIX= $(VERSION_MAJOR)$(VERSION_MINOR)$(BETA_SUFFIX)
# DYNAMIC_SUFFIX= $(VERSION_SUFFIX)$(PATCH_SUFFIX)
DYNAMIC_SUFFIX= $(VERSION_SUFFIX)
WIN_DYNAMIC_SUFFIX= $(WIN_VERSION_SUFFIX)
#
# Directories
#
#
SRCDIR=.
STLPORT_DIR=$(CUR_DIR)..$(PATH_SEP)stlport
OUTDIR=$(CUR_DIR)..$(PATH_SEP)lib
OBJDIR_COMMON=$(OUTDIR)$(PATH_SEP)obj
OBJDIR=$(OUTDIR)$(PATH_SEP)obj$(PATH_SEP)$(COMP)
RELEASE_OBJDIR_static=$(OBJDIR)$(PATH_SEP)Release
DEBUG_OBJDIR_static=$(OBJDIR)$(PATH_SEP)Debug
STLDEBUG_OBJDIR_static=$(OBJDIR)$(PATH_SEP)DebugSTL
RELEASE_OBJDIR_staticx=$(OBJDIR)$(PATH_SEP)Releasex
DEBUG_OBJDIR_staticx=$(OBJDIR)$(PATH_SEP)Debugx
STLDEBUG_OBJDIR_staticx=$(OBJDIR)$(PATH_SEP)DebugSTLx
RELEASE_OBJDIR_dynamic=$(OBJDIR)$(PATH_SEP)ReleaseD
DEBUG_OBJDIR_dynamic=$(OBJDIR)$(PATH_SEP)DebugD
STLDEBUG_OBJDIR_dynamic=$(OBJDIR)$(PATH_SEP)DebugSTLD
#
# By default on UNIX, STLport headers go into /usr/local/include/stlport,
# and libraries go into /usr/local/lib. Please override any of them if desired.
#
INSTALLDIR=/usr/local
# INSTALLDIR=/tmp
INSTALLDIR_INC=$(INSTALLDIR)/include/stlport
INSTALLDIR_LIB=$(INSTALLDIR)/lib
RM = rm -fr
INSTALL = ./install.sh -c
INSTALL_LIB = $(INSTALL)
INSTALL_H = $(INSTALL) -m 444
#
#
# Targets
#
RELEASE_NAME=$(LIB_BASENAME)
DEBUG_NAME=$(LIB_BASENAME)_debug
STLDEBUG_NAME=$(LIB_BASENAME)_stldebug
RELEASE_DYNLIB=$(RELEASE_NAME).$(DYNEXT)$(DYNAMIC_SUFFIX)
DEBUG_DYNLIB=$(DEBUG_NAME).$(DYNEXT)$(DYNAMIC_SUFFIX)
STLDEBUG_DYNLIB=$(STLDEBUG_NAME).$(DYNEXT)$(DYNAMIC_SUFFIX)
RELEASE_DYNLIB_SONAME=$(RELEASE_NAME).$(DYNEXT)$(VERSION_SUFFIX)
DEBUG_DYNLIB_SONAME=$(DEBUG_NAME).$(DYNEXT)$(VERSION_SUFFIX)
STLDEBUG_DYNLIB_SONAME=$(STLDEBUG_NAME).$(DYNEXT)$(VERSION_SUFFIX)
RELEASE_LIB=$(RELEASE_NAME)$(STATIC_SUFFIX).$(STEXT)
DEBUG_LIB=$(DEBUG_NAME)$(STATIC_SUFFIX).$(STEXT)
STLDEBUG_LIB=$(STLDEBUG_NAME)$(STATIC_SUFFIX).$(STEXT)
RELEASEX_LIB=$(RELEASE_NAME)$(STATIC_SUFFIX)x.$(STEXT)
DEBUGX_LIB=$(DEBUG_NAME)$(STATIC_SUFFIX)x.$(STEXT)
STLDEBUGX_LIB=$(STLDEBUG_NAME)$(STATIC_SUFFIX)x.$(STEXT)
ALL_STATIC_LIBS=$(OUTDIR)$(PATH_SEP)$(RELEASE_LIB) $(OUTDIR)$(PATH_SEP)$(STLDEBUG_LIB)
DEBUG_STATIC_LIBS=$(ALL_STATIC_LIBS) $(OUTDIR)$(PATH_SEP)$(DEBUG_LIB)
ALL_STATICX_LIBS=$(OUTDIR)$(PATH_SEP)$(RELEASEX_LIB) $(OUTDIR)$(PATH_SEP)$(STLDEBUGX_LIB)
DEBUG_STATICX_LIBS=$(ALL_STATICX_LIBS) $(OUTDIR)$(PATH_SEP)$(DEBUGX_LIB)
ALL_DYNAMIC_LIBS=$(OUTDIR)$(PATH_SEP)$(RELEASE_DYNLIB) $(OUTDIR)$(PATH_SEP)$(STLDEBUG_DYNLIB)
DEBUG_DYNAMIC_LIBS=$(OUTDIR)$(PATH_SEP)$(RELEASE_DYNLIB) $(OUTDIR)$(PATH_SEP)$(STLDEBUG_DYNLIB)
RELEASE_OBJECTS_static= \
$(RELEASE_OBJDIR_static)$(PATH_SEP)dll_main.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)fstream.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)strstream.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)sstream.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)ios.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)streambuf.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)istream.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)ostream.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)iostream.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)codecvt.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)collate.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)ctype.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)monetary.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)num_get.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)num_put.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)num_get_float.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)num_put_float.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)numpunct.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)time_facets.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)messages.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)locale_impl.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)locale.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)locale_catalog.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)facets_byname.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)c_locale.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)c_locale_stub.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)complex.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_exp.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_io.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_trig.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)complex_io_w.$(OBJEXT) \
$(RELEASE_OBJDIR_static)$(PATH_SEP)string_w.$(OBJEXT)
DEBUG_OBJECTS_static= \
$(DEBUG_OBJDIR_static)$(PATH_SEP)dll_main.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)fstream.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)strstream.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)sstream.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)ios.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)streambuf.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)istream.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)ostream.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)iostream.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)codecvt.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)collate.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)ctype.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)monetary.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)num_get.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)num_put.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)num_get_float.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)num_put_float.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)numpunct.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)time_facets.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)messages.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)locale_impl.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)locale.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)locale_catalog.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)facets_byname.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)c_locale.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)c_locale_stub.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)complex.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_exp.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_io.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_trig.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)complex_io_w.$(OBJEXT) \
$(DEBUG_OBJDIR_static)$(PATH_SEP)string_w.$(OBJEXT)
STLDEBUG_OBJECTS_static= \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)dll_main.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)fstream.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)strstream.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)sstream.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)ios.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)streambuf.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)istream.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)ostream.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)iostream.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)codecvt.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)collate.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)ctype.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)monetary.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_get.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_put.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_get_float.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)num_put_float.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)numpunct.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)time_facets.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)messages.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)locale_impl.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)locale.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)locale_catalog.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)facets_byname.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)c_locale.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)c_locale_stub.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_exp.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_io.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_trig.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)complex_io_w.$(OBJEXT) \
$(STLDEBUG_OBJDIR_static)$(PATH_SEP)string_w.$(OBJEXT)
###########################################################
RELEASE_OBJECTS_staticx= \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)dll_main.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)fstream.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)strstream.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)sstream.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)ios.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)streambuf.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)istream.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)ostream.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)iostream.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)codecvt.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)collate.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)ctype.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)monetary.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)num_get.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)num_put.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)num_get_float.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)num_put_float.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)numpunct.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)time_facets.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)messages.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)locale_impl.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)locale.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)locale_catalog.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)facets_byname.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)c_locale.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)c_locale_stub.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)complex.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)complex_exp.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)complex_io.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)complex_trig.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)complex_io_w.$(OBJEXT) \
$(RELEASE_OBJDIR_staticx)$(PATH_SEP)string_w.$(OBJEXT)
DEBUG_OBJECTS_staticx= \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)dll_main.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)fstream.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)strstream.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)sstream.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)ios.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)streambuf.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)istream.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)ostream.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)iostream.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)codecvt.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)collate.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)ctype.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)monetary.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)num_get.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)num_put.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)num_get_float.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)num_put_float.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)numpunct.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)time_facets.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)messages.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)locale_impl.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)locale.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)locale_catalog.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)facets_byname.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)c_locale.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)c_locale_stub.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)complex.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)complex_exp.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)complex_io.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)complex_trig.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)complex_io_w.$(OBJEXT) \
$(DEBUG_OBJDIR_staticx)$(PATH_SEP)string_w.$(OBJEXT)
STLDEBUG_OBJECTS_staticx= \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)dll_main.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)fstream.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)strstream.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)sstream.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)ios.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)streambuf.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)istream.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)ostream.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)iostream.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)codecvt.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)collate.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)ctype.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)monetary.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)num_get.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)num_put.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)num_get_float.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)num_put_float.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)numpunct.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)time_facets.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)messages.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)locale_impl.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)locale.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)locale_catalog.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)facets_byname.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)c_locale.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)c_locale_stub.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)complex.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)complex_exp.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)complex_io.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)complex_trig.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)complex_io_w.$(OBJEXT) \
$(STLDEBUG_OBJDIR_staticx)$(PATH_SEP)string_w.$(OBJEXT)
###########################################################
RELEASE_OBJECTS_dynamic= \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)dll_main.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)fstream.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)strstream.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)sstream.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)ios.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)streambuf.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)istream.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)ostream.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)iostream.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)codecvt.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)collate.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)ctype.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)monetary.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)num_get.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)num_put.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)num_get_float.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)num_put_float.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)numpunct.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)time_facets.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)messages.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)locale_impl.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)locale.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)locale_catalog.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)facets_byname.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)c_locale.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)c_locale_stub.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)complex.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)complex_exp.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)complex_io.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)complex_trig.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)complex_io_w.$(OBJEXT) \
$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)string_w.$(OBJEXT) \
$(RESFILE)
DEBUG_OBJECTS_dynamic= \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)dll_main.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)fstream.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)strstream.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)sstream.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)ios.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)streambuf.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)istream.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)ostream.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)iostream.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)codecvt.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)collate.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)ctype.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)monetary.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)num_get.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)num_put.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)num_get_float.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)num_put_float.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)numpunct.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)time_facets.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)messages.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)locale_impl.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)locale.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)locale_catalog.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)facets_byname.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)c_locale.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)c_locale_stub.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)complex.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)complex_exp.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)complex_io.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)complex_trig.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)complex_io_w.$(OBJEXT) \
$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)string_w.$(OBJEXT) \
$(RESFILE_debug)
STLDEBUG_OBJECTS_dynamic= \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)dll_main.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)fstream.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)strstream.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)sstream.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)ios.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)streambuf.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)stdio_streambuf.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)istream.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)ostream.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)iostream.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)codecvt.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)collate.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)ctype.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)monetary.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)num_get.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)num_put.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)num_get_float.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)num_put_float.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)numpunct.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)time_facets.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)messages.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)locale_impl.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)locale.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)locale_catalog.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)facets_byname.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)c_locale.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)c_locale_stub.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)complex.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)complex_exp.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)complex_io.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)complex_trig.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)complex_io_w.$(OBJEXT) \
$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)string_w.$(OBJEXT) \
$(RESFILE_stldebug)

View File

@@ -0,0 +1,30 @@
SHELL=/bin/sh
!include common_macros.mak
# INSTALLDIR=/usr/local
# INSTALLDIR_INC=$(INSTALLDIR)/include/stlport
# INSTALLDIR_LIB=$(INSTALLDIR)/lib
# RM = rm -fr
# INSTALL = ./install.sh -c
# INSTALL_LIB = $(INSTALL)
# INSTALL_H = $(INSTALL) -m 444
#
#
# Targets
#
# those are defined "Unix way" in common_macros.mak; redefine them here
RELEASE_DYNLIB=$(RELEASE_NAME)$(WIN_DYNAMIC_SUFFIX).$(DYNEXT)
DEBUG_DYNLIB=$(DEBUG_NAME)$(WIN_DYNAMIC_SUFFIX).$(DYNEXT)
STLDEBUG_DYNLIB=$(STLDEBUG_NAME)$(WIN_DYNAMIC_SUFFIX).$(DYNEXT)
RELEASE_DYNLIB_SONAME=$(RELEASE_NAME)$(WIN_VERSION_SUFFIX).$(DYNEXT)
DEBUG_DYNLIB_SONAME=$(DEBUG_NAME)$(WIN_VERSION_SUFFIX).$(DYNEXT)
STLDEBUG_DYNLIB_SONAME=$(STLDEBUG_NAME)$(WIN_VERSION_SUFFIX).$(DYNEXT)
ALL_DYNAMIC_LIBS=$(OUTDIR)$(PATH_SEP)$(RELEASE_DYNLIB) $(OUTDIR)$(PATH_SEP)$(STLDEBUG_DYNLIB)
DEBUG_DYNAMIC_LIBS=$(OUTDIR)$(PATH_SEP)$(RELEASE_DYNLIB) $(OUTDIR)$(PATH_SEP)$(STLDEBUG_DYNLIB)

View File

@@ -0,0 +1,46 @@
.SUFFIXES: .cpp .c .o .so .a
$(RELEASE_OBJDIR_static)/%.o: %.cpp
$(CXX) $(CXXFLAGS_RELEASE_static) $< -c -o $@
$(RELEASE_OBJDIR_static)/%.o: %.c
$(CC) $(CXXFLAGS_RELEASE_static) $< -c -o $@
$(RELEASE_OBJDIR_static)/%.i : %.cpp
$(CXX) $(CXXFLAGS_RELEASE_static) $< -E $@
$(RELEASE_OBJDIR_dynamic)/%.o : %.cpp
$(CXX) $(CXXFLAGS_RELEASE_dynamic) $< -c -o $@
$(RELEASE_OBJDIR_dynamic)/%.o : %.c
$(CC) $(CXXFLAGS_RELEASE_dynamic) $< -c -o $@
$(RELEASE_OBJDIR_dynamic)/%.i : %.cpp
$(CXX) $(CXXFLAGS_RELEASE_dynamic) $< -E $@
$(DEBUG_OBJDIR_static)/%.o : %.cpp
$(CXX) $(CXXFLAGS_DEBUG_static) $< -c -o $@
$(DEBUG_OBJDIR_static)/%.o : %.c
$(CC) $(CXXFLAGS_DEBUG_static) $< -c -o $@
$(DEBUG_OBJDIR_static)/%.i : %.cpp
$(CXX) $(CXXFLAGS_DEBUG_static) $< -E $@
$(DEBUG_OBJDIR_dynamic)/%.o : %.cpp
$(CXX) $(CXXFLAGS_DEBUG_dynamic) $< -c -o $@
$(DEBUG_OBJDIR_dynamic)/%.o : %.c
$(CC) $(CXXFLAGS_DEBUG_dynamic) $< -c -o $@
$(DEBUG_OBJDIR_dynamic)/%.i : %.cpp
$(CXX) $(CXXFLAGS_DEBUG_dynamic) $< -E $@
$(STLDEBUG_OBJDIR_static)/%.o : %.cpp
$(CXX) $(CXXFLAGS_STLDEBUG_static) $< -c -o $@
$(STLDEBUG_OBJDIR_static)/%.o : %.c
$(CC) $(CXXFLAGS_STLDEBUG_static) $< -c -o $@
$(STLDEBUG_OBJDIR_static)/%.i : %.cpp
$(CXX) $(CXXFLAGS_STLDEBUG_static) $< -E $@
$(STLDEBUG_OBJDIR_dynamic)/%.o : %.cpp
$(CXX) $(CXXFLAGS_STLDEBUG_dynamic) $< -c -o $@
$(STLDEBUG_OBJDIR_dynamic)/%.o : %.c
$(CC) $(CXXFLAGS_STLDEBUG_dynamic) $< -c -o $@
$(STLDEBUG_OBJDIR_dynamic)/%.i : %.cpp
$(CXX) $(CXXFLAGS_STLDEBUG_dynamic) $< -E $@

View File

@@ -0,0 +1,160 @@
#
# Target directories
#
#
$(OUTDIR) :
$(MKDIR) $(OUTDIR)
$(RELEASE_OBJDIR_dynamic) :
$(MKDIR) $(RELEASE_OBJDIR_dynamic)
$(DEBUG_OBJDIR_dynamic) :
$(MKDIR) $(DEBUG_OBJDIR_dynamic)
$(STLDEBUG_OBJDIR_dynamic) :
$(MKDIR) $(STLDEBUG_OBJDIR_dynamic)
$(RELEASE_OBJDIR_static) :
$(MKDIR) $(RELEASE_OBJDIR_static)
$(DEBUG_OBJDIR_static) :
$(MKDIR) $(DEBUG_OBJDIR_static)
$(STLDEBUG_OBJDIR_static) :
$(MKDIR) $(STLDEBUG_OBJDIR_static)
$(RELEASE_OBJDIR_staticx) :
$(MKDIR) $(RELEASE_OBJDIR_staticx)
$(DEBUG_OBJDIR_staticx) :
$(MKDIR) $(DEBUG_OBJDIR_staticx)
$(STLDEBUG_OBJDIR_staticx) :
$(MKDIR) $(STLDEBUG_OBJDIR_staticx)
#create a compiler platform directory
platform: $(PREPARE_STEP)
-@$(MKDIR) $(OUTDIR)
-@$(MKDIR) $(OBJDIR_COMMON)
-@$(MKDIR) $(OBJDIR)
prepare: $(PREPARE_STEP)
@echo "STLport installation is prepared for use in-place. No iostreams are built yet !"
@echo "To build and use STLport iostreams, please do : make -f <this makefile> all."
@echo "To install STLport in a designated directory, please do : make -f <this makefile> install."
clean_all_obj:
-$(RM) $(OUTDIR)$(PATH_SEP)obj
###### Targets ##################
all_static : platform $(ALL_STATIC_LIBS)
all_dynamic : platform $(ALL_DYNAMIC_LIBS)
all_staticx : platform $(ALL_STATICX_LIBS)
release_static : platform $(OUTDIR)$(PATH_SEP)$(RELEASE_LIB)
debug_static : platform $(OUTDIR)$(PATH_SEP)$(DEBUG_LIB)
stldebug_static : platform $(OUTDIR)$(PATH_SEP)$(STLDEBUG_LIB)
release_staticx : platform $(OUTDIR)$(PATH_SEP)$(RELEASEX_LIB)
debug_staticx : platform $(OUTDIR)$(PATH_SEP)$(DEBUGX_LIB)
stldebug_staticx : platform $(OUTDIR)$(PATH_SEP)$(STLDEBUGX_LIB)
release_dynamic : platform $(OUTDIR)$(PATH_SEP)$(RELEASE_DYNLIB)
debug_dynamic : platform $(OUTDIR)$(PATH_SEP)$(DEBUG_DYNLIB)
stldebug_dynamic : platform $(OUTDIR)$(PATH_SEP)$(STLDEBUG_DYNLIB)
install : all $(INSTALL_STEP)
clean : $(CLEAN_SPECIFIC)
-$(RM) $(RELEASE_OBJDIR_static) $(DEBUG_OBJDIR_static) $(STLDEBUG_OBJDIR_static) \
$(RELEASE_OBJDIR_staticx) $(DEBUG_OBJDIR_staticx) $(STLDEBUG_OBJDIR_staticx) \
$(RELEASE_OBJDIR_dynamic) $(DEBUG_OBJDIR_dynamic) $(STLDEBUG_OBJDIR_dynamic) \
$(OUTDIR)$(PATH_SEP)SunWS_cache SunWS_cache $(OUTDIR)$(PATH_SEP)Templates.DB Templates.DB tempinc
clobber : clean clean_all_obj
-$(RM) $(OUTDIR)$(PATH_SEP)$(DEBUG_NAME).* \
$(OUTDIR)$(PATH_SEP)$(RELEASE_NAME).* $(OUTDIR)$(PATH_SEP)$(STLDEBUG_NAME).*
HEADER_DIRS1 = . using wrap_std old_hp
HEADER_DIRS2 = config stl stl/debug stl/wrappers using/h wrap_std/h
symbolic_links :
$(RM) $(OUTDIR)/$(RELEASE_NAME).$(DYNEXT)
$(RM) $(OUTDIR)/$(STLDEBUG_NAME).$(DYNEXT)
$(RM) $(OUTDIR)/$(DEBUG_NAME).$(DYNEXT)
ln -s $(RELEASE_DYNLIB) $(OUTDIR)/$(RELEASE_NAME).$(DYNEXT)
-ln -s $(DEBUG_DYNLIB) $(OUTDIR)/$(DEBUG_NAME).$(DYNEXT)
ln -s $(STLDEBUG_DYNLIB) $(OUTDIR)/$(STLDEBUG_NAME).$(DYNEXT)
install_unix :
-$(RM) $(INSTALLDIR_INC)
for dir in $(HEADER_DIRS1); \
do \
./mkinstalldirs $(INSTALLDIR_INC)/$$dir; \
for file in `cat ../stlport/$$dir/export`; \
do \
$(INSTALL_H) ../stlport/$$dir/$$file $(INSTALLDIR_INC)/$$dir ; \
done \
done
for dir in $(HEADER_DIRS2); \
do \
./mkinstalldirs $(INSTALLDIR_INC)/$$dir; \
for file in `ls ../stlport/$$dir/*.*`; \
do \
$(INSTALL_H) $$file $(INSTALLDIR_INC)/$$dir ; \
done \
done
./mkinstalldirs $(INSTALLDIR_LIB)
for file in `ls $(OUTDIR)/$(LIB_BASENAME)*`; \
do \
$(RM) $(INSTALLDIR_LIB)/$$file; \
$(INSTALL_LIB) $$file $(INSTALLDIR_LIB); \
done
$(RM) $(INSTALLDIR_LIB)/$(RELEASE_NAME).$(DYNEXT)
$(RM) $(INSTALLDIR_LIB)/$(STLDEBUG_NAME).$(DYNEXT)
ln -s $(RELEASE_DYNLIB) $(INSTALLDIR_LIB)/$(RELEASE_NAME).$(DYNEXT)
ln -s $(STLDEBUG_DYNLIB) $(INSTALLDIR_LIB)/$(STLDEBUG_NAME).$(DYNEXT)
# ln -s $(INSTALLDIR_LIB)/$(RELEASE_DYNLIB) $(INSTALLDIR_LIB)/$(RELEASE_NAME).$(DYNEXT)
# ln -s $(INSTALLDIR_LIB)/$(STLDEBUG_DYNLIB) $(INSTALLDIR_LIB)/$(STLDEBUG_NAME).$(DYNEXT)
install_sun : install_unix
for file in `cat ../stlport/$$dir/export.sun`; \
do \
$(INSTALL_H) ../stlport/$$dir/$$file $(INSTALLDIR_INC)/$$dir ; \
done
$(OUTDIR)$(PATH_SEP)$(RELEASE_DYNLIB) : $(OUTDIR) $(RELEASE_OBJDIR_dynamic) $(DEF_FILE) $(RELEASE_OBJECTS_dynamic)
$(DYN_LINK) $(DYNLINK_OUT)$(OUTDIR)$(PATH_SEP)$(RELEASE_DYNLIB) $(LDFLAGS_RELEASE_dynamic) $(RELEASE_OBJECTS_dynamic) $(LDLIBS_RELEASE_dynamic)
$(OUTDIR)$(PATH_SEP)$(RELEASE_LIB) : $(OUTDIR) $(RELEASE_OBJDIR_static) $(DEF_FILE) $(RELEASE_OBJECTS_static)
$(LINK) $(LINK_OUT)$(OUTDIR)$(PATH_SEP)$(RELEASE_LIB) $(LDFLAGS_RELEASE_static) $(RELEASE_OBJECTS_static) $(LDLIBS_RELEASE_static)
$(OUTDIR)$(PATH_SEP)$(RELEASEX_LIB) : $(OUTDIR) $(RELEASE_OBJDIR_staticx) $(DEF_FILE) $(RELEASE_OBJECTS_staticx)
$(LINK) $(LINK_OUT)$(OUTDIR)$(PATH_SEP)$(RELEASEX_LIB) $(LDFLAGS_RELEASE_static) $(RELEASE_OBJECTS_staticx) $(LDLIBS_RELEASE_static)
$(OUTDIR)$(PATH_SEP)$(DEBUG_DYNLIB) : $(OUTDIR) $(DEBUG_OBJDIR_dynamic) $(DEF_FILE) $(DEBUG_OBJECTS_dynamic)
$(DYN_LINK) $(DYNLINK_OUT)$(OUTDIR)$(PATH_SEP)$(DEBUG_DYNLIB) $(LDFLAGS_DEBUG_dynamic) $(DEBUG_OBJECTS_dynamic) $(LDLIBS_DEBUG_dynamic)
$(OUTDIR)$(PATH_SEP)$(DEBUG_LIB) : $(OUTDIR) $(DEBUG_OBJDIR_static) $(DEF_FILE) $(DEBUG_OBJECTS_static)
$(LINK) $(LINK_OUT)$(OUTDIR)$(PATH_SEP)$(DEBUG_LIB) $(LDLIBS_DEBUG_static) $(LDFLAGS_DEBUG_static) $(DEBUG_OBJECTS_static)
$(OUTDIR)$(PATH_SEP)$(DEBUGX_LIB) : $(OUTDIR) $(DEBUG_OBJDIR_staticx) $(DEF_FILE) $(DEBUG_OBJECTS_staticx)
$(LINK) $(LINK_OUT)$(OUTDIR)$(PATH_SEP)$(DEBUGX_LIB) $(LDLIBS_DEBUG_static) $(LDFLAGS_DEBUG_static) $(DEBUG_OBJECTS_staticx)
$(OUTDIR)$(PATH_SEP)$(STLDEBUG_DYNLIB) : $(OUTDIR) $(STLDEBUG_OBJDIR_dynamic) $(DEF_FILE) $(STLDEBUG_OBJECTS_dynamic)
$(DYN_LINK) $(DYNLINK_OUT)$(OUTDIR)$(PATH_SEP)$(STLDEBUG_DYNLIB) $(LDFLAGS_STLDEBUG_dynamic) $(STLDEBUG_OBJECTS_dynamic) $(LDLIBS_STLDEBUG_dynamic)
$(OUTDIR)$(PATH_SEP)$(STLDEBUG_LIB) : $(OUTDIR) $(STLDEBUG_OBJDIR_static) $(DEF_FILE) $(STLDEBUG_OBJECTS_static)
$(LINK) $(LINK_OUT)$(OUTDIR)$(PATH_SEP)$(STLDEBUG_LIB) $(LDFLAGS_STLDEBUG_static) $(STLDEBUG_OBJECTS_static) $(LDLIBS_STLDEBUG_static)
$(OUTDIR)$(PATH_SEP)$(STLDEBUGX_LIB) : $(OUTDIR) $(STLDEBUG_OBJDIR_staticx) $(DEF_FILE) $(STLDEBUG_OBJECTS_staticx)
$(LINK) $(LINK_OUT)$(OUTDIR)$(PATH_SEP)$(STLDEBUGX_LIB) $(LDFLAGS_STLDEBUG_static) $(STLDEBUG_OBJECTS_staticx) $(LDLIBS_STLDEBUG_static)
# locale_impl.cpp : codecvt.cpp collate.cpp ctype.cpp monetary.cpp num_get.cpp num_get_float.cpp num_put.cpp num_put_float.cpp numpunct.cpp time_facets.cpp messages.cpp
# locale_catalog.cpp : ctype_byname.cpp collate_byname.cpp codecvt_byname.cpp numpunct_byname.cpp monetary_byname.cpp messages_byname.cpp
#########################################

53
STLPORT/src/como.mak Normal file
View File

@@ -0,0 +1,53 @@
#
# Note : this makefile has been only tested in como + gcc setup
#
#
# compiler
#
CC = gcc
CXX = como
#
# Basename for libraries
#
LIB_BASENAME = libstlport_como
#
# guts for common stuff
#
#
LINK=ar cr
# 2.95 flag
DYN_LINK=-copt="-shared -all" -G -o
OBJEXT=o
DYNEXT=so
STEXT=a
RM=rm -rf
PATH_SEP=/
MKDIR=mkdir -p
COMP=COMO_$(ARCH)
INSTALL_STEP = install_unix
all: all_static symbolic_links
include common_macros.mak
WARNING_FLAGS= -DLIBCIO= --diag_suppress=68
CXXFLAGS_COMMON = -I. -I${STLPORT_DIR} ${WARNING_FLAGS}
CXXFLAGS_RELEASE_static = $(CXXFLAGS_COMMON) -O2
CXXFLAGS_RELEASE_dynamic = $(CXXFLAGS_COMMON) -O2 -fPIC
CXXFLAGS_DEBUG_static = $(CXXFLAGS_COMMON) -g -O
CXXFLAGS_DEBUG_dynamic = $(CXXFLAGS_COMMON) -g -O -fPIC
CXXFLAGS_STLDEBUG_static = $(CXXFLAGS_DEBUG_static) -D_STLP_DEBUG
CXXFLAGS_STLDEBUG_dynamic = $(CXXFLAGS_DEBUG_dynamic) -D_STLP_DEBUG
include common_percent_rules.mak
include common_rules.mak

290
STLPORT/src/complex.cpp Normal file
View File

@@ -0,0 +1,290 @@
/*
* Copyright (c) 1999
* Silicon Graphics Computer Systems, Inc.
*
* Copyright (c) 1999
* Boris Fomitchev
*
* This material is provided "as is", with absolutely no warranty expressed
* or implied. Any use is at your own risk.
*
* 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.
*
*/
# include "stlport_prefix.h"
// Complex division and square roots.
#include "complex_impl.h"
_STLP_BEGIN_NAMESPACE
// Absolute value
_STLP_TEMPLATE_NULL
_STLP_DECLSPEC float _STLP_CALL abs(const complex<float>& __z)
{
return _STLP_HYPOTF(__z._M_re, __z._M_im);
}
_STLP_TEMPLATE_NULL
_STLP_DECLSPEC double _STLP_CALL abs(const complex<double>& __z)
{
return _STLP_HYPOT(__z._M_re, __z._M_im);
}
#ifndef _STLP_NO_LONG_DOUBLE
_STLP_TEMPLATE_NULL
_STLP_DECLSPEC long double _STLP_CALL abs(const complex<long double>& __z)
{
return _STLP_HYPOTL(__z._M_re, __z._M_im);
}
#endif
// Phase
_STLP_TEMPLATE_NULL
_STLP_DECLSPEC float _STLP_CALL arg(const complex<float>& __z)
{
return _STLP_ATAN2F(__z._M_im, __z._M_re);
}
_STLP_TEMPLATE_NULL
_STLP_DECLSPEC double _STLP_CALL arg(const complex<double>& __z)
{
return _STLP_ATAN2(__z._M_im, __z._M_re);
}
#ifndef _STLP_NO_LONG_DOUBLE
_STLP_TEMPLATE_NULL
_STLP_DECLSPEC long double _STLP_CALL arg(const complex<long double>& __z)
{
return _STLP_ATAN2L(__z._M_im, __z._M_re);
}
#endif
// Construct a complex number from polar representation
_STLP_TEMPLATE_NULL
_STLP_DECLSPEC complex<float> _STLP_CALL polar(const float& __rho, const float& __phi)
{
return complex<float>(__rho * _STLP_COSF(__phi), __rho * _STLP_SINF(__phi));
}
_STLP_TEMPLATE_NULL
_STLP_DECLSPEC complex<double> _STLP_CALL polar(const double& __rho, const double& __phi)
{
return complex<double>(__rho * _STLP_COS(__phi), __rho * _STLP_SIN(__phi));
}
#ifndef _STLP_NO_LONG_DOUBLE
_STLP_TEMPLATE_NULL
_STLP_DECLSPEC complex<long double> _STLP_CALL polar(const long double& __rho, const long double& __phi)
{
return complex<long double>(__rho * _STLP_COSL(__phi), __rho * _STLP_SINL(__phi));
}
#endif
// Division
void _STLP_CALL
complex<float>::_div(const float& __z1_r, const float& __z1_i,
const float& __z2_r, const float& __z2_i,
float& __res_r, float& __res_i) {
float __ar = __z2_r >= 0 ? __z2_r : -__z2_r;
float __ai = __z2_i >= 0 ? __z2_i : -__z2_i;
if (__ar <= __ai) {
float __ratio = __z2_r / __z2_i;
float __denom = __z2_i * (1 + __ratio * __ratio);
__res_r = (__z1_r * __ratio + __z1_i) / __denom;
__res_i = (__z1_i * __ratio - __z1_r) / __denom;
}
else {
float __ratio = __z2_i / __z2_r;
float __denom = __z2_r * (1 + __ratio * __ratio);
__res_r = (__z1_r + __z1_i * __ratio) / __denom;
__res_i = (__z1_i - __z1_r * __ratio) / __denom;
}
}
void _STLP_CALL
complex<float>::_div(const float& __z1_r,
const float& __z2_r, const float& __z2_i,
float& __res_r, float& __res_i) {
float __ar = __z2_r >= 0 ? __z2_r : -__z2_r;
float __ai = __z2_i >= 0 ? __z2_i : -__z2_i;
if (__ar <= __ai) {
float __ratio = __z2_r / __z2_i;
float __denom = __z2_i * (1 + __ratio * __ratio);
__res_r = (__z1_r * __ratio) / __denom;
__res_i = - __z1_r / __denom;
}
else {
float __ratio = __z2_i / __z2_r;
float __denom = __z2_r * (1 + __ratio * __ratio);
__res_r = __z1_r / __denom;
__res_i = - (__z1_r * __ratio) / __denom;
}
}
void _STLP_CALL
complex<double>::_div(const double& __z1_r, const double& __z1_i,
const double& __z2_r, const double& __z2_i,
double& __res_r, double& __res_i) {
double __ar = __z2_r >= 0 ? __z2_r : -__z2_r;
double __ai = __z2_i >= 0 ? __z2_i : -__z2_i;
if (__ar <= __ai) {
double __ratio = __z2_r / __z2_i;
double __denom = __z2_i * (1 + __ratio * __ratio);
__res_r = (__z1_r * __ratio + __z1_i) / __denom;
__res_i = (__z1_i * __ratio - __z1_r) / __denom;
}
else {
double __ratio = __z2_i / __z2_r;
double __denom = __z2_r * (1 + __ratio * __ratio);
__res_r = (__z1_r + __z1_i * __ratio) / __denom;
__res_i = (__z1_i - __z1_r * __ratio) / __denom;
}
}
void _STLP_CALL
complex<double>::_div(const double& __z1_r,
const double& __z2_r, const double& __z2_i,
double& __res_r, double& __res_i) {
double __ar = __z2_r >= 0 ? __z2_r : -__z2_r;
double __ai = __z2_i >= 0 ? __z2_i : -__z2_i;
if (__ar <= __ai) {
double __ratio = __z2_r / __z2_i;
double __denom = __z2_i * (1 + __ratio * __ratio);
__res_r = (__z1_r * __ratio) / __denom;
__res_i = - __z1_r / __denom;
}
else {
double __ratio = __z2_i / __z2_r;
double __denom = __z2_r * (1 + __ratio * __ratio);
__res_r = __z1_r / __denom;
__res_i = - (__z1_r * __ratio) / __denom;
}
}
#ifndef _STLP_NO_LONG_DOUBLE
void _STLP_CALL
complex<long double>::_div(const long double& __z1_r, const long double& __z1_i,
const long double& __z2_r, const long double& __z2_i,
long double& __res_r, long double& __res_i) {
long double __ar = __z2_r >= 0 ? __z2_r : -__z2_r;
long double __ai = __z2_i >= 0 ? __z2_i : -__z2_i;
if (__ar <= __ai) {
long double __ratio = __z2_r / __z2_i;
long double __denom = __z2_i * (1 + __ratio * __ratio);
__res_r = (__z1_r * __ratio + __z1_i) / __denom;
__res_i = (__z1_i * __ratio - __z1_r) / __denom;
}
else {
long double __ratio = __z2_i / __z2_r;
long double __denom = __z2_r * (1 + __ratio * __ratio);
__res_r = (__z1_r + __z1_i * __ratio) / __denom;
__res_i = (__z1_i - __z1_r * __ratio) / __denom;
}
}
void _STLP_CALL
complex<long double>::_div(const long double& __z1_r,
const long double& __z2_r, const long double& __z2_i,
long double& __res_r, long double& __res_i) {
long double __ar = __z2_r >= 0 ? __z2_r : -__z2_r;
long double __ai = __z2_i >= 0 ? __z2_i : -__z2_i;
if (__ar <= __ai) {
long double __ratio = __z2_r / __z2_i;
long double __denom = __z2_i * (1 + __ratio * __ratio);
__res_r = (__z1_r * __ratio) / __denom;
__res_i = - __z1_r / __denom;
}
else {
long double __ratio = __z2_i / __z2_r;
long double __denom = __z2_r * (1 + __ratio * __ratio);
__res_r = __z1_r / __denom;
__res_i = - (__z1_r * __ratio) / __denom;
}
}
#endif
//----------------------------------------------------------------------
// Square root
complex<float> _STLP_CALL
sqrt(const complex<float>& z) {
float re = z._M_re;
float im = z._M_im;
float mag = _STLP_HYPOTF(re, im);
complex<float> result;
if (mag == 0.) {
result._M_re = result._M_im = 0.f;
} else if (re > 0.f) {
result._M_re = _STLP_SQRTF(0.5f * (mag + re));
result._M_im = im/result._M_re/2.f;
} else {
result._M_im = _STLP_SQRTF(0.5f * (mag - re));
if (im < 0.f)
result._M_im = - result._M_im;
result._M_re = im/result._M_im/2.f;
}
return result;
}
complex<double> _STLP_CALL
sqrt(const complex<double>& z) {
double re = z._M_re;
double im = z._M_im;
double mag = _STLP_HYPOT(re, im);
complex<double> result;
if (mag == 0.) {
result._M_re = result._M_im = 0.;
} else if (re > 0.) {
result._M_re = _STLP_SQRT(0.5 * (mag + re));
result._M_im = im/result._M_re/2;
} else {
result._M_im = _STLP_SQRT(0.5 * (mag - re));
if (im < 0.)
result._M_im = - result._M_im;
result._M_re = im/result._M_im/2;
}
return result;
}
#ifndef _STLP_NO_LONG_DOUBLE
complex<long double> _STLP_CALL
sqrt(const complex<long double>& z) {
long double re = z._M_re;
long double im = z._M_im;
long double mag = _STLP_HYPOTL(re, im);
complex<long double> result;
if (mag == 0.L) {
result._M_re = result._M_im = 0.L;
} else if (re > 0.L) {
result._M_re = _STLP_SQRTL(0.5L * (mag + re));
result._M_im = (im/result._M_re) * .5L;
} else {
result._M_im = _STLP_SQRTL(0.5L * (mag - re));
if (im < 0.L)
result._M_im = - result._M_im;
result._M_re = (im/result._M_im) * .5L;
}
return result;
}
#endif
_STLP_END_NAMESPACE

239
STLPORT/src/complex_exp.cpp Normal file
View File

@@ -0,0 +1,239 @@
/*
* Copyright (c) 1999
* Silicon Graphics Computer Systems, Inc.
*
* Copyright (c) 1999
* Boris Fomitchev
*
* This material is provided "as is", with absolutely no warranty expressed
* or implied. Any use is at your own risk.
*
* 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.
*
*/
# include "stlport_prefix.h"
// exp, log, pow for complex<float>, complex<double>, and complex<long double>
#include <numeric>
#include "complex_impl.h"
_STLP_BEGIN_NAMESPACE
//----------------------------------------------------------------------
// exp
_STLP_DECLSPEC complex<float> _STLP_CALL
exp(const complex<float>& z)
{
float expx = _STLP_EXPF(z._M_re);
return complex<float>(expx * _STLP_COSF(z._M_im),
expx * _STLP_SINF(z._M_im));
}
_STLP_DECLSPEC complex<double> _STLP_CALL exp(const complex<double>& z)
{
double expx = _STLP_EXP(z._M_re);
return complex<double>(expx * _STLP_COS(z._M_im),
expx * _STLP_SIN(z._M_im));
}
# ifndef _STLP_NO_LONG_DOUBLE
_STLP_DECLSPEC complex<long double> _STLP_CALL exp(const complex<long double>& z)
{
long double expx = _STLP_EXPL(z._M_re);
return complex<long double>(expx * _STLP_COSL(z._M_im),
expx * _STLP_SINL(z._M_im));
}
# endif
//----------------------------------------------------------------------
// log10
_STLP_DECLSPEC complex<float> _STLP_CALL log10(const complex<float>& z)
{
complex<float> r;
static float ln10_inv = 1.f / _STLP_LOGF(10.f);
r._M_im = _STLP_ATAN2F(z._M_im, z._M_re) * ln10_inv;
r._M_re = _STLP_LOG10F(_STLP_HYPOTF(z._M_re, z._M_im));
return r;
}
_STLP_DECLSPEC complex<double> _STLP_CALL log10(const complex<double>& z)
{
complex<double> r;
static double ln10_inv = 1. / _STLP_LOG(10.);
r._M_im = _STLP_ATAN2(z._M_im, z._M_re) * ln10_inv;
r._M_re = _STLP_LOG10(_STLP_HYPOT(z._M_re, z._M_im));
return r;
}
#ifndef _STLP_NO_LONG_DOUBLE
_STLP_DECLSPEC complex<long double> _STLP_CALL log10(const complex<long double>& z)
{
complex<long double> result;
static long double ln10_inv = 1.l / _STLP_LOGL(10.l);
result._M_im = _STLP_ATAN2L(z._M_im, z._M_re) * ln10_inv;
result._M_re = _STLP_LOG10L(_STLP_HYPOTL(z._M_re, z._M_im));
return result;
}
# endif
//----------------------------------------------------------------------
// log
_STLP_DECLSPEC complex<float> _STLP_CALL log(const complex<float>& z)
{
complex<float> r;
r._M_im = _STLP_ATAN2F(z._M_im, z._M_re);
r._M_re = _STLP_LOGF(_STLP_HYPOTF(z._M_re, z._M_im));
return r;
}
_STLP_DECLSPEC complex<double> _STLP_CALL log(const complex<double>& z)
{
complex<double> r;
r._M_im = _STLP_ATAN2(z._M_im, z._M_re);
r._M_re = _STLP_LOG(_STLP_HYPOT(z._M_re, z._M_im));
return r;
}
#ifndef _STLP_NO_LONG_DOUBLE
_STLP_DECLSPEC complex<long double> _STLP_CALL log(const complex<long double>& z)
{
complex<long double> result;
result._M_im = _STLP_ATAN2L(z._M_im, z._M_re);
result._M_re = _STLP_LOGL(_STLP_HYPOTL(z._M_re, z._M_im));
return result;
}
# endif
//----------------------------------------------------------------------
// pow
_STLP_DECLSPEC complex<float> _STLP_CALL pow(const float& a, const complex<float>& b) {
float logr = _STLP_LOGF(a);
float x = _STLP_EXPF(logr*b._M_re);
float y = logr*b._M_im;
return complex<float>(x * _STLP_COSF(y), x * _STLP_SINF(y));
}
_STLP_DECLSPEC complex<float> _STLP_CALL pow(const complex<float>& z_in, int n) {
complex<float> z = z_in;
z = __power(z, (n < 0 ? -n : n), multiplies< complex<float> >());
if (n < 0)
return 1.f / z;
else
return z;
}
_STLP_DECLSPEC complex<float> _STLP_CALL pow(const complex<float>& a, const float& b) {
float logr = _STLP_LOGF(_STLP_HYPOTF(a._M_re,a._M_im));
float logi = _STLP_ATAN2F(a._M_im, a._M_re);
float x = _STLP_EXPF(logr * b);
float y = logi * b;
return complex<float>(x * _STLP_COSF(y), x * _STLP_SINF(y));
}
_STLP_DECLSPEC complex<float> _STLP_CALL pow(const complex<float>& a, const complex<float>& b) {
float logr = _STLP_LOGF(_STLP_HYPOTF(a._M_re,a._M_im));
float logi = _STLP_ATAN2F(a._M_im, a._M_re);
float x = _STLP_EXPF(logr*b._M_re - logi*b._M_im);
float y = logr*b._M_im + logi*b._M_re;
return complex<float>(x * _STLP_COSF(y), x * _STLP_SINF(y));
}
_STLP_DECLSPEC complex<double> _STLP_CALL pow(const double& a, const complex<double>& b) {
double logr = _STLP_LOG(a);
double x = _STLP_EXP(logr*b._M_re);
double y = logr*b._M_im;
return complex<double>(x * _STLP_COS(y), x * _STLP_SIN(y));
}
_STLP_DECLSPEC complex<double> _STLP_CALL pow(const complex<double>& z_in, int n) {
complex<double> z = z_in;
z = __power(z, (n < 0 ? -n : n), multiplies< complex<double> >());
if (n < 0)
#if !defined(__SC__) //*TY 04/15/2000 -
return 1. / z;
#else //*TY 04/15/2000 - added workaround for SCpp compiler
return double(1.0) / z; //*TY 04/15/2000 - it incorrectly assign long double attribute to floating point literals
#endif //*TY 04/15/2000 -
else
return z;
}
_STLP_DECLSPEC complex<double> _STLP_CALL pow(const complex<double>& a, const double& b) {
double logr = _STLP_LOG(_STLP_HYPOT(a._M_re,a._M_im));
double logi = _STLP_ATAN2(a._M_im, a._M_re);
double x = _STLP_EXP(logr * b);
double y = logi * b;
return complex<double>(x * _STLP_COS(y), x * _STLP_SIN(y));
}
_STLP_DECLSPEC complex<double> _STLP_CALL pow(const complex<double>& a, const complex<double>& b) {
double logr = _STLP_LOG(_STLP_HYPOT(a._M_re,a._M_im));
double logi = _STLP_ATAN2(a._M_im, a._M_re);
double x = _STLP_EXP(logr*b._M_re - logi*b._M_im);
double y = logr*b._M_im + logi*b._M_re;
return complex<double>(x * _STLP_COS(y), x * _STLP_SIN(y));
}
_STLP_DECLSPEC complex<long double> _STLP_CALL pow(const long double& a,
const complex<long double>& b) {
long double logr = _STLP_LOGL(a);
long double x = _STLP_EXPL(logr*b._M_re);
long double y = logr*b._M_im;
return complex<long double>(x * _STLP_COSL(y), x * _STLP_SINL(y));
}
_STLP_DECLSPEC complex<long double> _STLP_CALL pow(const complex<long double>& z_in, int n) {
complex<long double> z = z_in;
z = __power(z, (n < 0 ? -n : n), multiplies< complex<long double> >());
if (n < 0)
return 1.l / z;
else
return z;
}
_STLP_DECLSPEC complex<long double> _STLP_CALL pow(const complex<long double>& a,
const long double& b) {
long double logr = _STLP_LOGL(_STLP_HYPOTL(a._M_re,a._M_im));
long double logi = _STLP_ATAN2L(a._M_im, a._M_re);
long double x = _STLP_EXPL(logr * b);
long double y = logi * b;
return complex<long double>(x * _STLP_COSL(y), x * _STLP_SINL(y));
}
_STLP_DECLSPEC complex<long double> _STLP_CALL pow(const complex<long double>& a,
const complex<long double>& b) {
long double logr = _STLP_LOGL(_STLP_HYPOTL(a._M_re,a._M_im));
long double logi = _STLP_ATAN2L(a._M_im, a._M_re);
long double x = _STLP_EXPL(logr*b._M_re - logi*b._M_im);
long double y = logr*b._M_im + logi*b._M_re;
return complex<long double>(x * _STLP_COSL(y), x * _STLP_SINL(y));
}
_STLP_END_NAMESPACE

View File

@@ -0,0 +1,94 @@
/*
* Copyright (c) 1999
* Silicon Graphics Computer Systems, Inc.
*
* Copyright (c) 1999
* Boris Fomitchev
*
* This material is provided "as is", with absolutely no warranty expressed
* or implied. Any use is at your own risk.
*
* 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.
*
*/
# ifndef COMPLEX_IMPL_H
# define COMPLEX_IMPL_H
#include <complex>
#include <cmath>
#include <math.h>
#include <stl/_cmath.h>
# if (defined (__sgi) && !defined(__GNUC__)) /* || defined (__DECCXX) */
# define _STLP_ABSF _STLP_VENDOR_CSTD::fabsf
# define _STLP_ATAN2F _STLP_VENDOR_CSTD::atan2f
# define _STLP_SINF _STLP_VENDOR_CSTD::sinf
# define _STLP_COSF _STLP_VENDOR_CSTD::cosf
# define _STLP_SQRTF _STLP_VENDOR_CSTD::sqrtf
# define _STLP_EXPF _STLP_VENDOR_CSTD::expf
# define _STLP_LOG10F _STLP_VENDOR_CSTD::log10f
# define _STLP_LOGF _STLP_VENDOR_CSTD::logf
# define _STLP_SINHF _STLP_VENDOR_CSTD::sinhf
# define _STLP_COSHF _STLP_VENDOR_CSTD::coshf
# define _STLP_HYPOTF _STLP_VENDOR_CSTD::hypotf
# define _STLP_ABSL _STLP_VENDOR_CSTD::fabsl
# define _STLP_ATAN2L _STLP_VENDOR_CSTD::atan2l
# define _STLP_SINL _STLP_VENDOR_CSTD::sinl
# define _STLP_COSL _STLP_VENDOR_CSTD::cosl
# define _STLP_SQRTL _STLP_VENDOR_CSTD::sqrtl
# define _STLP_EXPL _STLP_VENDOR_CSTD::expl
# define _STLP_LOG10L _STLP_VENDOR_CSTD::log10l
# define _STLP_LOGL _STLP_VENDOR_CSTD::logl
# define _STLP_SINHL _STLP_VENDOR_CSTD::sinhl
# define _STLP_COSHL _STLP_VENDOR_CSTD::coshl
// # define _STLP_HYPOT ::hypot
# define _STLP_HYPOTL _STLP_VENDOR_CSTD::hypotl
#else
# define _STLP_ABSF (float)_STLP_DO_ABS(double)
# define _STLP_ABSL (long double)_STLP_DO_ABS(double)
# define _STLP_ATAN2F (float)_STLP_DO_ATAN2(double)
# define _STLP_ATAN2L (long double)_STLP_DO_ATAN2(double)
# define _STLP_SINF (float)_STLP_DO_SIN(double)
# define _STLP_SINL (long double)_STLP_DO_SIN(double)
# define _STLP_COSF (float)_STLP_DO_COS(double)
# define _STLP_COSL (long double)_STLP_DO_COS(double)
# define _STLP_SQRTF (float)_STLP_DO_SQRT(double)
# define _STLP_SQRTL (long double)_STLP_DO_SQRT(double)
# define _STLP_EXPF (float)_STLP_DO_EXP(double)
# define _STLP_EXPL (long double)_STLP_DO_EXP(double)
# define _STLP_LOG10F (float)_STLP_DO_LOG10(double)
# define _STLP_LOG10L (long double)_STLP_DO_LOG10(double)
# define _STLP_LOGF (float)_STLP_DO_LOG(double)
# define _STLP_LOGL (long double)_STLP_DO_LOG(double)
# define _STLP_SINHF (float)_STLP_DO_SINH(double)
# define _STLP_SINHL (long double)_STLP_DO_SINH(double)
# define _STLP_COSHF (float)_STLP_DO_COSH(double)
# define _STLP_COSHL (long double)_STLP_DO_COSH(double)
# define _STLP_HYPOTF (float)_STLP_DO_HYPOT(double)
# define _STLP_HYPOTL (long double)_STLP_DO_HYPOT(double)
#endif
# define _STLP_ABS (double)_STLP_DO_ABS(double)
# define _STLP_ATAN2 (double)_STLP_DO_ATAN2(double)
# define _STLP_SIN (double)_STLP_DO_SIN(double)
# define _STLP_COS (double)_STLP_DO_COS(double)
# define _STLP_SQRT (double)_STLP_DO_SQRT(double)
# define _STLP_EXP (double)_STLP_DO_EXP(double)
# define _STLP_LOG10 (double)_STLP_DO_LOG10(double)
# define _STLP_LOG (double)_STLP_DO_LOG(double)
# define _STLP_SINH (double)_STLP_DO_SINH(double)
# define _STLP_COSH (double)_STLP_DO_COSH(double)
# define _STLP_HYPOT _STLP_DO_HYPOT(double)
#endif

144
STLPORT/src/complex_io.cpp Normal file
View File

@@ -0,0 +1,144 @@
/*
* Copyright (c) 1999
* Silicon Graphics Computer Systems, Inc.
*
* Copyright (c) 1999
* Boris Fomitchev
*
* This material is provided "as is", with absolutely no warranty expressed
* or implied. Any use is at your own risk.
*
* 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.
*
*/
# include "stlport_prefix.h"
// #include <iterator>
#include "complex_impl.h"
#include <istream>
_STLP_BEGIN_NAMESPACE
# if ! (defined (_STLP_MSVC) && _STLP_MSVC < 1200)
// Specializations for narrow characters; lets us avoid the nuisance of
// widening.
_STLP_OPERATOR_SPEC
basic_ostream<char, char_traits<char> >& _STLP_CALL
operator<< (basic_ostream<char, char_traits<char> >& __os, const complex<float>& __z)
{
return __os << '(' << (double)__z.real() << ',' << (double)__z.imag() << ')';
}
_STLP_OPERATOR_SPEC
basic_ostream<char, char_traits<char> >& _STLP_CALL
operator<< (basic_ostream<char, char_traits<char> >& __os, const complex<double>& __z)
{
return __os << '(' << __z.real() << ',' << __z.imag() << ')';
}
#ifndef _STLP_NO_LONG_DOUBLE
_STLP_OPERATOR_SPEC
basic_ostream<char, char_traits<char> >& _STLP_CALL
operator<< (basic_ostream<char, char_traits<char> >& __os, const complex<long double>& __z)
{
return __os << '(' << __z.real() << ',' << __z.imag() << ')';
}
#endif
// Specialization for narrow characters; lets us avoid widen.
_STLP_OPERATOR_SPEC
basic_istream<char, char_traits<char> >& _STLP_CALL
operator>>(basic_istream<char, char_traits<char> >& __is, complex<float>& __z)
{
float __re = 0;
float __im = 0;
char __c;
__is >> __c;
if (__c == '(') {
__is >> __re >> __c;
if (__c == ',')
__is >> __im >> __c;
if (__c != ')')
__is.setstate(ios_base::failbit);
}
else {
__is.putback(__c);
__is >> __re;
}
if (__is)
__z = complex<float>(__re, __im);
return __is;
}
_STLP_OPERATOR_SPEC
basic_istream<char, char_traits<char> >& _STLP_CALL
operator>>(basic_istream<char, char_traits<char> >& __is, complex<double>& __z)
{
double __re = 0;
double __im = 0;
char __c;
__is >> __c;
if (__c == '(') {
__is >> __re >> __c;
if (__c == ',')
__is >> __im >> __c;
if (__c != ')')
__is.setstate(ios_base::failbit);
}
else {
__is.putback(__c);
__is >> __re;
}
if (__is)
__z = complex<double>(__re, __im);
return __is;
}
# ifndef _STLP_NO_LONG_DOUBLE
_STLP_OPERATOR_SPEC
basic_istream<char, char_traits<char> >& _STLP_CALL
operator>>(basic_istream<char, char_traits<char> >& __is, complex<long double>& __z) {
long double __re = 0;
long double __im = 0;
char __c;
__is >> __c;
if (__c == '(') {
__is >> __re >> __c;
if (__c == ',')
__is >> __im >> __c;
if (__c != ')')
__is.setstate(ios_base::failbit);
}
else {
__is.putback(__c);
__is >> __re;
}
if (__is)
__z = complex<long double>(__re, __im);
return __is;
}
# endif
# endif /* MSVC */
_STLP_END_NAMESPACE
// Local Variables:
// mode:C++
// End:

View File

@@ -0,0 +1,57 @@
/*
* Copyright (c) 1999
* Silicon Graphics Computer Systems, Inc.
*
* Copyright (c) 1999
* Boris Fomitchev
*
* This material is provided "as is", with absolutely no warranty expressed
* or implied. Any use is at your own risk.
*
* 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.
*
*/
# include "stlport_prefix.h"
// #include <iterator>
#include <complex>
#include <istream>
_STLP_BEGIN_NAMESPACE
// Force instantiation of complex I/O functions
#if !(defined (_STLP_NO_FORCE_INSTANTIATE) || defined (_STLP_NO_WCHAR_T))
_STLP_OPERATOR_SPEC basic_istream<wchar_t, char_traits<wchar_t> >& _STLP_CALL
operator>>(basic_istream<wchar_t, char_traits<wchar_t> >&, complex<float>&);
_STLP_OPERATOR_SPEC basic_istream<wchar_t, char_traits<wchar_t> >& _STLP_CALL
operator>>(basic_istream<wchar_t, char_traits<wchar_t> >&, complex<double>&);
#ifndef _STLP_NO_LONG_DOUBLE
_STLP_OPERATOR_SPEC basic_istream<wchar_t, char_traits<wchar_t> >& _STLP_CALL
operator>>(basic_istream<wchar_t, char_traits<wchar_t> >&, complex<long double>&);
_STLP_OPERATOR_SPEC basic_ostream<wchar_t, char_traits<wchar_t> >& _STLP_CALL
operator<<(basic_ostream<wchar_t, char_traits<wchar_t> >&, const complex<long double>&);
#endif
_STLP_OPERATOR_SPEC basic_ostream<wchar_t, char_traits<wchar_t> >& _STLP_CALL
operator<<(basic_ostream<wchar_t, char_traits<wchar_t> >&, const complex<float>&);
_STLP_OPERATOR_SPEC basic_ostream<wchar_t, char_traits<wchar_t> >& _STLP_CALL
operator<<(basic_ostream<wchar_t, char_traits<wchar_t> >&, const complex<double>&);
# endif /* _STLP_NO_WCHAR_T */
_STLP_END_NAMESPACE
// Local Variables:
// mode:C++
// End:

View File

@@ -0,0 +1,218 @@
/*
* Copyright (c) 1999
* Silicon Graphics Computer Systems, Inc.
*
* Copyright (c) 1999
* Boris Fomitchev
*
* This material is provided "as is", with absolutely no warranty expressed
* or implied. Any use is at your own risk.
*
* 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.
*
*/
# include "stlport_prefix.h"
// Trigonometric and hyperbolic functions for complex<float>,
// complex<double>, and complex<long double>
#include "complex_impl.h"
#include <cfloat>
#include <cmath>
_STLP_BEGIN_NAMESPACE
//----------------------------------------------------------------------
// helpers
#ifdef __sgi
static const union { unsigned int i; float f; } float_ulimit = { 0x42b2d4fc };
static const float float_limit = float_ulimit.f;
static union {
struct { unsigned int h; unsigned int l; } w;
double d;
} double_ulimit = { 0x408633ce, 0x8fb9f87d };
static const double double_limit = double_ulimit.d;
static union {
struct { unsigned int h[2]; unsigned int l[2]; } w;
long double ld;
} ldouble_ulimit = {0x408633ce, 0x8fb9f87e, 0xbd23b659, 0x4e9bd8b1};
# ifndef _STLP_NO_LONG_DOUBLE
static const long double ldouble_limit = ldouble_ulimit.ld;
# endif
#else
static const float float_limit = _STLP_LOGF(FLT_MAX);
static const double double_limit = _STLP_DO_LOG(double)(DBL_MAX);
# ifndef _STLP_NO_LONG_DOUBLE
static const long double ldouble_limit = _STLP_LOGL(LDBL_MAX);
# endif
#endif
//----------------------------------------------------------------------
// sin
_STLP_DECLSPEC complex<float> _STLP_CALL sin(const complex<float>& z) {
return complex<float>(_STLP_SINF(z._M_re) * _STLP_COSHF(z._M_im),
_STLP_COSF(z._M_re) * _STLP_SINHF(z._M_im));
}
_STLP_DECLSPEC complex<double> _STLP_CALL sin(const complex<double>& z) {
return complex<double>(_STLP_SIN(z._M_re) * _STLP_COSH(z._M_im),
_STLP_COS(z._M_re) * _STLP_SINH(z._M_im));
}
#ifndef _STLP_NO_LONG_DOUBLE
_STLP_DECLSPEC complex<long double> _STLP_CALL sin(const complex<long double>& z) {
return complex<long double>(_STLP_SINL(z._M_re) * _STLP_COSHL(z._M_im),
_STLP_COSL(z._M_re) * _STLP_SINHL(z._M_im));
}
#endif
//----------------------------------------------------------------------
// cos
_STLP_DECLSPEC complex<float> _STLP_CALL cos(const complex<float>& z) {
return complex<float>(_STLP_COSF(z._M_re) * _STLP_COSHF(z._M_im),
-_STLP_SINF(z._M_re) * _STLP_SINHF(z._M_im));
}
_STLP_DECLSPEC complex<double> _STLP_CALL cos(const complex<double>& z) {
return complex<double>(_STLP_COS(z._M_re) * _STLP_COSH(z._M_im),
-_STLP_SIN(z._M_re) * _STLP_SINH(z._M_im));
}
#ifndef _STLP_NO_LONG_DOUBLE
_STLP_DECLSPEC complex<long double> _STLP_CALL cos(const complex<long double>& z) {
return complex<long double>(_STLP_COSL(z._M_re) * _STLP_COSHL(z._M_im),
-_STLP_SINL(z._M_re) * _STLP_SINHL(z._M_im));
}
# endif
//----------------------------------------------------------------------
// tan
_STLP_DECLSPEC complex<float> _STLP_CALL tan(const complex<float>& z) {
float re2 = 2.f * z._M_re;
float im2 = 2.f * z._M_im;
if (_STLP_ABSF(im2) > float_limit)
return complex<float>(0.f, (im2 > 0 ? 1.f : -1.f));
else {
float den = _STLP_COSF(re2) + _STLP_COSHF(im2);
return complex<float>(_STLP_SINF(re2) / den, _STLP_SINHF(im2) / den);
}
}
_STLP_DECLSPEC complex<double> _STLP_CALL tan(const complex<double>& z) {
double re2 = 2. * z._M_re;
double im2 = 2. * z._M_im;
if (fabs(float(im2)) > double_limit)
return complex<double>(0., (im2 > 0 ? 1. : -1.));
else {
double den = _STLP_COS(re2) + _STLP_COSH(im2);
return complex<double>(_STLP_SIN(re2) / den, _STLP_SINH(im2) / den);
}
}
#ifndef _STLP_NO_LONG_DOUBLE
_STLP_DECLSPEC complex<long double> _STLP_CALL tan(const complex<long double>& z) {
long double re2 = 2.l * z._M_re;
long double im2 = 2.l * z._M_im;
if (_STLP_ABSL(im2) > ldouble_limit)
return complex<long double>(0.l, (im2 > 0 ? 1.l : -1.l));
else {
long double den = _STLP_COSL(re2) + _STLP_COSHL(im2);
return complex<long double>(_STLP_SINL(re2) / den, _STLP_SINHL(im2) / den);
}
}
# endif
//----------------------------------------------------------------------
// sinh
_STLP_DECLSPEC complex<float> _STLP_CALL sinh(const complex<float>& z) {
return complex<float>(_STLP_SINHF(z._M_re) * _STLP_COSF(z._M_im),
_STLP_COSHF(z._M_re) * _STLP_SINF(z._M_im));
}
_STLP_DECLSPEC complex<double> _STLP_CALL sinh(const complex<double>& z) {
return complex<double>(_STLP_SINH(z._M_re) * _STLP_COS(z._M_im),
_STLP_COSH(z._M_re) * _STLP_SIN(z._M_im));
}
#ifndef _STLP_NO_LONG_DOUBLE
_STLP_DECLSPEC complex<long double> _STLP_CALL sinh(const complex<long double>& z) {
return complex<long double>(_STLP_SINHL(z._M_re) * _STLP_COSL(z._M_im),
_STLP_COSHL(z._M_re) * _STLP_SINL(z._M_im));
}
#endif
//----------------------------------------------------------------------
// cosh
_STLP_DECLSPEC complex<float> _STLP_CALL cosh(const complex<float>& z) {
return complex<float>(_STLP_COSHF(z._M_re) * _STLP_COSF(z._M_im),
_STLP_SINHF(z._M_re) * _STLP_SINF(z._M_im));
}
_STLP_DECLSPEC complex<double> _STLP_CALL cosh(const complex<double>& z) {
return complex<double>(_STLP_COSH(z._M_re) * _STLP_COS(z._M_im),
_STLP_SINH(z._M_re) * _STLP_SIN(z._M_im));
}
#ifndef _STLP_NO_LONG_DOUBLE
_STLP_DECLSPEC complex<long double> _STLP_CALL cosh(const complex<long double>& z) {
return complex<long double>(_STLP_COSHL(z._M_re) * _STLP_COSL(z._M_im),
_STLP_SINHL(z._M_re) * _STLP_SINL(z._M_im));
}
#endif
//----------------------------------------------------------------------
// tanh
_STLP_DECLSPEC complex<float> _STLP_CALL tanh(const complex<float>& z) {
float re2 = 2.f * z._M_re;
float im2 = 2.f * z._M_im;
if (_STLP_ABSF(re2) > float_limit)
return complex<float>((re2 > 0 ? 1.f : -1.f), 0.f);
else {
float den = _STLP_COSHF(re2) + _STLP_COSF(im2);
return complex<float>(_STLP_SINHF(re2) / den, _STLP_SINF(im2) / den);
}
}
_STLP_DECLSPEC complex<double> _STLP_CALL tanh(const complex<double>& z) {
double re2 = 2. * z._M_re;
double im2 = 2. * z._M_im;
if (fabs(float(re2)) > double_limit)
return complex<double>((re2 > 0 ? 1. : -1.), 0.);
else {
double den = _STLP_COSH(re2) + _STLP_COS(im2);
return complex<double>(_STLP_SINH(re2) / den, _STLP_SIN(im2) / den);
}
}
#ifndef _STLP_NO_LONG_DOUBLE
_STLP_DECLSPEC complex<long double> _STLP_CALL tanh(const complex<long double>& z) {
long double re2 = 2.l * z._M_re;
long double im2 = 2.l * z._M_im;
if (_STLP_ABSL(re2) > ldouble_limit)
return complex<long double>((re2 > 0 ? 1.l : -1.l), 0.l);
else {
long double den = _STLP_COSHL(re2) + _STLP_COSL(im2);
return complex<long double>(_STLP_SINHL(re2) / den, _STLP_SINL(im2) / den);
}
}
#endif
_STLP_END_NAMESPACE

155
STLPORT/src/cray.mak Normal file
View File

@@ -0,0 +1,155 @@
#
# Note : This makefile is for Cray C++ 3.4 and 3.5
#
# The GNU version of make must be used to execute the
# makefile. The UNICOS version of make does not support
# the "%.suffix1: %.suffix2" feature.
#
# GNU version of make is available from the Cray Open
# Source release, or can be downloaded from various of
# open source sites.
#
# compiler
#
CC = cc
CXX = CC
#
# Basename for libraries
#
LIB_BASENAME = libstlport
#
# guts for common stuff
#
#
LINK=ar cr
OBJEXT=o
STEXT=a
RM=rm -rf
PATH_SEP=/
MKDIR=mkdir -p
COMP=CRAY$(ARCH)
all: all_static all_staticx
include common_macros.mak
CXXFLAGS_COMMON = -I${STLPORT_DIR}
CXXFLAGS_RELEASE_static = $(CXXFLAGS_COMMON) -D_STLP_HAS_NO_EXCEPTIONS
CXXFLAGS_RELEASE_staticx = $(CXXFLAGS_COMMON) -hexceptions
CXXFLAGS_DEBUG_static = $(CXXFLAGS_COMMON) -g
CXXFLAGS_STLDEBUG_static = $(CXXFLAGS_DEBUG_static) -D_STLP_DEBUG -D_STLP_HAS_NO_EXCEPTIONS
CXXFLAGS_STLDEBUG_staticx = $(CXXFLAGS_DEBUG_static) -D_STLP_DEBUG -hexceptions
include common_percent_rules.mak
# common_percent_rules.mak does not contain makerules for staticx source
$(RELEASE_OBJDIR_staticx)/%.o: %.cpp
$(CXX) $(CXXFLAGS_RELEASE_staticx) $< -c -o $@
$(RELEASE_OBJDIR_staticx)/%.o: %.c
$(CC) $(CXXFLAGS_RELEASE_staticx) $< -c -o $@
$(RELEASE_OBJDIR_staticx)/%.i : %.cpp
$(CXX) $(CXXFLAGS_RELEASE_staticx) $< -E $@
$(STLDEBUG_OBJDIR_staticx)/%.o : %.cpp
$(CXX) $(CXXFLAGS_STLDEBUG_staticx) $< -c -o $@
$(STLDEBUG_OBJDIR_staticx)/%.o : %.c
$(CC) $(CXXFLAGS_STLDEBUG_staticx) $< -c -o $@
$(STLDEBUG_OBJDIR_staticx)/%.i : %.cpp
$(CXX) $(CXXFLAGS_STLDEBUG_staticx) $< -E $@
#include common_rules.mak
#
# Target directories
#
#
$(OUTDIR) :
$(MKDIR) $(OUTDIR)
$(RELEASE_OBJDIR_static) :
$(MKDIR) $(RELEASE_OBJDIR_static)
$(DEBUG_OBJDIR_static) :
$(MKDIR) $(DEBUG_OBJDIR_static)
$(STLDEBUG_OBJDIR_static) :
$(MKDIR) $(STLDEBUG_OBJDIR_static)
$(RELEASE_OBJDIR_staticx) :
$(MKDIR) $(RELEASE_OBJDIR_staticx)
$(DEBUG_OBJDIR_staticx) :
$(MKDIR) $(DEBUG_OBJDIR_staticx)
$(STLDEBUG_OBJDIR_staticx) :
$(MKDIR) $(STLDEBUG_OBJDIR_staticx)
#create a compiler platform directory
platform: $(PREPARE_STEP)
-@$(MKDIR) $(OUTDIR)
-@$(MKDIR) $(OBJDIR_COMMON)
-@$(MKDIR) $(OBJDIR)
clean_all_obj:
-$(RM) $(OUTDIR)$(PATH_SEP)obj
###### Targets ##################
all_static : platform $(ALL_STATIC_LIBS)
all_staticx : platform $(ALL_STATICX_LIBS)
release_static : platform $(OUTDIR)$(PATH_SEP)$(RELEASE_LIB)
debug_static : platform $(OUTDIR)$(PATH_SEP)$(DEBUG_LIB)
stldebug_static : platform $(OUTDIR)$(PATH_SEP)$(STLDEBUG_LIB)
release_staticx : platform $(OUTDIR)$(PATH_SEP)$(RELEASEX_LIB)
debug_staticx : platform $(OUTDIR)$(PATH_SEP)$(DEBUGX_LIB)
stldebug_staticx : platform $(OUTDIR)$(PATH_SEP)$(STLDEBUGX_LIB)
install : all $(INSTALL_STEP)
clean : $(CLEAN_SPECIFIC)
-$(RM) $(RELEASE_OBJDIR_static) $(DEBUG_OBJDIR_static) $(STLDEBUG_OBJDIR_static) \
$(RELEASE_OBJDIR_staticx) $(DEBUG_OBJDIR_staticx) $(STLDEBUG_OBJDIR_staticx)
clobber : clean clean_all_obj
-$(RM) $(OUTDIR)$(PATH_SEP)$(DEBUG_NAME).* \
$(OUTDIR)$(PATH_SEP)$(RELEASE_NAME).* $(OUTDIR)$(PATH_SEP)$(STLDEBUG_NAME).*
# Need to link with a dummy main process to fully instantiate object files.
$(OUTDIR)$(PATH_SEP)$(RELEASE_LIB) : $(OUTDIR) $(RELEASE_OBJDIR_static) $(DEF_FILE) $(RELEASE_OBJECTS_static)
echo 'main() { }' >dummy_main.C
$(CXX) -o junk dummy_main.C $(RELEASE_OBJECTS_static) -lpthread
rm dummy_main.C
$(LINK) $(LINK_OUT)$(OUTDIR)$(PATH_SEP)$(RELEASE_LIB) $(LDFLAGS_RELEASE_static) $(RELEASE_OBJECTS_static) $(LDLIBS_RELEASE_static)
$(OUTDIR)$(PATH_SEP)$(RELEASEX_LIB) : $(OUTDIR) $(RELEASE_OBJDIR_staticx) $(DEF_FILE) $(RELEASE_OBJECTS_staticx)
echo 'main() { }' >dummy_main.C
$(CXX) -o junk dummy_main.C $(RELEASE_OBJECTS_staticx) -lpthread
rm dummy_main.C
$(LINK) $(LINK_OUT)$(OUTDIR)$(PATH_SEP)$(RELEASEX_LIB) $(LDFLAGS_RELEASE_static) $(RELEASE_OBJECTS_staticx) $(LDLIBS_RELEASE_static)
$(OUTDIR)$(PATH_SEP)$(STLDEBUG_LIB) : $(OUTDIR) $(STLDEBUG_OBJDIR_static) $(DEF_FILE) $(STLDEBUG_OBJECTS_static)
echo 'main() { }' >dummy_main.C
$(CXX) -o junk dummy_main.C $(STLDEBUG_OBJECTS_static) -lpthread
rm dummy_main.C
$(LINK) $(LINK_OUT)$(OUTDIR)$(PATH_SEP)$(STLDEBUG_LIB) $(LDFLAGS_STLDEBUG_static) $(STLDEBUG_OBJECTS_static) $(LDLIBS_STLDEBUG_static)
$(OUTDIR)$(PATH_SEP)$(STLDEBUGX_LIB) : $(OUTDIR) $(STLDEBUG_OBJDIR_staticx) $(DEF_FILE) $(STLDEBUG_OBJECTS_staticx)
echo 'main() { }' >dummy_main.C
$(CXX) -o junk dummy_main.C $(STLDEBUG_OBJECTS_staticx) -lpthread
rm dummy_main.C
$(LINK) $(LINK_OUT)$(OUTDIR)$(PATH_SEP)$(STLDEBUGX_LIB) $(LDFLAGS_STLDEBUG_static) $(STLDEBUG_OBJECTS_staticx) $(LDLIBS_STLDEBUG_static)
#install: all
# cp -p $(LIB_TARGET) ${D_LIB_TARGET} ../lib
%.s: %.cpp
$(CXX) $(CXXFLAGS) -S $< -o $@

490
STLPORT/src/ctype.cpp Normal file
View File

@@ -0,0 +1,490 @@
/*
* Copyright (c) 1999
* Silicon Graphics Computer Systems, Inc.
*
* Copyright (c) 1999
* Boris Fomitchev
*
* This material is provided "as is", with absolutely no warranty expressed
* or implied. Any use is at your own risk.
*
* 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.
*
*/
# include "stlport_prefix.h"
#include <algorithm>
#include <stl/_ctype.h>
#include <stl/_function.h>
#include "c_locale.h"
_STLP_BEGIN_NAMESPACE
//----------------------------------------------------------------------
// ctype<char>
// The classic table: static data members.
# if !defined(_STLP_STATIC_CONST_INIT_BUG) && !(defined(__MRC__) || defined(__SC__))
//*TY 02/25/2000 - added workaround for MPW compilers; they confuse on in-class static const
const size_t ctype<char>::table_size;
# endif
// This macro is specifically for platforms where isprint() relies
// on separate flag
# define PRINTFLAG ctype_base::mask( _Locale_PRINT & ~(_Locale_UPPER | _Locale_LOWER | _Locale_ALPHA | _Locale_DIGIT | _Locale_PUNCT | _Locale_SPACE | _Locale_XDIGIT ))
// Ctype table for the ASCII character set.
// There are 257 entries in this table. The first is EOF (-1).
// That is, the "table" seen by ctype<char> member functions is
// _S_classic_table + 1.
const ctype_base::mask
ctype<char>::_S_classic_table[257] =
{
ctype_base::mask(0) /* EOF */,
cntrl /* null */,
cntrl /* ^A */,
cntrl /* ^B */,
cntrl /* ^C */,
cntrl /* ^D */,
cntrl /* ^E */,
cntrl /* ^F */,
cntrl /* ^G */,
cntrl /* ^H */,
ctype_base::mask(space | cntrl) /* tab */,
ctype_base::mask(space | cntrl) /* LF */,
ctype_base::mask(space | cntrl) /* ^K */,
ctype_base::mask(space | cntrl) /* FF */,
ctype_base::mask(space | cntrl) /* ^M */,
cntrl /* ^N */,
cntrl /* ^O */,
cntrl /* ^P */,
cntrl /* ^Q */,
cntrl /* ^R */,
cntrl /* ^S */,
cntrl /* ^T */,
cntrl /* ^U */,
cntrl /* ^V */,
cntrl /* ^W */,
cntrl /* ^X */,
cntrl /* ^Y */,
cntrl /* ^Z */,
cntrl /* esc */,
cntrl /* ^\ */,
cntrl /* ^] */,
cntrl /* ^^ */,
cntrl /* ^_ */,
ctype_base::mask (space | PRINTFLAG) /* */,
ctype_base::mask (punct | PRINTFLAG ) /* ! */,
ctype_base::mask (punct | PRINTFLAG ) /* " */,
ctype_base::mask (punct | PRINTFLAG ) /* # */,
ctype_base::mask (punct | PRINTFLAG ) /* $ */,
ctype_base::mask (punct | PRINTFLAG ) /* % */,
ctype_base::mask (punct | PRINTFLAG ) /* & */,
ctype_base::mask (punct | PRINTFLAG ) /* ' */,
ctype_base::mask (punct | PRINTFLAG ) /* ( */,
ctype_base::mask (punct | PRINTFLAG ) /* ) */,
ctype_base::mask (punct | PRINTFLAG ) /* * */,
ctype_base::mask (punct | PRINTFLAG ) /* + */,
ctype_base::mask (punct | PRINTFLAG ) /* , */,
ctype_base::mask (punct | PRINTFLAG ) /* - */,
ctype_base::mask (punct | PRINTFLAG ) /* . */,
ctype_base::mask (punct | PRINTFLAG ) /* / */,
ctype_base::mask(digit | PRINTFLAG | xdigit) /* 0 */,
ctype_base::mask(digit | PRINTFLAG | xdigit) /* 1 */,
ctype_base::mask(digit | PRINTFLAG | xdigit) /* 2 */,
ctype_base::mask(digit | PRINTFLAG | xdigit) /* 3 */,
ctype_base::mask(digit | PRINTFLAG | xdigit) /* 4 */,
ctype_base::mask(digit | PRINTFLAG | xdigit) /* 5 */,
ctype_base::mask(digit | PRINTFLAG | xdigit) /* 6 */,
ctype_base::mask(digit | PRINTFLAG | xdigit) /* 7 */,
ctype_base::mask(digit | PRINTFLAG | xdigit) /* 8 */,
ctype_base::mask(digit | PRINTFLAG | xdigit) /* 9 */,
ctype_base::mask (punct | PRINTFLAG ) /* : */,
ctype_base::mask (punct | PRINTFLAG ) /* ; */,
ctype_base::mask (punct | PRINTFLAG ) /* < */,
ctype_base::mask (punct | PRINTFLAG ) /* = */,
ctype_base::mask (punct | PRINTFLAG ) /* > */,
ctype_base::mask (punct | PRINTFLAG ) /* ? */,
ctype_base::mask (punct | PRINTFLAG ) /* ! */,
ctype_base::mask(alpha | PRINTFLAG | upper | xdigit) /* A */,
ctype_base::mask(alpha | PRINTFLAG | upper | xdigit) /* B */,
ctype_base::mask(alpha | PRINTFLAG | upper | xdigit) /* C */,
ctype_base::mask(alpha | PRINTFLAG | upper | xdigit) /* D */,
ctype_base::mask(alpha | PRINTFLAG | upper | xdigit) /* E */,
ctype_base::mask(alpha | PRINTFLAG | upper | xdigit) /* F */,
ctype_base::mask(alpha | PRINTFLAG | upper) /* G */,
ctype_base::mask(alpha | PRINTFLAG | upper) /* H */,
ctype_base::mask(alpha | PRINTFLAG | upper) /* I */,
ctype_base::mask(alpha | PRINTFLAG | upper) /* J */,
ctype_base::mask(alpha | PRINTFLAG | upper) /* K */,
ctype_base::mask(alpha | PRINTFLAG | upper) /* L */,
ctype_base::mask(alpha | PRINTFLAG | upper) /* M */,
ctype_base::mask(alpha | PRINTFLAG | upper) /* N */,
ctype_base::mask(alpha | PRINTFLAG | upper) /* O */,
ctype_base::mask(alpha | PRINTFLAG | upper) /* P */,
ctype_base::mask(alpha | PRINTFLAG | upper) /* Q */,
ctype_base::mask(alpha | PRINTFLAG | upper) /* R */,
ctype_base::mask(alpha | PRINTFLAG | upper) /* S */,
ctype_base::mask(alpha | PRINTFLAG | upper) /* T */,
ctype_base::mask(alpha | PRINTFLAG | upper) /* U */,
ctype_base::mask(alpha | PRINTFLAG | upper) /* V */,
ctype_base::mask(alpha | PRINTFLAG | upper) /* W */,
ctype_base::mask(alpha | PRINTFLAG | upper) /* X */,
ctype_base::mask(alpha | PRINTFLAG | upper) /* Y */,
ctype_base::mask(alpha | PRINTFLAG | upper) /* Z */,
ctype_base::mask (punct | PRINTFLAG ) /* [ */,
ctype_base::mask (punct | PRINTFLAG ) /* \ */,
ctype_base::mask (punct | PRINTFLAG ) /* ] */,
ctype_base::mask (punct | PRINTFLAG ) /* ^ */,
ctype_base::mask (punct | PRINTFLAG ) /* _ */,
ctype_base::mask (punct | PRINTFLAG ) /* ` */,
ctype_base::mask(alpha | PRINTFLAG | lower | xdigit) /* a */,
ctype_base::mask(alpha | PRINTFLAG | lower | xdigit) /* b */,
ctype_base::mask(alpha | PRINTFLAG | lower | xdigit) /* c */,
ctype_base::mask(alpha | PRINTFLAG | lower | xdigit) /* d */,
ctype_base::mask(alpha | PRINTFLAG | lower | xdigit) /* e */,
ctype_base::mask(alpha | PRINTFLAG | lower | xdigit) /* f */,
ctype_base::mask(alpha | PRINTFLAG | lower) /* g */,
ctype_base::mask(alpha | PRINTFLAG | lower) /* h */,
ctype_base::mask(alpha | PRINTFLAG | lower) /* i */,
ctype_base::mask(alpha | PRINTFLAG | lower) /* j */,
ctype_base::mask(alpha | PRINTFLAG | lower) /* k */,
ctype_base::mask(alpha | PRINTFLAG | lower) /* l */,
ctype_base::mask(alpha | PRINTFLAG | lower) /* m */,
ctype_base::mask(alpha | PRINTFLAG | lower) /* n */,
ctype_base::mask(alpha | PRINTFLAG | lower) /* o */,
ctype_base::mask(alpha | PRINTFLAG | lower) /* p */,
ctype_base::mask(alpha | PRINTFLAG | lower) /* q */,
ctype_base::mask(alpha | PRINTFLAG | lower) /* r */,
ctype_base::mask(alpha | PRINTFLAG | lower) /* s */,
ctype_base::mask(alpha | PRINTFLAG | lower) /* t */,
ctype_base::mask(alpha | PRINTFLAG | lower) /* u */,
ctype_base::mask(alpha | PRINTFLAG | lower) /* v */,
ctype_base::mask(alpha | PRINTFLAG | lower) /* w */,
ctype_base::mask(alpha | PRINTFLAG | lower) /* x */,
ctype_base::mask(alpha | PRINTFLAG | lower) /* y */,
ctype_base::mask(alpha | PRINTFLAG | lower) /* x */,
ctype_base::mask (punct | PRINTFLAG ) /* { */,
ctype_base::mask (punct | PRINTFLAG ) /* | */,
ctype_base::mask (punct | PRINTFLAG ) /* } */,
ctype_base::mask (punct | PRINTFLAG ) /* ~ */,
cntrl /* del (0x7f)*/,
/* ASCII is a 7-bit code, so everything else is non-ASCII */
ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0),
ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0),
ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0),
ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0),
ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0),
ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0),
ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0),
ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0),
ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0),
ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0),
ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0),
ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0),
ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0),
ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0),
ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0),
ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0)
};
// For every c in the range 0 <= c < 256, _S_upper[c] is the
// uppercased version of c and _S_lower[c] is the lowercased
// version. As before, these two tables assume the ASCII character
// set.
const unsigned char ctype<char>::_S_upper[256] =
{
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
};
const unsigned char ctype<char>::_S_lower[256] =
{
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
};
// Some helper functions used in ctype<>::scan_is and scan_is_not.
struct _Ctype_is_mask {
typedef char argument_type;
typedef bool result_type;
ctype_base::mask _Mask;
const ctype_base::mask* _M_table;
_Ctype_is_mask(ctype_base::mask __m, const ctype_base::mask* __t) : _Mask(__m), _M_table(__t) {}
bool operator()(char __c) const { return (_M_table[(unsigned char) __c] & _Mask) != 0; }
};
struct _Ctype_not_mask {
typedef char argument_type;
typedef bool result_type;
ctype_base::mask _Mask;
const ctype_base::mask* _M_table;
_Ctype_not_mask(ctype_base::mask __m, const ctype_base::mask* __t) : _Mask(__m), _M_table(__t) {}
bool operator()(char __c) const { return (_M_table[(unsigned char) __c] & _Mask) == 0; }
};
ctype<char>::ctype(const ctype_base::mask * __tab, bool __del, size_t __refs) :
_BaseFacet(__refs) /* , _M_ctype_table(0) */ {
_M_ctype_table = __tab ? __tab : classic_table();
_M_delete = __tab && __del;
}
ctype<char>::~ctype() {
if (_M_delete)
delete[] __CONST_CAST(ctype_base::mask *, _M_ctype_table);
}
const char*
ctype<char>::scan_is(ctype_base::mask __m, const char* __low, const char* __high) const {
return _STLP_STD::find_if(__low, __high, _Ctype_is_mask(__m, _M_ctype_table));
}
const char*
ctype<char>::scan_not(ctype_base::mask __m, const char* __low, const char* __high) const {
return _STLP_STD::find_if(__low, __high, _Ctype_not_mask(__m, _M_ctype_table));
}
char
ctype<char>::do_toupper(char __c) const
{ return (char) _S_upper[(unsigned char) __c]; }
char
ctype<char>::do_tolower(char __c) const
{ return (char) _S_lower[(unsigned char) __c]; }
const char*
ctype<char>::do_toupper(char* __low, const char* __high) const {
for ( ; __low < __high; ++__low)
*__low = (char) _S_upper[(unsigned char) *__low];
return __high;
}
const char*
ctype<char>::do_tolower(char* __low, const char* __high) const {
for ( ; __low < __high; ++__low)
*__low = (char) _S_lower[(unsigned char) *__low];
return __high;
}
char
ctype<char>::do_widen(char __c) const { return __c; }
const char*
ctype<char>::do_widen(const char* __low, const char* __high,
char* __to) const {
__copy_trivial(__low, __high, __to);
return __high;
}
char
ctype<char>::do_narrow(char __c, char /* dfault */ ) const { return __c; }
const char*
ctype<char>::do_narrow(const char* __low, const char* __high,
char /* dfault */, char* __to) const {
__copy_trivial(__low, __high, __to);
return __high;
}
# ifndef _STLP_NO_WCHAR_T
struct _Ctype_w_is_mask {
typedef wchar_t argument_type;
typedef bool result_type;
ctype_base::mask M;
const ctype_base::mask* table;
_Ctype_w_is_mask(ctype_base::mask m, const ctype_base::mask* t)
: M(m), table(t) {}
bool operator()(wchar_t c) const
{ return c >= 0 && size_t(c) < ctype<char>::table_size && (table[c] & M); }
};
//----------------------------------------------------------------------
// ctype<wchar_t>
ctype<wchar_t>::~ctype() {}
bool ctype<wchar_t>::do_is(ctype_base::mask m, wchar_t c) const
{
const ctype_base::mask * table = ctype<char>::classic_table();
return c >= 0 && size_t(c) < ctype<char>::table_size && (m & table[c]);
}
const wchar_t* ctype<wchar_t>::do_is(const wchar_t* low, const wchar_t* high,
ctype_base::mask * vec) const
{
// boris : not clear if this is the right thing to do...
const ctype_base::mask * table = ctype<char>::classic_table();
for ( ; low < high; ++low, ++vec) {
wchar_t c = *low;
*vec = c >= 0 && size_t(c) < ctype<char>::table_size ? table[c] : ctype_base::mask (0);
}
return high;
}
const wchar_t*
ctype<wchar_t>::do_scan_is(ctype_base::mask m,
const wchar_t* low, const wchar_t* high) const
{
return find_if(low, high, _Ctype_w_is_mask(m, ctype<char>::classic_table()));
}
const wchar_t*
ctype<wchar_t>::do_scan_not(ctype_base::mask m,
const wchar_t* low, const wchar_t* high) const
{
return find_if(low, high, not1(_Ctype_w_is_mask(m, ctype<char>::classic_table())));
}
wchar_t ctype<wchar_t>::do_toupper(wchar_t c) const
{
return c >= 0 && size_t(c) < ctype<char>::table_size
? (wchar_t) ctype<char>::_S_upper[c]
: c;
}
const wchar_t*
ctype<wchar_t>::do_toupper(wchar_t* low, const wchar_t* high) const
{
for ( ; low < high; ++low) {
wchar_t c = *low;
*low = c >= 0 && size_t(c) < ctype<char>::table_size
? (wchar_t) ctype<char>::_S_upper[c]
: c;
}
return high;
}
wchar_t ctype<wchar_t>::do_tolower(wchar_t c) const
{
return c >= 0 && size_t(c) < ctype<char>::table_size
? (wchar_t) ctype<char>::_S_lower[c]
: c;
}
const wchar_t*
ctype<wchar_t>::do_tolower(wchar_t* low, const wchar_t* high) const
{
for ( ; low < high; ++low) {
wchar_t c = *low;
*low = c >= 0 && size_t(c) < ctype<char>::table_size
? (wchar_t) ctype<char>::_S_lower[c]
: c;
}
return high;
}
wchar_t ctype<wchar_t>::do_widen(char c) const
{
return (wchar_t) c;
}
const char*
ctype<wchar_t>::do_widen(const char* low, const char* high,
wchar_t* dest) const
{
while (low != high)
*dest++ = (wchar_t) *low++;
return high;
}
char ctype<wchar_t>::do_narrow(wchar_t c, char dfault) const
{
return (char) c == c ? c : dfault;
}
const wchar_t* ctype<wchar_t>::do_narrow(const wchar_t* low,
const wchar_t* high,
char dfault, char* dest) const
{
while (low != high) {
wchar_t c = *low++;
*dest++ = (char) c == c ? c : dfault;
}
return high;
}
# endif
_STLP_END_NAMESPACE
// Local Variables:
// mode:C++
// End:

100
STLPORT/src/dec.mak Normal file
View File

@@ -0,0 +1,100 @@
#
# Note : this requires GNU make
#
# Basename for libraries
#
LIB_BASENAME = libstlport_dec
CUR_DIR= $(PWD)/
# point this to proper location
STL_INCL= -I. -I../stlport -I/usr/include
#
# guts for common stuff
#
#
CC = cxx
CXX = cxx
LINK=$(CXX) -o
DYN_LINK=$(CXX) -o
OBJEXT=o
DYNEXT=so
STEXT=a
RM=rm -rf
PATH_SEP=/
MKDIR=mkdir -p
COMP=DEC
# LINK_OUT=-xar -o
# DYNLINK_OUT=-o
# all: all_dynamic all_static
# Boris : do not see a reasonable way to link static library witout instantiating in .o
# Anyone ?
all: msg all_dynamic symbolic_links
msg:
@echo "*** ATTENTION! ***"
@echo "This makefile requires GNU make!"
@echo "******************"
include common_macros.mak
# Rules
MTFLAGS = -pthread
CXXFLAGS_COMMON = -std ansi -nousing_std -pt -rtti $(MTFLAGS) ${STL_INCL} -D_PTHREADS
SHCXXFLAGS = -shared
RELEASE_FLAGS = -O
LIBS =
RELEASE_static_rep = -ptr ${RELEASE_OBJDIR_static}
RELEASE_dynamic_rep = -ptr ${RELEASE_OBJDIR_dynamic}
DEBUG_static_rep = -ptr ${DEBUG_OBJDIR_static}
DEBUG_dynamic_rep = -ptr ${DEBUG_OBJDIR_dynamic}
STLDEBUG_static_rep = -ptr ${STLDEBUG_OBJDIR_static}
STLDEBUG_dynamic_rep = -ptr ${STLDEBUG_OBJDIR_dynamic}
CXXFLAGS_RELEASE_static = $(CXXFLAGS_COMMON) ${RELEASE_FLAGS} ${RELEASE_static_rep}
CXXFLAGS_RELEASE_dynamic = $(CXXFLAGS_COMMON) ${RELEASE_FLAGS} $(SHCXXFLAGS) ${RELEASE_dynamic_rep}
CXXFLAGS_DEBUG_static = $(CXXFLAGS_COMMON) -O -g ${DEBUG_static_rep}
CXXFLAGS_DEBUG_dynamic = $(CXXFLAGS_COMMON) -O -g $(SHCXXFLAGS) ${DEBUG_dynamic_rep}
CXXFLAGS_STLDEBUG_static = $(CXXFLAGS_COMMON) -O -g ${STLDEBUG_static_rep} -D_STLP_DEBUG
CXXFLAGS_STLDEBUG_dynamic = $(CXXFLAGS_COMMON) -O -g $(SHCXXFLAGS) ${STLDEBUG_dynamic_rep} -D_STLP_DEBUG
LDFLAGS_RELEASE_static = ${CXXFLAGS_RELEASE_static}
LDFLAGS_RELEASE_dynamic = ${CXXFLAGS_RELEASE_dynamic}
LDLIBS_RELEASE_dynamic = -lm
LDLIBS_RELEASE_static = -lm
LDFLAGS_DEBUG_static = ${CXXFLAGS_DEBUG_static}
LDFLAGS_DEBUG_dynamic = ${CXXFLAGS_DEBUG_dynamic}
LDLIBS_DEBUG_dynamic = -lm
LDLIBS_DEBUG_static = -lm
LDFLAGS_STLDEBUG_static = ${CXXFLAGS_STLDEBUG_static}
LDFLAGS_STLDEBUG_dynamic = ${CXXFLAGS_STLDEBUG_dynamic}
LDLIBS_STLDEBUG_dynamic = -lm
LDLIBS_STLDEBUG_static = -lm
INSTALL_STEP = install_unix
include common_percent_rules.mak
include common_rules.mak
%.i : %.cpp
$(CXX) $(CXXFLAGS) $*.cpp -v -E > $@
%.s: %.cpp
$(CXX) $(CXXFLAGS) -O4 -S -pto $< -o $@

72
STLPORT/src/djgpp.mak Normal file
View File

@@ -0,0 +1,72 @@
#
# This is makefile for compiling with DJGPP.
# Since DJGPP is used to create DOS protected mode, it has no
# dynamic link library. Only static libraries are created.
# With DJGPP, gcc is used to compile c++. It will know the
# language being compiled automatically from file extension of
# the source code being compiled.
#
# Tanes Sriviroolchai (tanes73@yahoo.com)
# Jan 4, 2001
#
#
# compiler
#
CC = gcc
CXX = gcc
#
# Basename for libraries
#
LIB_BASENAME = libstlport_djgpp
#
# guts for common stuff
#
#
LINK=ar crv
OBJEXT=o
STEXT=a
RM=rm -rf
PATH_SEP=/
MKDIR=mkdir -p
COMP=DJGPP
STATIC_SUFFIX=_static
all: all_static
include common_macros.mak
RESFILE=$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)stlport.o
RESFILE_debug=$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)stlport.o
RESFILE_stldebug=$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)stlport.o
WARNING_FLAGS= -W -Wno-sign-compare -Wno-unused -Wno-uninitialized
CXXFLAGS_COMMON = -I${STLPORT_DIR} ${WARNING_FLAGS} -ftemplate-depth-32 -mbnu210
CXXFLAGS_RELEASE_static = $(CXXFLAGS_COMMON) -O2
CXXFLAGS_DEBUG_static = $(CXXFLAGS_COMMON) -O -g
CXXFLAGS_STLDEBUG_static = $(CXXFLAGS_DEBUG_static) -D_STLP_DEBUG
LDFLAGS_RELEASE_static =
LDFLAGS_DEBUG_static =
LDFLAGS_STLDEBUG_static =
include common_percent_rules.mak
include common_rules.mak
#%.s: %.cpp
# $(CXX) $(CXXFLAGS) -O4 -S -pto $< -o $@

257
STLPORT/src/dll_main.cpp Normal file
View File

@@ -0,0 +1,257 @@
/*
*
* Copyright (c) 1994
* Hewlett-Packard Company
*
* Copyright (c) 1996,1997
* Silicon Graphics Computer Systems, Inc.
*
* Copyright (c) 1997
* Moscow Center for SPARC Technology
*
* Copyright (c) 1999
* Boris Fomitchev
*
* This material is provided "as is", with absolutely no warranty expressed
* or implied. Any use is at your own risk.
*
* 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.
*
*/
# define __PUT_STATIC_DATA_MEMBERS_HERE
# define _STLP_EXPOSE_GLOBALS_IMPLEMENTATION
# include "stlport_prefix.h"
# if !defined(_STLP_DEBUG) && ! defined (_STLP_ASSERTIONS)
# define _STLP_ASSERTIONS 1
# endif
#include <utility>
#include <stl/debug/_debug.h>
#include <memory>
#include <vector>
#include <set>
#include <list>
#include <slist>
#include <stl/_hashtable.h>
#include <limits>
#include <string>
#include <stdexcept>
#include <bitset>
# if ( _STLP_STATIC_TEMPLATE_DATA < 1 )
// for rope, locale static members
# include <rope>
# include <locale>
# endif
# if defined (_STLP_UNIX)
# define _STLP_HAS_PERTHREAD_ALLOCATOR
# include <stl/_pthread_alloc.h>
# endif
// boris : this piece of code duplicated from _range_errors.h
#undef _STLP_THROW_MSG
#if defined(_STLP_THROW_RANGE_ERRORS)
# ifndef _STLP_STDEXCEPT
# include <stdexcept>
# endif
# ifndef _STLP_STRING
# include <string>
# endif
# define _STLP_THROW_MSG(ex,msg) throw ex(string(msg))
#else
# if defined (_STLP_WINCE)
# define _STLP_THROW_MSG(ex,msg) TerminateProcess(GetCurrentProcess(), 0)
# else
# include <cstdlib>
# include <cstdio>
# define _STLP_THROW_MSG(ex,msg) puts(msg),_STLP_ABORT()
# endif
#endif
#ifdef _STLP_MSVC
#pragma optimize("g",off)
#endif
_STLP_BEGIN_NAMESPACE
void _STLP_DECLSPEC _STLP_CALL __stl_throw_range_error(const char* __msg) {
_STLP_THROW_MSG(range_error, __msg);
}
void _STLP_DECLSPEC _STLP_CALL __stl_throw_out_of_range(const char* __msg) {
_STLP_THROW_MSG(out_of_range, __msg);
}
void _STLP_DECLSPEC _STLP_CALL __stl_throw_length_error(const char* __msg) {
_STLP_THROW_MSG(length_error, __msg);
}
void _STLP_DECLSPEC _STLP_CALL __stl_throw_invalid_argument(const char* __msg) {
_STLP_THROW_MSG(invalid_argument, __msg);
}
void _STLP_DECLSPEC _STLP_CALL __stl_throw_overflow_error(const char* __msg) {
_STLP_THROW_MSG(overflow_error, __msg);
}
_STLP_DECLSPEC const char* _STLP_CALL
__get_c_string(const string& __str) {
return __str.c_str();
}
# if defined (_STLP_NO_EXCEPTION_HEADER) || defined(_STLP_BROKEN_EXCEPTION_CLASS)
exception::exception() _STLP_NOTHROW {}
exception::~exception() _STLP_NOTHROW {}
bad_exception::bad_exception() _STLP_NOTHROW {}
bad_exception::~bad_exception() _STLP_NOTHROW {}
const char* exception::what() const _STLP_NOTHROW {return "class exception";}
const char* bad_exception::what() const _STLP_NOTHROW {return "class bad_exception";}
# endif
# ifdef _STLP_OWN_STDEXCEPT
__Named_exception::__Named_exception(const string& __str) {
strncpy(_M_name, __get_c_string(__str), _S_bufsize);
_M_name[_S_bufsize - 1] = '\0';
}
const char* __Named_exception::what() const _STLP_NOTHROW_INHERENTLY { return _M_name; }
// boris : those are needed to force typeinfo nodes to be created in here only
__Named_exception::~__Named_exception() _STLP_NOTHROW_INHERENTLY {}
logic_error::~logic_error() _STLP_NOTHROW_INHERENTLY {}
runtime_error::~runtime_error() _STLP_NOTHROW_INHERENTLY {}
domain_error::~domain_error() _STLP_NOTHROW_INHERENTLY {}
invalid_argument::~invalid_argument() _STLP_NOTHROW_INHERENTLY {}
length_error::~length_error() _STLP_NOTHROW_INHERENTLY {}
out_of_range::~out_of_range() _STLP_NOTHROW_INHERENTLY {}
range_error::~range_error() _STLP_NOTHROW_INHERENTLY {}
overflow_error::~overflow_error() _STLP_NOTHROW_INHERENTLY {}
underflow_error::~underflow_error() _STLP_NOTHROW_INHERENTLY {}
# endif
# ifdef _STLP_NO_BAD_ALLOC
const nothrow_t nothrow /* = {} */;
# endif
# ifndef _STLP_NO_FORCE_INSTANTIATE
# if defined (_STLP_DEBUG) || defined (_STLP_ASSERTIONS)
template struct _STLP_CLASS_DECLSPEC __stl_debug_engine<bool>;
# endif
template class _STLP_CLASS_DECLSPEC __node_alloc<false,0>;
template class _STLP_CLASS_DECLSPEC __node_alloc<true,0>;
template class _STLP_CLASS_DECLSPEC __debug_alloc< __node_alloc<true,0> >;
template class _STLP_CLASS_DECLSPEC __debug_alloc< __node_alloc<false,0> >;
template class _STLP_CLASS_DECLSPEC __debug_alloc<__new_alloc>;
template class _STLP_CLASS_DECLSPEC __malloc_alloc<0>;
# if defined (_STLP_THREADS) && ! defined ( _STLP_ATOMIC_EXCHANGE ) && (defined(_STLP_PTHREADS) || defined (_STLP_UITHREADS) || defined (_STLP_OS2THREADS))
template class _STLP_CLASS_DECLSPEC _Swap_lock_struct<0>;
# endif
template class allocator<void*>;
template class _STLP_alloc_proxy<void**, void*, allocator<void*> >;
template class _Vector_base<void*,allocator<void*> >;
# if defined (_STLP_DEBUG) && ! defined (__SUNPRO_CC)
template class __WORKAROUND_DBG_RENAME(vector) <void*,allocator<void*> >;
# endif
template class __vector__<void*,allocator<void*> >;
template class _Rb_global<bool>;
template class _List_global<bool>;
template class _Sl_global<bool>;
template class _Stl_prime<bool>;
template class _LimG<bool>;
template class _Bs_G<bool>;
template class _STLP_CLASS_DECLSPEC allocator<char>;
template class _STLP_CLASS_DECLSPEC _STLP_alloc_proxy<char *,char, allocator<char> >;
template class _STLP_CLASS_DECLSPEC _String_base<char, allocator<char> >;
# if defined (_STLP_DEBUG) && ! defined (__SUNPRO_CC)
template class _STLP_CLASS_DECLSPEC _Nondebug_string<char, char_traits<char>, allocator<char> >;
# endif
template class basic_string<char, char_traits<char>, allocator<char> >;
# endif
_STLP_END_NAMESPACE
#define FORCE_SYMBOL extern
# if defined (_WIN32) && defined (_STLP_USE_DECLSPEC) && ! defined (_STLP_USE_STATIC_LIB) && ! defined (_STLP_USE_STATICX_LIB)
// stlportmt.cpp : Defines the entry point for the DLL application.
//
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#undef FORCE_SYMBOL
#define FORCE_SYMBOL APIENTRY
extern "C" {
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls((HINSTANCE)hModule);
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
} /* extern "C" */
_STLP_BEGIN_NAMESPACE
void FORCE_SYMBOL
force_link()
{
float f;
f = numeric_limits<float>::infinity();
f = numeric_limits<float>::quiet_NaN();
f = numeric_limits<float>::signaling_NaN();
double d;
d = numeric_limits<double>::infinity();
d = numeric_limits<double>::quiet_NaN();
d = numeric_limits<double>::signaling_NaN();
#ifndef _STLP_NO_LONG_DOUBLE
long double ld;
ld = numeric_limits<long double>::infinity();
ld = numeric_limits<long double>::quiet_NaN();
ld = numeric_limits<long double>::signaling_NaN();
#endif
set<int>::iterator iter;
// _M_increment; _M_decrement instantiation
++iter;
--iter;
// force bitset globals to be instantiated
unsigned char uc = _Bs_G<bool>::_S_bit_count[0];
uc += _Bs_G<bool>::_S_first_one[0];
}
_STLP_END_NAMESPACE
# endif

File diff suppressed because it is too large Load Diff

1179
STLPORT/src/fstream.cpp Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,54 @@
/*
* Copyright (c) 1999
* Silicon Graphics Computer Systems, Inc.
*
* Copyright (c) 1999
* Boris Fomitchev
*
* This material is provided "as is", with absolutely no warranty expressed
* or implied. Any use is at your own risk.
*
* 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.
*
*/
#ifndef FSTREAM_IMPL_H
# define FSTREAM_IMPL_H
#include <stl/_stdio_file.h>
# ifdef _STLP_HAS_NO_NAMESPACES
# define __SGI_BEGIN_NAMESPACE
# define __SGI_END_NAMESPACE
# define _SgI
# else
# define __SGI_BEGIN_NAMESPACE namespace _SgI {
# define __SGI_END_NAMESPACE }
# endif
__SGI_BEGIN_NAMESPACE
# ifndef _STLP_HAS_NO_NAMESPACES
using _STLP_STD::streamoff;
using _STLP_STD::ios_base;
using _STLP_STD::streamsize;
using _STLP_STD::streamoff;
using _STLP_STD::char_traits;
# ifndef _STLP_USE_UNIX_IO
using _STLP_VENDOR_CSTD::FILE;
using _STLP_VENDOR_CSTD::ftell;
# endif
using _STLP_STD::_FILE_fd;
# endif
extern bool __is_regular_file(_STLP_fd fd);
extern streamoff __file_size(_STLP_fd fd);
__SGI_END_NAMESPACE
#endif /* FSTREAM_IMPL_H */

View File

@@ -0,0 +1,66 @@
#
# Note : this makefile is for gcc-2.95 and later !
#
#
# compiler
#
CC = gcc
CXX = c++ -pthreads
#
# Basename for libraries
#
LIB_BASENAME = libstlport_gcc99r1
#
# guts for common stuff
#
#
LINK=ar cr
# 2.95 flag
DYN_LINK=c++ -pthreads -shared -o
OBJEXT=o
DYNEXT=so
STEXT=a
RM=rm -rf
PATH_SEP=/
MKDIR=mkdir -p
COMP=GCC-99r1
INSTALL_STEP = install_unix
all: all_dynamic all_static symbolic_links
include common_macros.mak
WARNING_FLAGS= -Wall -W -Wno-sign-compare -Wno-unused -Wno-uninitialized
CXXFLAGS_COMMON = -nostdinc++ -fexceptions -ftemplate-depth-32 -D_STLP_HAS_NO_NAMESPACES -shared -I${STLPORT_DIR} ${WARNING_FLAGS}
CXXFLAGS_RELEASE_static = $(CXXFLAGS_COMMON) -O2
CXXFLAGS_RELEASE_dynamic = $(CXXFLAGS_COMMON) -O2 -fPIC
CXXFLAGS_DEBUG_static = $(CXXFLAGS_COMMON) -gstabs
CXXFLAGS_DEBUG_dynamic = $(CXXFLAGS_COMMON) -gstabs -fPIC
CXXFLAGS_STLDEBUG_static = $(CXXFLAGS_DEBUG_static) -D_STLP_DEBUG
CXXFLAGS_STLDEBUG_dynamic = $(CXXFLAGS_DEBUG_dynamic) -D_STLP_DEBUG
LDFLAGS_RELEASE_dynamic = ${CXXFLAGS_RELEASE_dynamic}
LDFLAGS_DEBUG_dynamic = ${CXXFLAGS_DEBUG_dynamic}
LDFLAGS_STLDEBUG_dynamic = ${CXXFLAGS_STLDEBUG_dynamic}
LDLIBS_RELEASE_dynamic = -lposix4
LDLIBS_STLDEBUG_dynamic = -lposix4
include common_percent_rules.mak
include common_rules.mak
#%.s: %.cpp
# $(CXX) $(CXXFLAGS) -O4 -S -pto $< -o $@

Some files were not shown because too many files have changed in this diff Show More