2007-10-21  Francois Dumont  <dums@users.sourceforge.net>

	* src/allocators.cpp: Add missing const_cast in lock free
	allocator implementation when _STLP_LEAKS_PEDANTIC is defined.
	Thanks trungantran on forum.

2007-10-07  Francois Dumont  <dums@users.sourceforge.net>

	* STLport 5.1.4 released based on revision 3219. STLport-5.1.4
	tag created.

	* stlport/stl/_stlport_version.h, build/lib/Makefile.inc: Patch
	version bump to 5 to prepare next potential patch release.

2007-10-05  Francois Dumont  <dums@users.sourceforge.net>

	* stlport/stl/debug/_iterator.h, _string.h, src/string.cpp:
	Removed useless and even invalid workaround used when
	_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND is defined. There is now
	only one construct check class __construct_checker,
	__msvc6_construct_checker has been removed.

2007-09-28  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* Platform tested: gcc 4.1.2 20060928 (prerelease)
	(Ubuntu 4.1.1-13ubuntu5), i686 GNU/Linux, glibc 2.4; 
	
	* release-shared: fail on list_test.cpp:392
	[CPPUNIT_ASSERT(lint1.size() == 20)], suspected compiler's bug;
	1 fail from 395 tests;

	* stldbg-shared: passed 395 tests;

	* Platform tested: gcc 4.1.2, i686 GNU/Linux, glibc 2.4;

	* release-shared: fail on list_test.cpp:392
	[CPPUNIT_ASSERT(lint1.size() == 20)], suspected compiler's bug;
	1 fail from 395 tests;

	* stldbg-shared: passed 395 tests;

	* Platform tested: gcc 4.2.1, i686 GNU/Linux, glibc 2.4;

	* release-shared: passed 395 tests;

	* stldbg-shared: passed 395 tests;

	* Platform tested: gcc 4.1.1, i686 athlon-4 i386 GNU/Linux,
	glibc 2.3.6;

	* release-shared: passed 395 tests;

	* stldbg-shared: passed 395 tests;

	* src/c_locale_glibc/c_locale_glibc2.c: this is a C, so
	decl allowd only on top of block;

	* Platform tested: gcc 2.95.4 (debian), i686 GNU/Linux,
	glibc 2.3.2;

	* release-shared: build success, as library as unit tests,
	but run unit tests fail---stalling on spinlock during library
	load; looks like problem with correct initialization of
	statics;

	* stldbg-shared: fail build library, stlport/stl/debug/_hashtable.h:49:
	declaration of `operator ==' as non-function 

2007-09-27  Francois Dumont  <dums@users.sourceforge.net>

	* src/facets_byname.cpp: In collate::do_transform, consider
	low == high as a special case, returns empty string in this
	case.

2007-09-27  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* test/unit/find_test.cpp: array initialization missed.

2007-09-17  Francois Dumont  <dums@users.sourceforge.net>

	* stlport/stl/_num_get.h: Add _STLP_DECLSPEC specification to
	several functions that might be access by external code when
	num_get facet is instantiated with something else than the
	Standard required instantiation.

2007-09-11  Francois Dumont  <dums@users.sourceforge.net>

	* src/c_locale_glibc/c_locale_glibc.c, c_locale_glibc2.c: Fix
	_Locale_strxfrm and _Locale_wcxfrm implementation to take
	into account strings that are not zero terminated.

	* test/unit/locale_test.cpp: Add check that collate.tranform
	method build a key only for chars in the range pass to method.

2007-09-10  Francois Dumont  <dums@users.sourceforge.net>

	* src/facets_byname.cpp: John Maddock bug report 1788618 fix.
	Moreover remove use of an intermediate buffer to get result
	of _Locale_strxfrm.

	* test/unit/locale_test.cpp: Add tests for collate::transform
	facet method.

	* src/c_locale_win32/c_locale_win32.c: Small modification,
	_Locale_strxfrm is supposed to return the number of chars
	required to store the generated sorted key without the trailing
	zero.

	* src/c_locale_glibc/c_locale_glibc.c, c_locale_glibc2.c: Fix
	implementation of _Locale_strxfrm, it should never return -1.

2007-09-10  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/stl/_string.c: fix bugs in string rfind, find_last_of,
	find_last_not_of [bug #1788700, position 0 was wrongly excluded];

	* test/unit/string_test.cpp: test for problems above. Thanks
	to Bred Bored for bug report and initial test.

	* unit tests: Linux 2.6.16.26 (athlon-4), gcc 4.1.1, glibc 2.3.6
	"OK 395 tests" for release-shared and stldbg-shared targets.

2007-09-09  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* test/unit/rope_test.cpp, stlport/stl/_rope.h: test for
	bug #1788615 [bug during copy of rope's iterator] and fix;
	suggested by John Maddock.

	* stlport/stl/_algobase.c: symmetry not required for
	comparator in case of two different sequences comparison or
	searching; symmetrical comparator just may not exist;

	* stlport/stl/debug/_hashtable.h: symmetry not required for
	comparator in hashtable in case of containers extention;
	symmetrical comparator just may not exist;

	* test/unit/alg_test.cpp: test for problem above, thanks
	Oleg Obolenskiy.

2007-09-06  Francois Dumont  <dums@users.sourceforge.net>

	* test/unit/strstream_buffer_read_test.cpp: Remove useless
	strdup call that was moreover introducing a memory leak.

2007-09-04  Francois Dumont  <dums@users.sourceforge.net>

	* src/allocators.cpp: Fix implementation of _S_chunk_dealloc when
	lock free implementation is not in use. Thanks bug report 1787636
	from Sergej Zagursky.

2007-08-31  Francois Dumont  <dums@users.sourceforge.net>

	* stlport/stl/_cstdio.h, _ctime.h: Add missing macro definition
	test before using _WIN32_WCE thanks bug report 1784174.

	* stlport/stl/_bitset.h: Change macro tests in order to check
	macro definition before using it thanks bug report 1785679.

	* test/unit/bitset_test.cpp: Bitset::iostream new test to check
	correct input/output of bitset class.

	* build/Makefiles/gmake/gcc.mak: Add -Wundef gcc option when building
	with gcc under Cygwin MinGW, it is an interesting option to detect
	macro check errors.

2007-08-26  Francois Dumont  <dums@users.sourceforge.net>

	* stlport/stl/config/user_config.h, host.h: Moved the administrative
	_STLP_USE_DEFAULT_FILE_OFFSET macro from user_config.h to host.h.

	* stlport/stl/config/_gcc.h: Under MinGW we now use C symbols in
	global namespace. Tests with 4.2.1 gcc version shows that C symbols
	are not necessarily put in std namespace.

2007-08-23  Francois Dumont  <dums@users.sourceforge.net>

	* stlport/stl/_complex.h: As in _iosfwd.h, removed useless
	_STLP_CLASS_DECLSPEC attribute on complex class declaration.

2007-08-23  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/stl/debug/_vector.h: only random access iterators
	allow operations 'less-than' and distance; for bidirectional
	iterators removed usage of 'less-than', and for others
	[like forward and input iterators] removed as usage of 'less-than'
	as distance; thanks Oleg Obolenskiy for bug report;

	* test/unit/ioiter_test.cpp: test for problem above.

2007-08-18  Francois Dumont  <dums@users.sourceforge.net>

	* stlport/stl/_iosfwd.h: Removed useless _STLP_CLASS_DECLSPEC attribute
	on class declaration. Latest gcc versions are reporting a warning about
	it.

2007-08-16  Francois Dumont  <dums@users.sourceforge.net>

	* src/dll_main.cpp: Removed useless _Atomic_swap_struct explicit
	instantiation, moreover, MSVC 2005 do not support it.

2007-08-15  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* Repository: bump lib version to 5.1.4;

	* stlport/stl/char_traits.h, src/fstream.cpp: use 64-bits
	file operations calls, if available on system; streamoff is
	always off64_t, if _LARGEFILE_SOURCE or _LARGEFILE64_SOURCE
	defined, i.e. if 64-bits file operations present;

	* stlport/stl/config/user_config.h: add _STLP_USE_DEFAULT_FILE_OFFSET,
	force use off_t for streamoff and appropriate file operations calls;
	note, that this may lead to problems, for example if _FILE_OFFSET_BITS
	defined as 64 somewhere in user's code;

	* test/unit/fstream_test.cpp: test 64 bits type for filesize and
	file offset.

2007-07-22  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* src/fstream.cpp: force use lseek64/mmap64 for HP-UX, if _LARGEFILE64_SOURCE
	defined; thanks for Michael Klein.

2007-07-17  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/stl/_algo.c, stlport/stl/_algobase.c: search, the __tmp and
	__p1 iterators always point at the same position, hence one of them
	is redundant;

	* stlport/stl/_algobase.c: in the main-loop of search there are two
	successive while-loops doing exactly the same thing; one of them is
	redundant and, since it is inside the main-loop, it slows down
	the algorithm significantly;

	* stlport/stl/_algo.c, stlport/stl/_algobase.c: in the search the main-loop 
	condition "while (__first1 != __last1)" is always true and consequently
	redundant; this is because the initial adn in-loop conditions virtually
	act as guards and will never let the main-loop condition to fail; since
	this condition is evaluated in every main-loop iteration, its removal
	will also improve the performance of the algorithm; thanks for
	Jim Xochellis for this suggestions.

2007-07-15  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* src/strstream.cpp: "get end" pointer should be initialized
	to the "begin of get + N" in obsolete strstream; bug #1536503,
	thanks for Jean-Eric Cuendet;

	* test/unit/strstream_buffer_read_test.cpp, build/test/unit/Makefile.inc:
	test for bug above; [submitted by Jean-Eric Cuendet].

2007-04-02  Francois Dumont  <dums@stlport...>

	* 5.1.3 released based on revision 2983. STLport-5.1.3 tag created.

2007-03-30  Francois Dumont  <dums@stlport...>

	* build/lib/configure.bat: Restore TARGET_PROC_SUBTYPE definition
	to distinguish between ARM architectures.

2007-03-22  Francois Dumont  <dums@stlport...>

	* stlport/stl/config/_msvc.h, _deque.h, _bvector.h: Portage from
	Ulrich Echkardt to EVC 8.

	* doc/README.evc8, README.wince: New documentations about Windows
	CE and EVC 8 from Ulrich Echkardt.

	* doc/evc_workaround.txt, doc/README.evc3, First file merged to the
	second one.

	* stlport/stl/_stlport_version.h: Bump patch level to 3.

2007-03-07  Francois Dumont  <dums@stlport...>

	* src/dll_main.cpp, stlport/stl/_stdexcept_base.h: Change strncpy_s
	invocation to pass _TRUNCATE parameter rather than number of chars
	to put in destination string. Default strncpy_s behavior is not to
	truncate string if necessary but to report the issue throught a handler
	which lead to an application crash if no handler has been set. Thanks
	Bronek Kozicki bug report 1674974.

	* stlport/stl/type_traits.h: Add a default constructor declaration
	in _TpWithState class to make gcc happy when class is instanciated
	with a class with no default constructor.

	* stlport/stl/config/_windows.h: Change definition of
	_STLP_WIN32_VERSION macro. We do not report definition inconsistency
	between WINVER and _WIN32_VERSION anymore, WINVER is prefered.

2007-03-01  Francois Dumont  <dums@stlport...>

	* test/unit/bitset_test.cpp: Add test for the to_string member
	method.

	* stlport/stl/config/_msvc.h, test/unit/locale_test.cpp: Change
	MSVC6 configuration that now defines _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS.
	Even if MSVC6 supports explicit specification of function template
	parameters it do not support the explicit specification for
	template methods, unit tests are showing this problem.

	* stlport/stl/type_traits.h, _alloc.h: Small change in stateless
	class detection feature. Introduce _IsStateless helper struct for
	this purpose even if it can only be used with pure class type and
	not with build-in types or enum or union. It avoids MSVC8 warnings.
	
2007-02-25  Francois Dumont  <dums@stlport...>

	* 5.1.2 released based on revision 2937, tag STLport-5.1.2 created.

	* stlport/stl/config/_prolog.h, build/Makefiles/gmake/bcc.mak,
	Patch from Eric Sanford to remove empty base class optimization
	for Borland compilers.

	* test/unit/vector_test.cpp: Enable VectorTest::ebo test for Borland
	compilers.

2007-02-22  Francois Dumont  <dums@stlport...>

	* stlport/stl/_alloc.h: Add a workaround for compilers with buggy
	empty base class optimization which is used in _STLP_alloc_proxy
	class.

	* test/unit/vector_test.cpp: New test case VectorTest::ebo to show
	problem above.

2007-02-21  Francois Dumont  <dums@stlport...>

	* src/c_locale_win32/c_locale_win32.c: Fixed __ConvertDate and
	__ConvertTime to avoid potential infinite loop (bug report
	1663604)

2007-02-16  Francois Dumont  <dums@stlport...>

	* STLport 5.1.1 released based on revision 2919. STLport-5.1.1
	tag created.

2007-02-14  Francois Dumont  <dums@stlport...>

	* stlport/stl/config/_intel.h: Configuration fix, Intel compiler
	before 8.1 have problem with template method specialization. Thanks
	Dragan Tubic.

2007-02-09  Francois Dumont  <dums@stlport...>

	* test/unit/locale_test.cpp: Enhance LocaleTest::collate_facet
	test case to reveal a bug in glibc localization portage.

	* src/c_locale_glibc/c_locale_glibc2.c: Fixed _Locale_strcmp
	and _Locale_strcmp and _Locale_strwcmp implementation to take
	into account buffer size, comparison used to always been done on the
	whole input strings up to the termination character.

	* stlport/stl/type_manips.h, test/unit/mvctor_test.cpp,
	type_traits_test.cpp: Remove relation between STLport __true_type and
	__false_type and homonyms ones in libstd++. Add workaround in the 2
	test suite requiring use of those types.

2007-02-08  Francois Dumont  <dums@stlport...>

	* stlport/stl/_threads.h, src/locale.cpp: Add missing parenthesis
	in some macro checks thanks Jan Echternash bug report 1653966.

	* test/unit/locale_test.cpp: Made LocaleTest::collate_facet test
	really meaningful even if it requires french locale support for
	part of it.

2007-02-01  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/stl/config/_solaris.h: __LONG_MAX__ defined on
	64-bits SPARCs. Thanks Aleksey Sanin.

	* stlport/stl/_sparc_atomic.h, stlport/stl/_threads.h:
	fixes for modern SPARCs. Thanks Aleksey Sanin.

2007-01-28  Francois Dumont  <dums@stlport...>

	* stlport/stl/debug/_deque.h: Fix iterator invalidation in erase
	of an iterator range thanks to Steve Lobasso indirect report (bug
	1645657).

	* test/unit/deque_test.cpp: New test case for deque erase methods.

2007-01-19  Francois Dumont  <dums@stlport...>

	* stlport/stl/_locale.h, src/locale.cpp: Add throw() specification
	on locale default constructor. Add const qualifier on locale::combine
	method. Fixed combine implementation to correctly combine
	*this with other locale instance.

	* src/locale_impl.h: Removed _get_Locale_impl and
	_copy_Nameless_Locale_impl already defined in stlport/stl/_locale.h.

	* src/locale_impl.cpp: In _Locale_impl::insert add check that we
	are working on 2 different facet instances before substitution.

	* test/unit/locale_test.cpp: Add test case for locale::combine
	method.

2007-01-12  Francois Dumont  <dums@stlport...>

	* c_locale.h, c_locale_dummy.c, c_locale_glibc.c, c_locale_glibc2.c,
	c_locale_win32.c: Creation of 2 new functions in the localization
	framework _Locale_init and _Locale_final to allow localization
	implementations to initialize and release any necessary resources.

	* src/iostream.cpp: Call _Locale_init during io streams initialization
	and _Locale_final at end.

	* c_locale_win32/c_locale_win32.c: Add synchronization for locale
	lcid look up from name required in multithreaded environment. Two
	threads instanciating two facet instances from a given name might
	have collide resulting in an undefined behavior. Critical section
	used for synchronization is initialized in _Locale_init and freed
	in _Locale_final.

	* c_locale_win32/c_locale_win32.c: Add several fields in
	_Locale_time struct to avoid use of static buffers in some locale
	support functions like _Locale_d_t_fmt _Locale_long_d_t_fmt...
	Moreover time format cannot be truncated anymore.

2007-01-08  Francois Dumont  <dums@stlport...>

	* stlport/stl/_deque.c: Patch from Kevin Lin to fix iterator
	returned by insert at position method.

	* test/unit/deque_test.cpp: Add test case for the deque::insert
	methods.

2006-12-06  Francois Dumont  <dums@stlport...>

	* STLport 5.1.0 released based on STLPORT_5_1 branch revision 2750.

2006-11-27  Francois Dumont  <dums@stlport...>

	* stlport/stl/config/_windows.h: Patch from Michael Fink to check
	inclusion of winbase.h and windows.h.

2006-11-24  Francois Dumont  <dums@stlport...>

	* stlport/stl/_fstream.h, src/fstream.cpp, iostream.cpp: Restore
	computation of the system dependant page size that was hardcoded
	to 4096. Initialisation code has been moved to a static method
	called just after Standard iostream initialisation. This code used
	to be in the _Filebuf_base constructor that might have been called
	simultaneously by several threads.

2006-11-17  Francois Dumont  <dums@stlport...>

	* stlport/stl/config/_macosx.h: Add endianess configuration.

2006-11-16  Francois Dumont  <dums@stlport...>

	* test/unit/resolve_name.cpp: Clean most of MSVC6 workaround, only
	one has been kept to have the test pass.

2006-11-13  Francois Dumont  <dums@stlport...>

	* stlport/stl/_cwchar.h: Patch from Michael Fink to fix EVC3
	missing mbstate_t definition.

2006-11-07  Francois Dumont  <dums@stlport...>

	* stlport/stl/_threads.h: Removed _Atomic_swap_struct export
	that should be useless as completely inlined. Moreover it was
	generating a compilation error using MSVC 2005 under Windows
	64 bits.

2006-10-26  Francois Dumont  <dums@stlport...>

	* test/unit/codecvt_test.cpp: Removed try/catch blocks not
	supported by platform missing exception support and moreover
	useless as we know the code called in the try and this code
	do not throw (thanks Michael Fink report).

	* build/Makefiles/nmake/targetdirs.mak, lib/clean.mak, app/clean.mak:
	Complete clobber and distclean rules to really clean all generated
	stuffs.

	* build/Makefiles/nmake/top.mak: Patch from Gary Bartlett to make nmake
	'all' rule the default rule.

2006-10-25  Francois Dumont  <dums@stlport...>

	* src/dll_main.cpp: Fix syntax error '>>' rather than '> >' in
	a _STLP_alloc_proxy explicit instanciation.

	* stlport/stl/_unordered_set.h: Fix template method for the
	associative container extension, use _KT type rather than key_type.

2006-10-20  Francois Dumont  <dums@stlport...>

	* stlport/stl/config: Removed some used macros
	  _STLP_AUTOMATIC_TYPE_TRAITS
	  _STLP_UNINITIALIZABLE_PRIVATE
	  _STLP_STATIC_ARRAY_BUG
	  _STLP_FULL_ADL_IMPLEMENTED

	* test/unit/codecvt_test.cpp: Ignore test when
	_STLP_NO_MEMBER_TEMPLATES defined.

2006-10-20  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/stl/_cwchar.h: fix HP-UX problem with WCHAR_MIN, WCHAR_MAX
	[Boris Gubenko].

2006-10-19  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* test/unit/sstream_test.cpp: check bugreport #1580020, not confirmed;
	[bug in gcc 4.1.2-svn, compiler under development].

2006-10-17  Francois Dumont  <dums@stlport...>

	* stlport/stl/_cwchar.h: Restore code to define potentially missing
	WCHAR_MIN, WCHAR_MAX macros. It used to be in _mbstate_t.h but was
	missing some native includes to work, in _cwchar.h everything should
	be fine.

	* test/unit/codecvt_test.cpp: Fix C cast that was losing const
	qualifier.

	* stlport/stl/_mbstate_t.h: Avoid definition of _STLP_NO_MBSTATE_T when
	using own mbstate_t definition in _STLP_USE_NO_IOSTREAMS mode. This macro
	is not supported anymore and should be fixed or removed in future version.
	Own mbstate_t will be defined even in no iostreams mode.

	* stlport/stl/config/_evc.h: Now that mbstate_t situation is clear EVC3
	defines _STLP_NO_NATIVE_MBSTATE_T rather than directly defining it in
	the config file. 

	* test/unit: Several fixes to build with _STLP_NO_EXTENSIONS and
	_STLP_NO_ANACHRONISMS.

2006-10-16  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/stl/_mbstate_t.h: this header may be included from system
	stddef.h, without wchar.h---defines of wchar limits isn't good place
	here [WCHAR_MAX, etc.].

	* test/unit/cwchar.cpp: correct test to hilight problem above.

2006-10-14  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* test/unit/cwchar.cpp, build/test/unit/Makefile.inc: test a few macros
	related to wchar. Inspired by problems in STLPORT_5_1 and boost::regex.

2006-10-12  Francois Dumont  <dums@stlport...>

	* stlport/stl/_numpunct.h, src/numpunct.cpp: numpunct facet _M_truename
	_M_falsename and _M_grouping are not static anymore. This seems useless
	and moreover was introducing static initialisation order and threading
	issues.

	* stlport/stl/c_locale.h, _mbstate_t.h, src/c_locale.h, c_locale.c:
	New mbstate_t policy. When no mbstate_t in native library STLport defines
	one for its own need in localisation support. This mbstate_t is simply
	an int defined in global namespace and imported to STLport namespace.
	Internal localisation framework is nt anymore in STLport namespace but
	in the global one as it is normaly a C framework.

	* stlport/stl/config/_bc.h: Defines _STLP_NO_NATIVE_MBSTATE_T rather
	than internal _STLP_USE_OWN_MBSTATE_T macro.

	* stlport/stl/config/_evc.h: Add comment for EVC3 users, this platform
	should define _STLP_NO_NATIVE_MBSTATE_T, but I have not the platform
	to check...

	* build/Makefiles/gmake/bcc.mak: Do not force anymore built of C sources
	as C++.

	* test/unit/string_test.cpp, istmit_test.cpp: Fixed macro checks to make
	tests buildable even when _STLP_NO_IOSTREAMS is defined.

2006-10-09  Francois Dumont  <dums@stlport...>

	* test/unit/codecvt_test.cpp: Fix use of mbstate_t to make it more
	portable.

2006-10-06  Francois Dumont  <dums@stlport...>

	* stlport/stl/_alloc.h, _alloc.c: Fixed __debug_alloc implementation
	to avoid unjustified assertion about wrong size of buffer to
	deallocate, thanks David Deakins and verntx on sourceforge.

	* test/unit/vector_test.cpp: Add test for bug above.

	* stlport/wchar.h, stl/_cwchar.h, _istream.h, _limits.h, _locale.h,
	_threads.h, char_traits.h, type_traits.h, _mbstate_t.h: Fix regression
	introduce by inclusion of mbstate_t.h in wchar.h. Now _mbstate_t.h is
	only included at end of wchar.h and _cwchar.h. All places where _mbstate_t.h
	was used are now including _cwchar.h.

2006-10-05  Francois Dumont  <dums@stlport...>

	* build/Makefiles/gmake/bcc.mak: Use -P compiler to force build of C
	translation as C++ because of the mbstate_t problem.

	* build/Makefiles/gmake/lib/bcc.mak, rules-a.mak: Fix Borland tlib call
	syntax thanks mbkenny.

	* stlport/stl/wchar.h: Add include of internal _mbstate_t.h file to
	know STLport status regarding mbstate_t configuration.

	* stlport/stl/c_locale.h: When building platform localisation support
	as C++ struct declaration are done in STLport namespace.

	* src/c_locale.h: Removed _mbstate_t.h include that is now included
	from wchar.h or _cwchar.h depending on C or C++ build. Removed #error
	done too early (see next comment).

	* src/c_locale.c: Add #error statement when building STLport on a platform
	having real localisation support but no native mbstate_t definition. In this
	case c_locale.c must be built as a C++ translation unit.

	* src/c_locale_win32/c_locale_win32.c: Add Borland workaround to avoid
	compilation error now that it is build as a C++ translation unit.

	* stlport/stl/_mbstate_t.h: Now that this file is not included from outside
	world we can include internal _cwchar.h rather than cwchar. Removed
	a wint_t workaround already existing in _cwchar.h. Removed Borland workaround
	that was defining mbstate_t when using this file in a C context, it was
	moreover different than the definition in C++ ! Add a pure C declaration of
	mbstate_t when in C.

2006-10-04  Francois Dumont  <dums@stlport...>

	* src/c_locale.h: Add #error to signal issue when building c_locale.c
	as a C source when STLport uses its own mbstate_t definition.

	* src/num_put_float.cpp: Modification in Cygwin native lib headers
	revealed that we were missing ieeefp.h include.

	* src/dll_main.cpp, stlport/stl/_threads.h: Fix export of
	_Atomic_swap_struct for compilers supporting export of templates.

	* stlport/stl/config/_hpacc.h: Some cleanup (unknown _STLP_NO_KOENIG_LOOKUP
	macro) and formating fixes.

	* stlport/stl/_bvector.h: Use _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS
	rather than reproducing the workaround hidden by this macro.

	* test/unit/vector_test.cpp: Add test case to check iterators comparisons.

2006-09-26  Francois Dumont  <dums@stlport...>

	* src/allocators.cpp: Reorder code blocks to fix build when using
	_STLP_LEAKS_PEDANTIC.

	* stlport/stl/_num_put.c: Restore __len >= 2 check in
	__copy_integer_and_fill function. It has been removed on the
	2006-07-11, at this time STLport always add the base information
	even for 0 value. This modification has been rollback but not this
	check.

	* test/unit/num_put_get_test.cpp: Add check for above fix.

2006-09-26  Francois Dumont  <dums@stlport...>

	* src/c_locale_win32/c_locale_win32.c: Add check of code page when
	specified in locale name.

	* src/c_locale_win32/c_locale_win32.c: Add checks in __ConvertDate
	and _Locale_t_fmt to avoid potential buffer overflow.

	* src/c_locale_win32/c_locale_win32.c: Create __GetLocaleInfoUsingACP
	function that merge a call to GetLocaleInfoA and a call to
	__ConvertFromACP in one call, the latter function has been removed.

	* src/c_locale.h: Restore _STLP_BEGIN_NAMESPACE when STLport use
	its own mbstate_t definition which is only available in STLport
	namespace. Fix Borland regression.

	* stlport/stl/_mbstate_t.h: Replace stl/_cwchar.h include with
	a cwchar one as this file is included from the outside world when
	building STLport lib.

2006-09-25  Francois Dumont  <dums@stlport...>

	* test/unit/codecvt_test.cpp: New test case for the codecvt
	facet.

	* test/unit/unordered_test.cpp: size_t replace by int to avoid
	64bits issue warning.

2006-09-21  Francois Dumont  <dums@stlport...>

	* stlport/stl/c_locale.h: Patch from Boris Gubenko to avoid
	direct inclusion of internal header from this header that is
	access from the outside world when building STLport lib.

2006-09-20  Francois Dumont  <dums@stlport...>

	* test/unit/allocator_test.cpp: Add new test case for allocation of
	empty buffer.

	* test/unit/fstream_test.cpp: Use a variable to always point to the same
	test file and adopt a 'Standard' file name 'test_file.txt'.

	* stlport/stl/_hash_fun.h: Rollback 2006-08-26 Petr modification that
	was introducing a regression with MSVC compilers.

	* stlport/stl/_fstream.c: First attempt to fix seekoff basic_filebuf
	implementation when dealing with a codecvt facet having variable
	encoding. This fix is surely not complete, discussion with Uli is not
	over.

2006-09-13  Francois Dumont  <dums@stlport...>

	* stlport/stl/_exception.h: Made a previously general Windows 64 bits
	workaround specific to the cross compiler coming with PSDK. Thanks
	Igor Pavlov.

2006-09-11  Francois Dumont  <dums@stlport...>

	* stlport/stl/_num_put.c: Modification in __do_put_integer to avoid
	a Hp aCC workaround.

2006-09-11  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/stl/_algo.c: search_n with predicate fail in case
	when subsequence size is 1; thanks Timmie Smith.
	
	* test/unit/alg_test.cpp: test for problem.

2006-09-08  Francois Dumont  <dums@stlport...>

	* src/c_locale_win32/c_locale_win32.c: Modification in __GetLCIDFromName
	to support the Chinese_Taiwan locale. Add of a __GetLCID call when first
	call to it using non NLS mapping fails.

	* src/c_locale_win32/c_locale_win32.c: Change __ParseLocaleString
	implementation to correctly handle locale with a name having '.' in
	the language or country part like in 'Chinese_Hong Kong S.A.R..950'.

2006-09-05  Francois Dumont  <dums@stlport...>

	* build/lib/configure.bat: Fixed comment for --rtl-dynamic and
	--rtl-static options, impact on macros to uncomment in hosts.h
	config file was inversed. Thanks Igor Pavlov.

	* build/lib/configure.bat, doc/FAQ, doc/README.msvc,
	stlport/stl/config/user_config.h, _hpacc.h: Replaced references to
	_site_config.h by hosts.h. Thanks Igor Pavlov.

2006-08-30  Francois Dumont  <dums@stlport...>

	* stlport/stl/_cmath.h, _cstdlib.h: Patch from Boris Gubenko, Hp aCC
	native Standard	lib already define math functions in global namespace.
	
	* stlport/stl/_num_put.c: Patch from Boris Gubenko, Hp aCC before version
	60000 do not consider 'const ptrdiff_t' as const enough to be used in a
	static buffer declaration.

2006-08-26  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/stl/_hashtable.c: allow smaller bucket counts for
	hashtable. Thanks Herbert Duerr.

	* stlport/stl/_hash_fun.h: use primary types for hasher, not
	typedefs.

	* stlport/stl/type_manips.h: workaround for __true_type/__false_type
	for various versions gcc (oh, yes, gcc, it's real pain to detect
	real version of libstdc++)
	
2006-08-10  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/stdlib.h: include errno.h for aCC, in case of -mt option in force.
	This solve errno problem on HP-UX. Thanks Boris Gubenko.

2006-08-09  Francois Dumont  <dums@stlport...>

	* stlport/stl/config/_msvc.h: Add _STLP_NORETURN_FUNCTION for MSVC
	compilers.

	* stlport: Move place of _STLP_FUNCTION_THROWS in function declaration to
	make msvc compiler happier, gcc do not care about position of this
	attribute.

	* stlport/stl/_ioserr.h: Fixed specification of STLport configuration file
	in #error statement.

2006-08-04  Francois Dumont  <dums@stlport...>

	* stlport: Create _STLP_FUNCTION_THROWS depending on _STLP_NORETURN_FUNCTION
	and also taking into account exception handling configuration.

	* test/unit/alg_test.cpp, istmit_test.cpp: Fixes to make test buildable with
	native compiler Standard library.

2006-08-03  Francois Dumont  <dums@stlport...>

	* build/Makefiles/nmake/evc8.mak: Patch from Ulrich Echkardt to activate
	whole program optimization.

2006-07-31  Francois Dumont  <dums@stlport...>

	* Patch from Michael Fink to fix EVC emulator build.

2006-07-26  Francois Dumont  <dums@stlport...>

	* src/fstream.cpp: Fixed MMAP_CHUNK definition, an offset type is signed.

	* Creation of the 5.1.0 RC2 package.

	* Creation of STLPORT_5_1_RC2 tag

2006-07-25  Francois Dumont  <dums@stlport...>

	* stlport/stl/config/_system.h, _windows.h: Fixed MinGW config that also
	need _windows.h.

	* stlport/stl/config/_mingw.h: Removed, conflict with platform system
	header.

2006-07-22  Francois Dumont  <dums@stlport...>

	* stlport/stl/config: Add _STLP_PLATFORM and _STLP_COMPILER repectively
	containing STLport detected platform and compiler names. Some names
	are surely not accurate and will be fixed but introducing those macros,
	especially _STLP_COMPILER, help to report detection issue.

	* stlport/stl/config/_system.h: Change macro checks in order to guaranty
	that only one platform and only one compiler configuration file will be
	included.

	* stlport/stl/config/_cygwin.h, _mingw.h: Added

	* stlport/stl/config/features.h: Removed _STLP_NO_MEMBER_TEMPLATE_CLASSES
	check when _STLP_USE_TEMPLATE_EXPRESSION is activated.

	* stlport/stl/config/_gcc.h, features.h: Add _STLP_NORETURN_FUNCTION
	to signal function not returning, under gcc we use __attribute__((noreturn)). 

	* src/locale_impl.h, stlport/stl/_ios_base.h, _locale.h, _range_errors.h,
	_rope.h, _string_base.h, _vector.h, debug/_debug.h: Add
	_STLP_NORETURN_FUNCTION to function that encapsulate raising of exceptions.
	This help to limit warnings about uninitialized variable before use under
	gcc.

2006-07-18  Francois Dumont  <dums@stlport...>

	* test/unit/unordered_test.cpp: Change Key data type from size_t
	to the more portable int. Fix what seems to be a bad code generation
	of gcc under Linux 64 bits resulting in a test failure.

2006-07-17  Francois Dumont  <dums@stlport...>

	* test/unit/alg_test.cpp: New test for find_first_of algo.

	* stlport/stl/config/user_config.h, features.h: string template
	expressions is not a transparent feature, some compilers (VC6)
	are experimenting ICE with it or some other (gcc) do not accept
	it when extending string class (see mystring in
	test/unit/string_test.cpp). So default STLport configuration will
	be without string template expression, _STLP_DONT_USE_TEMPLATE_EXPRESSION
	has been replaced by _STLP_USE_TEMPLATE_EXPRESSION.

2006-07-16  Francois Dumont  <dums@stlport...>

	* test/unit/mvctor_test.cpp: Patch from Michael Fink to avoid a EVC
	ARM crash.

2006-07-13  Francois Dumont  <dums@stlport...>

	* stlport/stl/_num_put.c: Rollback modif above, according C printf doc
	0 value shouldn't show their base.

	* stlport/stl/type_traits.h: Avoid instanciation of _IsCVConvertible if
	not dealing with pointers. Systematical instanciation was giving
	compilation error as soon as type had a special memory alignment, such
	types cannot be pass by value in function calls. Thanks andy2222 from
	sourceforge.

	* build/Makefiles/nmake/evc3.mak, evc4.mak, evc8.mak: Patch from Ulrich
	Eckhardt to remove commctrl.lib dependency, for the moment evc3 and evc4
	only contains a note about this potentially useless dependency.

	* stlport/stl/debug/_string.h: Add missing copy methods in the debug
	string implementation thanks Patrick Bennett report.

	* test/unit/string_test.cpp: New copy test case for string::copy.

	* stlport/stl/_algo.h: Add missing _STLP_PRIV namespace scope in calls
	to __find_first_of thanks Patrick Bennett report.

2006-07-11  Francois Dumont  <dums@stlport...>

	* stlport/stl/debug/_deque.h, _list.h, _slist.h, _string.h, _vector.h:
	Extend use of _Non_Dbg_iter function in all template methods dealing
	with iterator range.

	* _num_put.c: Fix to show base in octal or hexadecimal mode even for
	0 value.

	* stlport/stl/_istream.c: Avoid modification of value to extract in
	formatted input of short and int when value would overflow.

	* test/unit/num_put_get_test.cpp: Add some tests for above fixes.

	* test/unit/iostream_test.cpp: New tests for general stream
	manipulations.

	* stlport/stl/_istream.h: Fix ws iostream function, it do not set failbit
	anymore when stream is in eof state.

	* build/lib/msvc.mak: Generation of config.mak is not mandatory anymore
	as Intel compiler do not need it for the moment. Only a COMPILER_NAME
	is mandatory which is given by icl.mak for Intel compilers and by
	config.mak for Microsoft ones.
	
2006-07-10  Francois Dumont  <dums@stlport...>

	* stlport/stl/debug/_iterator.h: Creation of _Non_Dbg_iter function
	returning native iterator of special debug iterator with
	compilers supporting partial template function ordering. Fix
	a MSVC .Net 2003 issue that seems to be related to a too important
	template depth.

	* stlport/stl/debug/_deque.h, _list.h, _slist.h, _string.h, _vector.h:
	Use new _Non_Dbg_iter function in constructors from iterator
	range.

2006-07-07  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* build/lib/configure: rollback changes 4 Jul 2006 19:42:55,
	it's definitely wrong (phrase with quotes ['] requires double
	quotes ["]).

2006-07-06  Francois Dumont  <dums@stlport...>

	* stlport/stl/_num_put.c: Small refactoring with introduction
	of the __do_put_integer function for integer types output. Moreover
	static buffer size used for formating is now based on output
	type sizeof.

	* stlport/stl/_ostream.c: Add some assertion before cast to check that
	no significant digit is lost. Add cast to long in int and short output
	in order to make type of expression more explicit and correct. This
	fix the bug report from Geoffrey Bache on sourceforge about output of
	-1 ont value on 64bits linux.

	* test/unit/floatio_test.cpp: Removed, all code moved to NumPutGetTest
	test fixture.

	* test/unit/num_put_get_test.cpp: New, contains all tests regarding
	input/output of numeric values (locale independant).

	* test/unit/locale_test.cpp: locale independant tests of numeric input/
	output moved to NumPutGetTest test fixture.

2006-07-04  Francois Dumont  <dums@stlport...>

	* stlport/stl/_rope.h, _rope.c: Patch from Peter Hercek to fix a
	missing null termination in rope constructor from a character 
	and a buffer overrun.

	* stlport/stl/_rope.h: Removed special _S_rounded_up implementation
	for other types than char and wchar_t. rope implementation is
	expecting this method to always return a size > to the given size in
	order to store the terminating null character.

	* stlport/stl/_rope.c: Fix reference counter management to avoid memory
	leak in _S_destr_concat_char_iter.

2006-06-30  Francois Dumont  <dums@stlport...>

	* src/num_put.cpp, num_put_float.cpp: Patch from Glen Summers
	to fix float output using locale with grouping and float value
	has no decimal.

	* test/unit/locale_test.cpp: Add some tests showing above bug.

2006-06-29  Francois Dumont  <dums@stlport...>

	* stlport/stl/_algo.h, _algo.c, _algobase.h, _algobase.c,
	_hashtable.c: Patch from Andriy Syrovenko to fix implementation
	of __equal_range, __lower_bound, __upper_bound when dealing with
	a key whom type is different from the value_type of the iterator.

	* test/unit/equal_test.cpp: Add some tests to show above bug.

2006-06-28  Francois Dumont  <dums@stlport...>

	* stlport/stl/_string_sum_methods.h, debug/_string_sum_methods.h:
	Small refactoring and simplification of code to avoid a parameter
	with default value. This fixing an ICE using MSVC6.

	* test/unit/string_test.cpp: Ignore the newly introduce te_tmp
	test using MSVC6.

2006-06-27  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/stl/_list.h: fix bug in list.swap, thanks Viktor Govako.

	* test/unit/list_test.cpp: test for bug above.

2006-06-27  Francois Dumont  <dums@stlport...>

	* build/lib/configure: Add --with-lib_motif option to grant STLport
	users the possibility of tweaking the generated libraries name.

	* build/Makefiles/gmake/unix/lib.mak: Add code to take into account
	configured lib motif in generated library name.

	* build/Makefiles/gmake/netware/lib.mak: Looks like it needs same
	defines as the ones in cygming/lib.mak so we simply include this
	file.

	* stlport/stl/config/_evc.h: Patch from Michael Fink to fix a
	compilation error.

	* test/unit/cppunit/cppunit_mini.h: Patch from Michael Fink to
	avoid unused parameter warning.

2006-06-23  Francois Dumont  <dums@stlport...>

	* stlport/stl/_pair.h, _bvector.h, config/_evc.h: Patch from
	Ulrich Eckhardt to extend an evc4 MIPS workaround for eVC8
	and to generalize little endian configuration.

	* DMC patch from Eric Sanford. Define _STLP_NO_FUNTION_TMPL_PARTIAL_ORDER
	so that many ignored unit test could be now passed. Also specify
	Intel 386 instruction set during compilation to limit link errors.

2006-06-22  Francois Dumont  <dums@stlport...>

	* stlport/stl/_algobase.c: Removed check of equivalent predicate
	commutativity in find algorithm. In this case, equivalence relation
	might have been implemented using a member operator == which is
	not commutative thanks Grisha Spivak report. Other checks that are
	using an explicit predicate parameter has been kept even if it forces
	STLport users to implement commutative functor.

	* test/unit/find_test.cpp: Add test to show above issue.

	* stlport/stl/_hashtable.c: Removed equivalent predicate checks
	that are useless as in _STLP_DEBUG mode the debug wrapping add this
	check in the functor used to instanciate the non debug hashtable
	implementation.

2006-06-19  Francois Dumont  <dums@stlport...>

	* STLport 5.1.0 candidate released. STLPORT_5_1 branch created in
	CVS. Version tagged STLPORT_5_1_RC1.

2006-06-17  Francois Dumont  <dums@stlport...>

	* test/unit/type_traits_test.cpp, uninitialized_test.cpp: Add
	explicit public inheritance relation to avoid an ICL warning.

	* stlport/stl/config/features.h: Add definition of
	_STLP_DEBUG_LEVEL to _STLP_STLPORT_DBG_LEVEL when _STLP_DEBUG
	is defined but _STLP_DEBUG_LEVEL hasn't been set.
	(thanks an ICL warning report)

	* stlport/stl/config/_intel.h: Remove undef of
	_STLP_NO_UNEXPECTED_EXCEPT_SUPPORT, even if the linker complains
	about not finding unexpected_exception it looks like it finally do
	not use it.

	* test/unit/cppunit/test_main.cpp: Filter definition of
	unexpected_exception when building unit test with static STLport
	lib.

2006-06-15  Francois Dumont  <dums@stlport...>

	* stlport/stl/config/features.h: Several macro renamed:
	  - _STLP_LONG_DOUBLE  -> _STLP_LONGEST_FLOAT_TYPE
	  - __DFL_TMPL_PARAM -> _STLP_DFL_TMPL_PARAM
	  - __DFL_TYPE_PARAM -> _STLP_DFL_TYPE_PARAM
	  - __DFL_NON_TYPE_PARAM -> _STLP_DFL_NON_TYPE_PARAM
	  __DFL_TYPE_ARG removed.
	
	* stlport/stl: Add char_traits template parameter in all
	istreambuf_iterator and ostreambuf_iterator instanciation where it
	was missing as some compiler might not have supported it.

	* stlport/stl/_time_facets.h, src/locale_impl.cpp: Finaly adopt a
	specific gcc workaround for definition of _Locale_time_extract_hint
	as friend of time_get_byname facet. Gcc 2.95 prefers to see a template
	method otherwise it emits a warning, we want to avoid STLport users
	to have to disable this warning. Other compilers will use a simple
	function which seems to be more portable.

	* stlport/stl/_vector.h, _pair.h: Patch from Eric Sanford for a
	really weird Borland compiler workaround that consists in adding
	a _Ret typedef in __move_traits or __type_traits traits struct
	that do not normally contain it.

	* stlport/stl/config/_bc.h: Borland free compiler do not support
	STLport container extension of template methods.

2006-06-14  Francois Dumont  <dums@stlport...>

	* test/unit: Patch from Ulrich Eckhardt to fix storage of string
	literals to const char* rather than simple char*.

	* build/Makefiles/nmake: Ulrich Eckhardt patch:
	  - /MACHINE:IX86 is obsolete and only supported for backward
	    compatibility as alias for X86. Replaced all cases of IX86
	    with X86.
	  - /NODEFAULTLIB:OLDNAMES.lib seems to also be universal so I
	    moved it to the base, too.
	  - In order to use main() as entry point under CE, use linker 
	    option /ENTRY:mainACRTStartup. This was already done for
	    evc3,4,8 but I moved it to app/evc-common.mak and documented
	    it.

	* stlport/stl/_cmath.h, config/_evc.h: Uli patch to activate long
	double support for EVC and use _hypot to implement STLport
	overload.

	* src/complex.cpp: Remove internal __stlp_hypot that is not necessary
	anymore now that STLport always define a hypot function (thanks Uli
	remark).

	* stlport/stl/config: Ulrich Eckhardt VC8/CE patch:
	  - Adapt the code to construct the paths to the native includes
	    so that it matches the changed structure. This is currently
	    only for ARM and might need more work for other targets (x86
	    works though).
	  - Make a distinction between the desktop and CE variants concerning
	    the exception support functions. These now use the same compiler
	    versions so that can't be used anymore.
	  - MS' safe string functions are not available under CE - I think,
	    need to take a closer look at Platform Builder.

	* stlport/stl: Ulrich Eckhardt to adapt STLport to VC8/CE limited
	native C library.

2006-06-13  Francois Dumont  <dums@stlport...>

	* stlport/stl/pointers/_tools.h: Add partial specialization for
	_IteWrapper helper struct so that when type to store and stored
	type are identical input iterators are not wrapped. Otherwise input
	iterators are wrapped to perform necessary casts between pointer type
	and void*.

	* stlport/stl/_cmath.h: Fixed macros definition used to define all
	math functions for compilers supporting long double but not having
	float nor long double C math functions. Thanks Ulrich Eckhardt report.
	
2006-06-12  Francois Dumont  <dums@stlport...>

	* test/unit/set_test.cpp, map_test.cpp: Replace size_t with the
	more portable int type when possible.

	* stlport/stl/pointers/_tools.h: Check that type to store is a
	pointer type before modifying predicate type for set container.
	Wrapping less functor in all cases was making move semantic tests
	to fail as predicate is not then detected as being the STLport
	less predicate.

	* stlport/stl: DMC patch from Eric Sanford. DMC do not like __ss
	variable that is a reserved keyword.

2006-06-11  Francois Dumont  <dums@stlport...>

	* build/Makefiles/nmake: Patch from Ulrich Eckhardt to use
	main rather than WinMain for EVC platform.

	* build/test/unit/gcc.mak: Removed redondant macro definition
	_STLP_USE_STATIC_LIB under cygwin/mingw as those definition
	are part of base make files.

	* stlport/stl/type_manips.h, _hashtable.h: Eric Sanford workaround
	for Borland.

2006-06-09  Francois Dumont  <dums@stlport...>

	* test/unit/cppunit: Patch from Ulrich Eckhardt to
	  - Removed a few superfluous semicolons.
	  - Made some constructors explicit.
	  - Documented the meaning of FileReporter::_myStream.
	  - Reformatted some things to not exceed 100 chars per
	    line or use several expressions/statements in one line.

	* build/Makefiles/nmake: Patch from Ulrich Eckhardt to
	  - adds support for x86 (running on e.g. a PC, so-called CEPC).
	  - adds support for MIPS or more specifically MIPSII, other MIPS
	    subtypes can easily be added.
	  - removes a line "DEFS_COMMON = /D%TARGETCPU%" from the config.mak
	    file generated for MIPS, the same functionality was moved to the
	    CPU-specific setups where it is done for other CPUs.
	  - adds an additional compiler flag so that diagnostics better
	    match what the VC8 IDE expects.

	* stlport/stl: Patch from Ulrich Eckhardt to
	  - removes several unnecessary semicolons (typically, when
	    inlining functions like "void foo() {};" where it in fact doesn't
	    hurt (due to something I consider an oversight in the standard)
	    but also doesn't make sense.
	  - fixes inconsistent indentation in three cases, one with the
	    preprocessor and two with memberfunction bodies.

	* stlport/stl/pointers/_tools.h: Add missing template method
	in _CastTraits helper struct used on compiler with no partial
	template specialization support.

2006-06-08  Francois Dumont  <dums@stlport...>

	* stlport/stl/pointers/_tools.h, _set.h: Fix problems reported by
	gcc that seems to do more check that MSVC on explicit
	instanciation of templates. Especially fixed problem introduce
	by STLport extension of set template methods.

	* build/Makefiles/gmake/aCC.mak, lib/aCC.mak: Patch from Boris
	Gubenko for Hp aCC build.

2006-06-07  Francois Dumont  <dums@stlport...>

	* stlport/stl/pointers: Restore pointer specialization feature.
	Major modifications are:

	- vector specialization is done using a qualified void pointer
	in order to keep optimization oportunities when working on
	pointers. Using a strict void* was forcing wrapping of iterators
	in template method making _BothPtrTypes struct helper failing to
	detect both pointer types.

	- Fixed set specialization thanks to explicit instanciation added
	in ptrspec_test.cpp.

	- Refactoring of algorithm to find storage type from value type.

2006-06-02  Francois Dumont  <dums@stlport...>

	* build/Makefiles/nmake: Patch from Ulrich Eckhardt for
	cleanup. Some script refactoring, wrong OPT_STLDBG_STATIC references
	replaced by OPT_STATIC_STLDBG.

	* src: Patch from Ulrich Eckhardt to cleanup locale implementation
	and fix time facet creation when using dummy locale implementation.

	* stlport/stl/config/_evc.h: Patch from Ulrich Eckhardt to fix
	endianess definition.

	* stlport/stl/debug/_hashtable.h: Create a _DbgEqual functor to
	check correct equivalent predicate implementation. Add also
	missing hash_func and key_eq methods in this mode.

	* stlport/stl/debug/_tree.h: Small refactoring in _DbgCompare
	functor.

	* stlport/stl/type_traits.h, boost_type_traits.h: Restore boost
	support.

2006-06-01  Francois Dumont  <dums@stlport...>

	* stlport/stl/_tree.h, _set.h, _map.h, debug/_tree.h: Removed
	erase template method extension, might conflict with erase
	overload taking an iterator. User workaround will be to use
	erase(find(key)).

	* stlport/stl/_hashtable.h, _map.h, _set.h, _unordered_set.h,
	_unordered_map.h, debug/_hastable.h: Add template methods extension.

	* stlport/stl/config/features.h: Add management of containers template
	method extension.

	* stlport/stl/config/_apple.h, _symantec.h: Config update based on
	config that used to be in _tree.h and _hashtable.h to remove
	container template methods extensions.

2006-05-31  Francois Dumont  <dums@stlport...>

	* stlport/stl/config/_evc.h: Patch from Michael Fink to add ptrdiff_t
	definition and forbid use of _STLP_DEBUG mode for evc 3/4 on ARM.

	* build: Ulrich Eckhardt patch for Microsoft Visual Studio 2005 for
	Embedded C++ portage.

2006-05-30  Francois Dumont  <dums@stlport...>

	* stlport/stl/type_traits.h: Rename _Is_Integer<_Tp>::_Integral and
	_Is_Rational<_Tp>::_Rational in respectively _IsIntegral<_Tp>::_Ret
	and _IsRational<_Tp>::_Ret for naming convention coherency.

	* stlport/stl/type_traits.h: Add _TrivialNativeTypeCopy helper to
	handle a number of oportunities to use memcpy/memmove in
	uninitialized_* or copy algorithms that was not cover by simply
	checking type_traits has_trivial* features.

	* stlport/stl/type_traits.h, boost_type_traits.h: Refactor _BothPtrType
	implementation, only one version is necessary as it uses _IsPtr that
	has a variable implementation depending on config.

	* stlport/stl/_vector.h: Add _DefaultZeroValue specialization for
	vector container so that a vector of vector is simply initialized
	using a memset to set everything to 0.

	* test/unit/vector_test.cpp: Add check that previous optimization
	works as expected.

	* stlport/typeinfo.h: Borland patch from Eric Sanford.

	* DMC patch from Eric Sanford

	* stlport/stl/debug/_tree.h: Patch from Ulrich Eckhardt to add missing
	count template method.

	* src/dll_main.cpp: Patch from Ulrich Eckhardt to fix strncpy
	usage.

2006-05-23  Francois Dumont  <dums@stlport...>

	* stlport/stl/_deque.h, _deque.c: Change implementation to use
	_TrivialInit new feature.

	* stlport/stl/boost_type_traits.h: Add _TrivialInit implementation
	using boost type traits.

2006-05-22  Francois Dumont  <dums@stlport...>

	* stlport/stl/type_traits.h: Add _TrivialInit helper struct to
	report if a type is trivial to initialize or not that is to say
	if the type has a trivial default constructor. Handle native types
	exception that are consider as having a trivial default constructor
	but that required a 0 initialization on explicit constructor
	call.

	* stlport/stl/_uninitialize.h: Add a helper function
	__uninitialize_init that result in a no-op if _TrivialInit returns
	__true_type.

	* stlport/stl/_vector.h: Modification of vector constructor to
	destect when it is called without an explicit default value so
	that we can call __uninitialized_init.

	* test/unit/uninitialized_test.cpp: Add test to check correct
	detection of useless initialization.

2006-05-19  Francois Dumont  <dums@stlport...>

	* test/unit/uninitialized_test.cpp: Patch from Ulrich Eckhardt
	to replace vector instance in uninitialized_copy_test by static
	array so that we are always working on pointers iterator.

	* stlport/stl/_string_operators.h: Patch from Ulrich Eckhardt to
	add missing != operators when using string template expression.

	* stlport/stl/ctype.h, config/_evc.h, _msvc.h, _windows.h,
	features.h: Patch from Michael Fink for evc3/4 platform.

	* test/unit/mvctor_test.cpp: Add of a specific Borland test case
	to report what seems to be a compiler bug but that is only
	revealed when using STLport.

	* stlport/stl/_tree.h, _set.h, _map.h, debug/_tree.h,
	pointer/_set.h: Generalized already existing extension of template
	find method on associative containers to all look up methods:
	count, erase, lower_bound, upper_bound, equal_range.

	* test/unit/set_test.cpp: Add test case for set template methods
	extension.

	* stlport/stl/_tree.c, debug/_tree.h: Removed debug check from
	non debug implementation, now debug check is injected in tree
	implementation from the tree debug implementation thanks to
	a wrapping of the predicate.

2006-05-18  Francois Dumont  <dums@stlport...>

	* stlport/stl/c_locale.h: Fix declaration of _Locale_name_hint
	struct so that compilers do not think that this struct is in
	the STLport namespace because of friend declaration.

2006-05-17  Francois Dumont  <dums@stlport...>

	* stlport/stl/_abbrevs.h: Update list of abbreviations.

	* stlport/stl/_hashtable.c: Removed _Node macro and fixed
	macros defined when _STLP_NESTED_TYPE_PARAM_BUG is defined.

2006-05-16  Francois Dumont  <dums@stlport...>

	* test/unit/type_traits_test.cpp: Add test case to check
	_TrivialUCopy helper metaprogramming class behavior.

	* stlport/stl/_vector.h, _vector.c: Replaced _TrivialAss by
	_TrivialCopy and _TrivialUCpy by _TrivialUCopy for coherency
	with type_traits.h names.

	* test/unit/type_traits_test.cpp: Add small test for correct
	impact of trivial_destructor meta info in vector implementation.

	* build/lib/configure.bat: Add comment to explain weird TARGETCPU
	check.

2006-05-15  Francois Dumont  <dums@stlport...>

	* stlport/stl/_hashtable.h, _list.h, _deque.h, _slist.h,
	_string.h, _vector.h, _move_construct_fwk.h, _rope.h:
	Fix impact of _STLP_NO_MOVE_SEMANTIC macro on library. Now,
	if defined, no move will ever happen.

	* stlport/stl/_uninitialized.h: Simplified __uninitialized_copy_fill
	prototype, only one type of iterator is allowed. It also fix
	implementation as this one was not taking into account both
	iterator value_type to consider if the operation was trivial
	or not.

	* stlport/stl/_uninitialized.h: Major code review. Remove use of
	_OKToMemcpy, remove dependency on std::copy of std::fill, all
	implementation is now similar to the one of std::copy algorithms
	except that uninitialized algo are using
	__type_traits::has_trivial_copy_constructor meta information and
	copy __type_traits::has_trivial_assign_operator.

	* test/unit/deque_test.cpp, vector_test.cpp: New test case for
	over optimization problem.

	* test/unit/map_test.cpp, locale_test.cpp, list_test.cpp, slist_test.cpp,
	unordered_test.cpp, fstream_test.cpp, stack_allocator.h: Fixed
	implementation to build with _STLP_NO_MEMBER_TEMPLATES.

	* stlport/stl/debug/_vector.h, _list.h: Add non template assign
	methods used when _STLP_NO_MEMBER_TEMPLATES is defined.

	* stlport/stl/_slist.c: Fixed sort _Slist_sort implementation, now
	call _Slist_merge template function rather than slist::merge method
	as this method do not take any predicate when _STLP_NO_MEMBER_TEMPLATES
	is defined.

	* build/test/unit/Makefile.inc, test/unit/uninitialized_test.cpp:
	New test for uninitialized_copy algo.

	* stlport/stl/type_traits.h: OKToMemCpy rename in _TrivialCopy for
	coherency with _TrivialUCopy. Moreover, thanks to refactoring in
	uninitialized_* algorithms, _TrivialUCopy now only takes into account
	__type_traits::has_trivial_copy_constructor meta information and
	not has_trivial_assign_operator.

	* stlport/stl/boost_type_traits.h: Fixed to reflect STLport
	__type_traits modifications.

	* stlport/stl/_uninitialized.h: Major code review proposed by
	Ulrich Eckhardt

	* stlport/stl/_algobase.h, _deque.h, _deque.c, _vector.h, _vector.c,
	_rope.h, _rope.c, _string.h, _string.c: Impact of previous point.

2006-05-05  Francois Dumont  <dums@stlport...>

	* test/unit/iter_test.cpp: Removed unreachable code.

	* Introduction of a new configuration macro _STLP_MSVC_LIB

	This macro is set to _MSC_VER value but can be overloaded to
	an other value. First intension was to make STLport more flexible
	for Intel C++ compiler. This compiler comes without any native
	lib and you have to bind it to a MSVC install, Intel compiler
	generate MSVC compatible code so that MSVC linker can correctly
	generate final exe or dll. To mimic MSVC compiler ICL also defines
	_MSC_VER. The problem is that definition of this macro is based
	on a compiler option and do not necessarily reflect the MSVC lib
	version ICL is binded to. Fortunately the compiler options
	responsible of _MSC_VER definition (/Qvc6, /Qvc7...) is also
	responsible of name mangling so asking for a MSVC compiler
	compatibility different than the library ICL is binded to is
	not easy. But _STLP_MSVC_LIB has been kept as it makes STLport
	configuration more clean. Now MSVC compiler version is given
	by _STLP_MSVC macro and library version by _STLP_MSVC_LIB.
	All occurences of _MSC_VER in STLport code has been replaced
	by those macros.

	* _STLP_USE_SECURIZED_BUF_FUNCTIONS replaced by the more
	intuitive _STLP_USE_SAFE_STRING_FUNCTIONS.

	* stlport/stl/config/_msvc.h: Major refactoring to isolate
	MSVC compiler config and MSVC native library config.
	
2006-05-04  Francois Dumont  <dums@stlport...>

	* build/lib/configure.bat: And information to the --lib-motif
	option as advised by Ulrich Eckhardt. Add option parameter and
	relation with _STLP_LIB_NAME_MOTIF.

	* src/messsage_facets.h: Removed implementation of private copy
	constructor and assignment operator.

	* src/c_locale_win32/c_locale_win32.c: Made
	_Locale_extract_category_name locale function static.

	* src/vc_warning_disable.h renamed in warning_disable.h as it is
	used by other compilers too (ICL)

	* build/lib/msvc.mak, evc.mak: Removed forced inclusion of
	vc_warning_disable.h file. Now this file is included from
	stlport_prefix.h.

	* build/test/unit/msvc.mak, evc.mak: Replace vc_warning_disable.h
	reference by warning_disable.h.

	* src/stlport_prefix.h: Add inclusion of warning_disable.h.

2006-05-01  Francois Dumont  <dums@stlport...>

	* test/unit/vector_test.cpp, deque_test.cpp, string_test.cpp:
	Removed unreachable code, reported by ICL 9.0.

	* test/unit/mvctor_test.cpp: Removed variable declaration hiding
	previous one + made local functions static.

	* stlport/stl/config/_msvc.h: Only use abbreviate symbols for
	MSVC compiler and not for all compilers defining _MSC_VER. Also
	removed some ICL specific configuration.

	* src/lock_free_slist.h: Removed 'no return statement' warning
	for ICL too.

	* src/message_facets.h: Made _Message_impl copy constructor and
	assignment operator private to avoid warning as _M_cat member
	data has private copy constructor and assignment operator too.

	* stlport/stl/_cstdlib.h: Made additional definition of
	div(long, long) based on native library (_MSC_VER) rather than on
	compiler used (_STLP_MSVC).

	* stlport/stl/config/_intel.h: Fix Intel C++ 9.0 compiler
	configuration with and without /Qvc6 option.

	* src/dll_main.cpp: Add std::unexpected implementation that ICL
	need but that is not part of MSVC6 native lib library.

	* test/unit/test_main.cpp: Add std::unexpected implementation that
	ICL need but that is not part of MSVC6 native lib library.

2006-04-30  Francois Dumont  <dums@stlport...>

	* stlport/stl/_alloc.h: Moved __type_traits specialization for
	std::allocator class before use in _STLP_alloc_proxy
	instanciation.

	* test/unit/istmit_test.cpp: Fixed macro checks to correctly
	report ignored test.

2006-04-27  Francois Dumont  <dums@stlport...>

	* test/unit/full_streambuf.h, deque_test.cpp, vector_test.cpp:
	Add STLPORT macro check when checking _STLP_USE_EXCEPTION macro.

	* test/unit/string_test.cpp: Fix some macro checks to correctly
	report ignored tests.

	* test/unit/mvctor_test.cpp: Fix tests to build it with native
	MSVC 2005 Standard library. Looks like this implementation do
	not follow atmortized constant time vector::push_back complexity.

	* stlport/stl/config/_msvc.h: Clearly report status regarding build
	of STLport using the MSVC /clr option.

	* stlport/stl/_threads.h: Remove MSVC .Net 2002 annoying warning.

2006-04-26  Francois Dumont  <dums@stlport...>

	* src/ctype.cpp: Fix ctype::scan_is and scan_not method behavior as
	required by C++ Standard 22.2.1.1.2.

	* test/unit/locale_test.cpp: Fix ctype facet test according
	modifications above.

2006-04-25  Francois Dumont  <dums@stlport...>

	* stlport/stl/_istream.c: Small refactoring to avoid a uninitialized
	warning for __do_handle_exceptions local variable.

	* stlport/stl/_deque.h: Ditto with __cur_node variable in
	_M_range_initialize method.

	* stlport/stl/_deque.c: Ditto with __cur in _M_fill_initialize.

	* stlport/stl/config/_auto_link.h: Removed auto link feature when
	building a C translation unit thanks Michael Fink.

	* src/time_facets.cpp: Add missing calling convention on
	__write_formatted_time internal function.

2006-04-24  Francois Dumont  <dums@stlport...>

	* test/unit/cppunit/cppunit_mini.h: Limit scope of try/catch block to
	the test case call so that CppUnit function methods are correctly
	called.

	* test/unit/type_traits_test.cpp: Fix use of
	CPPUNIT_IGNORE/CPPUNIT_STOP_IGNORE macros so that ignored tests are
	correctly reported as ignored.

2006-04-20  Francois Dumont  <dums@stlport...>

	* stlport/stl/config/_solaris.h: Replace C++ style comment
	in C style.

	* stlport/stl/_cmath.h: Add macro definition for environment
	having long double but no float neither long double math functions
	This is a Solaris configuration.

	* src/acquire_release.h, c_locale.h, locale.cpp,
	locale_catalog.cpp, locale_impl.cpp, locale_impl.h,
	message_facets.h, facets_byname.cpp: Add a locale hint feature
	to improve locale construction from name. This is used by
	Win32 locale implementation that broadcast the locale lcid
	thanks to this hint. With this modification, LocaleTest fixture
	runs 5 times faster.

	* stlport/stl/_collate.h, _ctype.h, _monetary.h, _numpunct.h,
	_time_facets.h: Add _Locale_extract_hint function as friend
	to some locale facet in order to access locale implementation
	specific structure and potentially extract the hint.

	* stlport/stl/_codecvt.h, _collate.h, _ctype.h, _messages_facets.h,
	_monetary.h, _numpunct.h, _time_facets.h: Add _Locale_name_hint pointer
	parameter to facet by name constructor.

	* build/Makefiles/nmake/lib/clean.mak, rules-so.mak, rules-install-so.mak:
	Based on Dr Dobb's Richard Grimes article, change management of
	manifest file for STLport shared library. According this article
	.manifest file is not taken into account for a library, only .exe one is.
	Solution is to integrate .manifest file into the .dll as an unmanaged
	ressource with id 2. We now do so thanks to the mt manifest tool.

	* stlport/stl/_pair.h: Remove __move_traits partial specialization for
	Borland free compiler, it was introducing weird compilation error.

	* stlport/stl/_move_construct_fwk.h: Add a helper struct for __move_traits
	feature.

	* build/test/unit/msvc.mak: Prepare makefile to easily build unit tests
	without STLport.

2006-04-15  Francois Dumont  <dums@stlport...>

	* stlport/stl/config/host.h, compat.h, debug/_debug.c: Removed
	_STLP_NO_DEBUG_EXCEPTIONS configuration macro that is similar
	to the new _STLP_DEBUG_MODE_THROWS except that new thrown macro
	is catchable (std::runtime_error exception) and contained message
	is more explicit.

	* stlport/stl/debug/_tree.h: Add find template method STLport
	extension to the debug version of binary tree thanks Mike Flamming.

2006-04-11  Francois Dumont  <dums@stlport...>

	* src/complex_io_w.cpp: Removed, content moved to src/complex_io.cpp
	to avoid build of an empty translation unit that can generate linker
	warning (noticed with MSVC 2005 express)

	* build/lib/Makefile.inc: Updated before of above modification.

	* test/unit: Ignore many tests rather than hide it depending on
	build configuration.

	* test/unit/cppunit/file_reporter.h: Restored output existing before
	introduction of monitoring feature.

2006-04-10  Francois Dumont  <dums@stlport...>

	* test/unit/cppunit/cppunit_timer.h, test_main.cpp, file_reporter.h:
	Add -m option to activate monitoring of unit tests. This option add
	timing for each test and a global timing information. Timer class has
	been created for Win32 API.

	* stlport/stl/_bitset.h: Hide STLport bitset extensions _Find_first
	and _Find_next.

	* test/unit/bitset_test.cpp: Adapt tests to previous modification.

	* stlport/stl/_string.h: Replace memory include with stl/_alloc.h
	to limit header dependencies. Also add include of stl/_uninitialized.h.

	* test/unit/fstream_test.cpp: Add missing memory include.

	* test/unit/locale_test.cpp: Ditto.

	* stlport/stl/_queue.h, _string.h, _rope.h, debug/_tree.h: Replace
	stl/_function.h include with the smaller _function_base.h include.
	
2006-04-07  Francois Dumont  <dums@stlport...>

	* stlport/stl/_new.h: Fixed management of _STLP_NO_BAD_ALLOC
	and _STLP_NEW_DONT_THROW_BAD_ALLOC macros.

	* stlport/stl/config/_dm.h: Change DMC configuration, use STLport
	own namespace rather than std so that STLport can check config.

	* stlport/typeinfo.h: Fix DMC configuration now that it uses own
	STLport namespace.

2006-04-05  Francois Dumont  <dums@stlport...>

	* stlport/stl/_tree.h, _list.h: Fixed swap implementation to
	correctly swap allocators instance. Moreover list swap implementation
	was wrong since list splice has been modified to correctly handled
	allocators with state.

	* test/unit/slist_test.cpp, list_test.cpp, set_test.cpp: Add tests for
	above fix.

	* stlport/stl/_deque.h: Fix swap method as deque has 2 allocator
	instances, this should perhaps be modified one day to only keep 1...

	* stlport/stl/_rope.h: Fix swap method and removed assertion for
	equivalent allocator instances even if there are still other assertions
	in the implementation.

	* stlport/stl/_function_base.h: Add swap method for less functor if
	partial template workaround is activated. This is for surprising
	compilers supporting partial template specialization but no template
	function partial ordering.

	* stlport/stl/_algobase.h: Add Borland workaround for swap function
	thanks Eric Sanford.

	* test/unit/type_traits_test.cpp: Borland workaround for is_convertible
	function thanks Eric Sanford.

	* stlport/stl/config/_bc.h: Borland compilers do not support template
	function partial ordering thanks Eric Sanford.

	* test/unit/stack_allocator.h: Add Borland workaround to correctly
	call StackAllocator::swap method when swaping STL containers in
	allocator_with_state tests.

	* test/unit/config_test.cpp: New test
	ConfigTest::template_function_partial_ordering.

	* test/unit/slist_test.cpp, list_test.cpp, set_test.cpp: Add swap tests
	with empty containers.

	* src/vc_warning_disable.h: Remove deprecated comments.

	* stlport/stl/_pair.h: Removed Borland checks thanks Eric Sanford.

	* Patch from Michael Fink to remove Windows CE support that is
	no more supported by Microsoft.

	* stlport/stl/config/_native_headers.h: New, contains all macros
	relative to native headers access that used to be in features.h.

	* stlport/stl/config/_evc.h, _como.h: Add include of _native_headers.h
	as those compilers need to include native headers for correct
	configuration.

	* stlport/stl/config/features.h: Use _native_headers.h.

	* test/unit/locale_test.cpp: Made LocaleTest::facet_id test STLport
	specific rather than Borland specific. Moreover, without STLport, test
	is ignored rather than hidden.

	* stlport/stl/_num_put.h, _num_put.c: Removed useless export of
	num_put<char, char*>, num_put<wchar_t, wchar_t*> not required by
	the Standard.

	* stlport/stl/_num_get.h, _num_get.c: Ditto for
	num_get<char, const char*>, num_get<wchar_t, const wchar_t*>

	* stlport/stl/_moneytary.h, _moneytary.c: Ditto for
	money_get<char, const char*>, money_get<wchar_t, const wchar_t*>,
	money_put<char, char*>, money_put<wchar_t, wchar_t*>

	* stlport/stl/_time_facets.h, _time_facets.c: Ditto for
	time_get<char, const char*>, time_get<wchar_t, const wchar_t*>,
	time_put<char, char*>, time_put<wchar_t, wchar_t*>

	* src/locale_impl.cpp: Removed id initialization of useless facets
	no more exported.

	* stlport/new, stl/_new.h: Moved all STLport code in _new.h and
	modified new header so that it forwards include to native new
	when include comes from inside STLport.

	* cppunit/file_reporter.h, cppunit_mini.h: Change support of
	CPPUNIT_CHECK macro, only report error once for all failures
	in a single test case.

2006-03-28  Francois Dumont  <dums@stlport...>

	* stlport/stl/_prolog.h: Fix macro check before inclusion of
	features.h.

	* stlport/stl/char_traits.h: Fixed include of cstddef, in STLport
	code, Standard headers should never be included directly, their
	stlport/stl/_xxx.h counterpart should be used.

	* stlport/stl/type_traits.h, type_manip.h: Patch from Eric Sanford
	for Borland compiler to fix _OKToMemCpy feature.

	* stlport/stl/_alloc.h: Replace swap function for _STLP_alloc_proxy
	by a member method, it is more portable.

	* stlport/stl/_bvector.h, _deque.h, _list.h, _slist.h, _string_base.h
	_tree.h: Replaced called to std::swap for _STLP_alloc_proxy instances
	by calls to member swap method.

	* test/unit/hash_test.cpp: Ignore test rather than hide it.

	* test/unit/map_test.cpp: Fixed StackAllocator instanciation.

	* test/unit/stack_allocator.h: Add std::swap overload for
	StackAllocator<pair<const int, int>>.

	* test/unit/string_test.cpp: Ignore tests rather than hide it.

	* test/unit/unordered_test.cpp: Ditto.

2006-03-27  Francois Dumont  <dums@stlport...>

	* stlport/stl/_stdexcept_base.h: New internal header with
	__Named_exception implementation, improve segregation between
	<locale> and <stdexcept> Standard headers.

	* test/unit/locale_test.cpp: Add missing <stdexcept> header include.

	* stlport/stl/_function_base.h, _function.h: Move as many functor as
	possible from _function_base.h to _function.h to improve
	segregation between <functional> and <algorithm> Standard headers.

	* test/unit: Add many missing references to <functional> header.

	* test/unit: Made unit tests available for build without STLport, this
	will be a good way to compare Standard library implementations.

	* stlport/stl/_string_base.h: Remove additional space for terminating
	null character, it was actually already reserved in the return
	expression.

	* stlport/stl/_string.h: Restored basic_string capacity implementation
	that do not depend on use of the short string optimization or not. It
	might be hiding a real issue somewhere else in code even if unit tests
	are not showing any problem.

	* stlport/stl/_alloc.h: Add swap overload for _STLP_alloc_proxy class
	in order to correctly call swap on the maybe rebound allocator as user
	that implement an allocator with a state might have implement a
	special swap function for it to correctly handle STL containers swap
	operation.

2006-03-24  Francois Dumont  <dums@stlport...>

	* build/lib/configure.bat: Removed script for defining INCLUDE
	environment variable for Borland ressource compiler as it depends
	on where STLport is install.

	* build/lib/bcc.mak: Add check for INCLUDE environment variable
	definition.

	* test/unit/string_test.cpp: Change basic_string::reserve test to
	check length_error exception rather than bad_alloc.

2006-03-22  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/stl/_string.c: a bit code clean

	* stlport/stl/_string_base.h: max_size should keep space for
	allocation of terminating null.

2006-03-19  Francois Dumont  <dums@stlport...>

	* stlport/stl/_alloc.h, _function_base.h, type_manips.h,
	type_traits.h, test/unit/type_traits_test.cpp: Patch for
	Eric Sanford for __bool2type Borland use.

	* build/Makefiles/gmake/lib/clean.mak: Patch from Eric Sanford
	to fix files generated by dbg-shared and stldbg-shared rules.

	* build/Makefiles/gmake/lib/bcc.mak: Patch from Eric Sanford to
	increase Borland page size to 64.

2006-03-16  Francois Dumont  <dums@stlport...>

	* stlport/stl/config/_evc.h, _msvc.h: Add some condition for
	definition of _STLP_MSVC macro which should only be defined for
	real Microsoft compilers and not for compiler emulating it.

	* src/allocators.cpp: Use _STLP_STATIC_MUTEX macro in place
	of _STLP_mutex_base for mutex definition in per_thread_allocator
	implementation.

	* stlport/stl/_pthread_alloc.h: Modified deallocate methods of
	pthread_allocator and per_thread_allocator implementation to accept
	null pointers.

2006-03-15  Francois Dumont  <dums@stlport...>

	* stlport/stl/_string_base.h, _string.c: Force call to
	_M_allocate_block even in short string optim mode in order
	to detect lenght error. Based basic_string max size implementation
	on allocator max_size.

2006-03-15  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/stl/config/_system.h, _msvc.h, _evc.h: move _STLP_MSVC
	definition in proper place.
	
2006-03-14  Francois Dumont  <dums@stlport...>

	* src/allocators.cpp: Fixed thread safety issue in
	per_thread_allocator implementation thanks a very old William
	Power report.

	* test/unit/allocator_test.cpp: Attempt to write a test case for
	previous bug but not yet complete as I need a better debugging
	environment than gdb under cygwin...

	* stlport/stl/config/_system.h: Patch from Michael Fink to add
	missing _STLP_MSVC define for evc++ compilers.

2006-03-13  Francois Dumont  <dums@stlport...>

	* stlport/stl/_alloc.h, src/allocators.cpp: Hide declaration of
	malloc based allocator handler in library. Also limit scope of
	declspec to expose static members rather than the whole class.

	* stlport/stl/_cstdlib.h: For Borland compiler add include of
	native process.h header, for reason see comment next to include
	in file.

	* stlport/stl/_alloc.h: Add a new STLport extension to the
	std::allocator class: allocate(size_type, size_type&). This new
	overload of allocate returns in an output parameter, the real
	size of the allocated buffer that can be larger than the requested
	one. _STLP_alloc_proxy expose this new overload only for the
	STLport allocator and not for user defined allocators.

	* stlport/stl/_vector.h, _vector.c, _string.h, _string.c: Use of the
	allocate overload extension method to set end of storage reference
	to the real memory block end rather than to the requested one.

	* stlport/stl/_alloc.c: Adapt __debug_alloc::allocate method in order
	to return the real allocated memory block. Also add check on computed
	__real_n to allocate as it might roll on size_t and hide a case that
	should result in a bad_alloc exception.

	* stlport/stl/_threads.h, src/allocators.cpp: Add WINVER macro
	check in addition to _WIN32_VERSION, according PSDK documentation
	WINVER is more generaly used accross different Windows platforms.

	* test/unit/string_test.cpp: Add constructor test case to correctly
	handle build of a string with string::max_size elements which should
	result in a bad_alloc exception. Idem for reserve method.

	* stlport/stl/_alloc.h, src/allocators.cpp: Add check of malloc
	result in __malloc_alloc implementation to throw an exception when
	result is NULL.

	* src/locale_impl.cpp: Patch from Eric Sanford for Borland BDS 2006
	support. Mostly fix locale facet index issues.

2006-02-28  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/stl/_string.h: capacity may return wrong value in case
	of no _STLP_USE_SHORT_STRING_OPTIM in use; thanks Rusty Koonce
	for report.

	* test/unit/string_test.cpp: test for capacity issue.

	* src/cxa.c: don't use cxa workaround for FreeBSD 6.0---it fine;
	this is rollback of changes 2006-01-24 [bad compiler was in use].

2006-02-15  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/stl/_string.h: _STLP_FORCE_STRING_TERMINATION mode become
	default and only mode due to performance issue.

	* stlport/stl/config/user_config.h: ditto.

	* stlport/stl/config/features.h: ditto.

2006-02-14  Francois Dumont  <dums@stlport...>

	* stlport/stl/_hashtable.h, _hashtable.c: Add check in _STLP_DEBUG
	that equivalent key have same hash code. Fix _M_rehash method
	implementation that used to change elements order thanks Big Muscle
	effort to report this issue.

	* build/lib/configure: Fix reference to STLport configuration file
	in --no-cygwin option description.

2006-02-13  Francois Dumont  <dums@stlport...>

	* stlport: Patch from Eric Sanford to remove many now useless
	Borland workaround.

	* src/fstream.cpp: ditto

	* stlport/stl/_monetary.h, _cwchar.h, _algobase.h: ditto

2006-02-10  Francois Dumont  <dums@stlport...>

	* stlport/stl/_iosfwd.h, _locale.h: Removed type attributes on type
	declaration, only useful on type definition.

	* src/message_facets.h: Removed unused parameter in _Catalog_nl_catd_map
	erase method to avoid warning.

	* src/num_put_float.cpp: Use more macro technique to avoid unused parameters
	in *_cvt functions.

	* test/unit/cppunit/cppunit_mini.h: Comment unused parameter.

	* test/unit/cppunit/file_reporter.h: Add base class initialization
	in FileReporter copy constructor definition.

2006-02-10  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* src/num_put_float.cpp: remove usage of static buffers
	[potential vulnerabilities]; directly use __iostring instead.

	* test/unit/floatio_test.cpp: test for fixed float output;
	cases when fixed float fail on Linux and Solaris, related
	with fcvt_r and fconvert calls respectivly commented.

	* build/Makefiles/gmake/gcc.mak: workaround for bug in make 3.79.1
	on Solaris [not pass -D_STLP_DEBUG to CPPFLAGS].

	* stlport/stl/_string.h: rollback 2006-01-25.

2006-02-08  Francois Dumont  <dums@stlport...>

	* build/Makefiles: Removed all references to BUILD=r in parameters
	to ressource compiler in release as there is no more 'r' appended
	to the library name in this mode.

	* src/stlport.rc: Fix support for Borland and add check for BUILD
	definition before injecting it in original library file name.

	* doc/README.borland: Update doc to signal new prerequisite for
	Borland ressource compiler.

	* test/unit/unordered_test.cpp: Add test for unordered_multiset
	equal_range method.

	* test/unit/partial_test.cpp: Add test for strict weak ordering
	predicate good behavior check.

2006-02-07  Francois Dumont  <dums@stlport...>

	* src/allocators.cpp: New simplification for _Node_Alloc_Lock,
	it do not have to be a template class anymore.

	* stlport/stl/debug/_debug.c: Implement
	__stl_debug_engine<_Dummy>::_Message even when specifying
	_STLP_DEBUG_MESSAGE in order to have explicit instanciation correctly
	generated.

	* stlport/stl/_heap.c, _tree.c, _list.c, _slist.c: Add strict
	weak ordering checks.

	* stlport/stl/_debug.h, _debug.c: Add new error type: bad equivalent
	functor that has to be used in hash container implementation or in
	algorithm like find. Check for this functor is:
	if (pred(a, b)) assert(pred(b, a)

	* stlport/stl/_hashtable.c: Add equivalent functor checks.

	* stlport/stl/_debug.h, _debug.c: Check _STLP_DEBUG_MODE_THROW in
	__debug_engine::_Message method. Now thrown exception will contain
	description of the assertion rather than a generic message.

	* build/Makefiles/gmake/bcc.mak: Fix Borland ressource compiler name,
	brcc32 not brc32.

	* stlport/stl/_range_errors.h, src/dll_main.cpp: Add
	__stl_throw_runtime_error function used to throw exception in
	_STLP_DEBUG_MODE_THROW.

2006-02-06  Francois Dumont  <dums@stlport...>

	* build/Makefiles/nmake: Fixed regression generated by a side
	effect of Uli patch below.

2006-02-02  Francois Dumont  <dums@stlport...>

	* stlport/config/_stl_evc.h, stl/_config.h: Patch from Ulrich
	Eckhardt to signal endianess detection problem and set EVC
	endianess for MIPS SDK.

	* src/allocators.cpp: Clean up _Node_Alloc_Lock definition, only
	specialization are now available for thread safe and not thread
	safe builds. Make easier definition of internal static mutex.

	* stlport/float.h: Patch from Eric Sanford for Borland NaN management

	* stlport/cfloat: Include STLport float.h rather than native one in
	order to use potential internal workaround.

	* stlport/stl/config/_ibm.h: Replace all C++ comment by C comments.

	* stlport/errno.h: For Borland, when building for a single threaded
	contex, errno is not a macro and is defined in std namespace so using
	have to get the symbol in this namespace.

2006-01-31  Francois Dumont  <dums@stlport...>

	* src/allocators.cpp: Reinforce move of allocators implementation

	* stlport/stl/_alloc.h: Removed include of internal _thread.h no
	more necessary now that allocator implementation is in allocators.cpp.

	* stlport/stl/_pthread_alloc.h: Removed pthread.h include.

	* stlport/stl/_rope.h: Adopt classic macro check before inclusion
	of _threads.h.

	* build/Makefiles/gmake/gcc.mak: Add -fno-inline option for debug
	builds.

	* stlport/stl/_threads.h: Remove lock free singly linked list, avoid
	include of windows.h when using Win32 API lock free slist
	implementation.

	* src/lock_free_slist.h: New place for the lock free singly linked
	list implementation.

	* test/unit/mvctor_test.cpp, type_traits_test.cpp: Small workaround
	for gcc 4.0.1 build, looks like there is a conflict between glibc++
	__true_type and STLport one.

2006-01-30  Francois Dumont  <dums@stlport...>

	* Patch from Ulrich Eckhardt for EVC4 ICE + some documentation
	updates and fixes.

2006-01-29  Francois Dumont  <dums@stlport...>

	* stlport/stl/_hashtable.h, _limits.h: Add missing calling
	convention to static methods thanks Petr Supina

2006-01-28  Francois Dumont  <dums@stlport...>

	* stlport/stl/debug/_iterator.h: Fix Hp Acc configuration thanks
	Boris Gubenko.

2006-01-27  Francois Dumont  <dums@stlport...>

	* stlport/stl/_alloc.h, _old_alloc.h, _pthread_alloc.h,
	test/unit/rope_test.cpp: Fixed reference to _STLP_NO_IOSTREAMS,
	replaced by _STLP_USE_NO_IOSTREAMS.

	* stlport/stl/_alloc.h: Move _MAX_BYTES definition out of
	_STLP_USE_NO_IOSTREAMS check scope as it is also used in deque
	implementation.

	* stlport/stl/_algo.c, debug/_debug.h, _debug.c: Add check for
	bad predicate in safe STL mode (_STLP_DEBUG).

	* test/unit/sort_test.cpp: Add test for correct invalid strict weak
	ordering predicate detection. Active only when STL safe mode throws
	exception rather than terminating application.

	* test/unit/sort_test.cpp: Add a check that stable_sort is really
	stable.

2006-01-26  Francois Dumont  <dums@stlport...>

	* stlport/stl/_alloc.h, _alloc.c, _pthread_alloc.h: Many code moved
	to allocators.cpp.

	* stlport/stl/_pthread_alloc.c: Removed, content moved to
	allocators.cpp.

	* src/allocators.cpp: New, contains STLport node and per thread
	allocator implementation.

	* src/dll_main.cpp: Remove references to former __node_alloc
	class.

	* build/lib/Makefile.inc: Add allocators.cpp translation unit.

	* stlport/stl/_alloc_old.h: Modified based on allocator classes new
	interface.

	* stlport/stl/config/feature.h: Default allocator in _STLP_NO_IOSTREAMS
	mode is now the new/delete allocator, user can still use malloc/free
	one using config swtich in host.h.

	* stlport/stl/config/_gcc.h: Cygwin/MinGW can now use default node
	allocator implementation without memory leak.

2006-01-25  Francois Dumont  <dums@stlport...>

	* test/unit/stream_test.cpp: Add check for ptrdiff_t output
	in streams operator when 64 bits portability issue detection
	feature is activated with MSVC compilers.

2006-01-25  Eric Sanford  <...@comp...>

	* stlport/stl/_exception.h: Delete obsolete workaround for
	legacy Borland compilers.

	* stlport/stl/_string.h: Use an other implementation for the
	const_reference operator[](size_type _n) const

	* stlport/stl/config/_bc.h: Restore unexpected exception handler
	(static and dynamic) and uncaught_exception handler (static only)

	* build/Makefiles/gmake/lib/bcc.mak: Typo fix in linker flags.

2006-01-24  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* test/unit/bind_test.cpp: add test for member function
	binding that show workaround for const function call.

	* src/cxa.c: __cxa_finalize and __cxa_atexit present in libc
	in FreeBSD 5.3, but again absent in 6.0

	* build/Makefiles/gmake/app/gcc.mak,
	build/Makefiles/gmake/lib/gcc.mak: detect whether gcc
	was builded with --disable-shared and use correct libgcc.

	* build/lib/configure: add --use-static-gcc option to show
	that STLport should use static language support libraries from
	gcc if it was build with --enable-shared.

2006-01-23  Francois Dumont  <dums@stlport...>

	* build/Makefiles/gmake/app/clean.mak: Fix distclean rule for
	windows thanks Eric Sanford.

	* stlport/stl/_cstddef.h, _cstdlib.h: When no new header support,
	include STLport C header rather than native one to use errno
	workaround.

	* stlport/stddef.h: DMC also define errno in native stddef.h file.

2006-01-22  Francois Dumont  <dums@stlport...>

	* src/locale_impl.cpp, stlport/stl/_codecvt.h, _monetary.c,
	_num_get.c, _num_put.c, _time_facets.c: Borland workaround for
	locale facet id instanciation that were duplicated. Now static
	instances are no more defined from .c files but only from the
	.cpp and only for facets that are implemented by STLport. Users
	implementing facet inheriting from the STLport one will have to
	defined the static instance themself in their translation units.
	
	* stlport/stl/type_manips.h: Fixed _UnCVType wrong implementation
	reported by Digital Mars compiler.

	* stlport/stl/boost_type_traits.h: Fixed _OKMemCpy implementation
	remove_pointer call was wrong.

	* src/dll_main.cpp: Hide force_link definition to MSVC compilers,
	was useless and producing a warning.

	* build/Makefiles/gmake/cygming/rules-so.mak: Workaround for DMC
	linker weird behavior. Linker create the dll file even if link
	fail which confuse make dependency feature. As lib file is not
	generated, dll now depends on lib that depends on build files.

	* stlport/stl/config/_warning_off.h: Disabled this used in initialization
	list warning, used in rope implementation.

	* build/lib/configure: Fix --with-boost interpretation.

	* build/Makefiles/gmake/dmc.mak: Use dm_link command for linker rather
	than link that is rather the MSVC like wrapper.

	* build/Makefiles/gmake/cygming/targetsys.mak: Ditto for dm_lib rather
	than lib command.

	* build/Makefiles/gmake/app/rules.mak: Use same linker command invocation
	for DMC and Borland.

	* doc/README.borland: Documentation update about limitation on locale
	facets id instanciation.

	* stlport/stdlib.h: DMC, like Borland and EVC, defines errno macro
	in stdlib.h

	* stlport/stl/config/user_config.h, features.h: Inverse
	_STLP_FORCE_STRING_TERMINATION macro switch in
	_STLP_DONT_FORCE_STRING_TERMINATION. This is less dangerous for
	existing code.

	* stlport/stl/_string.h: When _STLP_FORCE_STRING_TERMINATION
	is defined operator[] implementation is simpler.

	* stlport/stl/debug/_string.h: Based implementation of []
	operator on the non STL safe internal instance, avoid duplication
	of check for access to the element of index size().

	* test/unit/fstream_test.cpp: Add custom facet id definition for
	Borland.

	* test/unit/hash_test.cpp: Now Borland support correctly hash container
	implementation.

	* test/unit/rope_test.cpp: Fixed test implementation to build in
	_STLP_NO_IOSTREAMS mode.

2006-01-18  Francois Dumont  <dums@stlport...>

	* stlport/stl/_ostream.h, _ostream.c: Use size_t rather than
	unsigned int for MSVC compilers after VC6 in IO output operator
	to avoid 64 bits warning when trying to display a size_t type.

	* test/unit/sstream_test.cpp: Add test that reveal the 64 bits
	warning.

	* test/unit/string_test.cpp: Fixed unused variable warning.

2006-01-17  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* src/c_locale_glibc/c_locale_glibc2.c: really implemented
	getting default locale categories from environment; replace
	a few strcpy by strncpy to protect from possible buffer overflow
	attack.
	
	* stlport/new.h, stlport/stl/_typeinfo.h: few workarounds for ICC 9
	[suggested by Lim Hwan Cheol].

2006-01-14  Eric Sanford  <...@comp...>

	* build/test/eh/bcc.mak: Copied from build/test/unit/bcc.mak.

	* stlport/stl/_rope.c: Restore Borland support for _Rope_rotate.

	* stlport/stl/_rope.h: Fix Borland 5.5.1 internal compiler errors
	in _M_path_end and _M_tmp_buf structs. Restore Borland support for
	_Rope_rotate.

	* test/eh/test_rope.cpp: Restore Borland exception test for rope.

	* test/unit/rope_test.cpp: Restore Borland unit test for rope.

2006-01-13  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/stl/_string.h, stlport/stl/debug/_string.h:
	const operator [n] should return CharT() in case of
	n == size(), ISO/IEC 14882:2003(E), 21.3.4; thanks Russ Miller.

	* test/unit/string_test.cpp: test for fixed bug above.

	* build/lib/configure: change --use-boost= onto --with-boost=

2006-01-13  Francois Dumont  <dums@stlport...>

	* test/unit/type_traits_test.cpp: Add boost specialization for
	any_pod_type in order to reproduce STLport behavior when using
	boost type traits.

	* src/dll_main.cpp: Remove now invalid template explicit
	instanciation of _Bs_G that is no more a template.

	* stlport/stl/config/_detect_dll_or_lib.h: When no iostreams mode,
	consider that we are in a static lib mode.

	* stlport/stl/_limits.c, _hashtable.c: Add _STLP_CALL specification
	to _LimG and _Stl_prime methods implementation.

	* stlport/stl/_limits.c: Put _Stl_prime methods implementation in
	a _STLP_EXPOSE_GLOBALS_IMPLEMENTATION macro check block. Those
	methods are supposed to come from libs when using iostreams.

	* stlport/stl/_num_put.h, _num_get.h, _time_facets.h, _ios.h,
	_ios_base.h: Cleanup Borland workaround now useless.

	* stlport/stl/boost_type_traits.h: Fixed _OKToMemCpy implementation
	using boost type traits to be closer to the STLport behavior.

	* build/lib/configure.bat: Fixed reference to STLport user
	configuration file.

	* build/lib/configure: Add --use-boost option to inject boost
	path during build process.

2006-01-12  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/stl/_rope.h, stlport/stl/_rope.c: pass CharConsumer
	via reference, to take into account CharConsumer modifications.
	This has relation to find(char) in rope. Thanks Cristian Vlasceanu.

	* test/unit/rope_test.cpp: test for fixed bug above.

2006-01-11  Francois Dumont  <dums@stlport...>

	* src/bitset.cpp: Add stlport_prefix.h include.

	* stlport/stl/_bitset.h: Add an inline implementation for _S_count
	and _S_first_one static methods for _STLP_NO_IOSTREAMS mode. Should
	be slower than version coming with library but avoid link trouble.

2006-01-11  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/stl/_bitset.h, stlport/stl/_bitset.c, src/bitset.cpp:
	make helper structure _Bs_G non-template [it used only as instance
	with unused bool argument only], and put static tables into library
	to avoid possible static instances duplication.

	* build/lib/Makefile.inc: idem.

2006-01-10  Francois Dumont  <dums@stlport...>

	* stlport/stl/type_traits.h, config/_msvc.h, _mwerks.h: Integrate
	intrinsic type traits support for Visual 2005 and Metrowerk. Code
	based on boost library information and not tested for Metrowerk.

	* test/unit/bind_test.cpp: Fix BindTest::bind2nd3 test case, had
	never been used.

	* stlport/stl/boost_type_traits.h: Change boost type traits wrapping
	implementation to use meta programming operation on types rather
	than on numerical constant, MSVC6 prefer it.

	* build/test/unit/msvc.mak: Systematically add /Zm800 for MSVC
	compilers, useful in a number of case and transparent in others.

	* test/unit/type_traits_test.cpp: Add is_POD test case. Add dummy
	constructors, assignment operator and destructor to any_type struct
	to make the tests pass even with compilers having intrinsic type
	traits support.
 
2006-01-09  Francois Dumont  <dums@stlport...>

	* stlport/stl/debug: Fix move constructor to keep the container
	move constructor complete. When STLport user do no require no
	extension or Standard debug safe mode, iterators are also move
	with the container contents.

	* stlport/stl/_list.h, _slist.h, _tree.h: Made iterator struct
	constructor from base class pointer explicit to forbid expression
	like: list.begin() == 0.

	* stlport/stl/pointers/_slist.h, _list.h, _set.h: Fix implementation
	that was using former implicit contructor from pointer to base class.

	* src/c_locale_win32/c_locale_win32.c: Fix implementation for
	compilers coming with a native lib implementing secure C functions
	like strncpy_s.

	* src/iostream.cpp: Hide I/O streams declaration when defining
	them when compiler has no support for removing I/O streams
	from static global variable initialization segment. Avoid the
	stdio_istreambuf using directive when we do not use STLport
	private namespace.

	* stlport/stl/_rope.h, _rope.c: Use internal, not _STLP_NO_EXTENSIONS
	dependant functions for implementation.

	* stlport/rope, hash_map, hash_set: Add _STLP_NO_EXTENSIONS check
	that generate a #error if defined as those headers are STLport
	extensions.

	* stlport/_uninitialized.h: Add __uninitialized_copy_n no dependant
	against _STLP_NO_EXTENSIONS for rope implementation.

	* test/unit: Made tests ok to build even when _STLP_NO_EXTENSIONS or
	_STLP_NO_ANACHONISM or _STLP_NO_CUSTOM_IO is defined.

	* stlport/stl/_num_put.h, _num_get.h: Fix definition scope of
	_STLP_MOVE_TO_STD_NAMESPACE that was wrong when _STLP_NO_CUSTOM_IO
	is defined.

	* stlport/stl/boost_type_traits.h: Fixed _IsRef implementation based
	on boost type traits feature.

	* build/nmake/extern.mak, lib/msvc.mak, test/unit/msvc.mak,
	test/eh/msvc.mak: Moved injection of boost include path for all targets
	in extern.mak. Also removed a useless double quote as make variable already
	contains it.

	* stlport/stl/config/_bc.h, test/unit/floatio_test.cpp, cmath_test.cpp,
	limit_test.cpp: Borland patch from Eric Sanford.

	* test/unit/string_test.cpp: Add template_wexpression test to check
	wstring template expression.

2006-01-05  Francois Dumont  <dums@stlport...>

	* stlport/stl/_stdexcept.h: Fix __Named_exception destructor
	implementation when _STLP_NO_IOSTREAMS is defined or when
	securized C function strcpy_s exists.

	* stlport/stl/pointers/_set.h: Fixed implementation as _Identity
	is now in private namespace and const_reverse_* functions must
	return const_reverse_* iterators and not simply reverse_*.

	* test/unit/bcompos_test.cpp, bind_test.cpp: Made the tests usable
	when _STLP_NO_EXTENSIONS is defined.

	* build/lib/configure.bat: Fix name of msvc8 compiler.

	* test/unit/mfunptr_test.cpp: Ignore find test when no class
	partial template specialization rather than commenting it.

	* test/unit/type_traits_test.cpp: Ditto for reference_type test.

	* build/Makefiles/nmake/top.mak: Fixed install-shared definition.

	* build/Makefiles/gmake/gcc.mak: Add _STLP_USE_STATIC_LIB when
	building and using STLport static lib under MinGW/Cygwin.

2006-01-04  Francois Dumont  <dums@stlport...>

	* src/acquire_release.h: New file, expose __acquire_*
	functions used in different translation unit.

	* src/num_put.h: Removed, content moved to num_put.cpp that
	was the only translation unit using exposed functions.

	* src/*: Build with Intel C++ 9 compiler reveal that many
	static specification was missing.

	* src/ctype.cpp: Filter out _WCharIndexT specialization for
	Intel compiler that consider wchar_t as unsigned, fixed a
	warning.

	* _STLP_STATIC_ASSERT is now called without trailing ';' that
	is already in the macro definition.

	* src/*: Removed reference to _SgI namespace replaced by the
	STLport private namespace.

	* src/iostream.cpp: Add iostream include to expose cout, cin, cerr
	definition to declaration.

2006-01-03  Francois Dumont  <dums@stlport...>

	* stlport/stl/config/_gcc.h: Force use of new/delete based
	allocator under Cygwin/MinGW, default node allocator has
	problem because __node_allocator static datas are sometimes
	duplicated in a dll context.

2006-01-01  Francois Dumont  <dums@stlport...>

	* build/Makefiles/gmake/lib/gcc.mak, stlport/stl/config/_gcc.h:
	Change way of building dll with Cygwin/MinGW. No more export of
	all symbols, we use dllexport specification, makes import lib
	really shorter and dll too. Moreover use of the
	enable-auto-image-base linker option to make load of dll faster.

	* stlport/stl/_time_facets.c, _num_put.c, _num_get.c, _monetary.c,
	debug/_debug.c: Adapt existing Cygwin/MinGW workaround for new
	way of generating dlls.

2005-12-31  Francois Dumont  <dums@stlport...>

	* doc: Add Borland doc and update cygwin, mingw and msvc.

	* build/lib/README.options: Removed, replaced by configrure
	script.

	* build/test/eh/bcc.mak: Added to build EH tests for Borland.

2005-12-29  Francois Dumont  <dums@stlport...>

	* src/c_locale_win32/c_locale_win32.c: Hide _Locale_mbtowc and
	_Locale_wctomb when no wchar_t support is detected thanks Eric
	Sanford.

	* src/c_locale_win32/c_locale_win32.c: Add mapping from Borland
	facet macros to STLport associated string representation array index
	thanks Eric Sanford. 

	* stlport/stl/config/_evc.h: Patch from Michael Fink to generalized
	use of OutputDebugString for Windows CE when we need to trace
	information.

	* build/Makefiles/gmake/bcc.mak, lib/bcc.mak, app/bcc.mak: Fix
	definition of START_OBJ thanks armpit33

	* build/Makefiles/*: Generalize use of install-shared rather than
	list of all shared rules, idem for install-static.

2005-12-27  Francois Dumont  <dums@stlport...>

	* stlport/stl/_string_io.c: Generalized use of _STLP_STATIC_ASSERT
	macro rather that hand writen static assertion.

	* stlport/stl/_fstream.c, _istream.c, src/fstream.cpp, strstream.cpp:
	Add some cast to avoid Borland suspicious pointer arithmetic warnings
	thanks Eric Sanford.

	* stlport/stl/_limits.c: Fix Borland definition of NaNs and infinity
	for long double thanks Eric Sanford.

	* stlport/stl/config/_system.h, _gcc.h: Fix config for Windows, MinGW
	and Cygwin platforms.

	* stlport/stl/config/_windows.h: Can now be included by a pure C
	compiler.

	* stlport/stl/config/_warning_off.h: Removed suspicious pointer
	arithmetic warning for Borland thanks Eric Sanford.

	* stlport/stl/_construct.h: Removed now useless Borland workaround.

	* src/stdio_streambuf.cpp: Ditto.

	* stlport/stl/_alloc.h: Now allocator is tagged as an STLport class
	even without partial template specialization support. This is
	necessary because type_traits is specialized for allocator<char>,
	allocator<wchar_t> and allocator<void*> when partial template
	specialization is not available.

	* test/unit/bitset_test.cpp: Add tests for the STLport
	bitset::_Find_first extension.

2005-12-27  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* src/initial_mak: obsolete makes removed (sync with STLPORT_5_0
	branch).

2005-12-24  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/stl/config/_gcc.h: gcc, builded by Apple is differ
	in behavior from original; in particular, in path to includes;

	* build/Makefiles/gmake/app/gcc.mak: fix gcc options on MacOS X;
	STLport is free from libstdc++ on MacOS now;

	* build/Makefiles/gmake/gcc.mak: fix gcc options on MacOS X; gcc,
	builded by Apple is differ in behavior from original;
	detect this;

	* build/Makefiles/gmake/lib/gcc.mak: fix gcc on MacOS X;
	differentiate gcc from Apple and original;
	STLport is free from libstdc++ on MacOS X now;

	* build/Makefiles/gmake/darwin/rules-so.mak: use 
	gcc instead of c++ for linkage, if only C sources present.

	* build/lib/gcc.mak, build/test/unit/gcc.mak: remove duplication
	of stlport includes.

2005-12-22  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/stl/config/_windows.h: all system specific configuration
	in one place [moved from stlport/stl/_windows.h]

	* stlport/stl/_windows.h: deleted; all system specific configuration
	in one place [moved to stlport/stl/config/_windows.h]
	
	* stlport/stl/debug/_debug.c, stlport/stl/_threads.h:
	_windows.h included via _prolog.h [i.e. via stl/config/_system.h],
	see changes above.

	* stlport/stl/config/_sunprocc.h: remove include of _solaris.h---it
	already included from _system.h

	* stlport/stl/config/_kai.h: remove include of os configuration files,
	it should be included from _system.h

	* stlport/stl/config/_intel.h: fix path after config headers
	reorganization.

	* stlport/stl/config/_evc.h: idem

	* stlport/stl/_exception.h: idem

	* stlport/stl/config/_prolog.h: idem

	* test/unit/fstream_header_test.cpp: idem

	* test/unit/iomanip_header_test.cpp: idem

	* test/unit/ios_header_test.cpp: idem

	* test/unit/iostream_header_test.cpp: idem

	* test/unit/istream_header_test.cpp: ditto

	* test/unit/locale_header_test.cpp: idem

	* test/unit/ostream_header_test.cpp: idem

	* test/unit/sstream_header_test.cpp: idem

	* test/unit/strstream_header_test.cpp: idem

2005-12-21  Francois Dumont  <dums@stlport...>

	* stlport/stl/debug/_debug.h, _debug.c, _string_sum_methods.h:
	Removed some unused parameters reported by Borland compiler.

	* stlport/stl/config/_warnings_off.h: Disable unused parameters
	warning for Borland compiler.

	* build/Makefiles/gmake/targetdirs.mak: Change config in order to
	have each generated application in a different bin folder.

	* stlport/stl/_threads.h: Used _STLP_STATIC_ASSERT macro for a
	static assertion.

2005-12-19  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* build/Makefiles/gmake/lib/gcc.mak: move LDSEARCH flags after
	possible -nostdlib

	* build/lib/gcc.mak: don't add include path, it already included.

	* src/c_locale.h: include stlport_prefix.h to add STLport's
	definitions that used below.

	* stlport/stl_user_config.h, stlport/stl/_config.h: moved 
	to stlport/stl/config catalog and renamed.

	* stlport/stl/_config_compat.h, stlport/stl/_site_config.h: ditto.

	* stlport/config: headers moved to stlport/stl/config catalog,
	renamed and reorganized.

	* stlport/stl/_prolog.h, stlport/stl/_epilog.h, src/stlport_prefix.h:
	reflect changes in configuration files.

2005-12-17  Francois Dumont  <dums@stlport...>

	* stlport/stl/_config.h: Removed ';' in _STLP_STATIC_ASSERT
	definition.

	* stlport/stl/_cwctype.h: Fix native namespace of wide char functions
	for MinGW runtime <= 3.0. Also fix a typo for FreeBDS.

	* src/stdio_streambuf.cpp: Add missing 'defined' when checking
	__OS400__ macro existance.

	* test/unit/resolve_name.cpp, set_test.cpp: Removed useless ';'
	reported by remarks from Intel C++ compiler.

2005-12-16  Francois Dumont  <dums@stlport...>

	* stlport/stl/_rope.h: Moved overload of __identity_element for
	_Rope_Concat_fn in STLport private namespace where orginal function
	declaration is. Also moved _Rope_Concat_fn at the same time, much more
	many elements of _rope.h should be moved to this namespace...

	* stlport/stl/_monetary.c: Change implementation of __money_do_put for
	Borland compiler, looks like this compiler do not like ternary operator.

	* src/c_locale_win32/c_locale_win32.c: Replace check of category in
	__Extract_locale_name from > LC_ALL by != LC_ALL, there is no reason
	for LC_ALL to be upper or lower to all other categories.

	* build/Makefiles/gmake/cygming/rules-so.mak: Segregate different
	compilers linker calls and add reference to START_OBJ in Borland
	linker invocation.

	* build/Makefiles/gmake/lib/rules-a.mak, cygming/targetsys.mak: Borland
	archiver add option is now '+', before being invocated archive is always
	deleted to avoid warnings because the Borland archiver do not have a
	real add or replace module option.

	* stlport/stl/type_traits.h: Fix for compiler simulating partial
	template specialization (VC6)

	* test/eh/test_rope.cpp: Removed rope test for Borland.

	* test/unit/exception_test.cpp: Commented tests are now ignored.

	* test/unit/locale_test.cpp, string_test.cpp: No more ignored test
	for Borland.

2005-12-14  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* build/Makefiles/gmake/sysid.mak: parse two-token target
	system identification string along with three-token one
	[useful when vendor is omitted]; thanks Jonathan Sprinkle.

	* stlport/cwctype, stlport/stl/_cwctype.h: wctype_t and
	others are in global namespace on FreeBSD.

	* build/Makefiles/gmake/app/gcc.mak, lib/gcc.mak: use build
	with -nostdlib on Solaris.

	* src/cxa.c: fix for Solaris

	* stlport/config/stl_solaris.h, stlport/stl/_cmath.h:
	hmm, strange... sometimes MATH_L and MATH_F present on Solaris,
	sometimes not...

2005-12-14  Francois Dumont  <dums@stlport...>

	* test/unit/cppunit/cppunit_mini.h, file_reporter.h: Add ignore
	test feature, now tests should be ignored rather than commented.
	2 new macros for that CPPUNIT_IGNORE to add in tests declaration,
	all test following this macro won't be run; CPPUNIT_STOP_IGNORE
	optional macro to stop ignoring tests.

	* test/unit/fstream_test.cpp: Ignore custom_facet test when not
	supported rather than comment it.

	* test/unit/hash_test.cpp: Ignore hmap1 test for Borland and Digital
	Mars compilers, looks like rope class is too complicated for those
	compilers.

	* test/unit/locale_test.cpp: Ignore locale_by_name test for compiler
	without exceptions support. Ignore money facet tests for Borland.

	* test/unit/mvctor_test.cpp, rope_test.cpp: Some tests ignored
	depending on various configuration settings.

	* test/unit/type_traits.cpp: Add test for _IsSTLportClass metaprogramming
	tool. Ignored for Borland.

	* test/unit/unordered_test.cpp: Fix test for Digital Mars, unordered
	containers value_type are not necessarily with an immutable key, it is
	more portable to use value type rather than redefining it in the test.

	* test/unit/string_test.cpp: Removed Windows CE macro check replaced
	by WaitForMultipleObjects returned code check, more portable and
	maintenable. Ignore a test for Digital Mars compiler.

	* stlport/stl/type_manips.h, type_traits.h: Simplified metaprograming
	tools implementation; now avoid compilation constant replaced by
	type, Borland compiler has problem with constants.

	* stlport/config/stl_bc.h: Made supported compiler check more accurate
	free compiler is 5.5.1 so it is the oldest supported version. Borland
	compiler do not support IEC559 specifications.

	* build/Makefiles/gmake/bcc.mak: Put startup .obj to link with in
	START_OBJ rather than LDLIBS, thanks Eric Sanford.

	* src/c_locale_win32/c_locale_win32.c: Temporarily removed category
	check in __Extract_locale_name function for Borland, looks like LC_ALL
	or LC_MAX has not the right value.

2005-12-13  Francois Dumont  <dums@stlport...>

	* src/cxa.c: Add include of stlport_prefix.h first, this file
	should be always included first in STLport translation units,
	it prepares some compilers config and define important for Wins
	__BUILDING_STLPORT macro.

2005-12-13  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* build/Makefiles/gmake/targetdirs.mak: built-in
	test in /bin/sh on Solaris has no -e, use external instead.

2005-12-11  Francois Dumont  <dums@stlport...>

	* build/Makefiles/gmake/bcc.mak : Add -w-eff to disable 'useless'
	code warning, we had to chose between this warning and the 'used
	parameter' one.

	* build/Makefiles/gmake/targetdirs.mak: Removed comment about folder
	creation action under windows platform. The action is identical to
	the one used in the nmake build system and no one complains about it
	so current situation is not so bad. Only users of Windows before Windows
	98 should eperiment troubles, this is a known limitation.

	* build/Makefiles/gmake/dmc.mak, cygming/rules-so.mak: Change config,
	now we directly invoke the linker, we do not use a compiler call for it.

	* build/Makefiles/gmake/app/bcc.mak: Fix linker option in order to generate
	a windows executable and not a dll, thanks Eric Sanford.

	* build/Makefiles/gmake/app/rules-install.mak: Add install dir dependency
	rather than doing a folder existence check in rules actions.

	* build/Makefiles/gmake/app/rules.mak: Restore slash rotation for Borland
	linker invocation and fix static rules dependencies to guaranty folder
	creations.

	* build/Makefiles/gmake/lib/bcc.mak: Add missing archiver page size parameters.

	* build/test/unit/bcc.mak: Add _STLP_DEBUG_UNINITIALIZED for static
	debug rules.

	* build/Makefiles/gmake/lib/rules-a.mak: Segregate each archiver invocation.

2005-12-09  Francois Dumont  <dums@stlport...>

	* build/lib/configure.bat: Add Borland compiler to compilers
	able to mix a dll build with a static native runtime.

	* build/Makefiles/gmake/bcc.mak, dmc.mak: Complete libs to link
	depending on STLport configuration.

	* build/Makefiles/gmake/targetdirs.mak: roll back modif from Petr
	2005-12-08

	* build/Makefiles/gmake/targets.mak: ditto

	* build/Makefiles/gmake/cygming/lib.mak: Fix for static libs build
	with compiler different than gcc.

	* build/Makefiles/gmake/cygming/targetsys.mak: Add missing info for
	static libs build with Borland and Digital Mars compilers.

	* build/Makefiles/gmake/lib/rules-a.mak: Fix static builds commands
	to use info of above point.

	* build/Makefiles/gmake/lib/rules-install-a.mak: Add install rule
	for windows and missing catalog in dependency tree.

	* build/Makefiles/gmake/windows/rules-install-so.mak: Add missing
	catalog dependency.

2005-12-09  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* build/lib/Makefile.inc: add cxa.c into compilation; this
	is useful for FreeBSD 4.11 C++ ABI workaround.

	* src/cxa.c: use _cxa_atexit and related functions on
	FreeBSD 4.11 [workaround for missed C++ ABI functions].

2005-12-08  Francois Dumont  <dums@stlport...>

	* stlport/stl/_auto_ptr.h: Add missing Standard throw() specification
	on all auto_ptr members.

	* stlport/config/stl_mycomp.h: Removed recently introduce macro
	_STLP_DFLT_PARAM_INSTANCIATION_BUG, already existing _STLP_DONT_SUP_DFLT_PARAM
	is enough for the moment.

	* stlport/stl/_stream_iterator.h: Small implementation change to make
	Digital Mars compiler happy.

	* stlport/stl/_unordered_map.h: Digital Mars compiler do not like
	immutable keys in associative containers.

2005-12-08  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/ctype.h: forward-declaration for _exception struct
	for WinCE/eVC3; prevents warning message
	../include/stdlib.h(817) : warning C4115:
	'_exception' : named type definition in parentheses
	[Michael Fink's suggestion]

	* stlport/float.h, stlport/limits.h, stlport/setjmp.h: idem.

	* stlport/stdarg.h, stlport/string.h, stlport/stdio.h: idem.

	* build/Makefiles/gmake/gcc.mak: check configuration macro
	WITHOUT_STLPORT [useful for tests]; force usage of stlport
	headers first otherwise.

	* build/Makefiles/gmake/targetdirs.mak: fix catalogs creation
	procedure [loop through catalogs required]; comment problematic
	code when we have no good tools.

	* build/Makefiles/gmake/lib/gcc.mak: fix typo [FreeBSD]; fix
	set of libraries when link for FreeBSD; fix typo in macro name
	[FreeBSD again].

	* build/Makefiles/gmake/app/gcc.mak: fix set of libraries when
	link for FreeBSD; insert stlport lib in STDLIB set [when STLPORT
	in force], to avoid set one in application's makefile.

	* build/test/unit/gcc.mak: explicit refrence to libstlport in
	this makefile not required more [see message above].

	* build/Makefiles/gmake/lib/gcc.mak: remove names inherited from
	Complement project.

	* build/Makefiles/gmake/*/rules-install-so.mak: installation
	catalog was missed in dependency tree; ident string removed
	to simplify merge/diff

	* Build: building library and unit tests with cross [gcc 3.4.5]
	on Linux for FreeBSD 5.3 (except cwctype_test).

	* build/Makefiles/gmake/targets.mak: rotate slashes for BCC.

	* build/Makefiles/gmake/app/macro.mak: remove name contruction
	for program; rotate slashes for wins.

	* build/Makefiles/gmake/app/rules-install.mak: remove name
	contruction for program.

	* build/Makefiles/gmake/app/rules.mak: remove name contruction
	for program; objects for static and for dynamic are the same. 
	
2005-12-04  Francois Dumont  <dums@stlport...>

	* src/num_put_float.cpp: Filter inclusion of stdint.h, required for
	Digital Mars compiler, forbidden for Sun platform.

	* stlport/stl/_cwctype.h: wide types and function are in global
	namespace.

	* build/test/unit/gcc.mak: Modify cygwin/mingw config now that
	default settings for those platform is shared library.

	* build/Makefiles/gmake: Add support of static targets, used
	especially for Borland C++ Compiler and Digital Mars Compiler.

	* build/Makefiles/gmake/app/gcc.mak: Fix typo in FreeBSD
	configuration.

2005-12-02  Francois Dumont  <dums@stlport...>

	* stlport/config/stl_msvc.h: Fixed configuration detection when building
	STLport dll based on a static native runtime.

	* stlport/stl/_locale.h: Fix warning convertion from size_t to
	__stl_atomic_t that can be of lower size.

	* stlport/config/stl_gcc.h, doc/README.mingw, README.cygwin: Made dll
	default settings under cygwin/mingw.
	
2005-12-01  Francois Dumont  <dums@stlport...>

	* stlport/stl/_mbstate_t.h: Add workaround for alpha bad WCHAR_MIN and
	WCHAR_MAX definition.

	* stlport/config/stl_gcc.h: Configure STLport for alpha platform as not
	supporting iec559 specification as quiet nan is not correct. If someone
	find the right value then this config will have to be rollbacked.

	* build/Makefiles/gmake/gcc.mak: Restored Sun OS support that use the
	-pthreads option and not -pthread

	* build/Makefiles/nmake/lib/macro.mak: Fixed library name generation
	when using cross runtime version thanks Alexey Ivanov report.

2005-11-29  Francois Dumont  <dums@stlport...>

	* stlport/stl_user_config.h: Add _STLP_LIB_NAME_MOTIF macro to give
	users a point of customization of the automatic linking feature.

	* build/Makefiles/nmake/lib/macro.mak, gmake/cygming/lib.mak: Use
	STLP_BUILD_LIB_MOTIF in library name generation algorithm. Also take
	into account cross builds in library name generation.

	* build/lib/configure.bat: Add --lib-motif option to give users a
	way to customize the generated library names.

	* test/eh: Generalized use of msvc.mak rather than all the nmake-vc??.mak
	files. Idem for evc.mak instead of nmake-evc?.mak and icl.mak instead of
	nmake-icl.mak.

	* stlport/stl/_exception.h: Change _msvc_warnings_off.h include in
	_warnings_off.h as this file now also turn off Borland warnings.

	* stlport/config/_detect_dll_or_lib.h: Mutualization of code used to
	detect current STLport type of build or usage (dll or static lib).

	* stlport/config/stl_msvc.h, stl_bc.h, stl_dmc.h: Integration of
	_detect_dll_or_lib.h

	* stlport/config/_auto_link.h: Change auto link algo when we detect
	cross STLport usage that is to say use of STLport as a dll link with
	static native runtime or opposite.

2005-11-29  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* src/cxa.c: mutex should be recursive-safe, due to __cxa_finalize
	may be called recursive.

2005-11-28  Francois Dumont  <dums@stlport...>

	* stlport/stl/_threads.h: Simplified expression used to instanciate
	_Atomic_swap_struct, gcc 2.95 had trouble with the one line expression.

	* src/dll_main.cpp: Fix instanciation of _Swap_lock_struct that has been
	changed and renamed in _Atomic_swap_struct.

	* test/unit/map_test.cpp, set_test.cpp: Simplified call to map constructor
	taking a functor and allocator instance, split it in a creation of a les<int>
	instance then passed to the constructor; gcc 2.95 had trouble with previous
	version.

	* stlport/stl/_cmath.h, _cstdlib.h: Now those files includes each other to
	make sure that all abs overloads are defined when it is imported in STLport
	namespace. gcc 2.95 is very strict on this point and only consider the abs
	overloads existing at the first import calls, all overloads added after that
	are discarded silently.

	* stlport/stl/_cmath.h: Removed unjustified abs function overloads done
	directly in STLport namespace for gcc 2.95 and before. Those overloads
	clashed on a Linux with gcc 2.95 from the sourceforge compiler farm. 

	* build/Makefiles/gmake/gcc.mak: Generalized definition of _REENTRANT under
	Linux to make detection of a multithreaded build from STLport code easier.
	Problem meet on an alpha linux platform from the sourceforge compiler farm.

	* stlport/stl/_locale.h: Removed _M_delete locale::facet member variable,
	useless if facet instance reference counter is right.

	* src/locale_impl.cpp, message.cpp: Change classic facets initialization code
	to simply set initial counter to 1 rather than incrementing it after construction.

	* test/unit/evc.mak fix path to config file in existance check.

	* stlport/stl/_move_construct_fwk.h, type_manips.h: Add workaround to use
	move constructor with Borland compiler.

2005-11-28  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* build/Makefiles/gmake/targetdirs.mak: change names of .o output dirs
	to make bcc happy (bug with passing name that contain '-' from
	compiler to linker). Replacement: 'shared' -> 'so', 'static' -> 'ar',
	'-' -> '_' (i.e. obj/gcc/shared-stlg -> obj/gcc/so_stlg, a bit shorter)
	[Suggested by Francois Dumont].

2005-11-27  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* build/Makefiles/gmake/targets.mak, app/rules.mak, linux/rules-so.mak:
	use gcc instead of c++ as linker if there are no C++ objects.

	* src/cxa.c, build/misc/cxa_atexit/Makefile.inc, build/misc/cxa_atexit/gcc.mak:
	workaround for bugged __cxa_finalize; use builded libcxa.so in LD_PRELOAD or
	/etc/ld.so.preload in Linux system with bugged glibc. See also
	http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24189

2005-11-27  Francois Dumont  <dums@stlport...>

	* stlport/stl/type_manips.h: Add import of __true_type and
	__false_type in STLport private namespace as the using namespace
	directive do not seems to be enough for latest gcc version.

	* src/time_facets.cpp: Fix buffer size decrementation in __write_formatted_time
	function thanks Petr Ovtchenkov

2005-11-26  Francois Dumont  <dums@stlport...>

	* stlport/stl/_complex.h: Move implementation of generic abs, arg and polar
	after definition of double overload used in implementation. Thanks Kees de
	Bruin

	* stlport/stl/_threads.h, _alloc.h, _alloc.c: Fix lock free node allocator
	implementation thanks Weis.

	* stlport/stl/wrappers: Removed, no more maintained and complicated to fix
	with the debug and pointer specialization implementations.

	* test/unit/stack_allocator.h: Creation of an allocator using a stack buffer.
	This allocator specificity is to not be stateless and not default constructible.

	* test/unit/list_test.cpp, stlport/stl/_list.h, _list.c: Add of a test with the
	StackAllocator. Fix list implementation to correctly handle allocator state
	in the methods moving elements from a list instance to an other.

	* stlport/stl/_carray.h: Creation of a new internal struct _CArray that mimic a C
	array with the additionnal feature of being able to be instanciated with a type
	without default constructor.

	* stlport/stl/debug/_list.h: Adapt iterator invalidation according allocators
	compare result.

	* test/unit/slist_test.cpp, stlport/stl/_slist.h, _slist.c: idem list.

	* stlport/stl/_slist.h: Modification of the splice_after methods signature. Users
	now have to pass the source slist instance, this is mandatory in order to compare
	the 2 slists allocator instance before moving an element from a slist instance to
	an other.

	* stlport/stl/_string_base.h: Fix _M_swap implementation for basic_string instanciation
	with allocator having a state.

	* stlport/stl/_list.c, _slist.c: sort methods now throw an overflow exception when lists
	are too long to be sorted with the current algorithm. This is preferable to a buffer
	overrun.

	* stlport/stl/_alogobase.c: Small equal_range optimization, upper_bound is not called
	anymore when lower_bound returned value is already not equivalent to the search value.

	* build/Makefiles/gmake: Add build system for Digital Mars and Borland C++ compilers

	* build/lib/configure.bat: Add following options
	  --use-boost
	  --not-thread-safe
	  --no-rtti
	see script for explanation. --mingw removed, detected with --compiler option, if
	gcc, dmc or bcc then we are using MinGW tools.

	* build/lib/configure: Add --not-thread-safe option

	* build/Makefiles: Add build options to generate not thread safe libs and no rtti libs,
	all compilers option has not been updated.

	* stlport/c*: Modification of C++ headers wrapping C ones. All code moved to internal
	headers in stlport/stl folder. Internal headers are only included if include comes from
	user code otherwise only native header is included. Limit dependency between STLport
	headers relations and native library once. Reported by problem building with Borland
	compiler.

	* test/unit/cppunit/cppunit_mini.h: Replace cstring include with string.h to avoid
	references to std namespace in headers, should be more portable. Add typedef Base
	definition in CPPUNIT_TEST_SUITE macro, used in calls to base class methods, help
	Borland.

	* Generalize use of secure string functions (strcpy_s for instance) for MSVC compilers
	supporting it and tagging former versions like deprecated. The pragma warning that used
	to disable this warning has been removed.

	* stlport/BC50: Removed, no necassry anymore for supported Borland compiler versions.

	* stlport/stl/debug: Implementation modification, now debug wrapper agregate a non debug
	instance rather than inheriting from it. Makes debug implementation clearer as we are now 
	forced to implement the complete containers interfaces.

	* stlport/stl/pointers: Fix implementation in order to support Standard compilers
	not accepting cast from function pointer to void*.

	* *: Reinforce use of STLport private namespace (stlp_priv or stlport::priv) for all
	internals algorithms.

2005-11-21  Francois Dumont  <dums@stlport...>

	* Fix classic locale facet initial reference counter thanks
	Cabal

2005-11-20  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* src/num_put.h: check that incoming string has enough
	digits for fractional part processing. This check includes
	check for empty incoming string. (Thanks Leonardo [leoapsilva]
	for the bug report).

	* stlport/stl/_monetary.c: fix processing the case when
	number of digits in value less then number of digits in fraction.

	* src/facets_byname.cpp: international currency symbol should
	be the first (not depends upon where currency symbol situated in
	the national format).

	* test/unit/locale_test.cpp: tests for reproducing this problems.

2005-11-20  Gail Baker  <baker88@users.sourceforge.net>

	* build/Makefiles/gmake/CC.mak: Updated compiler option
	to compile larger inline functions inline.

	* build/Makefiles/gmake/lib/CC.mak: Changed how the header
	file linking is done to only do it once instead of with
	every compile.

	* build/lib/README: include instructions for SunPro compiler.
 
	* build/test/unit/CC.mak: allow the STLP_DEBUG version to compile.

2005-11-19  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/stdlib.h: replace C++ comments by C, to satisfy -ansi
	option of compiler.

2005-11-18  Francois Dumont  <dums@stlport...>

	* build/Makefiles/nmake/lib/rules-install-so.mak, 
	app/rules-install-so.mak: Add copy of manifest file when exist
	rather than when compiler is Visual Studio 2005.

	* src/stdio_streambuf.cpp: Removed warning for EVC 3 and 4 thanks
	Michael Fink patch.

	* stlport/stl/math.h, stdlib.h: Fix EVC3 warning thanks Michael Fink
	patch.

	* doc/README.evc3: doc update from Michael Fink.

	* stlport/*, stlport/*, tests/*: Clean up of trailing blank charaters
	in all source files.

2005-11-17  Gail Baker  <baker88@users.sourceforge.net>

	* build/Makefiles/gmake/CC.mak, depend.mak, app/CC.mak, lib/CC.mak:
	support of SunPro 5.7 compiler.

	* build/lib/CC.mak: ditto

	* stlport/stl/_rope.c: Removed extra semi-colons.
	
	* stlport/stl/_rope.h: Sunpro compiler had a problem with
	the __ROPE_DEPTH_SIZE macro doing an addition. Changed to
	a fixed value instead.

	* stlport/cstdlib: Updated to allow the compiler to find abs and div

	* stlport/config/stl_sunpro.h: Disabled _STLP_LINK_TIME_INSTANTIATION
	since this nolonger works with current files. The issue here is that
	a number of defines that are required in the C versions of the files
	use defines that are undefed at the end of the include. So, when
	the compiler finally compiles the C version at link time the defines
	are lost and the files don't compile. Also added a minor change
	to allow files that are compiled with cc to include stl_sunpro.h
	without bailing out.

	* stlport/stl/_bvector.h: Added stl/_range_errors.h required by
	an exception that can be called.

	* stlport/stl/_cmath.h: Changed to pull all math functions from std
	namespace for SunPro compiles only.

	* test/unit/fstream_test.cpp: Added SunPro compile to the list
	of compilers that don't use the DO_CUSTOM_FACET_TEST.

	* test/unit/string_test.cpp: Added Sun UI Threads to the list
	of supported thread types in the test.

	* test/unit/valarray_test.cpp: The compiler was having trouble
	finding abs(). Added a "using std::abs" for the SunPro compiler
	which solved the problem.

	* test/unit/cppunit/cppunit_mini.h: Added additional using statements
	for the str* commands.

	* test/unit/cppunit/test_main.cpp: Added "using namespace std;"
	for the SunPro compiler.

	* build/test/unit/CC.mak: support of SunPro 5.7 compiler

2005-11-17  Francois Dumont  <dums@stlport...>

	* stlport/stl/_messages_facets.h, src/messages.cpp: Move message facet
	constructor private to guaranty that it is only called from the _Locale_impl
	class for classic locale facets creation. Change constructor implementation
	as now passed _Message instance is dynamically instanciated so needs to be
	destroy on facet destruction; moreover the facet is also dynamically allocated
	and has to be destroyed when reference counter reach 0.

	* src/locale_impl.cpp: Removed call to now useless free_classic_locale function.
	Change make_classic_locale implementation, now classic locale facets are
	allocated on the heap and have to be destroyed like any ordinary facets
	when reference counter reach 0.

2005-11-15  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/stl/_tree.h: check iterator returned from lower_bound
	in equal_range_unique for end, to avoid increment [useful when
	key not available].

	* test/unit/map_test.cpp: test for problem above.

2005-11-09  Francois Dumont  <dums@stlport...>

	* build/test/eh/gcc.mak: Fix build system for Cygwin/MinGW systems that
	was broken since library naming convention modification.

2005-11-07  Michael Fink  <vividos@users.sourceforge...>

	* build/lib/configure.bat: Fixed configuring for Visual Studio .NET 2003.
	Fixed jump target names for Win9x OSes: they must be 8 characters or
	shorter.

2005-11-07  Michael Fink  <vividos@users.sourceforge...>

	* build/Makefiles/nmake/evc3.mak, build/Makefiles/nmake/evc4.mak,
	build/lib/configure.bat, stlport/config/stl_evc.h: Added check if
	using x86 emulator configuration; using of proper include paths in
	case.

	* doc/README.evc4: Documentation update

2005-11-01  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* Repository: STLport 5.0, tag STLPORT_5_0_RELEASE

	* Repository: merge HEAD and STLPORT_5_0 branch.

	* build/Makefiles/gmake/app/rules-install.mak: install-shared rule
	added (patch by Michael Fink).

	* build/Makefiles/gmake/lib/rules-install-a.mak: install-static rule
	added (patch by Michael Fink).

2005-10-12  Francois Dumont  <dums@stlport...>

	* stlport/stl/_threads.h, _threads.c: Fix regression for some platforms
	introduce by modification of _Atomic_swap_ptr implementation thanks
	Albrecht Fritzche.

2005-10-09  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* repository: RC6, tag STLPORT_5_0_RC6

2005-10-09  Francois Dumont  <dums@stlport...>

	* stlport/config/stl_gcc.h: DEC alpha has not *l math functions

2005-10-08  Francois Dumont  <dums@stlport...>

	* stlport/stl/_config.h: Add endianess specification for DEC alpha thanks
	sourceforge compiler farm.

	* stlport/config/stl_intel.h: Remove reference to _STLP_GLOBAL_NEW_HANDLER
	in this file as this macro depends on native Standard library which is
	the back end MSVC compiler one so macro set in stl_msvc.h.

2005-10-07  Francois Dumont  <dums@stlport...>

	* build/Makefiles/gmake/darwin/sys.mak, freebsd/sys.mak: Fix EXT_TEST
	definition to test rather than /usr/bin/test thanks sourceforge
	compiler farm.

2005-10-05  Francois Dumont  <dums@stlport...>

	* build/Makefiles/nmake/vc-common.mak: Remove /Fd option for the icl
	compiler that do not know it.

2005-10-04  Francois Dumont  <dums@stlport...>

	* stlport/stl/debug/_list.h: Fix resize method implementation in safe
	STL mode thanks Ethan Fenn report.

	* test/unit/list_test.cpp: Add test case for list::resize method.

	* build/Makefiles/nmake/lib/rules-install-a.mak, app/rules-install-a.mak:
	Install .pdb files only if exist, Intel C++ compiler do not generate them
	when building static libraries. Thanks Albrecht Fritzsche

	* stlport/stl/_ostream.h, _ostream.c: Move _M_init function implementation
	from .c to .h as .c is not included when _STLP_NO_CUSTOM_IO is defined
	but _M_init might not be exported if compiler fully inline it.

2005-10-03  Francois Dumont  <dums@stlport...>

	* stlport/stl/_tree.h: Fix _S_value method definition that returns
	a value_type& rather than the reference typedef as reference might be,
	depending on the traits used to instanciate _Rb_tree, equivalent to
	a const_reference.

2005-09-30  Francois Dumont  <dums@stlport...>

	* INSTALL, README, doc/FAQ, doc/README.msvc: Documentation updates.

	* doc/stlport_namespaces.txt: Small doc about STLport namespaces and how
	STLport replace native Standard library.

2005-09-26  Francois Dumont  <dums@stlport...>

	* build/*: Finished _STLP_LEAKS_PEDANTIC clean up from all make files.

2005-09-25  Francois Dumont  <dums@stlport...>

	* build/test/unit/gcc.mak: Remove _STLP_LEAKS_PEDANTIC option when building
	unit tests as this option is not defined when building the libs.

2005-09-22  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* build/Makefiles/gmake/sysid.mak: add underscore in architecture recognition,
	to parse targets like x86_64-unknown-linux-gnu.

2005-09-21  Francois Dumont  <dums@stlport...>

	* src/locale.cpp, facets_byname.cpp: Use of _STLP_ATOMIC_INCREMENT rather than
	a lock on a mutex when the macro is available.

2005-09-21  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* src/locale_impl.cpp: some internal functions used before declared.
	Thanks Thomas Kho for report.

2005-09-20  Francois Dumont  <dums@stlport...>

	* stlport/stl/_string.h, _string_workaround.h: code refactoring, substr method
	now use string constructor taking same parameters rather than the range
	constructor, thanks Felix Wyss report. Also add missing allocator parameter
	for non stateless allocators.

	* build/Makefiles/gmake: Restore resource build for Cygwin and MinGW, add
	it for Windows.

	* build/lib/configure.bat: Add --extra-cxxflag to inject additional compilation
	option in the nmake build system.

2005-09-20  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* test/unit/ptrspec_test.cpp: gcc 2.95 fail to roll out template instantiation
	for pointers to member function, skip this test for gcc 2.95.

	* build/Makefiles/gmake/gcc.mak: gcc 2.95 has no -fuse-cxa-atexit option.

	* build/lib/gcc.mak: don't use LEAK_PEDANTIC with gcc 2.95 [but this not help,
	segfault at program termination still happens].

	* stlport/config/stl_gcc.h: gcc 2.95 has problem with llabs, so force to use
	_STLP_NO_VENDOR_STDLIB_L; 2.95 fails to initialize builtin types.

	* stlport/stl/_cmath.h: workaround for gcc 2.95---it has problem with 'using'
	directive [problem with 'abs' with float types as argument].

	* stlport/stl/type_traits.h: workaround for gcc 2.95 [parentheses around
	template argument]. Thanks Thomas Kho.

	* test/unit/fstream_test.cpp: custom facet test compilation fail for gcc 2.95

	* build/Makefiles/gmake/icc.mak, build/test/unit/icc.mak: support icc 9.0,
	thanks John Fisher-Ogden and Thomas Kho.

	* src/c_locale_glibc/c_locale_glibc2.c: use newlocale/freelocale for
	glibc 2.3.x, and __newlocale/__freelocale for glibc 2.2.x. Thanks Gail Baker.

2005-09-19  Francois Dumont  <dums@stlport...>

	* build/Makefiles/nmake/clean.mak, lib/clean.mak, app/clean.mak: Add check
	for file or folder existance before calling del or rd to avoid error
	messages that give a bad feed back to STLport users.

	* build/Makefiles/gmake: Add support to use the GNU make tool in a Windows
	cmd console. For the moment it is used to build STLport using a simple
	MinGW distrib.

	* stlport/stl/type_traits.h: Simplified code removing the _IsConvertibleIfNot
	that has never proved of being useful, it only introduces problem with some
	limited compilers.

	* stlport/stl/_string_workaround.h, _string.h, debug/_string.h: Fix string
	range constructor bug in the VC6 specific workaround implementation that was
	resulting in a memory leak. Thanks Felix Wyss report.

2005-09-18  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/stl/_hash_fun.h: add hash function for void *.

	* src/facets_byname.cpp, src/message_facets.h: introduce map between
	nl_catd type [that is void * on Linux] and messages_base::catalog
	[that is int by Standard]; this should remove problems on platforms
	where sizeof(int) < sizeof(void *).

2005-09-16  Francois Dumont  <dums@stlport...>

	* stlport/cwchar: Add MinGW 3.8 runtime wide-char to multi-byte functions
	import within STLport namespace thanks Rene Riviera.

2005-09-14  Francois Dumont  <dums@stlport...>

	* stlport/config/stl_gcc.h: Mingw support string wide functions thanks
	Rene Riviera report.

2005-09-13  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* stlport/stl/_thread.h: fix return type specification
	[volatile void * -> void *].

2005-09-12  Francois Dumont  <dums@stlport...>

	* stlport/stl/_thread.h: Fix _Atomic_swap_ptr implementation in single
	threaded mode and when there is no pointer atomic swap operation.

	* stlport/stl/_site_config.h: Add _STLP_NO_CYGWIN macro to signal use
	of the -mno-cygwin cygwin option.

	* build/lib/configure: Remove automatic generation of stlport/script_config.h.

2005-09-11  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* build/Makefiles/gmake/sysid.mak: provide identification hosted platform.

	* build/Makefiles/gmake/targetdirs.mak: CygWin/MinGW has no /usr/bin/test,
	but built-in test support -e; see record 2005-09-04.

	* build/Makefiles/top.mak: separate hosted platform and target platform
	file extentions, tools, utilites.

	* build/Makefiles/gmake/?/sys.mak, build/Makefiles/gmake/?/targetsys.mak:
	ditto.

2005-09-09  Francois Dumont  <dums@stlport...>

	* src/c_locale_win32.c: Fix _Locale_wchar_[tolower,toupper] implementation
	which was wrong when wint_t was not the same typedef as wchar_t.

	* build/lib/configure: Removed obsolete configure options --with-msvc and
	--with-mssdk. And --no-cygwin option to make build of STLport using -mno-cygwin
	option easier.

	* stlport/script_config.h: New header used to put additionnal macros defined
	by the configure script.

	* stlport/stl/_config.h: Add script_config.h include.

	* stlport/config/stl_gcc.h: Use of the new _STLP_NO_CYGWIN macro to set
	the right _STLP_NATIVE_INCLUDE_PATH macro value.

	* build/Makefiles/gmake/gcc.mak: Change CC and CXX assignment from := to
	?= to take into account an already existing definition.

2005-09-07  Francois Dumont  <dums@stlport...>

	* build/Makefiles/gmake: Adopt a more traditionnal unixes naming
	convention for cygwin and mingw.

	* build/Makefiles/nmake: Attempt to make STLport library names more
	coherent between unixes and windows systems. Now windows use the 5.0
	extension like under unixes even if under unixes the file extension
	is before the 5.0 and under windows it will be after. The other
	difference is that the debug suffix is 'g' when using gcc and 'd' for
	the other compilers. This modification comes from a work to improve
	STLport integration within boost build system, bjam.

	* stlport/config/stl_msvc.h: Modify MSVC auto link feature to reflect
	above modifications.

2005-09-06  Francois Dumont  <dums@stlport...>

	* stlport/config/stl_gcc.h: Fix cygwin config that do have native
	mbstate_t definition.

2005-09-05  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* repository: RC5, tag STLPORT_5_0_RC5

2005-09-04  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* build/Makefiles/gmake/targetdirs.mak: in sh's built-in 'test' no -e
	option on Solaris, use external 'test' instead.

	* build/test/unit/gcc.mak: Fix LDSEARCH recursive problem; fix
	options for ld search path for some platforms.

	* stlport/cstdlib, stlport/stl/_cmath.h: fix usage of native
	?f and ?l math functions on Solaris; hypot for long double should't
	loose precision, if no native C function present.

2005-09-02  Francois Dumont  <dums@stlport...>

	* stlport/config/stl_msvc.h, stl/_move_construct_fwk.h: Add the 
	_STLP_NO_MOVE_SEMANTIC configuration macro to remove move semantic
	support for MSVC .Net 2002 that seems to be unable to support it.
	Maybe we should rather remove this compiler version support...

	* test/unit/mvctor_test.cpp: Add _STLP_NO_MOVE_SEMANTIC check.

2005-08-31  Francois Dumont  <dums@stlport...>

	* build/Makefiles/nmake: Enhance nmake build system to correctly take
	into account the .manifest files generated by VS 2005 Beta.

2005-08-29  Petr Ovtchenkov  <complement@users.sourceforge.net>

	* CVS repository: CVS repository master copied from cvs.stlport.com to SourceForge.
	All history preserved!

2005-08-27  Francois Dumont  <dums@stlport...>

	* stlport/stl/_hashtable.h: Fix move feature integration for the hash_multimap
	container.

	* stlport/stl/_deque.h: Fix _Deque_base move constructor implementation.

	* test/unit/mvctor_test.cpp: Change move constructor tests to use dynamically
	allocated string rather than static ones.

	* build/test/unit/nmake-vc6.mak: Increase compiler maximum heap size to allow
	compilation with stldbg rules.

	* build/test/unit/nmake-evc4.mak: Fix macro typo OPT_STLDBG_STATIC -> 
	OPT_STATIC_STLDBG

	* build/Makefiles/gmake/gcc.mak: Filter out the newly added -fuse-cxa-atexit
	compilation option for Cygwin and Mingw, the granted libc is not compatible
	with it.

2005-08-26  Petr Ovtchenkov  <ptr@island...>

	* stlport/config/stl_solaris.h: C++ comments replaced by C ones,
	this file may be included by C sources. Thanks Matti Rintala.

2005-08-25  Francois Dumont  <dums@stlport...>

	* stlport/stl/_config.h, _epilog.h: Move of stlport namespace alias
	definition from _epilog.h to _config.h to avoid redefinition as _epilog.h
	is reentrant. This is a workaround for a HPUX aCC compiler bug reported
	by Baker.

2005-08-25  Petr Ovtchenkov  <ptr@island...>

	* build/Makefiles/gmake/gcc.mak: usage of -fuse-cxa-atexit strongly
	required for correct order of static objects dtors calls. This is
	used in deinitialization of locale-related objects. Thanks Matti Rintala.

	* stlport/stl/_config.h: use different namespaces for mulithreaded
	and non-multithreaded builds to avoid usage of non-multithreaded
	application with multithreaded libstlport and vice versa;
	[combination non-mt & mt lead to crash due to different instances
	and sizes of allocators for non-mt and mt cases].

2005-08-23  Francois Dumont  <dums@stlport...>

	* stlport/stl/_config_compat.h: Add check of _STLP_NO_OWN_IOSTREAMS
	macro to make remove of its support more explicit thanks to a #error
	directive.

	* stlport/stl/_tree.h, _hashtable.h: Now reference and pointer types
	are taken from the _Traits template parameter used to instanciate
	the class. Doing so now set::reference and hash_set::reference are
	const_reference which is coherent with respective iterators that are
	immutable. Moreover it fixes a VC6 bug in reverse_iterator implementation
	that was trying to transform a const reference to a simple reference
	thanks Russell Miller report.

	* test/unit/set_test.cpp: New test case for set reverse_iterator.

2005-08-23  Petr Ovtchenkov  <ptr@island...>

	* stlport/config/stl_gcc.h: seems HP-UX has no *f variants of math
	functions [ceilf, fabsf, etc.]

2005-08-21  Francois Dumont  <dums@stlport...>

	* stlport/stl/_string.h, _rope.h: Removed __move_traits specialization
	for string wstring crope and wrope. There is no reason to believe that
	its move construtor will be complete as an STLport user has the right
	to specialized the std::allocator<> with char or wchar_t.

	* stlport/stl/_function_base.h, _alloc.h: Generalized use of the
	__stlport_class struct rather than introducing a new helper type
	(__stlport_less or __stlport_alloc) when we need to recognize STLport
	implementation from a user one.

2005-08-20  Francois Dumont  <dums@stlport...>

	* stlport/stl/_list.h, _slist.h: Fix move constructor implementation
	thanks Henrik Goldman (www.x-formation.com) report.

	* stlport/stl/_alloc.h: Fix type_traits specialization for allocator
	type. Now specialization is only apply for the default STLport allocator
	implementation and not for potential user specialization.

	* stlport/stl/_deque.h, _hashtable.h, _string.h, _tree.h, _vector.h:
	Simplification of the move framework application especially in the
	definition of the containers __move_traits specialization. Many
	_AsMoveSource call replaced by explicit call to the move constructor
	when we are sure that there is one.

	* test/unit/mvctor_test.cpp: Add many tests to check move contructor
	implementations.

	* stlport/stl/_function_base.h: Add type_traits specialization for the
	less functor to help the move framework when dealing with associative
	containers.

	* test/unit/mvctor_test.cpp: Add a new test case checking correct move
	semantic support for all STL containers.

	* stlport/stl/_rope.h: Add move semantic support to the rope class.

2005-08-19  Petr Ovtchenkov  <ptr@island...>

	* build/Makefiles/gmake/gcc.mak: fix extraction of gcc version.
	Thanks Thomas Kho.

2005-08-18  Francois Dumont  <dums@stlport...>

	* stlport/stl/_deque.c: Fix _M_erase range for movable types method
	implementation, same bug as below in vector.

	* test/unit/mvctor.cpp: Improve test case on vector to reveal bug
	below and add same tests for deque which is the other container that
	use the move contructor feature.

2005-08-18  Petr Ovtchenkov  <ptr@island...>

	* INSTALL: add some words about multithread options and libraries.

	* stlport/stl/_fstream.c: some code clean to reduce bogus compiler
	warnings with -Wall.

	* stlport/config/stl_gcc.h: seems HP-UX has no llabs and lldiv.

2005-08-17  Francois Dumont  <dums@stlport...>

	* stlport/stl/_vector.h: Fix _M_erase range for movable types
	implementation thanks Sergej Zagursky.

	* build/Makefiles/nmake/vc8.mak: removed /RTC1 compiler option, the platform
	SDK compiler do not support it. STLport users will just have to activate it
	by themself if they want to.

	* stlport/stl/_complex.h: Fix some floating point literals thanks
	 Ulrich Eckhardt report.

	* stlport/stl/_time_facets.c: Complete integration of the '#' MS extension
	in the date/time format string, reported thanks to the recent locale time_get
	new test case.

2005-08-14  Francois Dumont  <dums@stlport...>

	* stlport/config/stl_msvc.h: Fix platform SDK compiler config, even latest
	version that announce to be similar to .Net 2005 beta do not throw bad_alloc
	from the new operator.

	* stlport/cstdio, cstdlib: Replaced some _WIN64 checks by a
	_STLP_USING_PLATFORM_SDK_COMPILER check.

	* test/unit/cmath_test.cpp: Complete test filtering for Microsoft platform SDK
	compiler.

2005-08-14  Petr Ovtchenkov  <ptr@island...>

	* test/unit/locale_test.cpp: tests for time_get facet.

	* stlport/stl/_time_facets.c: fix processing of %p format
	[12:00 PM ~ 12:00, 12:00 AM ~ 00:00].

	* src/time_facets.cpp: substitute expanded equivalent format strings
	instead of %T, %R, %r.

	* stlport/pthread.h: Fix C++ comment in a potentially C header. Thanks Ali

2005-08-11  Francois Dumont  <dums@stlport...>

	* stlport/stl_user_config.h: Add _STLP_USING_PLATFORM_SDK_COMPILER so that
	STLport user can signal they are using platform SDK compiler.

	* stlport/config/stl_msvc.h: Add use of _STLP_USING_PLATFORM_SDK_COMPILER.

	* test/unit/cmath_test.cpp, valarray_test.cpp: Removed tanh calls when using
	AMD 64 platform SDK compiler, looks like they miss something...

2005-08-09  Francois Dumont  <dums@stlport...>

	* src/fstream.cpp: Final fix of basic_filebuf::open method. Now when open
	from a Win32 handle the file will be considered as in binary access with no
	append action.

2005-08-08  Francois Dumont  <dums@stlport...>

	* src/fstream.cpp: Fix annoying 64 warning and basic_filebuf::open method
	from a low level file descriptor or from an HANDLE (not yet complete).
	Thanks Yves Maliet report.

2005-08-07  Francois Dumont  <dums@stlport...>

	* test/unit/inner_product.cpp: Fix 64 bits portability warning.

	* test/unit/cmath_test.cpp: Removed modf tests for Windows 64 platform
	as the SDK is missing the underlying modff implementation.

	* stlport/cstdlib: Add a div function definition which is missing in the
	Windows 64 SDK.

	* stlport/cstdio: Add vsnprintf definition which is missing in Windows
	64 SDK.

	* stlport/exception: Add flexibility for definition of vendor terminate
	and uncaught_exception function namespace. Can now be defined independantly
	of the unexpected_exception namespace.

	* src/dll_main.cpp: Removed explicit turn off of optimization for Microsoft
	compilers after .Net 2003. There were no comment to explain why optimizations
	were turned off so I guess it was a compiler bug. .Net 2003 being a major
	new version I hope this bug has vanish with this version.

	* src/fstream.cpp: Removed static assertion for windows file handle to be 32
	bits. Under Windows 64, even if the API is still 32 bits handles are still
	defined as void*. We will see when code will run under a real Windows 64 platform
	if it is a problem.

	* stlport/config/stl_msvc.h: Add configuration for Windows 64 Platform SDK.
	Expecially add automatic link to bufferoverflowU.lib to avoid modification
	of STLport build system and STLport users projects.

2005-08-06  Petr Ovtchenkov  <ptr@island...>

	* src/c_locale_glibc/c_locale_glibc2.c: add explicit type conversion
	to avoid warnings on 64-bits platforms; thanks Thomas Kho and
	Karol Szkudlarek for report.

2005-08-05  Francois Dumont  <dums@stlport...>

	* stlport/stl/_valarray.h: Add missing _debug.h header inclusion for
	_STLP_ASSERT macro definition.

	* stlport/stl/debug/_hashtable.h: Fix typo in hashtable move constructor.
	Thanks arabesc report.

2005-08-05  Petr Ovtchenkov  <ptr@island...>

	* doc/FAQ: some words about cross-compilation.

2005-08-04  Francois Dumont  <dums@stlport...>

	* stlport/stl/_hashtable.c: Fix erase(range) implementation thanks
	arabesc.

	* test/unit/hash_test.cpp: Add new test for previous fix.

2005-08-04  Petr Ovtchenkov  <ptr@island...>

	* stlport/csetjmp: sometimes, if native setjmp.h was included first,
	the setjmp functions situated in global namespace, not in vendor's
	std. This may confuse following csetjmp.

	* test/unit/setjmp_header_test2.cpp: test for this.

	* build/test/unit/Makefile.inc: ditto.

2005-08-03  Francois Dumont  <dums@stlport...>

	* INSTALL document updated to signal no longer support of the
	'wrapper' mode.

2005-08-02  Petr Ovtchenkov  <ptr@island...>

	* stlport/stl_user_config.h, stlport/stl/_site_config.h:
	fix some obsolete comments.

2005-07-31  Petr Ovtchenkov  <ptr@island...>

	* test/unit/math_aux.h, cmath_test.cpp: are_equals moved into
	math_aux.h to reuse in other tests.

	* test/unit/sstream_test.cpp: check input to float, inspired by
	Jeff Williams.

2005-07-27  Francois Dumont  <dums@stlport...>

	* stlport/iomanip, stl/_algo.h: Removed some persistent occurences
	of __in and __out keywords reserved by Microsoft.

	* stlport/stl/_pthread_alloc.c: Fix annoying warning reported by gcc.

	* stlport/config/stl_msvc.h: Fix _STLP_VENDOR_UNEXPECTED_STD macro
	definition to empty rather than '1'. Could have produce a compilation
	error with compilers like Intel C++ used with the VC6 native Standard
	library.

	* stlport/queue, stl/_ctraits_fns.h, _hashtable.h, _numeric.h, _string.h
	_tree.h: Fix macro guards used to avoid inclusion of _function.h or
	_function_base.h or functional thanks Dinesh Monga report.

2005-07-26  Petr Ovtchenkov  <ptr@island...>

	* doc/FAQ: description of pseudo-leaks, thanks Michael Fink.

	* STLport (repository): STLport 5.0 RC4

2005-07-25  Francois Dumont  <dums@stlport...>

	* stlport/config/stl_evc.h: Move _DEBUG definition fix up before
	stl_msvc.h inclusion to have correct library link automatically.
	Thanks Michael Fink.

2005-07-24  Francois Dumont  <dums@stlport...>

	* stlport/stl/_string.c, _rope.c: Add instanciation of npos for all
	compilers thanks Simon.

	* test/unit/string_test.cpp: Add creation of a reference to string::npos
	to force compiler to generate memory for it. Used to reveal a link error.

	* test/unit/cppunit/cppunit_mini.h: Removed redondant semi column in 
	CPPUNIT_TEST_SUITE_REGISTRATION macro definition.

	* stlport/config/stl_msvc.h, stl_intel.h: Concidering that compilers
	emulating MSVC compilers use the same native Standard Library headers
	macros _STLP_NEW_PLATFORM_SDK and _STLP_NO_VENDOR_STDLIB_L has been moved
	outside the _STLP_MSVC scope. _STLP_GLOBAL_NEW_HANDLER is now defined
	only for Intel compiler versions before 9.0.

	* stlport/cstdlib, stl/_cmath.h: Because of the previous remark about
	emulators of MSVC using MSVC headers, macro checks for global definition
	of C math functions has been changed from _STLP_MSVC to _MSC_VER. 

2005-07-23  Michael Fink  <vividos@users.sourceforge...>

	* test/unit/locale_test.cpp: Added creating locale pointer in
	test_supported_locale() when no exception handling is available.

	* src/stlport.rc: Added version info defines when not available through
	windows.h. Happens on evc3 MIPS and evc3 SH3.

2005-07-23  Francois Dumont  <dums@stlport...>

	* stlport/stl/_string_sum.h: Fix missing return statement in a compare
	method.

2005-07-22  Francois Dumont  <dums@stlport...>

	* stlport/stl/_algo.c: Fix search_n implementation for random access
	iterator thanks Jim Xochellis

	* test/unit/algo_test.cpp: Add test case for the previous bug thanks
	Michael Fink.

	* src/num_get_float.cpp: Fix gcc Mingwin and Cygwin special version with
	building with -O2 option.

	* build/Makefiles/gmake/gcc.mak: Add -D_REENTRANT definition for cygwin and
	-mthreads for mingwin platform to make STLport thread safe like under the
	other supported platforms.

2005-06-30  Petr Ovtchenkov  <ptr@island...>

	* stlport/wchar.h, src/c_locale.c, stlport/stl/_threads.h: fix Netware
	wcs... functions.

2005-06-30  Francois Dumont  <dums@stlport...>

	* stlport/stl/_rope.h, _rope.c: Duplicate basic_string::npos definition code
	in rope implementation to use a "Standard" static const npos definition when
	possible depending on the compiler features. Thanks caldwed report.

2005-06-30  Michael Fink  <vividos@users.sourceforge...>

	* stlport/cstdlib, stdlib.h: Fixed issue with including stdlib.h after
	setjmp.h; fix from 2005-06-23 wasn't solving the problem.

2005-06-28  Francois Dumont  <dums@stlport...>

	* stlport/stl/_hash_func.h: For MSVC .Net compiler we grant the hash<size_t>
	specialization rather than the hash<unsigned int> one to avoid 64 bits
	warnings when instanciating a hashed container with the size_t key.

	* stlport/stl/_istream_iterator.h: Modify istream_iterator implementation
	to avoid the default read from the istream even if the istream_iterator
	instance is not used.

	* test/unit/istmit_test.cpp: Add many tests for the copy_n/istream_iterator
	combination. Those tests are no active for the moment as they are failing,
	will be fixed after 5.0 release.

	* build/test/unit/nmake-vc-common.mak: Tests are no more built with the
	_STLP_NO_CUSTOM_IO option, see reason below.

	* test/unit/fstream_test.cpp: Add custom_facet test to check that STLport
	support instanciation of basic_fstream with something else that the std::char_traits
	For the moment the test fail when we try to use the stream for I/O operations
	should be fixed after 5.0 release.

2005-06-27  Francois Dumont  <dums@stlport...>

	* src/locale_impl.cpp: Fix locale implementation to avoid to call facet
	destructor when user explicitely required not to do so.

	* stlport/stl/_fstream.c: Fix _M_setup_codecvt method implementation to avoid
	a bad_cast exception on basic_filebuf construction. At this point the locale
	used to instanciate it is the classic locale that might not have the necessary
	codecvt facet. The user is then force to call imbue after basic_filebuf
	construction otherwise I/O operations will fail. When imbue is invoked, if
	the locale still do not have the necesary facet, the stream is put in the fail
	state. Thanks Alexander Pototskiy

2005-06-26  Francois Dumont  <dums@stlport...>

	* stlport/stl/_config_compat.h: Add _STLP_OWN_IOSTREAMS macro for backward
	compatibility with library checking it.

2005-06-23  Francois Dumont  <dums@stlport...>

	* src/complex.cpp, complex_trig.cpp, complex_exp.cpp: Removed code
	duplication between float, double and long double version thanks to
	some template functions. Thanks an Ulrich Eckhardt idear.

	* stlport/cstdlib, stl/stdlib.h: Michael Fink patch to avoid setjmp.h
	inclusion problem as stdlib.h contains a setjmp macro definition.

	* test/eh/main.cpp: Redirection of std::cout and std::cerr for WinCE
	thanks Michael Fink

	* stlport/config/stl_evc.h: Restore long double support for WinCE, there
	is just no *l math functions. Only define _STLP_NATIVE_INCLUDE_PATH
	if not already defined, giving the user a chance to override the defaults
	for yet unknown SDKs. Thanks Michael Fink and Ulrich Eckhardt.

	* build/Makefiles/nmake/evc3.mak, evc4.mak: removed unneeded set of CC
	for SHx; already done by setup batch. Thanks Michael Fink. 

2005-06-21  Francois Dumont  <dums@stlport...>

	* stlport/stl/_ios.h, _ios_base.h, _num_get.c, _num_put.c, _complex.c,
	_istream.c, _time_facets.c: Fix cast expression for the cached facets,
	C casts replaced by static_cast and const added when missing.
	Thanks Oliver Stoeneberg report.

	* test/unit/unary.h: Replaced old STLport with new style ones. Get sqrt
	function in global namespace rather than forcing use of the one in std
	namespace, avoids ambiguity with VC6.

	* test/unit/resolve_name.cpp: Add _STLP_DO_IMPORT_CSTD_FUNCTIONS definition
	at the top of it to force import of C symbols in std even for limited
	compilers like VC6.

	* stlport/stl/_valarray.h: Add global namespace scope to C function calls
	to avoid VC6 ambiguity problem.

2005-06-20  Francois Dumont  <dums@stlport...>

	* stlport/config/stl_gcc.h: Fix gcc 3.4.4 detection under cygwin thanks
	Ulrich Eckhardt report.

	* stlport/stl/c_locale.h: Fix _Locale_mask_t definition for Mingwin.

	* src/c_locale_win32/c_locale_win32.c: Add static assertion to check
	_Locale_mask_t size.

	* src/complex_exp.cpp: Replaced complex log10 function static variables
	with global constant, avoid multithreaded init problem. Thanks Ulrich
	Eckhardt report.

2005-06-17  Francois Dumont  <dums@stlport...>

	* stlport/stl/_alloc.h: Add initialization of the memory buffer in
	allocator::allocate function and reset in allocator::deallocate to
	the _STLP_SHRED_BYTE motif when _STLP_DEBUG_UNINITIALIZED is defined
	to help track missing initialization issue.

	* src/dll_main.cpp: Removed now useless _Node_alloc_helper class.

	* stlport/stl/_alloc.c: Add complete cleanup of the __node_alloc static
	datas in the _S_chunk_dealloc method, this is important if the clean up
	occur before STLport shared lib is unloaded.

	* stlport/stl/_alloc.c: Add a static instance of __node_alloc_cleaner in the
	_S_alloc_call method and change init number of allocation to 1 to force
	release of memory pool only on shared library unload.

2005-06-11  Francois Dumont  <dums@stlport...>

	* stlport/cstdlib, stl/_cmath.h: Add _STLP_NO_CSTD_FUNCTION_IMPORTS macro
	check before import of global C functions in STLport namespace. Required
	for VC6 compiler to avoid ambiguity issue.

	* src/complex.cpp, complex_epx.cpp, complex_trig.cpp: Scope math function
	call with the global namespace to avoid VC6 ambiguity issue. It is safe
	for the other compilers as STLport do define those function in global
	namespace.

2005-06-10  Francois Dumont  <dums@stlport...>

	* stlport/stl/c_locale.h: Fix Cygwin configuration, separate alpha mask
	from lower and upper one to avoid all lower character to also be upper
	and opposite.

	* src/ctype.cpp: Add static assertion to detect platform where
	alpha = lower | upper which is wrong for STLport use.

2005-06-10  Francois Dumont  <dums@stlport...>

	* stlport/stl/_hashtable.c: Fix max_load_factor management, Standard says
	that load_factor <= max_load_factor and not <; the function detecting need
	for rehash used to launch one even if the number of bucket do not change which
	was counter performant. Fix the _M_insert_noresize method that was breaking
	element order inserting elements in the middle of 2 equal elements.
	Thanks Dieter Freismuth report.

	* stlport/config/stl_gcc.h: Fix relative include path for latest gcc cygwin
	package.

2005-06-10  Petr Ovtchenkov  <ptr@island...>

	* build/Makefiles/gmake/mwccnlm.mak: fix compiler version collection.

	* build/Makefiles/gmake/netware/extern.mak: fix useful paths.

	* src/c_locale.c: put here wrappers for some wfuncs, due to bogus
	system libs in Netware.

	* stlport/cwchar: use STLport's wchar.h to take wchar_t/wint_t for
	Netware.

	* stlport/wchar.h: use correct C declaration of some wfuncs, thanks
	again to ugly Netware libs.

	* stlport/ciso646, stlport/iso646.h, stlport/wctype.h: headers absent
	for Novell Netware.

	* stlport/cwctype: Metrowerks define __MSL__, but we don't use MSL libs
	if we have STLport for Netware.

	* stlport/cstdlib: div function from Novell Netware clib and libc lead to
	system crash.

2005-06-08  Francois Dumont  <dums@stlport...>

	* build/test/unit: Removed references to the now useless CPPUNIT_MINI
	macro.

	* test/unit/type_traits_test.cpp: Add new test case for trivial destructor
	detection.

	* stlport/stl/_fstream.h: Add missing basic_fstream construction from a
	Win32 file handle, was already done for basic_ifstream and basic_ofstream,
	thanks Alex Cosealin report.

2005-06-07  Francois Dumont  <dums@stlport...>

	* build/test/unit/Makefile.inc: Fix syntax error at last line.

2005-06-06  Petr Ovtchenkov  <ptr@island...>

	* build/lib/configure: add config options for Metrowerks compiler for
	Novell NetWare platform [references to root of MW headers/libs and to Novell's
	SDK headers/libs].

	* build/Makefiles/gmake/mwccnlm.mak: fixes for Metrowerk/NetWare.

	* build/Makefiles/gmake/app/mwccnlm.mak: idem.

	* build/Makefiles/gmake/netware/extern.mak: idem.

	* build/lib/mwccnlm.mak: idem.

	* build/test/unit/mwccnlm.mak: idem.

2005-06-03  Francois Dumont  <dums@stlport...>

	* test/unit/locale_test.cpp: Remove the very platform dependent LColl
	class that was listing supported locales. STLport already do so and
	report it using a runtime_error exception when not supported. When
	compiler do not support exception only the C locale is checked.

	* build/Makefiles/nmake: Patches from Michael Fink to
	  - check platform before linking to crtrtti.lib
	  - check right configuration when using a nmake-evc?.mak file
	  - update STATUS file.

2005-06-02  Francois Dumont  <dums@stlport...>

	* src/c_locale_win32/c_locale_win32.c: Add workaround for a Windows PSDK bug
	concerning currency international symbol, the separation character is missing.

	* src/locale_impl.h, locale_impl.cpp: Fix implementation to make classic locale
	implementation a normal instance that is released when the counter reach 0, the
	only difference is that no delete is performed on this instance. Idem for classic
	locale implementation facets.

	* stlport/cwctype: And _GLIBCPP_USE_WCHAR_T check when using GLibC as in this
	case wide char functions are not imported in std and must be imported from the
	global namespace.

2005-06-01  Francois Dumont  <dums@stlport...>

	* src/locale_impl.h, locale_impl.cpp: Change classic locale initialization
	implementation for limited compiler like MSVC6.

2005-06-01  Petr Ovtchenkov  <ptr@island...>

	* stlport/stl/c_locale.h: check gcc on MacOS X. Patch by Zdenek Nemec

	* build/Makefiles/nmake/evc3.mak, evc4.mak, targets.mak:
	support SH3/SH4 platform. Patch by Michael Fink.

	* build/Makefiles/nmake/app/evc3.mak, evc4.mak: ditto.

	* build/Makefiles/nmake/lib/evc3.mak, evc4.mak: ditto.

	* build/lib/configure.bat, src/stlport.rc: ditto.

2005-05-30  Francois Dumont  <dums@stlport...>

	* src/locale_impl.h, locale_impl.cpp, stlport/stl/_locale.h: An other pass
	throught the classic locale initialization. Now all needed static variables
	are in _Locale_impl::make_classic_locale method. Removed useless _Stl_aligned_buffer
	union use in this locale initialization. Removed now useless _Locale_impl::free_classic_locale
	method.

2005-05-30  Petr Ovtchenkov  <ptr@island...>

	* stlport/stl/_windows.h: worry about Windows CE when check Interlocked
	API for MIPS. Patch by Michael Fink.

	* build/lib/configure.bat: remove the -p option by autodetecting platform.
	Patch by Michael Fink.

	* build/Makefiles/nmake/evc3.mak, evc4.mak: corrects the evc4 makefiles
	to always use the /GF switch [string pooling]. Patch by Michael Fink.

	* doc/README.evc3, doc/README.evc4: reflect changes above.
	Patch by Michael Fink.

	* stlport/errno.h, stlport/time.h: when building for evc, including
	errno.h and time.h often outputs the message in the #pragma statement
	that including this file won't include the native one, since there is no
	native include file. Now the text is only output when not building the library
	and when the file is included directly, not via another STLport header file.
	[Patch by Michael Fink.]

2005-05-29  Francois Dumont  <dums@stlport...>

	* test/unit/locale_test.cpp: Add opendir returned value when listing
	installed locale under linux.

	* build/Makefiles/gmake: Patch from Zdenek Nemec for Mac OS X support.

2005-05-27  Francois Dumont  <dums@stlport...>

	* src/locale_impl.cpp: Add an initialization segment specification to make
	global static variable ios_base::Init instance initialization prioritized
	compare to STLport static global variable. iostreams like cout can be used
	in global static variable initialization.

2005-05-26  Francois Dumont  <dums@stlport...>

	* build/Makefiles/nmake/evc4.mak: Patch from Ulrich Eckhardt to use CC
	environment variable defined by WCE*.bat script rather than redefining
	it.

	* src/locale.cpp, locale_impl.cpp, locale_catalog.cpp: New pass to move
	static global variable in function to make initialization order clear.

2005-05-25  Francois Dumont  <dums@stlport...>

	* stlport/ciso646: Creation of this missing C++ standard header STLport
	wrapper.

	* stlport/stl/_istream.h, _num_get.c, _algo.c, _monetary.c, _time_facets.h,
	_time_facets.c: Replaced occurences of __in and __out reserved by Microsoft.

2005-05-24  Francois Dumont  <dums@stlport...>

	* stlport/headers: Patch from Michael Fink to avoid inclusion of headers
	not available under evc3.

	* test/unit/*_header_test.cpp: Fix tests for no iostreams mode.

	* src/locale_impl.cpp, locale_impl.cpp: Modify implementation to force 
	correct initialization order of static instances.

	* stlport/strstream: Add _ioserr.h file to avoid inclusion in no iostreams
	mode.

2005-05-23  Petr Ovtchenkov  <ptr@island...>

	* stlport/stl/_config.h: detect endianness for Intel's 64bit Pentium and
	Itanium processors. Thanks Albrecht Fritzsche for contribution.

2005-05-20  Francois Dumont  <dums@stlport...>

	* build/test/eh: Patch from Michael Fink to add EVC4 support for this test
	suite.

	* src/fstream.cpp: Use of Wlodek Szafran implementation for the _Filebuf_base::_M_read
	method which is more performant than the previous one.

	* test/unit/fstream_test.cpp: Add of a test for the special Win32 file format.

	* test/unit: Add of many test to check Standard C/C++ headers independancy
	and correct C header implementation.

2005-05-18  Francois Dumont  <dums@stlport...>

	* src/fstream.cpp: Fix buffer overflow in _Filebuf_base::_M_read method
	for the Win32 platform implementation thanks Wlodek Szafran report.

	* src/c_locale_dummy/c_locale_dummy.c: Patch from Michael Fink for wrong C
	prototype.

2005-05-17  Petr Ovtchenkov  <ptr@island...>

	* test/unit/locale_test.cpp: some fixes in moneypunct test, related
	to international currency format; some problems still remains, due to
	unclear specifications---if international currency 3-chars abbreviation
	used in suffix form, additional space will be appended
	['1 234.56 RUR ']. This is due to intl_fmp.curr_symbol() == "RUR ",
	and the last is conform to OpenGroup spec.

2005-05-16  Petr Ovtchenkov  <ptr@island...>

	* src/c_locale_stub.cpp: "stub" implemntation moved into
	c_locale_dummy/c_locale_dummy.c, this file removed

	* src/c_locale.c: include c_locale_dummy/c_locale_dummy.c, in case of
	no real locale implementation.

	* src/c_locale_dummy/c_locale_dummy.c: 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.

	* build/lib/Makefile.inc: src/c_locale_stub.cpp removed.

	* src/facets_by_name.cpp: add comments in the _Init_monetary_formats.

	* src/c_locale_glibc/c_locale_glibc2.c: annotate some monetary-related
	functions.

2005-05-14  Petr Ovtchenkov  <ptr@island...>

	* build/Makefiles/gmake/aCC.mak: HP's aCC compiler and HP-UX os support.
	This isn't really checked and should be fixed on real system.

	* build/Makefiles/gmake/app/aCC.mak, gmake/lib/aCC.mak: ditto.

	* build/Makefiles/gmake/hp-ux/extern.mak, lib.mak: ditto.

	* build/Makefiles/gmake/hp-ux/rules-install-so.mak, rules-so.mak: ditto.

	* build/Makefiles/gmake/hp-ux/gmake/hp-ux/sys.mak: ditto.

	* build/lib/aCC.mak: ditto.

	* build/test/unit/aCC.mak: ditto.

	* build/test/unit/gcc.mak: remove dbg-shared tag from default build;
	if you need unit tests with debug info and without _STLP_DEBUG, make this
	tag explicitly.

2005-05-14  Francois Dumont  <dums@stlport...>

	* stlport/stl/_config.h, _config_compat_post.h, _cwchar.h, _epilog.h:
	Patch from Albrecht Fritzsche to remove C++ comment from files accessible
	by a pure C compiler.

	* stlport/stl/c_locale.h: idem.

	* src/c_locale.h, c_locale_glibc/c_locale_glibc2.h: idem.

	* src/gcc_localeinfo.h, c_locale_win32/c_locale_win32.c: idem.

	* build/Makefiles/gmake/gcc.mak: Add the -ansi option to the C compiler
	command to know if any regression occur concerning use of C++ comment
	in C files.

2005-05-13  Francois Dumont  <dums@stlport...>

	* src/c_locale_win32/c_locale_win32.c: Improve the locale name recognition
	system to be more unix compliant. Now you can pass locale name like
	lang_country[.codepage] with lang being one of the ISO 639 values and
	country one of the ISO 3166 ones.

	* test/unit/locale_test.cpp: Add a test case for the ctype facet.

	* test/unit/locale_test.cpp: Now list all the installed locales under
	Win32 to test more locale than the simple french one.

	* stlport/config/stl_msvc.h: Removed _WINDLL macro check when trying
	to guess what type of library (dynamic/static) the STLport user want
	to link with. _WINDLL is defined when generating a dll but it do not
	imply anything on the user wish.

	* src/ctype.cpp: Improve the ctype::scan_is method, you can now scan
	for a character conforming to several ctype_base::mask and not only to one.

	* src/ctype.cpp: Idem previous for ctype::scan_not which returns the first
	character that do not conform to any of the passed mask.

	* test/eh: Restore exception handling test suite. Removed some equality
	tests that is no more valid for hash containers, this kind of test
	is better in the unit tests. Add makefiles for MSVC compilers.

	* stlport/stl/_tree.c: Fix _M_insert method that was leaking in case of
	exception thrown by the comparison operator, reported by eh tests.

2005-05-09  Francois Dumont  <dums@stlport...>

	* stlport/stl/_ctype.h, src/ctype.cpp: Reenforce data encapsulation of the
	ctype<char> template specialization class. class static arrays
	_S_upper, _S_lower, _S_classic_table removed from the definition and hiden
	in the .cpp file.

	* src/dll_main.cpp: Change _STLP_UNIX macro check in _STLP_PTHREADS check
	as per thread allocator is only supported if the Posix pthread API is used,
	thanks a Albrecht Fritzsche remarked.

2005-05-07  Francois Dumont  <dums@stlport...>

	* stlport/config/stl_gcc.h: Patch from John Smith for Mac OS X support.

	* test/unit/locale_test.cpp: Idem previous.

	* build/Makefiles/gmake/cygming/lib.mak, sys.mak: Import lib extension
	change from .lib to .dll.a for Mingw like under Cygwin. ld linker
	looks for .dll.a before .lib, avoid conflict with Cygwin lib.

2005-05-07  Petr Ovtchenkov  <ptr@island...>

	* stlport/errno.h: use C++ 'using' construction only for C++. Thanks Gary.

	* build/Makefiles/gmake/lib/gcc.mak: option for libname for Darwin.

	* build/Makefiles/gmake/app/mwccnlm.mak: build for Novell NetWare 5
	with MetroWerks 7 and 8 compilers.

	* build/Makefiles/gmake/lib/mwccnlm.mak: ditto

	* build/lib/mwccnlm.mak: ditto

	* build/Makefiles/gmake/mwccnlm.mak: ditto

	* build/Makefiles/gmake/netware/extern.mak: ditto

	* build/Makefiles/gmake/netware/lib.mak, sys.mak: ditto

	* src/_stdio_file.h, num_get_float.cpp, num_put_float.cpp: ditto

	* stlport/cstdio, cwchar, cwctype, stdio.h, wchar.h: ditto

	* stlport/config/stl_mwerks.h: ditto

	* stlport/stl/_config.h, _fstream.h, _hashtable.c, _sstream.c: ditto

	* stlport/stl/_threads.h, c_locale.h, char_traits.h: ditto

	* build/Makefiles/gmake/sysid.mak: treat mwccnlm as cross-compiler,
	set correct TARGET_OS and OS-related macros.

	* stlport/stl/_valarray.h: remove exhaustive this->.

2005-05-04  Francois Dumont  <dums@stlport...>

	* stlport/config/stl_msvc.h: Change configuration for MSVC .Net 2003 and
	2005 that seems to have a bug in the namespace management.

	* stlport/stdlib.h: Add errno.h inclusion from this file for gcc mingw
	as this	compiler version do define errno macro in stdlib.h as MSVC do.

2005-05-03  Francois Dumont  <dums@stlport...>

	* stlport/stl_user_config.h, stl/_site_config.h, config/stl_gcc.h, _prolog.h,
	_epilog.h: Use strict Ansi C comments (/**/) for headers accessible thought 
	the STLport C headers.

	* stlport/C headers: Cleaned from C++ style comments.

2005-05-02  Francois Dumont  <dums@stlport...>

	* build/Makefiles/nmake/vc-common.mak: Restore of LDFLAGS_A_REL introduce
	the 2004-10-30 and lost the 2005-04-16, it avoids warning due to use
	of the whole program optimization with VC.Net 2003 and 2005.

	* stlport/stl/_string_io.c: Modification of the basic_string i/o operators
	in the way it deals with the size_type and streamsize difference; it is
	equivalent with the former one but do not generate warning with gcc
	(mingwin).

	* stlport/stddef.h, stdlib.h, errno.h: Fix issue under MSVC compilers where
	native stdlib.h and stddef.h are defining errno macro without including
	errno.h forbiding STLport to do so. Now errno.h will report this problem with
	an explicit #error.

	* test/unit/test_errno.cpp: Improvement of the test to reveal the previous
	issue.

2005-05-02  Petr Ovtchenkov  <ptr@island...>

	* makesystem (repository): restore experimental support of MetroWerks
	compiler for NetWare, with help of GNU make and Cygwin environment.

2005-04-29  Francois Dumont  <dums@stlport...>

	* stlport/stl/_time_facets.c: gcc warnings reveal that we were missing some
	ctype::widen method call to compare things like month or day names.
	Also simplified implementation of the __match and __get_formatted_time that
	do not really need all the template parameters passed to it.

	* stlport/stl/_num_put.c: Add a cast to make call to the function min more
	clear, it will perhaps help EVC++ builds correctly.

	* src/strstream.cpp, stlport/stl/_sstream.c: Removed static assertion
	replaced by modified implementation that takes into account the difference
	between size_t and streamsize.

2005-04-28  Francois Dumont  <dums@stlport...>

	* test/unit/limits_test.cpp: Improve integral types limit test for type
	of unknown sign. In this case we check the min value of this integral type,
	if 0 the type is unsigned. Moreover we check, except for the bool type,
	the sign of -1 cast to the integral type, bool is a special type that
	generate warning when built from -1 (MSVC).

	* src/ctype.cpp: Creation of a small helper structure to check the validity
	of a wchar_t value used as an index. This helper struct takes into account
	the compiler representation of the wchar_t type, is it a sign type or not.
	This helper avoids warning when wchar_t is unsigned.

	* src/num_get.cpp: Removed unused _Initialize_get_digit function and
	associated narrow_digits and narrow_xdigits arrays.

2005-04-28  Petr Ovtchenkov  <ptr@island...>

	* stlport/stl/_sstream.h, _num_put.c: __in replaced by __imode, __out
	by __omode or __oi due to MS privatize __in and __out. Thanks Michael Fink.

2005-04-27  Francois Dumont  <dums@stlport...>

	* src/fstream.cpp: Fix Win32-64 file stream implementation. _M_read and
	_M_write can now correctly handle respectively read and write of really
	big buffers ( > 2Go)

	* using/iosfwd.h, stlport/strstream.h, stl/_rope.h, _rope.c, _complex.h: Removed 
	references to the _STLP_USE_NEW_IOSTREAMS macro, STLport only support "new"
	iostreams.

	* test/unit/max_test.cpp, min_test.cpp: Add tests to check that min and
	max are not defined as macros.

	* test/fstream_test.cpp: Add check in creation of test_file.txt
	as following tests depends on its content.

	* src/strstream.cpp, stdio_streambuf.cpp: Fix potential issue because of
	the difference between streamsize and size_t of ptrdiff_t.
	Add static assertion to clearly specify how streamsize must be to have
	a correct behavior.

	* stlport/stl/_num_put.c, _num_get.c, _fstream.c, _moneraty.c: ditto.

	* src/ctype.cpp: Restore check on wchar_t positivity as according
	2005-02-22 Petr Ovtchenkov reports wchar_t can be signed.

2005-04-26  Francois Dumont  <dums@stlport...>

	* src/num_get_float.cpp: Fix mingwin support for 64bits integer type 
	thanks Wlodek Szafran

2005-04-25  Francois Dumont  <dums@stlport...>

	* stlport/stl/_time_facets.c: Fix __pos type in __match function and removed
	unused __max_pos definition and initialisation.

	* src/c_locale_win32/c_locale_win32.c: Add some cast to remove warnings.

	* stlport/stl/_moneraty.c: Fix __witdh definition to use streamsize rather
	than size_t to avoid warnings.

2005-04-25  Petr Ovtchenkov  <ptr@island...>

	* build/test/gcc.mak: workaround for [bug?] gmake, that sometimes lose
	increment of target-specific macro and, may be, under condition.
	Thanks Jeff Williams.

	* build/Makefiles/gmake/icc.mak: add icc 8.1 compiler-specific libs

	* build/Makefiles/gmake/icc.mak: detect icc version; add includes
	from compiler to include path

	* test/unit/cppunit/test_main.cpp, cppunit_mini.h: add option -x, run all
	except specified CLASS::TEST.

2005-04-23  Francois Dumont  <dums@stlport...>

	* stlport/stl/_ioerr.h: #error message modification thanks Michael Fink.

2005-04-22  Francois Dumont  <dums@stlport...>

	* stlport/stl/_istream.c: Fix _M_read_buffered function implementation,
	there used to be a wrong implicit conversion from streamsize to ptrdiff_t,
	which fail when sizeof(streamsize) > sizeof(ptrdiff_t).
	See 2005-04-21 Petr report.

	* test/unit/: Replaced all _STLP_NO_IOSTREAMS occurences with the STLport
	internal equivalent _STLP_USE_NO_IOSTREAMS. The first one is defined
	by the client while the second depends on the first and on the compiler
	abilities, makes the unit tests more portable.

	* stlport/stl/_cmath.h: Fix for Intel C++ compiler that also have all
	C math functions in global namespace.

2005-04-21  Francois Dumont  <dums@stlport...>

	* stlport/stl/_hashtable.h: Extend the hashtable template methods extension
	to the method computing the bucket from the key thanks Dominik Siatkowski.

	* stlport/stl/_threads.h: Disable 64 bits portability warning for
	MSVC compilers. MSVC do not see that the called function comes from
	a macro that is different under Win32 and Win64.

2005-04-21  Petr Ovtchenkov  <ptr@island...>

	* test/unit/sstream_test.cpp, fstream_test.cpp: integral type for
	ptrdiff_t shorter than for streamsize; this cause problem on
	Win32 platform, that support files larger than 4GB.
	Thanks Timothy Tenebekov for report.

2005-04-20  Francois Dumont  <dums@stlport...>

	* stlport/stl/debug/_debug.c: Small Borland compiler fix to avoid call to
	vsnprintf before version 0x550 thanks esanfo.

	* src/dll_main.cpp: Fix bug reported by Intel C++ (icl) compiler.

2005-04-20  Petr Ovtchenkov  <ptr@island...>

	* src/num_get_float.c: use uint64_t for 64-bit, but unsigned long long
	for constants. This fix problem on linux x86_64 [amd64].

2005-04-16  Francois Dumont  <dums@stlport...>

	* test/unit/cppunit/test_main.cpp: Patch from Michael Fink to improve
	the macro filter for including windows.h (UNDER_CE rather than WIN32).

	* build/test/unit/STATUS: Update from Michael Fink and myself.

	* build/Makefiles/nmake: Apply Michael Fink patch to generate .pdb file
	even in release mode and to install them in bin and lib folders next to
	the .dll and .lib files.

	* stlport/stl/_algobase.c: Add missing const in return type of the const
	version of find specialized for const char*.

2005-04-16  Petr Ovtchenkov  <ptr@island...>

	* stlport/stl/_algobase.c: memchr return NULL if value not found,
	while find() [specialization for char *] should return last
	[see record 2005-02-27 below]. Thanks Joshua Berne for report.

	* test/unit/find_test.cpp: if char not found, char specialization of
	find() should return last, not NULL.

2005-04-14  Petr Ovtchenkov  <ptr@island...>

	* stlport/stl/_list.h, _slist.h: add this-> resolution to get_allocator
	[required in the member templates to resolve possible ambiguity]

2005-04-13  Francois Dumont  <dums@stlport...>

	* stlport/stl/_list.h, _slist.h: Add missing get_allocator() call when
	building temporary list or slist instances in insert methods.

2005-04-12  Petr Ovtchenkov  <ptr@island...>

	* stlport/errno.h: solution 2005-04-12 not useful. Simplified schema,
	semantically equivalent to Francois', but without extra function definition
	[see records 2005-03-31 and 2005-04-01]

2005-04-12  Petr Ovtchenkov  <ptr@island...>

	* stlport/errno.h: check if we undefine previously defined errno

2005-04-11  Petr Ovtchenkov  <ptr@island...>

	* stlport/errno.h: save original errno definition

2005-04-10  Petr Ovtchenkov  <ptr@island...>

	* STLport (repository): STLport 5.0 RC3

2005-04-08  Francois Dumont  <dums@stlport...>

	* test/unit/locale_test.cpp: Add __FreeBSD__ macro check for the workaround
	announced as Free BSD specific by the comment next to it.

	* stlport/stl/_config.h: Add undef of _STLP_USE_DYNAMIC_LIB when in
	NO_IOSTREAMS mode, this macro was generating buggy code in this case
	for some commpilers (gcc mingwin).

2005-04-07  Francois Dumont  <dums@stlport...>

	* build/lib/nmake-vc-common.mak: Removed useless add of STLport/lib to 
	library paths when building STLport lib.

	* build/Makefiles/nmake/*: Removed useless specification of the MSVC default
	install	directory, all the job is done by the vcvcars32.bat script that sets
	the LIB env variable to the real MSVC install directory.

	* test/unit/unordered_test.cpp, locale_test.cpp: Removed gcc mingw warnings.

	* build/Makefiles/nmake/icl.mak, app/icl.mak, lib/icl.mak: Removed the
	whole program optimization option, looks like it is confusing icl.

	* stlport/stl/debug/*.h: Removed useless _Get_base non-const overload. 
	In addition to being useless Intel compiler emit compilation error about it.

2005-04-06  Petr Ovtchenkov  <ptr@island...>

	* test/unit/cppunit/test_main.cpp: windows.h required here
	[see 2005-04-04; patch by Michael Fink].

	* stlport/stl/_istream.h: __is replaced by __istr, due
	to MS privatize __is.

	* stlport/stl/_num_get.h: __in replaced by __ii, due to MS
	privatize __in too.

	* stlport/stl/_config.h: Visual C++ 8 uses _M_AMD64 to identify
	EM64T and AMD64 platforms [thanks Mike Roberts].

2005-04-05  Francois Dumont  <dums@stlport...>

	* stlport/config/stl_evc.h: apply patch from Michael Fink to add support for
	various EVC SDK.

	* stlport/stl/_cmath.h: An other adaptation to the Intel C++ compiler.

	* build/lib/nmake-vc-common.mak, test/unit/nmake-vc-common.mak: Removed check
	of STLP_BUILD_FORCE_[STATIC,DYNAMIC]_RUNTIME environment variables,
	moved in a common build system file.

	* build/Makefiles/nmake/vc-common.mak: Add checks of 
	STLP_BUILD_FORCE_[STATIC,DYNAMIC]_RUNTIME variables.

	* build/lib/configure.bat: Add a clean option to remove the hidden 
	Makefiles/config.mak file.

	* stlport/stdexcept: Disable 'non dll-interface class used as base' warning
	when building STLport dll linked with the static runtime.

2005-04-04  Francois Dumont  <dums@stlport...>

	* test/unit/mfunptr_test.cpp: Add necessary macro checks for a test
	that require partial template specialization compiler support.

2005-04-04  Petr Ovtchenkov  <ptr@island...>

	* errno.h, time.h, test_errno.cpp: evc3 and evc4 has no errno.h
	and time.h headers [patch by Michael Fink].

	* stl_evc.h, _windows.h, test_main.cpp: workaround to not include
	<windows.h> in STLport headers (it is still needed for building
	the lib and the unit tests, but that should be no problem).
	Occurences of GetCurrentProcess() used in _STLP_ABORT were replaced
	with the result of the inline function, which returns a pseudo-
	HANDLE value. [patch by Michael Fink]

	* cwchar, wchar.h, stl/_cwchar.h: fix access to mbstate and wint_t
	for FreeBSD.

	* build/Makefiles/gmake/sysid.mak, app/gcc.mak, lib/gcc.mak:
	FreeBSD before 5.3 require linkage with libc_r, while 5.3 and
	later use libpthread.

	* test/unit/locale_test.cpp: add std:: namespace qualifier for
	gcc 3.3.2 and/or FreeBSD.

	* libstlport, test/unit: library build and most tests pass for
	FreeBSD 5.3 and FreeBSD 4.10.

2005-04-02  Francois Dumont  <dums@stlport...>

	* stlport/cstdlib: Fix missing div taking long definition for VC71.

2005-04-01  Francois Dumont  <dums@stlport...>

	* stlport/errno.h: Add comments to explain the file code.

	* stlport/stl/_string_io.h: Yet an other fix to the i/o basic_string
	operators that was not right under cygwin/mingwin.

	* build/Makefiles/gmake/gcc.mak: Merge the 2 distinct cygmin blocks
	in one and add -Wall and -Wsign-promo warnings.

2005-04-01  Petr Ovtchenkov  <ptr@island...>

	* test/unit/test_errno.cpp: fix test, errno may be non-zero without
	any error, but it reflect error code after some function fail.
	This not the same.

	* test/unit/mfunptr_test.cpp: add step-by-step test how compiler
	recognize bind of member function for find_if. Not all compilers may
	understand this. Thanks Markus for test idea.

2005-03-31  Francois Dumont  <dums@stlport...>

	* stlport/errno.h: Fixed for MSVC compilers, should still be fine for
	others.

	* test/unit/test_errno.cpp: Modified to be a real unit test. Also test
	errno assignment.

2005-03-30  Francois Dumont  <dums@stlport...>

	* stlport/stl/_fstream.c: Try to fix ambiguous type deduction in a max
	call under WinCE.

	* stlport/stl/_cmath.h: Fix missing non Standard hypot function under
	WinCE thanks Michael Fink.

	* stlport/stl/_cmath.h: Attempt to fix the WinCE math function support
	where neither *f nor *l functions are present even if the compiler
	support the long double type.

2005-03-30  Petr Ovtchenkov  <ptr@island...>

	* stlport/assert.h, float.h, iso646.h, limits.h, errno.h:
	added in accordance with Standard D.5 [compatibility with standard
	C library] to prevent wrong std interpretation in ill-formed native
	headers [definition of namespace std in C headers].

	* test/unit/test_errno.cpp: check correct processing of errno.h
	header.

	* build/test/eh: build eh tests again.

	* test/eh/LeakCheck.h, TestClass.cpp, TestClass.h: fix and clear.

	* test/eh/test_hash_map.cpp, test_hash_set.cpp: hash_set/hash_map
	has no == operator [no container equality]; this fix is quick-and-dirty

2005-03-29  Petr Ovtchenkov  <ptr@island...>

	* build/Makefiles/gmake/app/rules.mak, freebsd/rules-so.mak,
	linux/rules-so.mak, openbsd/rules-so.mak, sunos/rules-so.mak:
	fix link sequence---the end objects should be really last, i.e. after libs.
	This affected by linkage without libstdc++.

	* stlport/stl/_cwchar.h, stlport/wchar.h: workarounds for FreeBSD.

	* due to change in link sequence most tests [including exceptions] pass
	for uClibc.

	* stlport/mmemory.h: garbage, removed.

	* stlport/export: ditto.

2005-03-28  Francois Dumont  <dums@stlport...>

	* stlport/stl/_istream.h, _ostream.h: Fix assignment operators prototypes
	for the sentry struct. Thanks -Weffc++ feature of gcc.

	* build/Makefiles/gmake/cygmin/rules-install-so.mak: Add missing folder
	creation in the install process thanks Charlemagne report.

	* build/Makefiles/nmake/icl.mak: Fix Intel compiler build system under
	Windows.

2005-03-28  Petr Ovtchenkov  <ptr@island...>

	* src/num_put_float.cpp: in FreeBSD no *cvt* functions now, use sprintf;

	* stlport/config/stl_gcc.h: in FreeBSD no math *l functions and llabs.

	* test/unit/string_test.cpp: more test with assignment.

2005-03-25  Petr Ovtchenkov  <ptr@island...>

	* stlport/stddef.h: fix typo in header id---this mistake prevent
	inclusion _epilog.h.

	* test/unit/epilog_test.cpp: regression test for bug above.

	* stlport/cstdio: fix header id to avoid possible errors.

2005-03-24  Petr Ovtchenkov  <ptr@island...>

	* build/Makefiles/gmake/lib/gcc.mak, build/Makefiles/gmake/app/gcc.mak:
	code reorganization to simplify platform configuration with or without
	-nostdlib [avoid link with libstdc++ or libestdc++]; now link without
	libstdc++/libestdc++ supported on Linux and OpenBSD.

	* build/Makefiles/gmake/openbsd/rules-so.mak: idem.

	* build/Makefiles/gmake/freebsd/rules-so.mak: idem.

	* src/num_put_float.cpp: clean float convertions for OpenBSD and FreeBSD;
	OpenBSD and FreeBSD use STLport code instead of sprintf now.

	* stlport/stl/_cwchar.h: allow masquarade to use mbstate_t from native
	cwchar header on OpenBSD.

	* stlport/config/slt_gcc.h: llabs and *l math functions absent in OpenBSD;
	define __unix, that missed in OpenBSD.

2005-03-23  Petr Ovtchenkov  <ptr@island...>

	* build/Makefiles/gmake/app/gcc.mak, build/Makefiles/gmake/lib/gcc.mak:
	incorporate gcc language support library into libstlport.so
	[add ~100k to library],	but libsupc++ don't required more in link stage
	for applications and libraries that use stlport, as in case with
	libstdc++.

2005-03-22  Francois Dumont  <dums@stlport...>

	* stlport/stl/_string_io.c: Fix basic_string stream output operator 
	implementation for cygwin.

	* stlport/stl/_cmath.h: Add fixes for cygwin support that handle long double
	but do not have *l maths function per default.

	* src/complex_exp.cpp: Fix call to logl, replaced by call to log.

	* src/complex_trig.cpp: Fix mingw support by checking M_LN2l existence
	before using it.

	* test/unit/copy_test.cpp: Change test cases to avoid use of iostreams.

	* test/unit/string_test.cpp: Add a small check to test use of istream width
	in the input operator.

	* stlport/cstdlib, stlport/config/stl_msvc.h, stl_gcc.h: Creation of the
	_STLP_NO_VENDOR_STDLIB_L macro to report support of the llabs and lldiv
	function.

2005-03-21  Petr Ovtchenkov  <ptr@island...>

	* stlport/stl/_cmath.h: removed logf, expf, sinf, cosf; option
	-fno-builtin passed to gcc compiler solve the problem with uClibc;
	this imply same option in building uClibc, as it is in normal uClibc build.
	This is partial	rollback of changes 2005-03-16.

	* build/lib/configure, build/Makefiles/gmake/gcc.mak: add ability to pass
	extra flags to C++ compiler

2005-03-18  Francois Dumont  <dums@stlport...>

	* test/unit: Modified some test in order to check the _STLP_NO_IOSTREAMS
	mode. This new mode of tests reveals the following bugs:

	* stlport/stl/_rope.c: Add check of _STLP_USE_NO_IOSTREAMS macro before
	include of iostream header.

	* src/dll_main.cpp, stlport/stl/_string_fwd.h: Removed implementation 
	of __get_c_string, moved to _string.h header, once string has been defined,
	as an inline function.

2005-03-18  Petr Ovtchenkov  <ptr@island...>

	* src/complex_trig.cpp: avoid call log functions during static
	initialization, if possible.

2005-03-17  Francois Dumont  <dums@stlport...>

	* stlport/stl/_string_io.h: Fix implementation that used to think that
	size_t and streamsize was simply aliases. Thanks Jay Amin report.

	* stlport/config/_prolog.h: Add comment about the reason of alignment
	specification when using MSVC compilers. Fix alignment for Win64 platform.

	* stlport/stl/_alloc.h: Fix _ALIGN enum definition for _Win64 platform.

	* src/string_w.cpp: Fix wrong class export under debug mode thanks
	Charlemagne report.

	* build/Makefiles/nmake: Preparation of the build system for icl (Intel cl
	compiler (mimic cl compiler from Microsoft).

2005-03-16  Petr Ovtchenkov  <ptr@island...>

	* stlport/stl/_cmath.h: added logf, expf, sinf, cosf---this fix
	uClibc 0.9.27/gcc problem. Fix one macro for declaration math
	functions in case of absent *f functions.

2005-03-16  Francois Dumont  <dums@stlport...>

	* stlport/config/*: Clean native header include path macro definition. 
	Removed many useless definition simply recreating the default behavior. 
	Removed the unreferenced _STLP_NATIVE_OLD_STREAMS_INCLUDE_PATH macro.

	* stlport/stl/_site_config.h: Update relative path headers macros 
	documentation to reflect more accurately default behavior and add 
	the unreference	_STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH macro.

2005-03-15  Francois Dumont  <dums@stlport...>

	* stlport/stl/_fstream.h: Fix _Noconv_input helper class default implementation.
	Returns traits::eof() rather than 0.

2005-03-15  Petr Ovtchenkov  <ptr@island...>

	* src/complex.cpp, complex_exp.cpp, complex_io.cpp, complex_trig.cpp:
	use achievements in _cmath.h---use overloaded funcs; mascarade from
	complex_impl.h not required more.

	* src/complex_impl.h: deleted.

	* test/unit/cmath_test.cpp: check nested sqrt(sqrt)---possible problem with macro

2005-03-14  Francois Dumont  <dums@stlport...>

	* stlport/config/stl_msvc.h: _STLP_SAME_FUNCTION_NAME_RESOLUTION_BUG notion
	removed, impossible to reproduce, maybe fixed by the #pragma intrinsic/function
	directives.

	* stlport/stl/_cmath.h, cstdlib: Fix .Net 2003 and .Net 2005 beta support.

	* stlport/stl/_cmath.h: Removed _STLP_SAME_FUNCTION_NAME_RESOLUTION_BUG notion,
	no more _STLP_DO_* macros.

	* test/unit/valarray_test.cpp: New tests to check right compilation of 
	transcendentals valarray functions.

	* stlport/stl/_valarray.h: Replaced all the _STLP_DO_* macros by real 
	function calls.

	* src/fstream.cpp: Add INVALID_SET_FILE_POINTER definition when missing for
	Win32 IO implementation thanks Michael Fink report. Add compilation check 
	of right STLport file descriptor definition.

2005-03-12  Francois Dumont  <dums@stlport...>

	* stlport/stl/_tree.h: Fix equal_range_unique bug thanks Gunter.

	* test/unit/map_test.cpp: Add of the test to reproduce the bug
	above.

2005-03-11  Petr Ovtchenkov  <ptr@island...>

	* build/test/unit/gcc.mak: don't write runtime path to libstlport
	in case of crosscompilation.

	* stlport/stl/_cmath.h: exclude *f and *l variants of math functions
	if ones absent in system; add missed hypot function; few workarounds
	for uClibc and for VC.

	* src/complex.cpp, complex_exp.cpp, complex_trig.cpp: workaround
	for systems without *f and *l variants of math functions.

	* test/unit/resolve_name.cpp: exclude test line that confuse VC.

	* stlport/cstdlib: div isn't intrinsic for VC.

	* stlport/config/stl_gcc.h: don't use *f and *l math functions in
	case of uClibc.

2005-03-09  Petr Ovtchenkov  <ptr@island...>

	* doc/FAQ: FAQ was established.

2005-03-07  Francois Dumont  <dums@stlport...>

	* stlport/stl/_bitset.h, _bitset.c: Avoid include of istream when
	NO_IOSTREAMS mode thanks Bruno report.

	* stlport/stl/char_traits.h: Modification of the streamoff and streamsize
	definition to take into account the 64 bits file access support.

	* test/unit/fstream.cpp: New test for big files ( > 2Go) unactivated by
	default.

2005-03-06  Petr Ovtchenkov  <ptr@island...>

	* stlport/cstdlib, stlport/cmath, stlport/stl/_cmath.h: define
	overloaded functions in the scope of global namespace and then import
	all in stlp_std with 'using' directive. This is better than
	solution from 2005-03-04 below.

	* stlport/cmath: include cstdlib, due to declarations of abs
	with integer types required in overload and when 'using'.

	* src/complex.cpp, src/complex_exp.cpp, src/complex_trig.cpp: replace
	macros that possibly will be removed.

2005-03-05  Francois Dumont  <dums@stlport...>

	* stlport/stl/_construct.h: Simplification of the _Copy_Construct
	function, now only takes a single template parameter and only call
	the strict copy constructor. Creation of the _Param_Construct function
	that replace the former _Copy_Construct implementation.

	* cstdlib: Fix abs definition for MSVC compilers.

	* test/unit: Fixing 64 bits warnings in many tests.

	* src/c_locale_win32/c_locale_win32.c: Fixing 64 bits warnings.
	
	* src/fstream.cpp: Creation of the INVALID_STLP_FD constant to represent
	a portable invalid file descriptor.

	* stlport/stl/_streambuf.c: Explicit instanciation of basic_streambuf
	for wchar_t removed, already exists in _streambuf.h thanks
	Charlemagne report.

	* stlport/stl/char_traits.h: Setup modification, Windows platform now
	use ptrdiff_t to define streamoff, make the code more portable.

2005-03-04  Petr Ovtchenkov  <ptr@island...>

	* stlport/stl/_cmath.h: removed recursive include of cmath header
	
	* src/complex_impl.h: include cmath instead of stl/_cmath.h

	* stlport/stl/_complex.h: idem.

	* stlport/stl/_valarray.h: idem.

	* test/unit/unary.h: workaround for namespace resolution.

	* test/unit/resolve_name.cpp: test to show problem with namespace resolution.

	* stlport/cmath, stlport/stl/_cmath.h: standard require overloaded math
	functions for double and float arguments. Import with 'using' directive
	can't provide such overload. Removed import with 'using', used direct
	inline wrappers in namespace stlp_std instead. Cleaning code.

	* stlport/cstdlib: complement to cmath---the same as above for abs.

	* stlport/stl/_config.h: uClibc declare pthread_spin... but ones absent
	in the library indeed.

2005-03-02  Petr Ovtchenkov  <ptr@island...>

	* build/Makefiles/top.mak: move .PHONY target to the bottom, it work here
	as expected

	* build/Makefiles/gmake/depend.mak, targetdirs.mak: reduce amount of dummy
	targets; fix creation of directories for install.

	* build/Makefiles/gmake/linux/rules-install-so.mak: ditto.

	* stlport/stl/_config.h, stlport/config/stl_gcc.h: support of gcc/linux/uClibc

	* src/_stdio_file.h, num_put_float.cpp, stdio_streambuf.cpp: uClibc support

	* stlport/cwchar: ditto.

2005-03-01  Francois Dumont  <dums@stlport...>

	* stlport/stl/_threads.h, _windows.h, _rope.c: Fix of a 64 bits portage issue
	in the rope implementation under Win64 thanks Patrick Bergeron report.

2005-02-28  Francois Dumont  <dums@stlport...>

	* stlport/stl/_hashtable.c: hashtable::erase fix thanks Patrick Bergeron.

2005-02-27  Francois Dumont  <dums@stlport...>

	* stlport/stl/_algobase.h, _algobase.c: Fix find algo overload for
	char* and const char*. Now the overload is on the __find underlying
	function.

	* test/unit/alg_test.cpp: Add a test case for the search_n algo.

	* stlport/stl/_algo.c: Integration of the search_n algo implementation
	for the random access iterator from Jim Xochellis.

2005-02-25  Francois Dumont  <dums@stlport...>

	* stlport/stl/_slist.h: Fix _M_splice_after method.

	* stlport/stl/debug/_slist.h: Add of many missing checks for the special
	slist before_begin iterator which returns true to the _Dereferenceable
	function call but is not dereferenceable in reality. Passing this
	iterator to method like erase or insert was invalid but was not detected
	by the _Dereferenceable function.

	* test/unit/slist_test.cpp: Add checks for insert, insert_after, splice
	splice_after methods.

	* Patch from Ulrich Eckhardt:
	- Fix macro _MSC_VER macro checks, VC6 should be found using _MSC_VER < 1300
	check rather than _MSC_VER == 1200 to take into account compilers like 
	EVC4 that is a VC6 based compiler with _MSC_VER == 1202.

2005-02-25  Petr Ovtchenkov  <ptr@island...>

	* stlport/stl/_algobase.h: wrong parameters order in call to memchr,
	thanks Patrick Bergeron.

2005-02-24  Francois Dumont  <dums@stlport...>

	* stlport/stl/char_traits.h: Patch from Ulrich Eckhardt fixing a wrong
	_STLP_CALL specification on member operators and some cosmetic changes.

2005-02-22  Petr Ovtchenkov  <ptr@island...>

	* test/unit/limits_test.cpp: wchar_t is treated as signed, except when it
	equiv to unsigned short on Wins systems.

	* Repository: STLport 5.0 RC2

2005-02-20  Francois Dumont  <dums@stlport...>

	* Add many private definition of copy constructor and assignment operators
	to avoid very anoying warnings under some compilers (MSVC 7.0 7.1).

	* build/Makefiles/gmake/cygmin/sys.mak, test/unit/string_test.cpp:
	Mingw fixes thanks Shura Zam.

2005-02-19  Francois Dumont  <dums@stlport...>

	* stlport/stdexcept: Removal of a MSVC 7.0 and 7.1 workaround. Those compilers
	have a bug resulting in the generation of very long compiler message as
	soon as a simple compiler warning or error occur. Those messages are
	template instanciation context of previous disabled warning. Warning message
	are correctly disable but template instanciation context is kept until
	an enable warning or an error happen. There is nothing to do against that
	at STLport level except fixing or disabling warnings for unit tests build.

	* build/Makefiles/nmake/vc70.mak: Add missing file.

2005-02-18  Francois Dumont  <dums@stlport...>

	* stlport/stl/_hashtable.h, _unordered_set.h, _unordered_map.h: Code review
	based on the 12 April 2004 Technical Report document. Add missing hash policy
	and bucket_size methods. Fix of the rehash method behavior. erase method
	bug fix.

2005-02-14  Francois Dumont  <dums@stlport...>

	* stlport/string, /stl/_string.h: Modification of the include schema.
	_string_io.h no more included from _string.h to avoid circular headers
	dependencies as basic_string class is used in iostream implementation.
	This headers is now included from the Standard string header. Useless 
	cctype include removed from _string.h. _string_hash.h also moved from
	_string.h to string for consistency.

	* stlport/stl/_complex.c: Add of the _string_io.h header include that
	was missing after string include schema modification.

	* stlport/stl/_string_base.h, _string.h: basic_string move traits STLport
	struct definition do not depends anymore on the _String_base struct to
	make definition more clear.

2005-02-08  Francois Dumont  <dums@stlport...>

	* stlport/stl/_config.h: Fix endianness for AMD 64 thanks Karol
	Szkudlarek.

2005-02-07  Boris Fomitchev  <boris@stlport...>

	* stlport/stl/_config_compat_post.h, stlport/stl/_relops_hash_cont.h 
	stlport/stl/_list.h, stlport/stl/_slist.h, stlport/stl/_map.h, 
	stlport/stl/_set.h: 4.6 compatibility fix

2005-02-04  Francois Dumont  <dums@stlport...>

	* stlport/stl/_alloc.c: Fix of the _S_refill method in the lock free 
	implementation thanks Felix Wyss.

	* stlport/stl/_hashtable.h: _M_get_elem_ite set as static when possible
	to fix a MSVC6 problem thanks Michael Fink report.

	* stlport/new, config/stl_evc.h: EVC patch for MFC support from Michael Fink.

	* build/Makefiles/nmake/evc3.mak, evc4.mak: Warning level raised to 4
	by Michael Fink.

	* doc/README.evc3, README.evc4 doc update from Michael Fink.

	* src/vc_warning_disable.h: Add warning 4201 and 4214 disabling for EVC.

2005-01-31  Francois Dumont  <dums@stlport...>

	* Mac OS X portage thanks Zdenek Nemec.

	* stlport/stl/_hashtable.c: Fix of the _M_copy_from method thanks Jay.

	* stlport/stl/_vector.c: Fix of the _M_insert_fill_aux method thanks
	Mike Roberts report.

	* test/unit/unordered_test.cpp: Add of a test for the hashtable fix above.

	* src/vc_warning_disable.h: Add of the missing 4503 warning disable for MSVC6.

	* test/unit/nmake-vc-common.mak: Add of the _STLP_DEBUG_UNINITIALIZED macro
	definition for the debug and stldebug rules.

2005-01-28  Francois Dumont  <dums@stlport...>

	* Application of a patch from Michael Fink for EVC MIPS.

2005-01-27  Francois Dumont  <dums@stlport...>

	* stlport/deque, list, map, set, slist, stack, valarray: _STLP_WHOLE_VENDOR_STD
	replaced by the official _STLP_IMPORT_VENDOR_STD macro.

	* stlport/stl/_algobase.h: Add find algo overload for char* and const char* 
	forwarding the call to the memchr C function thanks Jim Xochellis report.

	* test/unit/find_test.cpp: Add check for the new find overload.

	* test/unit/cmath_test.cpp: Fix of the atan and atan2 tests to avoid precision
	problems.

	* test/unit/ptrspec_test.cpp: Add check for containers of function pointers and
	member function pointers.

	* test/unit/set_test.cpp: Add check for equal_range method when the search value
	is not in the set.

	* stlport/stl/_tree.h: Fix equal_range implementation thanks Grisha Spivak report.

	* stlport/stl/_vector.h, _vector.c: Fix of the movable types implementation thanks
	Mike Roberts report.

	* test/unit/mvctor_test.cpp: Add of a test case for vector class.

2005-01-25  Francois Dumont  <dums@stlport...>

	* stlport/stl_user_config.h: Pointer specialization feature is now off 
	by default as it do not handle pointer to function and pointer to member
	methods correctly yet. Feature documentation has been updated to report
	this limitation.

	* src/ctype.h: removal of the '>= 0' check for wchar_t variables reported 
	as a always true condition by gcc.

	* stlport/stl/_hashtable.c: Removal of an unused variable in hashtable::resize
	method thanks Jeff Grills report.

	* stlport/stl/_algo.c: Fix of the search_n algo thanks Jim Xochellis report.

2005-01-24  Francois Dumont  <dums@stlport...>

	* Some more warning fixes. Mostly add of missing char_traits::to_char_type calls.

2005-01-22  Francois Dumont  <dums@stlport...>

	* stlport/stl/_string_workaround.h, debug/_string_workaround.h: Fix of the
	call broadcast to the base class. Non debug workaround always call non debug
	base class methods, debug workaround always calls debug base class methods.

	* Many fixes to avoid warnings using MSVC in level 4 warnings:
		- while (true) replaced by for(;;) which do not produce the conditional
		expression is constant warning
		- removal of unused parameters
		- modification of some template function signature to keep the character type
		information and avoid the wchar_t to char type warning which was surely an
		important warning for the wide streams support.

	* stlport/stl/_monetary.c: removal of the call to the ctype::widen method 
	on the result of the moneypunct<_CharT, false>::decimal_point call as this
	method is already supposed to return a wide character. 

2005-01-19  Francois Dumont  <dums@stlport...>

	* src/msvc_warning_disablers.h: unused file, removed.

	* test/unit/logic_test.cpp: Fix of the tests to avoid warning regarding int
	to bool cast.

	* stlport/stl/pointers/_deque.h, _list.h: Fix of the exported class under MSVC
	compiler thanks Timothy Tenebekov report.

	* build/test/unit/nmake-vc-common.mak, nmake-vc6.mak, nmake-vc70.mak: Modification
	of the make files to avoid useless inclusion of vc_warning_disable.h file for
	MSVC.Net 2003 and MSVC 8 compilers.

	* src/locale_impl.h: Export of the locale facets container for MSVC compilers.

	* src/vc_warning_disable.h: Modification to limit the number of disables depending
	on the compiler.

2005-01-18  Francois Dumont  <dums@stlport...>

	* stlport/stl/_algo.c: Modification of the stable_partition implementation
	to limit the size of the allocated temporary buffer of the begin and end
	of the range are already at the right place thanks a Stephen Howe idear.

	* build/test/unit/nmake-vc-common.mak, nmake-evc-common.mak: Removal of the 
	_STLP_USE_AUTO_LINK macro which is now the default.

2005-01-14  Francois Dumont  <dums@stlport...>

	* stlport/stl/_windows.h, char_traits.h, src/c_locale_win32/c_locale_win32.c:
	Patch from Patrick Bergeron to support 64 bits compilation under Windows using
	VC8.

	* stlport/stl/boost_type_traits.h: boost support check and fixing.

2005-01-13  Francois Dumont  <dums@stlport...>

	* stlport/stl/_algobase.h: Improvment of the iter_swap algo to use the swap
	method when possible thanks David Abrahams and Aleksey Gurtovoy great book
	introduction.

	* stlport/stl/_alloc.h: Deactivation of the lock free allocator implementation
	not mature enough to be release yet.

	* stlport/stl/_uninitialized.h: Fix of non Standard algo signature:
			- uninitialized_fill_n

	* stlport/stl/_iterator_base.h: Fix of non Standard algo signature:
			- distance

	* stlport/stl/_algobase.h: Fix of non Standard algo signature:
			- fill_n

	* stlport/stl/_algo.h: Fix of non Standard algo signature:
			- rotate
			- generate_n

	* stlport/stl/_string.h, debug/_string.h: Fix of the non Standard basic_string
	default constructor.

	* stlport/stl/_algobase.h, _function.h, _iterator_base.h, _move_construct_fwk.h,
	_ptr_specialize.h, char_traits.h, debug/_debug.h: Fix of the macro name check
	before including type_traits.h.

2005-01-08  Francois Dumont  <dums@stlport...>

	* stlport/stl/_codecvt.h: Add of a missing export declaration for the wchar_t
	specialization of the codecvt_byname class.

	* src/stlport.rc: improvement of the information included in the ressource file.
	Especially add of the compiler options.

	* stlport/stl/_stlport_version.h: Creation of a special file containing all the
	version informations; very useful to avoid problem with the ressource compiler.

	* stlport/stl/_config.h: Removal of the unused _STLP_USING_VENDOR_STD macro.
	Inclusion of the _stlport_version.h file. Update of the comment explaining why
	_STLP_USE_DECLSPEC is undefined when user do not use iostreams.

	* build/Makefiles/nmake/vc-common.mak, evc-common.mak, gmake/gcc.mak: Improvement
	of the ressource compiler options.

2005-01-06  Francois Dumont  <dums@stlport...>

	* stlport/config/stl_msvc.h: Move the _STLP_DONT_RETURN_VOID configuration
	macro to the specific MSVC6 compiler as it is the only one that has ever
	reveal this bug.

2005-01-05  Francois Dumont  <dums@stlport...>

	* stlport/stl/_string_sum_methods.h: Fixes reported by gcc.

2005-01-04  Francois Dumont  <dums@stlport...>

	* doc/README.evc3: patched by Michael Fink

	* build/lib/configure.bat: warning fix thanks Michael Fink.

	* build/test/unit/nmake-src-prefix.mak: fixed thanks Michael Fink.

2005-01-02  Francois Dumont  <dums@stlport...>

	* stlport/stl/_string_sum.h, _string_operators.h: Fix of an assignment bug
	in the append method taking a C string wrapper. Modification of the __bstr_sum
	get_allocator method to avoid a useless allocation.

	* build/lib/nmake-src-prefix.mak: Add of missing rules for .c and .rc file type.

2004-12-29  Francois Dumont  <dums@stlport...>

	* stlport/stl/_hashtable.c: Fix missing allocator argument in new slist
	construction and bad number of buckets thanks See Wong report.

	* test/unit/unordered_test.cpp: Add of a test to report the previous
	problem.

	* build/Makefiles/nmake/vc-common.mak, evc-common.mak: Generalization of the 
	/DMACRO compiler command rather than /D "MACRO".

	* test/unit/string_test.cpp: Creation of a new test case for string template
	expression.

	* stlport/stl/_string_sum.h, _string_sum_methods.h: Fixing of many bugs in the
	string template expressions implementation.

	* stlport/stl/_tree.c: Add of a comment in the _M_increment method explaining
	a surprising checks thanks Ulrich Eckhardt.

2004-12-24  Petr Ovtchenkov  <ptr@island...>

	* build/Makefiles: makesystem moved here from src/Makefiles

	* build/lib: makefiles moved here from src catalog.

	* build/test/unit: makefiles moved here from test/unit catalog.

	* INSTALL: updated.

	* README: updated.

2004-12-23  Francois Dumont  <dums@stlport...>

	* stlport/stl/_vector.h, _vector.c: Fix of the code for movable types
	in call to push_back or insert of a value in case of auto referencing
	thanks Benjamin Redelings.

	* stlport/stl/_hashtable.c: Fix of the _M_copy method thanks Timothy
	Tenebekov.

2004-12-22  Francois Dumont  <dums@stlport...>

	* stlport/stl/debug/_string.h: Fix of missing scopes thanks arabesc and
	Benjamin Redelings

	*stlport/config/stl_gcc.h: include schema fix for gcc >= 4.0.0 thanks 
	Oliver Stoeneberg

2004-12-21  Francois Dumont  <dums@stlport...>

	* stlport/stl/_hashtable.c: Fix copy method thanks KL report.

	* stlport/stl/_vector.h, _deque.h: Fix implementation for vector of 
	movable objects when calling erase of a null range thanks to arabesc report.

	* stlport/stl/_string.h, _string_workaround.h, debug/_string.h, 
	debug/_string_workaround.h: Implementation of the MSVC6 template method bug
	workaround exclusively for MSVC6 and not anymore for all compilers.

2004-12-21  Petr Ovtchenkov  <ptr@island...>

	* src: untested (lost support) .mak and installation files moved into
	initial_mak catalog.

	* explore, src: explore catalog moved into src catalog. Makefiles from
	explore catalog become main makesystem of STLport.

2004-12-20  Francois Dumont  <dums@stlport...>

	* stlport/stl/_hashtable.h: Fix of the const begin and end methods of the
	new implementation thanks Timothy Tenebekov report.

2004-12-17  Francois Dumont  <dums@stlport...>

	* stlport/cmath, cstdlib, stl/_cmath.h, config/stl_msvc.h: Configuration
	fixes for .Net 2002.

2004-12-17  Boris Fomitchev  <boris@stlport...>

	* char_traits.h: fixed _STLP_NO_WCHAR_T case

	* src/common_macros.mak: deleted locale.cpp

2004-12-17  Francois Dumont  <dums@stlport...>

	* src/explore/Makefiles/nmake/app/rules-install-a.mak, rules-install-so.mak
	lib/rules-install-so.mak: Creation of the install-shared and install-static
	from Michael Fink.

2004-12-16  Francois Dumont  <dums@stlport...>

	* stlport/stl/debug/_debug.h, _debug.c: Creation of functions to change iterators
	list owner.

	* stlport/stl/debug/_list.h, _slist.h: Modification of the iterator owners in the
	splice, splice_after and merge method which do not invalidate iterators but only
	move them from a [s]list to an other.

	* stlport/stl/_relops_hash_cont.h: removal of the == operator on hashed containers
	This operator is just impossible, or at least very complicated, to implement 
	for this container which do not require any ordering operation on the type used
	to instanciate the container.

	* test/unit/hash_test.cpp: Addition of a commented test showing why the == operator
	is invalid on hashed constainers.

	* stlport/stl/_hashtable.h: Modification of the hashtable implementation based
	on a slist and a vector. Compared to the previous one the advantages are:
		- lighter hashtable::iterator
		- iterator increment operation do no require call to the hash function.
		- no more special implementation for the debug mode, once validated debug/_hashtable.h
	        will be removed.
	The drawback is a small overhead on the insert/erase methods.

	* stlport/unordered_set, unordered_map: Introduction of the almost Standard hash containers.
	The major difference with hash_set or hash_map containers from SGI is the load factor
	that gives the user the ability to change the container ratio of the number of elements per
	bucket.

2004-12-13  Francois Dumont  <dums@stlport...>

	* stlport/stdio.h: patch from Michael Fink to avoid warning on the EVC platform.

	* doc/evc_workaround.txt: Documentation file from Ulrich Eckhardt about the EVC 
	workaround to avoid annoying warnings.

	* stlport/typeinfo: Patch from Ulrich Eckhardt to fix missing type_info struct
	under MSVC6 and EVC and also identation.

2004-12-10  Francois Dumont  <dums@stlport...>

	* stlport/stl/_collate.h, _locale.h: fix of the __locale_do_operator_call internal
	function to make traits and allocator also template parameters.

	* stlport/stl/_locale.h, _collate.h, stlport/config/stl_msvc.h, src/locale.cpp, 
	src/locale_impl.h: restoration of the MSVC6 workaround for the locale class to 
	correctly handle the member template methods.

2004-12-09  Francois Dumont  <dums@stlport...>

	* stlport/stl/_messages_facets.h: fixed messages_base::catalog from long typedef
	to int thanks Ulrich Eckhardt report.

	* stlport/stl_user_config.h, config/stl_msvc.h: addition of the _STLP_VERBOSE_AUTO_LINK 
	config macro to make the automatic linking feature more verbose thanks Ulrich Eckhardt
	patch.

	* stlport/exception: Add check of the _STLP_HAS_SPECIFIC_PROLOG_EPILOG macro before
	including _msvc_warning_off.h to avoid bad resulting warning status when the _epilog.h
	header is not included thanks Gail (baker88) report.

	* stlport/cassert, cerrno, csignal, ctype.h, cwctype, stdarg.h, stdlib.h, string.h,
	config/stl_evc.h: Patch from Michael Fink to fix compilation problem using ressource
	compiler for evc3 and evc4 and problems with cerrno and cassert inclusions reported
	by Ulrich Eckhardt.

2004-12-01  Petr Ovtchenkov  <ptr@island...>

	* stlport/stdexcept: removes some warnings regarding the exception class being derived
	from a non-dll interface class on evc4. Michael Fink contribution.

	* stlport/stl/_cmath.h: push/pop warning level for VCs. Michael Fink contribution.

	* src/_stdio_file.h: Evc4 uses an ugly hack to implement file IO using a FILECE structure
	representing the internal FILE structure. For evc3 Michael Fink implemented a much simpler
	way that also works for evc4.

	* stlport/config/stl_evc.h, stl_msvc.h, stlcomp.h: separate config stuff for stl_evc.h
	and stl_msvc.h. Now all Windows CE specific defines are in stl_evc.h only.
	Michael Fink contribution.

	* stlport/stl/_codecvt.h, _ctype.h, _messages_facets.h, _monetary.h: add friend class
	_Locale_impl.

	* stlport/stl/_num_get.h, _num_put.h, _numpunct.h, _time_facets.h: ditto.

2004-11-30  Petr Ovtchenkov  <ptr@island...>

	* src/explore/configure.bat: added quotes. Thanks Ulrich Eckhardt and Michael Fink.

	* stlport/stl/_locale.h, src/locale_impl.h, src/locale_impl.cpp: added _STLP_DECLSPEC
	and _STLP_CALL for some functions. Thanks Ulrich Eckhardt.

	* stlport/stl/_collate.h, _numpunct.h, _monetary.h, _codecvt.h, _time_facets.h:
	_Locale_imp made friend without relation to _STLP_LEAKS_PEDANTIC. Thanks Ulrich Eckhardt.

	* stlport/stl/_locale.h: remove body of protected constructor to avoid warnings.
	Thanks Kidman and Ulrich Eckhardt.

	* src/locale_impl.cpp: use simple resize of facets_vec; reserve space for facets_vec to be
	sure that allocation don't throw exception during vector resize in insert_*_facets functions.
	Thanks Ulrich Eckhardt.

2004-11-29  Petr Ovtchenkov  <ptr@island...>

	* stlport/stl/_cmath.h: patch from Michael Fink applied.

	* stlport/stl/_locale.h: remove enclose class spec to avoid VC confuse.
	Thanks Ulrich Eckhardt.

	* src/locale_impl.cpp, src/locale_impl.h: remove bogus _STLP_CALL decls.
	Thanks Ulrich Eckhardt.

2004-11-27  Petr Ovtchenkov  <ptr@island...>

	* stlport/stl/_threads.h: direct access to _M_ref_count isn't MT-safe;
	counter value returned by _M_incr and _M_decr methods only.

	* stlport/stl/_rope.h, stlport/stl/_rope.c: adaptation to changes above;
	removed __GC macro dependent code, that was never defined in present
	sources.

	* src/locale.cpp, locale_impl.cpp, locale_impl.h: general revision of locale
	implementation; code clean, corrected, concepts fixed, errors fixed,
	new bugs added.

	* src/ctype.cpp, facets_byname.cpp, locale_catalog.cpp, messages.cpp, monetary.cpp:
	ditto.

	* stlport/stl/_codecvt.h, _collate.h, _ctype.h, _locale.h, _messages_facets.h:
	ditto.

	* _monetary.h, _num_get.h, _num_put.h, _numpunct.h, _time_facets.h: ditto.

	* src/locale_nonclassic.h: removed due to code revision.

	* src/explore/Makefile.inc: locale.cpp is directly included into locale_impl.cpp.

	* src/explore/gcc.mak, test/unit/gcc.mak: use _STLP_LEAKS_PEDANTIC before release
	by default.

2004-11-24  Francois Dumont  <dums@stlport...>

	* stlport/stl/_cmath.h: Fix of the abs definition for the EVC platform
	thanks Michael Fink.

	* stlport/stl/_cmath.h: Fix of the Internal Compiler Error from MSVC6
	when defining math functions in the STLport namespace thanks Ulrich
	Eckhardt and I.

	* stlport/stl/debug: Creation of a debug iterator traits used to make
	an additional test when checking iterator deferencing status, on slist
	before_begin iterators are not dereferenceable but were not detected
	as so.

	* stlport/math.h, stdexcept: patches from Michael Fink to avoid warning 
	on the EVC platform.

2004-11-22  Francois Dumont  <dums@stlport...>

	* src/explore/Makefiles/nmake/evc3.mak, evc4.mak: removal of the useless 
	/DPLATFORM macro definition thanks Ulrich Eckhardt report and Michael Fink
	patch.

	* stlport/cstdlib: extension of the div overload for long input up to MSVC7.1
	thanks Michael Fink report.

	* test/unit/string_test.cpp: patch from Michael Fink for EVC which has limited
	support of the WaitForMultipleObjects API function.

	* stlport/cstdlib, cwchar, using/cstring: patch from Michael Fink to remove
	imports of missing native C functions.

2004-11-16  Francois Dumont  <dums@stlport...>

	* src/explore/configure.bat: Add of the --rtl-static and --rtl-dynamic
	configuration options to force use of static or dynamic C runtime thanks
	Michael Fink.

	* stlport/config/stl_msvc.h: undef of the _STLP_USING_CROSS_NATIVE_RUNTIME_LIB
	for the evc platform that only have the static C runtime version thanks
	Michael Fink.

	* stlport/config/stl_bc.h, stl_dmc.h, stl_solaris.h: Removal of all references
	to the deprecated _STLP_NO_OWN_IOSTREAMS and _STLP_NO_NEW_IOSTREAMS macros.

	* stlport/cmath, stl/_cmath.h: Modification of the import of the pow function
	for MSVC6 that has a bugged overload thanks Michael Fink report.

2004-11-09  Francois Dumont  <dums@stlport...>

	* test/unit/config_test.cpp: Creation of a test case to check correct
	platform/compiler configuration.

	* stlport/config/stl_msvc.h: Definition of the _STLP_HAS_NATIVE_FLOAT_ABS
	now start with MSVC6.

	* stlport/cstdlib, stl/_cmath.h: Addition of some missing math function
	 overloads for MSVC6.

2004-11-05  Francois Dumont  <dums@stlport...>

	* stlport/config/stl_msvc.h: Definition of the _STLP_HAS_NATIVE_FLOAT_ABS
	starting with MSVC .Net 2002 thanks Kevin Bluck report.

	* test/unit/cmath_test.cpp: Creation of a test case to check correct import
	and extensions of C functions.

2004-11-04  Petr Ovtchenkov  <ptr@island...>

	* src/explore/Makefiles: added templates CC.mak for SunPro's CC compilers;
	ones should be checked and fixed with real compiler.

2004-11-04  Francois Dumont  <dums@stlport...>

	* stlport/stl/_function.h, _queue.h, _stack.h, _map.h, _iterator.h: 
	restoration of the Standard names of the protected datas.

	* stlport/stl/_alloc.h, _alloc.c: implementation of a lock free version
	of the default STLport node_allocator. Supported by the Win32 platform
	for the moment.

	* src/ios.cpp, locale.cpp, locale_impl.cpp: use of atomic operations
	under Win32 platform rather than using synchronisation primitives.

	* stlport/stl/_tree.h, _map.h, _set.h: creation of the erase_unique and
	equal_range_unique methods to use the unicity information of the map and
	set containers in binary tree searches.

	* stlport/stl/_string.h: Add _STLP_USE_NO_IOSTREAMS check beforing deciding
	not to include _string.c thanks KL

2004-11-02  Francois Dumont  <dums@stlport...>

	* stlport/stl/pointers/_deque.h: Fix for the problem of the deque<void*>
	instanciation thanks Alex Cosealin report

	* test/unit/ptrspec_test.cpp: Add of a test for the previous problem.

2004-10-31  Francois Dumont  <dums@stlport...>

	* stlport/stl/_rope.h: Fix of the apply_to_pieces qualification thanks Leeya.

	* test/unit/rope_test.cpp: New test case for the previous fix.

2004-10-30  Francois Dumont  <dums@stlport...>

	* src/explore/Makefiles/nmake/vc-common.mak: introductions of the LDFLAGS_A_REL
	macro to fix config problem under VC71 and VC8 beta.

2004-10-29  Petr Ovtchenkov  <ptr@island...>

	* src/explore/Makefiles/gmake/app/gcc.mak: use -fPIC for gcc 2.95.x when build
	application---this is a workaround for bug with running code in static constructors.

	* stlport/config/stl_gcc.h, stlport/stl/_config.h: force usage of mutex instead
	of spinlock for gcc 2.95.x, due to problems with initialization of statics.
	Initialization of mutex has variant with structure filling, while for spinlock
	initialization function call required.

	* test/unit/locale_test.cpp: avoid static object for gcc 2.95.x, due to problems
	with initialization of statics.

2004-10-27  Francois Dumont  <dums@stlport...>

	* stlport/stl/_config.h, _fstream.h, _ios.h, _istream.h, _monetary.h, _num_get.h,
	_num_put.h, _ostream.h, _sstream.h, _streambuf.h, _string.h, _time_facets.h:
	Restoration of the _STLP_NO_CUSTOM_IO feature removed after cleanup reported
	in 2004-09-28 post from Petr.

	* stlport/stl/stl_user_config.h, _config.h, stl_msvc.h: reactivation of the 
	auto link feature for MSVC but only if activated by the client. Moreover the
	new implementation of this feature is more maintenable, stl_msvc.h won't have
	to be edited at each STLport release.

	* test/unit/nmake-vc-common.mak, nmake-evc-common.mak: Adoption of the auto link
	process.

2004-10-25  Francois Dumont  <dums@stlport...>

	* stlport/stl/_config.h: Introduction of the _STLP_DONT_USE_EXCEPTIONS which 
	means that the client do not want to use the C++ exception feature. It is
	different from the _STLP_NO_EXCEPTIONS which means that the compiler do not
	support exceptions at all. The distinction is important for some macros definition.

	* test/unit: Modification of the _STLP_NO_EXCEPTIONS test to the more general
	_STLP_USE_EXCEPTION macro.

	* stlport/stl/_ios_base.h, src/ios.cpp: rollback of the modifications of the
	2004-10-24.

	* stlport/config/stl_msvc.h, stl_gcc.h: Those 2 compilers have a exception 
	support switch, when exceptions are unactivated they now define
	_STLP_DONT_USE_EXCEPTIONS rather than _STLP_NO_EXCEPTIONS.

2004-10-25  Petr Ovtchenkov  <ptr@island...>

	* stlport/stl/_sstream.c: cur direction missed in seekoff. Thanks David Obermann.

	* sstream_test.cpp: test for problem above.

2004-10-24  Francois Dumont  <dums@stlport...>

	* stlport/stl/_ios_base.h, src/ios.cpp: definition of the ios_base::failure
	nested class only when exception support is activated.

	* stlport/stl/_deque.h, _deque.c: Modification of the deque implementation
	to use the internal move framework.

	* test/unit/mvctor_test.cpp: New test case for the use of the move
	framework within the deque container.

2004-10-21  Francois Dumont  <dums@stlport...>

	* stlport/stl/_iostring_stream.h: Simplification of the __stl_alloc_rebind
	 overload to make it less ambiguous for the compilers using it.

2004-10-18  Francois Dumont  <dums@stlport...>

	* stlport/stl/_vector.h, _vector.c: Add of checks to know if a reference
	is in *this before making a systematical copy of it.

2004-10-18  Petr Ovtchenkov  <ptr@island...>

	* stlport/stl/type_manips.h: replace template <> by macro.

	* stlport/stl/debug/_debug.h, _debug.c: __check_if_not_owner should return true
	in case of incompatible types and do check different from __check_if_owner;
	added message for check __check_if_not_owner.

	* test/unit/mvctor_test.cpp, test/unit/ptrspec_test.cpp: fix tests to satisfy
	changes related to 23.1.1 Table 67 in stlport/stl/debug/_vector.h, _deque.h---see
	record 2004-10-14 below.

2004-10-14  Francois Dumont  <dums@stlport...>

	* stlport/stl/debug/_iterator.h: Move of some _DBG_iter_base and _DBG_iter
	methods implementation outside struct definition to fix call on incomplete 
	type compile error generated by the call to the _Incrementable or _Dereferenceable
	functions passing *this as input parameter thanks Alexey Sarytchev

	* test/unit/sstream_test.cpp, fstream_test.cpp: Fix of the tests on streambuf 
	throwing exception for platform with no exception support.

	* stl/_string.h: Add of the missing compare methods on the basic_string 
	implementation used by compilers supporting template methods thanks Patrick
	Bennett report.

	* stlport/stl/debug/_vector.h, _deque.h: Add check on the insert range method, 
	the inserted can not be pointing to the this instance where the insertion occur.

2004-10-13  Petr Ovtchenkov  <ptr@island...>

	* src/explore/Makefiles/gmake: a bit correction of compiled and installed names
	of executables on *nix systems, see record 2004-09-29 by Francois.

2004-10-12  Francois Dumont  <dums@stlport...>

	* stlport/stl/_config.h: typo fix thanks KL

	* stlport/stl/_move_construct_fwk.h, _set.h, _map.h, _hash_set.h, _hash_map.h:
	Extra semicolons removal thanks Wlodek Szafran reports.

2004-10-11  Petr Ovtchenkov  <ptr@island...>

	* stlport/stl/_rope.h: add typename.

2004-10-08  Francois Dumont  <dums@stlport...>

	* stlport/stl/_deque.h, _hashtable.h, _tree.h, _bvector.h: Specialization of the
	__type_traits struct for the iterator types.

	* stlport/stl/_uninitialized.h, _vector.h: Relax of the rules to perform some 
	optimizations, no more POD check, rather use of the trivial copy constructor, 
	trivial assignment operator informations.

	* stlport/stl/_config.h, _epilog.h: Adoption of stlport as the official STLport
	namespace when users cannot use the std namespace.

2004-10-07  Francois Dumont  <dums@stlport...>

	* stlport/stl/_list.h: Specialization of the __type_traits struct for list iterators.
	Move of the == and != operators from the base iterator class to the iterator class
	to make iterator of different list instanciation not comparable anymore.

	* stlport/stl/_slist.h: ditto.

2004-10-06  Francois Dumont  <dums@stlport...>

	* stlport/stl/_rope.h, _rope.c: Code review, use of general STLport tools rather
	than specific rope ones. Use of compile time checks rather than runtime.

	* stlport/stl/_bvector.h: fix to make the vector<bool> specialization movable
	thanks a Kelly Thompson report.

2004-10-05  Francois Dumont  <dums@stlport...>

	* src/explore/Makefiles/nmake: Application of a patch from Michael Fink to simplify
	the evc make system.

	* doc/README.evc4: New version from Zdenek Nemec.

2004-10-04  Francois Dumont  <dums@stlport...>

	* test/unit/type_traits_test.cpp: A new test case to check behavior of
	the numerous helper functions from type_traits.h and type_manips.h.

	* stlport/stl/type_traits.h: Fix of some bugs and addition of the __type_traits
	specializations of const, volatile and const volatile native types.

	* stlport/stl/type_manips.h: Modification of the __bool2type default value
	so that it consider any value as true and only the 0 value false.

	* stlport/config/stl_msvc.h, stlport/stl/_config.h: Modification of the STLport
	std equivalent namespace to be sure that the user rebuild correctly the STLport 
	library when he forces the use of the dynamic or static library.

	* src/explore/Makefiles/nmake/lib/vc-common.mak, app/vc-common.mak: Creation
	of the STLP_BUILD_FORCE_STATIC_RUNTIME that forces use of the static version
	of the native runtime.

	* test/unit: fix of some tests that failed to compile using the 
	_STLP_NO_ANACHRONISMS macro.

2004-09-30  Petr Ovtchenkov  <ptr@island...>

	* test/regression: catalog removed---it obsolete and unsupported; use
	test/unit tests instead; all tests from test/regression was moved in test/unit,
	sometimes in redesigned form.

2004-09-29  Francois Dumont  <dums@stlport...>

	* stlport/stl/_string_io.c: Removal of the native library specific calls of 
	use_facet, only the STLport standard one is used.

	* stlport/stl/_alloc.h, _alloc.c, src/dll_main.cpp: Implementation of a clean
	process for the node_alloc allocator. This clean is active only when 
	_STLP_LEAKS_PEDANTIC is defined and you are using STLport as a dynamic
	library under Win32.

	* src/explore: Updates of several makefiles to conform to the new library
	and binary naming convention.

	* src/c_locale_win32/c_locale_win32.c: fix of the message facet name management
	that was generating a memory leak.

2004-09-29  Petr Ovtchenkov  <ptr@island...>

	* stlport/stl/char_traits.h: WinCE seems don't declare off_t; thanks Michael Fink.

2004-09-28  Petr Ovtchenkov  <ptr@island...>

	* Repository: iostreams and string wrapper mode removed, due to ones has
	a lot of restrictions in usage and frequently lead to hard recognized problems.
	Tonns of *_STREAMS macro replaced by _STLP_USE_NO_IOSTREAMS or _STLP_NO_IOSTREAMS
	as configuration macro; *NATIVE_STRING macro removed by the same reasons.

2004-09-27  Petr Ovtchenkov  <ptr@island...>

	* test/unit/gcc.mak: fix stlport library name for STLP_DEBUG mode for Solaris,
	thanks for separate namespaces in normal and STLP_DEBUG mode, see record
	2004-09-10 below.

2004-09-24  Francois Dumont  <dums@...>

	* stlport/config/stl_gcc.h: Fix of the relative include path used to access the
	native gcc headers. Before version 3.4.0 the 0 patch level was not part of the 
	include	path.

	* stlport/stl/type_traits.h, _vector.h, _algobase.h, _construct.h: Removal
	of the __action_on_move type traits replaced by a generalization of the 
	already existing __move_traits.

	* test/unit/mvctor_test.cpp: New test case for the __move_traits feature.

2004-09-24  Petr Ovtchenkov  <ptr@island...>

	* src/explore/Makefiles/gmake/sunos: 'explore' makesystem adopted to work
	under Solaris with GNU make.

	* test/unit/gcc.mak: ditto.

	* src/explore/Makefiles/gmake/app/gcc.mak: ditto.

	* src/explore/Makefiles/gmake/lib/gcc.mak: ditto.

	* stlport/cmath: fix some math calls for Solaris.

	* test/unit/list_test.cpp: add illustration for list iterator/reverse_iterator questions.

	* src/explore/Makefiles/gmake/unix/lib.mak: moved from linux/lib.mak, as
	common rules for all *nixes.

	* src/explore/Makefiles/gmake/linux/lib.mak: use common for all *nixes rules
	in unix/lib.mak.

	* src/explore/Makefiles/gmake/freebsd/lib.mak: ditto.

	* src/explore/Makefiles/gmake/openbsd/lib.mak: ditto.

	* src/explore/Makefiles/gmake/sunos/lib.mak: ditto.

	* src/explore/Makefiles/gmake/unix/lib.mak, test/unit/gcc.mak: changed library name;
	libraries now named as libstlport, libstlportg, libstlportstlg for optimized, with
	debug symbols, and with debug symbols and _STLP_DEBUG mode libraries respectivly.

2004-09-21  Francois Dumont  <dums@...>

	* stlport/stl/debug: Modification of the __check_range class in the more general
	__check_construct. Now it also checks for null pointers in the string interface.

	* src/explore: Adoption of the new library naming convention for all Microsoft
	compilers thanks Michael Fink

2004-09-20  Francois Dumont  <dums@...>

	* src/explore/Makefiles/gmake/cygwin, mingw: Build configuration files merges
	within a single build system: cygming. Future portage of STLport for compilers
	using the GNU tools will be available from both systems. Removal of the vc6 build
	under cygwin, for mono-platform compilers we support only one build system.

	* stlport/stl/_vector.h: Modification of the destructor implementation to destroyed
	object instances in a reverse order taking advantage of the way elements are
	normaly added to this container.

2004-09-16  Francois Dumont  <dums@...>

	* test/unit/cppunit/cppunit_mini.h, cppunit_proxy.h: Adaptation of the CPPUNIT
	framework to take care of the exception as failures thanks Zdenek Nemec

	* stlport/config/stl_msvc.h, stl_bc.h, stl_mwerks.h, stlport/stl_user_config.h:
	Removal of the non intuitive and difficult to maintain automatic linking feature.

	* Fixing of the locale implementation mecanism. Classic locale implementation is
	also managed by a reference counter to be sure when it is possible to release
	the associated ressources. Fix of a missing locale impl ref counter decrement
	in the template locale constructor taking a facet, it was a possible source of
	memory leak . Addition of a static object within locale_impl.cpp in 
	_STLP_LEAKS_PEDANTIC mode to decrement the global locale impl ref counter when 
	STLport library is unloaded. Addition of all the missing classic locale facets
	destructor in free_classic_locale.

	* src/locale_catalog.cpp: The locale by name constructor checks the "C" name
	to simply copy (increment the ref counter) the classic locale implementation 
	rather than instanciating a new one.

2004-09-15  Francois Dumont  <dums@...>

	* stlport/stl/_list.c: Modification of the _S_sort implementation, the __carry 
	list instance is created using the __that allocator instance copy to be more
	allocator friendly.

2004-09-11  Francois Dumont  <dums@...>

	* stlport/config/stl_intel.h: Configuration update for Win32 Intel 8.0 
	compiler thanks Charlemagne.

2004-09-10  Francois Dumont  <dums@...>

	* stlport/stl/_config.h: The new official namespace is now stlp_std. _STL is
	just an alias. STLPORT macro still contains the STLport std namespace equivalent.
	Moreover in _STLP_DEBUG mode, which is not binary compatible with the release
	or debug mode, the namespace is stlpd_std to generate link error rather
	than runtime crash.

2004-09-09  Francois Dumont  <dums@...>

	* stlport/stl/_config.h: _STLP_DONT_USE_NESTED_TCLASS_THROUGHT_TPARAM 
	renamed to the more intuitive _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE.

	* stlport/stl/_config.h: Introduction of a new namespace stlp_private
	defined in the global namespace. Everything that is STLport implementation
	details should be in this namespace to avoid polution of the std namespace.

	* stlport/stl/_iterator_base.h: Modification of the macro used to create
	iterator traits for all tree and hashtable based containers to move it in
	the stlp_private namespace rather than defining it as nested struct, limits
	the symbol size.

2004-09-08  Francois Dumont  <dums@...>

	* test/unit/fstream_test.cpp: restauration of the test added by Petr
	the 2004-09-03, it is finaly a different test from the one in sstream_test.cpp.
	Some more checks have also been integrated.

	* stlport/stl/_ostream.c: New fix of the _M_unbuffured_copy method that was
	still bugged in case of a throwing output streambuf, detected thanks to the
	test case.

2004-09-07  Francois Dumont  <dums@...>

	* stlport/config/stl_msvc.h: Add defines of the _STLP_USE_STATIC_LIB
	or _STLP_USE_DYNAMIC_LIB depending on the current kind of build.

	* stlport/stl/_streambuf.h, _streambug.c: Fix an unresolved symbol 
	problem for MSVC6 (and before?) when STLport is used as a static library.

2004-09-06  Francois Dumont  <dums@...>

	* test/unit/nmake-evc-common.mak: Use of the dynamic runtime for the
	*-shared rules rather than the previous static thanks Michael Fink.

	* test/unit/nmake-evc*.mak: end of build code factorisation, use of 
	nmake-evc-common.mak within all makefiles thanks Michael Fink.

	* test/unit/locale_test.cpp: Application of a patch from Michael Fink
	to check the "C" locale on all platforms. Fix of the money_get_put test
	case for the "C" locale.

	* test/unit/allocator_test.cpp: new test case for std::allocator checks.

2004-09-05  Francois Dumont  <dums@...>

	* stlport/stl/_string_hash.h: Performance improvement, multiplication
	replaced by shift operations thanks Greg S.

	* stlport/config/stl_wince_4.h: removed, never used, stl_evc.h has been 
	prefered.

	* test/unit/string_test.cpp: addition of a new test short_string_optim_bug
	to check for a compiler bugs making the short string optim invalid thanks
	Michael Fink.

	* stlport/config/stl_evc.h: Deactivation of the short string optimization
	because of a compiler bug thanks Michael Fink.

	* src/explore: factorisation of the evc build makefiles thanks Michael Fink.

	* src/explore/Makefiles/nmake/lib/clean.mak, macro.mak: Addition of some
	file clean up for the clobber rule thanks Michael Fink.

2004-09-03  Francois Dumont  <dums@...>

	* test/unit/fstream_test.cpp, sstream_test.cpp: Move of the test for the
	infinite loop from FstreamTest test case to SstreamTest, addition of some
	checks.

	* test/unit/full_streambuf.h: streambuf implementation simulating full
	output.

	* stlport/exception: restauration of some modification removed after the
	rollback of the 2004-09-01.

	* stlport/config/stl_gcc.h: homogeneification of the coding standard used
	within STLport, 2 spaces indentations even for preprocessor directives.
	Doing so, discovered a weird configuration for Mac OS platform (__APPLE__)
	concerning the _STLP_NATIVE_INCLUDE_PATH macro definition, fixed.

	* stlport/stl/config/stl_*.mak: removal of all references to the 
	_STLP_REDEFINED_STD macro as it is now the default and only way STLport 
	use to replace native Standard library.

	* test/unit/nmake-vc-common.mak: add inclusion of the vc_warning_disable.h
	file to avoid warnings during build process thanks Michael Fink.

2004-09-03  Petr Ovtchenkov  <ptr@Island...>

	* stlport/stl/_ostream.c: removed infinite loop in case when outgoing stream
	can't accept more chars. Thanks Daniel White, Ulrich Eckhardt, Francois Dumont.

	* test/unit/fstream_test.cpp: test for problem above. Thanks Ulrich Eckhardt.

2004-09-02  Francois Dumont  <dums@...>

	* stlport/exception, stlport/stl/_site_config.h, test/unit/exception_test.cpp:
	Creation of the _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT macro to signal support of
	the unexpected exception mecanism. Related type/function are only brought to the
	STLport namespace if correctly supported, exception_test.cpp check that.

	* New modification of the _Rb_tree and _Hashtable associated iterator structs.
	Removal of the container_type pass through the iterator traits; iterator traits
	is the type that will make each derived container iterator type real different
	type making them uncomparable.

	* stlport/ctype.h: rollback of the above rollback ;-) only of course for the 
	Win CE code fix that was part of the previous commitment.

2004-09-01  Petr Ovtchenkov  <ptr@Island...>

	* Rollback include schema: code is broken.

2004-08-31  Francois Dumont  <dums@...>

	* _STLP_INCOMPLETE_EXCEPTION_HEADER replace by the more intuitive
	_STLP_NO_UNCAUGHT_EXCEPT_SUPPORT macro.

	* Modification of the include schema of all public headers in stlport folder
	that need to be reentrant. Now those files are fully guarded and the specific
	STLport code is only included once at the end of the inclusion, the reentrancy
	only concern inclusion of the native headers.

2004-08-30  Francois Dumont  <dums@...>

	* stlport/stl/_deque.c: Fix of a pseudo 'uninitialized variable used' thanks 
	Oliver Stoeneberg.

2004-08-27  Francois Dumont  <dums@...>

	* .Net 2002 (VC70) portage.

2004-08-27  Petr Ovtchenkov  <ptr@Island...>

	* src/explore/Makefiles/gmake/gcc.mak, app/gcc.mak, lib/gcc.mak: buggy C++
	language support in libsupc++ in gcc before 3.3 not allow to use it;
	link with libstdc++ instead.

	* stlport/config/stl_icc.h: fix features for icc 7.1; fix features for Linux
	platforms.

2004-08-24  Francois Dumont  <dums@...>

	* stlport/config/stl_gcc.h, stl_msvc.h: fixing of configuration concerning
	uncaught_exception and exception handling in general thanks John Roberts.

	* stlport/stl/_tree.h, _tree.c: Modification of the _Rb_tree_iterator	struct
	to be able to distiguish iterator types from different tree based containers
	Removal of the == and != member operators of the _Rb_tree_base_iterator struct
	replaced by global operators taking _Rb_tree_iterator as parameters and checking
	that the iterators are of the same container type thanks Haroon Nassiry report.
	
	* stlport/stl/_map.h, _set.h: Modification of the iterator traits used to 
	instanciate the _Rb_tree class.
	
	* stlport/stl/_hashtable.h, _hashtable.c, _hash_set.h, _hash_map.h: Similar
	modifications to the previous one in order to make for instance the iterator
	from hash_map and hash_multimap not comparable anymore.
	
	* stlport/config/stl_wince.h, stlport/ctype.h: Move of the isspace C function
	Windows CE specific code from the config file to the ctype.h file. This fix
	will also apply to Embedded C++ .Net thanks Dirk report.

2004-08-23  Petr Ovtchenkov  <ptr@Island...>

	* test/unit/cppunit/cppunit_proxy.h, test/init/gcc.mak: CPPUNIT_MINI removed.

	* src/num_get_float.cpp: suggestion to fix problem with float input for gcc 3.4.x
	with optimization flag.

	* test/unit/floatio_test.cpp: test for infinity and near

	* src/explore/Makefiles/gmake/gcc.mak, app/gcc.mak, lib/gcc.mak: fix detection of
	gcc version; gcc before 3.x had libgcc.a that contains some language support,
	so link with it in case when we avoid link with libstd++. This has relation only
	for linux systems.

2004-08-19  Petr Ovtchenkov  <ptr@Island...>

	* src/explore/configure.bat: setting up compiling STLport under Windows.
	Contribution by Michael Fink.

2004-08-13  Francois Dumont  <dums@...>

	* test/unit/gcc.mak: Addition of the _STLP_NO_CUSTOM_IO define to make test
	build faster.

	* stlport/stl/_limits.h, _limits.c: Modification of the _LimG class definition.
	Removal of the static variables, replaced by static method having the same role
	but more portable. Fix link problem with MSVC compilers family when using STLport
	static library.

	* stlport/stl/_bitset.h, _bitset.c: Ditto for the _Bs_G class.

	* stlport/stl/_hashtable.h, _hashtable.c: Ditto for the _Stl_prime class.

	* src/dll_main.cpp: thanks to the previous modification, removal of the 
	concerned code within force_link.

2004-08-13  Petr Ovtchenkov  <ptr@Island...>

	* test/unit/cppunit/cppunit_mini.h, file_reporter.h, test_main.cpp:
	add function to print mess; remove def of CPPUNIT_MINI, not required; add const
	qualifiers.

	* test/unit/locale_test.cpp: print checked locale name; restore table with format
	symbols--partially rollback changes 2004-07-29; add test for possible locale
	init/deinit problem---I don't see problem. Test inspired by Alex Kosilin.

2004-08-11  Francois Dumont  <dums@...>

	* src/explore/Makefiles/nmake: extension of the new build system for VC.Net
	2005 (VC8).

	* src/explore/Makefiles/nmake/app: restauration of the default behavior shared
	rules generates executable using the STLport dynamic library and static rules
	use the static libraries.

	* stlport/stl/_string.h: Add check of _STLP_NO_IOSTREAMS to force inclusion of
	_string.c in this case.
	
	* stlport/stl/_string.c: removal of the _STLP_LINK_TIME_INSTANTIATION macro check 
	before inclusion as the check is already done to include _string.c from _string.h.

	* stlport/stl/_istream.h _istream.c: removal of the _M_put_num function definition
	from the .h and removal of all the inline implementation of the >> operators.
	_M_put_num is now hidden in the .c to avoid to have to deal with export of this
	symbol. Fix errors while using the _STLP_NO_CUSTOM_IO macro.
	
	* stlport/stl/_ostream.h _ostream.c, src/ostream.cpp: ditto but for the _M_get_num
	function.
	
	* stlport/stl/_istream.h _istream.c: _M_init_skip and _M_init_noskip are now inline
	functions defined within the .h to fix link errors when using the _STLP_NO_CUSTOM_IO
	macro.

2004-08-10  Francois Dumont  <dums@...>

	* stlport/stl/_string.h: add check of the _STLP_EXPOSE_STREAM_IMPLEMENTATION
	macro to include the _string.c file. Improve compile time when _STLP_NO_CUSTOM_IO
	is defined.

	* stlport/stl/_string.h, stlport/stl/debug/_string.h, _string_mem_t.h: restoration
	of the template method specialization for backward compatibility between compilers
	implementating template method and the most recent one. It is considered as an 
	STLport extension.

2004-08-09  Petr Ovtchenkov  <ptr@Island...>

	* test/compiler: tests to check whether compiler understand or not some
	language construction. It is NOT tests for language support libraries,
	only tests for compiler. The main purposes of this tests is to help
	for developers to find correct workarounds, if compiler don't understand
	some language constructions.

2004-08-09  Francois Dumont <dums@...>

	* stlport/stl/_limits.h, stlport/config/stl_mycomp.h: introduction of a new macro
	configuration to signal no support of the IEC 559 specification for floating point
	numbers.
	
	* stlport/config/stl_msvc.h: fix of the config to signal no IEC 559 support before
	Visual C++ .Net even if the infinity value is fine.
	
	* test/unit/limits_test.cpp: New test case to check the right numeric_limits class
	configuration. Do not check the signaling_NaN yet...
	
	* stlport/config/stl_msvc.h: Visual .Net Beta 2005 portage.
	
	* stlport/stl/_ios.h: Move of the basic_ios::narrow and widen member method 
	specialization before the explicit instanciation of the basic_ios class for
	the char type.
	
	* stlport/stl/_construct.h, _num_put.c: fix of some unused parameter warning
	thanks Oliver Stoeneberg report.

2004-08-05  Francois Dumont <dums@...>

	* Fixes of the internal move framework for compilers not supporting partial
	template specialization. The problem was detected thanks to the boost regression
	test suite.

2004-08-04  Francois Dumont <dums@...>

	* stlport/stl/debug/_list.h, _slist.h: small review of the stlport debug code.
	Removal of any Standard reference in the slist class debug implementation. Removal
	of some unjustified iterator invalidation.

	* stlport/stl/_locale.h, _collate.h, src/locale.cpp, locale_catalog.cpp, locale_impl.cpp:
	Split of the locale class implementation into _LocaleBase base class with no member
	template methods which is exported and the locale class which is not exported. This
	is a workaround for the MSVC6 compiler.

2004-08-03  Francois Dumont <dums@...>

	* stlport/stl/_iterator.h: Fix of the back_insert_iterator, front_insert_iterator
	and insert_iterator to make them assignable like specify in the Standard requirements
	of the output iterators.

	* test/unit/insert_test.cpp, finsert_test.cpp, binsert_test.cpp: Addition of tests for
	the assignment operators on the output iterators.

2004-08-02  Francois Dumont <dums@...>

	* stlport/stl/_string.h, _string.c, debug/_string.h: split of the basic_string
	implementation into a class with no member templates and one with the member 
	templates. Only the one with no member templates is exported. This is a MSVC6
	bug workaround as this compiler try to look for the class method symbols within
	the dynamic library even if this symbol is the one of template method which is 
	not exported. That also make the basic_string implementation more clean so it
	has been adopted for all compilers.

2004-07-29  Francois Dumont <dums@...>

	* test/unit/locale_test.cpp: Fix bad macro _STLP_NO_EXCEPTIONS spelling 
	and add of a check for real locale implementation. Patch done by
	Michael Fink.

	* stlport/stl/debug/_debug.h, _debug.c, _iterator.h: Modification of the
	__check_same_owner_or_null function name to the more intuitive 
	__check_same_or_null_owner thanks a Aleksey Sanin remark.

2004-07-26  Petr Ovtchenkov <ptr@Island...>

	* src/explore/Makefiles/gmake/lib/gcc.mak: avoid linkage with libstd++
	for gcc compilers.

	* src/explore/Makefiles/gmake/linux/rules-so.mak: ditto

	* src/explore/Makefiles/gmake/lib/rules-a.mak: ditto

	* src/explore/Makefiles/gmake/app/top.mak: ditto

2004-07-21  Francois Dumont <dums@...>

	* stlport/config/stl_gcc.h: Fix of a gcc 3.3.0 test that did not handle
	the gcc 2.95.x correctly thanks Jordan Breeding.

	* src/common_rules.mak: Addition of the stlport/stl/pointers folder within
	the folder to be install. Add of a call to ranlib under linux mandatory under
	Mac OS X and without impact under the other Unixes systems.

2004-07-17  Francois Dumont <dums@...>

	* Application of a Mac OSX patch from John Daniel (www.etresoft.com)

2004-07-15  Francois Dumont <dums@...>

	* stlport/stl/_epilog.h: systematical use of the redefined std namespace
	rather than using the namespace inclusion schema.

	* test/unit/set_test.cpp: addition of a test case to show the problem of
	the namespace injection schema.

2004-07-13  Francois Dumont <dums@...>

	* stlport/numeric: removal of the _function.h header include.

	* test/unit/divide_test.cpp: add the missing functionnal header
	inclusion.

	* doc/README.msvc: new doc specific to the MSVC++ family compiler.

2004-07-12  Petr Ovtchenkov  <ptr@Island...>

	* test/unit/fstream_test.cpp: tests for unformatted extraction bug.

	* stlport/stl/_istream.c: _M_read_unbuffered should leave delimiter
	in the stream in case of unformatted input. Thanks Joerg Becker.

2004-07-09  Francois Dumont  <dums@...>

	* src/sgi_mipspro.mak: add the -LANG:libc_in_namespace_std:OFF
	thanks Jack Perdue.

2004-07-08  Francois Dumont  <dums@...>

	* doc/README.evc3: additionnal doc thanks Michael Fink

2004-07-08  Petr Ovtchenkov  <ptr@Island...>

	* test/unit/sstream_test.cpp: added two test for unformatted extraction
	and newline character. Inspired by Joerg Becker.

2004-07-07  Francois Dumont  <dums@...>

	* stlport/stl/_hashtable.h, stlport/stl/_hashtable.c, 
	stlport/stl/_hash_set.h, stlport/stl/_hash_map.h: generalization
	of the iterator traits adopted on the tree class. Now iterator and
	const_iterator on hash_set and hash_multiset are different types
	even if iterator is still immutable.

	* stlport/stl/_deque.h, stlport/stl/_list.h, stlport/stl/_slist.h:
	Modification of the iterator classes to only use the template
	parameter _Traits rather than using an external type traits. It is
	the way hash containers and sorted containers have their iterator
	struct working.

	* stlport/stl/_iterator_base.h: Addition of the immutable traits 
	struct _Const_Const_traits and _Nonconst_Const_traits for 
	implementation of the set, multiset, hash_set, hash_multiset 
	iterators.

	* stlport/stl/c_locale.h, stlport/stl/debug/_debug.h: removal of 
	unjustified _config.h inclusions

	* stlport/stl/_iterator_base.h: inclusion of type_traits.h only
	for compilers that need it.

	* stlport/stl/_algobase.h, stlport/stl/debug/_debug.h: add inclusion 
	of type_traits.h.

	* stlport/stl/_algo.h, stlport/stl/_algo.c: move of the _tempbuf.h
	inclusion from the .h to the .c that is the only one that need it.

	* stlport/stl/_config.h: addition of the boost support section.

2004-07-07  Petr Ovtchenkov  <ptr@Island...>

	* stlport/stl/_monetary.c: iterator __str_first out of range,
	i.e. outside __str_last in 'mismatch' call in __get_string, if 
	size of interval [__first, __last) is larger than size of interval
	[__str_first, __str_last).

	* test/unit/fstream_test.cpp: test for correct report by tellg added.

2004-07-05  Francois Dumont  <dums@...>

	* stlport/stl/_map.h: internal type _Rep_type set as public for use
	in the __move_traits specialization thanks Oliver Stoeneberg.

	* stlport/stl/_set.h: specialization of the __move_traits to make the
	set and multiset movable thanks Oliver Stoeneberg.

	* stlport/stl/_function_base.h, stlport/stl/_heaps.h: removal of the 
	unjustified _config.h inclusion that should only be included from the
	_prolog.h header.

2004-07-05  Petr Ovtchenkov  <ptr@Island...>

	* src/facets_byname.cpp: avoid pass address to member of derived class into
	base class via constructor.

	* src/facets_byname.cpp: remove first member---EOF---of _M_byname_table---one
	not required and lead to wrong reference; this a fix for test in
	locale_test.cpp.

	* src/ctype.cpp: ditto.

	* src/c_locale_win32/c_locale_win32.c: ditto.

	* stlport/stl/_ctype.h: ditto.

2004-07-02  Petr Ovtchenkov  <ptr@Island...>

	* src/c_locale_glibc/c_locale_glibc2.c: message catalog functions dealing
	with message catalog descriptor; but this descriptor not necessary to be
	int; Linux use here void *, i.e. pointer to mmap segment.

	* stlport/stl/_messages_facets.h: ditto.

	* src/messages.cpp: ditto.

	* src/message_facets.h: ditto.

	* src/facets_byname.cpp: ditto.

	* src/c_locale_stub.cpp: ditto.

	* src/c_locale.h: ditto.

	* src/c_locale_glibc/c_locale_glibc2.c: fix _Locale_extract_*_name
	functions.

2004-07-01  Francois Dumont  <dums@...>

	* src/explore/Makefiles/nmake/lib/vc-common.mak: creation of the
	STLP_BUILD_FORCE_DYNAMIC_RUNTIME option to create STLport statix
	versions more easily.

2004-06-30  Francois Dumont  <dums@...>

	* stlport/stl/_function.h: Use a call_traits to avoid the reference
	to reference problem in struct like binder1st or binder2nd.

2004-06-26  Francois Dumont  <dums@...>

	* src/explore/: portage of the explore build system for the 
	MSVC .Net 2003 compiler.

2004-06-24  Francois Dumont  <dums@...>

	* stlport/stl/_site_config.h: Addition of an entry for the per thread
	allocator configuration.

	* stlport/stl/_config.h: Avoid use of the import/export technique
	when not using own iostreams. This way you can use the STLport debug
	mode without building the libraries.

2004-06-23  Francois Dumont  <dums@...>

	* extension of the cygwin link problem workaround for mingw32.

	* src/locale_catalog.cpp: Move of the _STLP_lock object instance 
	declaration to limit the critical section and improve performace.

	* stlport/stl/_pthread_alloc.h: fix of the pthread_allocator and
	per_thread_allocator allocate method to check for the required 
	number of element before multiplication with the size of the objects
	to instanciate.

2004-06-22  Francois Dumont  <dums@...>

	* src/locale_catalog.cpp: fix of the locale facets registration system.
	The hash container use string as key rather than char const* so that
	a copy of the facet name is stored rather than a copy of the string
	pointer that might be freed. We also extract the complete facet name
	before storing it to avoid store of facet aliases that cannot be retrieved
	at release.

2004-06-21  Francois Dumont  <dums@s...>

	* Restauration of the cygwin support (using gcc 3.3.1). Extension of the
	explore build system, workaround of a link problem when using shared
	libraries.

2004-06-13  Petr Ovtchenkov  <ptr@Island...>

	* src/c_locale_glibc/c_locale_glibc2.c:	locale_data for glibc 2.3 is differ
	from one for glibc 2.2.

2004-06-11  Francois Dumont  <dums@...>

	* test/unit: Modification of some tests to make the assertion
	clearer. Mainly add of check of the streams state before check
	of the stream content.

	* test/unit/locale_test.cpp: fix of the thousands separator which is
	0xa0 under Win32 and not a simple ' ' for the french locale.

2004-06-07  Francois Dumont  <dums@...>

	* stlport/stl/_algo.c: rollback of the sort algo implementation
	to the 4.5.3 version.

2004-06-03  Francois Dumont  <dums@...>

	* stlport/stl/pointers/README, doc/pointer_specialization.txt: move and
	rename of the doc about pointer partial template specialization feature.

	* doc/README.ecv4: Creation of a documentation about the install and use
	of STLport within Embedded Visual C++ 4 thanks Zdenek Nemec.

	* doc/README.ecv3: Creation of a documentation about the process installment
	with the Embedded Visual C++ 3 thanks Michael Fink.

	* stlport/stl/_slist.h: fix of an invalid reference to a _M_node member data
	on a _Slist_node_base struct (thanks gcc 3.4.0).

	* stlport/stl/_string.c, stlport/stl/_string.h: fix of missing scopes to 
	access the base template class _String_base _DEFAULT_SIZE enum member.
	(thanks gcc 3.4.0)

	* stlport/stl/_string_base.h: fix of the anonymous union used as a parameter
	of the template function swap. (thanks gcc 3.4.0)

	* stlport/stl/_ostream.h: fixes of the missing scopes to access the basefield enum
	within the base template class basic_ios from the basic_ostream. (thanks gcc 3.4.0)

	* stlport/stl/_debug.c: clean up of a no more use template function. 
	(thanks gcc 3.4.0)

	* stlport/stl/_rope.h: fix of the missing scope to access base template class 
	data member. (thanks gcc 3.4.0)

2004-06-02  Petr Ovtchenkov  <ptr@island...>

	* src/num_put_float.cpp: some fixes for systems that use snprintf for
	output, i.e. for FreeBSD and OpenBSD

	* test/unit/floatio_test.cpp: less precise request, this should work
	with static buffer for systems that use snprintf

	* stlport/stl/_config.h: detect MT for OpenBSD

	* stlport/stl/_threads.h: use original spinlock for OpenBSD

2004-05-28  Francois Dumont  <dums@...>

	* stlport/config/stl_gcc.h: fix for the gcc3.4.0 compiler. Modification
	of the include path macro to generate 3.4.0 rather than 3.4 . Need
	template keyword to reveal use of a nested template class.

	* stlport/stl/_config.h: creation of the _STLP_LONG_DOUBLE macro that 
	extend to long double on compiler supporting it and double on the other
	as a workaround.

	* stlport/stl/_num_put.h, stlport/stl/_num_put.c, src/num_put_float.cpp:
	Addition of functions to get the digits from a long double for the monetary
	facet.

	* stlport/stl/_monetary.h, stlport/stl/_monetary.c, src/monetary.cpp:
	Implementation of the missing money_put::put method taking a long double.
	Fixing of the grouping application.

	* test/unit/Makefile.inc, test/unit/locale_test.cpp: Creation of a unit test
	for the locale support. At creation it tests the num_put, num_get, money_put,
	money_get facets.

	* src/facets_byname.cpp: fix of the monetary format determination from
	the locale platform API informations.

2004-05-28  Petr Ovtchenkov  <ptr@Island...>

	* src/explore/Makefiles/gmake/sysid.mak: correctly detect Mingw

	* src/explore/Makefiles/gmake/mingw: compilation under Mingw

2004-05-27  Petr Ovtchenkov  <ptr@Island...>

	* Makefiles/gmake/linux/extern.mak: fix lib catalog name in case of cross-compilation

	* Makefiles/gmake/freebsd/extern.mak: ditto

	* Makefiles/gmake/openbsd/extern.mak: ditto

2004-05-26  Petr Ovtchenkov  <ptr@Island...>

	* Repository: STLport 5.0 RC1

2004-05-24  Francois Dumont  <dums@...>

	* stlport/stl/_iostream_string.h:
	Fix of the iostring_allocator rebind embedded struct and implementation
	of the missing __stl_alloc_rebind and __stl_alloc_create useful for compiler
	not supporting or buggy on the member template feature (VC6 for instance).

2004-05-22  Francois Dumont  <dums@...>

	* src/num_put_float.cpp, stlport/stl/_num_put.h, stlport/stl/_num_put.c:
	Correction of the locale grouping schema application in case of the scientific
	output when there is no decimal point.

2004-05-19  Petr Ovtchenkov  <ptr@Island...>

	* stlport/stl/_tree.h, stlport/stl/debug/_tree.h: fix template parameters, see rec
	2004-05-14 below.

2004-05-16  Petr Ovtchenkov  <ptr@Island...>

	* Repository: STLport 5.0 branch

2004-05-14  Francois Dumont  <dums@...>

	* stlport/stl/_tree.h, stlport/stl/_tree.c, stlport/stl/_set.h, stlport/stl/_map.h:
	Modification of the _Rb_tree implementation to restore the non mutability of the set
	iterators but to keep distinct type between it and the const_iterator.

2004-05-13  Francois Dumont  <dums@...>

	* stlport/config/stl_evc.h, test/unit/nmake-evc3.mak: Portage to the WinCE 3 platform.
	Thanks Michael Fink.

2004-05-13  Francois Dumont  <dums@s...>

	* stlport/stl/_set.h: Addition of the const/non-const methods for many methods now that
	iterator are not const_iterator anymore. Correction of the multiset interface to be
	homogeneous with the set interface.

2004-05-09  Francois Dumont  <dums@...>

	* stlport/stl/char_traits.h: Addition of the specific wchar_t static methods similar
	to the one of the char specialization calling the wide functions.

2004-05-08  Petr Ovtchenkov  <ptr@Island...>

	* stlport/stl/_set.h: fix definition of const/non-const for find and *_bound
	methods. Thanks KL for report.

2004-05-07  Petr Ovtchenkov  <ptr@Island...>

	* stlport/stl/_set.h: fix definition of const/non-const iterators.
	Thanks Ilya Chvetsov for report.

	* test/unit/set_test.cpp: test that detect bug above.

2004-04-27  Francois Dumont  <dums@s...>

	* stlport/stl/_complex.h: removal of a macro guard on the template != operator.

	* test/unit/complex_test.cpp: creation of a test case for the complex class.

2004-04-26  Francois Dumont  <dums@s...>

	* stlport/stl/_fstream.h, src/fstream.cpp: extension of the fstream interface to accept Win32
	HANDLE on construction and in the open method.

2004-04-26  Petr Ovtchenkov  <ptr@Island...>

	* stlport/stl/_istream.h: don't change value while input error happens.
	Thanks Nix.

	* test/unit/sstream_test.cpp, test/unit/fstream_test.cpp: added test for error
	flags and unchanged value when input error occur.

2004-04-23  Petr Ovtchenkov  <ptr@Island...>

	* stlport/stl/_rope.h: allow search of rope, like done in string

2004-04-21  Francois Dumont <dums@...>

	* stlport/stl/pointers/README: Creation of a documentation on the new
	pointer partial specialization feature.

2004-04-20  Francois Dumont <dums@s...>

	* stlport/stl/_pair.h: modification of the make_pair signature. After the latest
	Standard revision it takes params per value and not reference to const.

2004-04-20  Petr Ovtchenkov  <ptr@Island...>

	* stlport/stl/pointers/_list.h: 'clear' method was forgot.

	* test/unit/list_test.cpp: check presence of 'clear'

2004-04-15  Petr Ovtchenkov  <ptr@Island...>

	* test/unit/partial_test.cpp: wrong comparison during test

	* test/unit/sort_test.cpp: ditto

	* test/unit/rm_cp_test.cpp: #ifndef not required---should work

	* test/unit/unique_test.cpp: ditto

2004-04-14  Petr Ovtchenkov  <ptr@Island...>

	* stlport/typeinfo, stlport/config/stl_wince_4.h, stlport/stl/debug/_debug.c: adaptation for Win CE .NET;
	Thanks Zdenek Nemec.

	* stlport/stl/_algobase.h: calculate difference once

	* stlport/stl/pointers/_vector.h: missed returns. Thanks KL.

	* stlport/stl/pointers/_list.h: idem.

	* stlport/stl/pointers/_deque.h: idem.

	* stlport/stl/pointers/_slist.h: idem.

	* stlport/stl/_vector.c, stlport/stl/_vector.h: big enough functions moved to non-inline section

	* stlport/stl/_iterator.h: use reference instead of pointer for stored container

2004-04-06  Petr Ovtchenkov  <ptr@Island...>

	* stlport/stl/_prolog.h: when we in _STLP_REDEFINE_STD mode, we really
	need to #undef std, see mistake 2004-02-19 below.

	* stlport/config/stl_msvc.h: partially undo workaround 2004-03-30,
	not required; problem was solved by #undef std in _prolog.h

	* stlport/stl/_abbrevs.h: add new abbrevs---VC6 has problems in debug mode

2004-04-03  Petr Ovtchenkov  <ptr@Island...>

	* stlport/stl_user_config.h: expose _STLP_DONT_FORCE_MSVC_LIB_NAME for
	configuration.
	
	* stlport/config/stl_msvc.h: incorporate content of stl_select_lib.h and
	vc_select_lib.h; a bit cleaned.

	* stlport/config/stl_select_lib.h: removed.

	* stlport/config/vc_select_lib.h: removed.

2004-04-02  Petr Ovtchenkov  <ptr@Island...>

	* src/time_facets.cpp: add #include <cstdio> for sprintf; remove
	c_copy_string function.

	* stlport/stl/_time_facets.h: fix for _STLP_LEAKS_PEDANTIC.

2004-04-01  Petr Ovtchenkov  <ptr@Island...>

	* stlport/stl/_string.h: reorder of in-class template and
	quazi-specialization function make VC happy, ref. 2004-03-29

	* stlport/stl/debug/_string.h: fix insert and replace for
	iterators that refer to same string in _STLP_DEBUG mode.

2004-03-31  Petr Ovtchenkov  <ptr@Island...>

	* src/explore/nmake-evc4-arm.mak, src/explore/nmake-evc4-x86.mak, etc.:
	rules for eVC4 compilers---ARM and ix86 target architectures.
	Contribution by Zdenek Nemec.

2004-03-30  Petr Ovtchenkov  <ptr@Island...>

	* stlport/stl/_algo.c: workaround for VC compilers---ones pass reference
	to parent object directly, pay no regard for temporary object

	* stlport/new, stlport/stl/_new.h, stlport/typeinfo, stlport/config/stl_msvc.h:
	workaround for VC6's problem with 'using' directive, while import native
	bad_alloc and some other classes into STLport's namespace

	* stlport/stl/_streambuf.h: export template class, to make VCs to be happy.

	* stlport/stl/_valarray.h: use <new>, not <stl/_new.h>

	* src/explore/Makefiles/nmake/lib/macro.mak, test/unit/nmake-vc6.mak:
	fix static library names

2004-03-29  Petr Ovtchenkov  <ptr@Island...>

	* stlport/stl/_set.h: fix problems with erase functions.

	* stlport/stl/_string.h: VC compiler expect only one variant---template
	or not---of replace function with four iterators in parameters.

	* test/unit/nmake-src-prefix.mak: really know what do with sources
	in cppunit.

2004-03-25  Petr Ovtchenkov  <ptr@Island...>

	* stlport/stl/_string_base.h: enlarge default string static buffer size

	* stlport/stl/debug/_string.h: avoid attempt to invalidate iterators beyond
	string size range.

	* stlport/config/stl_gcc.h: instantiation scheme that idefault used---witout
	--repo option---in gcc 3 made void of sense explicit instantiation within
	library---nothing except increased library size.
	Define _STLP_NO_FORCE_INSTANTIATE is default now for gcc 3.x.

	* stlport/stl/_streambuf.h: remove specialization of
	basic_streambuf<char, char_traits<char> >---reference to FILE struct here
	isn't required and really not used anyware. Functionality of standard io
	streams, including synchronization with C std io streams provided in
	src/stdio_streambuf.cpp

	* stlport/stl/_iosfwd.h: same.

	* src/fstream_impl.h, src/iostream.cpp, src/stdio_streambuf.cpp: same.
	
	* src/streambuf.cpp: removed.

	* stlport/stl/_stdio_file.h: moved...
	* src/_stdio_file.h: ...here

	* stlport/stdio_streambuf: moved...
	* src/_stdio_file.h: ...here

	* src/explore/Makefile.inc: remove streambuf.cpp

2004-03-24  Petr Ovtchenkov  <ptr@Island...>

	* c_locale_glibc2.c: real locale implementation for glibc 2.3.x.

2004-03-15  Petr Ovtchenkov  <ptr@Island...>

	* test/unit: unit test suite intended for test/regression replacement.
	Zdenek Nemec contribution.

2004-03-01 Francois Dumont <dums@s...>

	* _hash_fun.h: Correction of the hash struct specialization for the _STLP_LONG_LONG
	type. Thanks Vianney Lecroard

	* type_traits.h: Integration of the boost (www.boost.org) type traits within STLport.

2004-02-21 Francois Dumont <dums@s...>

	* _tree.h: Modification of the base class implementtion to avoid the systematical
	dynamic allocation of a node as the root note of the RB tree.

	* Addition of many missing macro guards in the stlport public headers to avoid to break
	the stlport prolog/epilog include framework.

2004-02-19  Petr Ovtchenkov  <ptr@Island...>

	* _slist.h, debug/_slist.h,, dll_main.cpp: remove excess slist redefinitions

	* debug/_slist.h: comment explicit usage of namespace with functions---under
	some conditions this hangs gcc compilers.

	* _config.h, _cwchar.h, _epilog.h, _iterator_base.h, debug/_debug.c: multiple import
	of _STL namespace into std, as multiple import VENDOR_CSTD namespace into _STL
	namespace lead to crash of gcc compilers. Import of _STL namespace into std
	namespace done once in the _config.h, not in _epilog.h.

	* _prolog.h: undef std not required in all cases; instead this is useful only
	for redefinition of std namespace, and should be done in the _config.h.

	* _epilog.h: include of _config.h has no sense here.

	* _threads.h: wrong import of _STL namespace into global namespace

2004-02-18  Francois Dumont <dums@s...>

	* _list.h: Modification of the base list class based on the slist implementation.
	The list do not allocate a node systematically anymore even for the empty list.

2004-02-14  Petr Ovtchenkov  <ptr@Island...>

	* debug/_relops_cont.h, debug/_string.h: fix typos in template specializations.

2004-02-12  Petr Ovtchenkov  <ptr@Island...>

	* explore/icc.mak: experimental make system support Intel's icc compiler
	on Linux.

2004-02-05  Petr Ovtchenkov  <ptr@Island...>

	* iostream.cpp, _ios_base.h, iostream, locale_impl.h, locale_impl.cpp:
	revise standard iostream and locale initialization, remove worrits about
	order of static objects initialization as soon as possible; all real
	initialization situated in the locale_impl.cpp; locale initialization
	moved to _Locale_impl constructor---locale will be correctly initialized
	either via direct locale usage, or during standard iostream initialization,
	as ios_base member. This changes may lead to problems with Digital Mars
	and Borland compilers---should be checked and fixed.

2004-02-03  Francois Dumont <dums@s...>
	
	* integration of a portage to the Windows CE .NET (eMebedded Visual
	C++ 4) compiler thanks Zdenek Nemek

2004-02-02  Petr Ovtchenkov  <ptr@Island...>

	* _iostream_string.h: avoid usage of iostring in the _STLP_DEBUG mode,
	due to iostring::iterator not convertable into string::iterator in this
	mode.

2004-01-29  Petr Ovtchenkov  <ptr@Island...>

	* _string.c: avoid 'insert( iterator, const_iterator, const_iterator )'
	instantiation in the 'replace'---VC6 has problem here.

2004-01-29  Francois Dumont <dums@s...>
	
	* facets_byname.cpp: correction of the typeid use thanks to Ulrich Eckhardt.

	* _iostream_string.h: creation and integration of a special string used within
	the iostream implementation to display floating point numbers. It mixes a static
	buffer with a dynamic one to improve performance.

2004-01-22  Francois Dumont <dums@s...>

	* _new.h: check of the _STLP_USE_EXCEPTIONS before correction of the new
	operator behavior and bad_alloc exception definition.

	* _ios_base.h: removal of the _M_get_facet function not fully implemented
	and unused thanks Ulrich Eckhardt.

	* _algo.h: correction of the __less_2 helper struct to remove
	copy thanks Sergey Volk

2004-01-19  Petr Ovtchenkov  <ptr@Island...>

	* _debug.c: avoid recursive locks in __owner_list's mutex---equivalent
	code use underlie iterators, not debug wrapper iterators. By the way this
	approach faster---no excessive checks; solved by Boris Fomitchev.

	* _thread.h, _debug.h: recursive-safe mutex structure removed---not
	required more; see reason just above.

2004-01-09  Francois Dumont <dums@s...>

	* type_manip.h: Correction of the _IsSame struct to have both partial template
	specialization version and the other behaving similarly.

2004-01-07  Francois Dumont <dums@s...>

	* _deque.c: Mysterious copies of instance to store in the containers
	has been removed.

2004-01-05  Francois Dumont <dums@s...>

	* _list.h, _slist.h: Implementation of the pointer specialization for list
	and slist.

2003-12-31  Petr Ovtchenkov  <ptr@Island...>

	* _vector.h, _vector.c, _hashtable.h: remove excess vector redefinitions

	* debug/_vector.h: pointer specialization for vector not derived
	from _Vector_base, so we should avoid references on _Vector_base
	class members in debug wrapper.

2003-12-22  Francois Dumont  <dums@s...>

	* _string.h: use _STLP_FORCE_STRING_TERMINATION flag to enforce
	null-termination of data associated with string.

2003-12-20  Francois Dumont  <dums@s...>

	* _vector.h: Implementation of the pointer specialization for vector to 
	avoid code bloat.

2003-11-29  Francois Dumont  <dums@s...>

	* _string.h: Implementation of the short string optimization.
	basic_string have now a short static buffer to avoid call
	to the allocator when the string is short.

2003-11-29  Petr Ovtchenkov  <ptr@Island...>

	* cwchar, _config.h, _cwchar.h, _stdio_file.h, c_locale.h:
	support for OpenBSD, gcc 3.3.1
	
	* src/explore/Makefiles/gmake/...: support for OpenBSD, gcc 3.3.1

2003-11-17  Francois Dumont  <dums@s...>

	* _alloc.h: Move of the definition of _Alloc_Traits before inclusion
	of _pthread_alloc.h; thanks Diego Klabjan

2003-11-16  Petr Ovtchenkov  <ptr@Island...>

	* _algobase.h, _algo.c: iter_swap and __insertion_sort don't
	properly deduce value type of iterator, instead uses dereference's
	return type; this occur	when dereference return some proxy object,
	convertible into value type.
	Thanks Przemek Kuczmierczyk <przemekk834@tlen.pl> for report, test
	and solution.

	* iterswp0.cpp, iterswp1.cpp, iterswp.cpp, stl_test.cpp,
	stl_test.h, Makefile.inc (test/regression): move iterswp0_test,
	iterswp1_test into iterswp.cpp, add new tests for properly deduce
	value type of iterator, when dereference return some proxy object.

2003-11-15  Francois Dumont  <dums@s...>

	* _string.h: implementation of the expression template for string
	addition with other string or C string or char.

	* _ostream.h: adoption of the classic (even if not clear in
	the standard) ouput for short and int negative values in hexa
	or octo bases that is display according its size for the compiler.
	thanks Tanaka.

2003-11-14  Petr Ovtchenkov  <ptr@Island...>

	* src/c_locale.c, src/c_locale_glibc/c_locale_glibc2.c:	step to
	real locales support with glibc >= 2.2.x

	* src/c_locale_glibc/c_locale_glibc.c: bit fixes for locales
	support with glibc < 1.90, and, possible, 1.90 <= glibc < 2.1;
	we can't support this old code, so file
	src/c_locale_glibc/c_locale_glibc.c is obsolete, and will be
	removed.

	* src/explore, test/regression/explore: exprimental make system.

2003-11-13  Petr Ovtchenkov  <ptr@island...>

	* STLport (repository): current development moved to CVS HEAD stream.

	* STLport (repository): current development stream marked as STLport 5.0.

2003-11-02  Francois Dumont  <dums@s...>

	* _limits.c: Correction of the quiet and signaling NaN that was inverted
	for several platform; thanks Alexey Sarytchev.

2003-11-01  Francois Dumont  <dums@s...>

	* _string.c: judicious correction for string::find_first_not_of to
	improve performance; thanks Stephen Cleary.

	* _bitset.h: integration of a workaround for up to MSVC6 compilers
	for the bitset input and output operators; thanks Jesse Booher.

	* _ostream.h, _istream.h: fix of a non-standard behavior of the seekp
	and seekg calls and conformance to the latest 2003 standard; thanks Tanaka.

2003-10-26  Francois Dumont  <dums@s...>

	* _monetary.c: fix an other memory overrun on monetary display;
	thanks Tanaka.

2003-10-26  Petr Ovtchenkov  <ptr@island...>

	* ioiter.cpp, gcc.mak, stl_test.h, stl_test.cpp, stl_test.exp
	(test/regression): tests for postfix increment operator and
	indirection of istreambuf_iterator.

2003-10-25  Petr Ovtchenkov  <ptr@island...>

	* _istreambuf_iterator.h: fix postfix increment operator
	of istreambuf_iterator to provide conformance with
	ISO/IEC 14882:1998(E), 24.1.1, p.511, i.e.
	*r++ equivalent to { T tmp = *r; ++r; return tmp; }.
	Thanks Tanaka for the report.

2003-10-23  Francois Dumont  <dums@s...>
	
	* debug/: modification of the invalidation of iterators to avoid
	invalidation of the end iterator for the associative containers,
	hashed containers and list on calls to clear/assign/assignment
	operator. (thanks  Alexey  Sarytchev)

	* _rope.h: Correction of the rope::iterator and rope::const_iterator
	copy constructor and assignment operator (thanks Bradley Grainger)

2003-10-16  Francois Dumont  <dums@s...>

	* _alloc.h: Add of the throw() specification on allocator comparision.

	* _iterator.h: Correction of the operator++(int) signature to conform
	to the standard.

	* _ctype.h: tolower and toupper for wchar_t types.

	* _valarray.h: gslice_array::operator = (const value_type&) not
	const anymore

	* _valarray.h: slice_array idem

	* _valarray.h: valarray<T> operator [](const gslice&) former version
	was taking a copy of gslice

	* _codecvt.h: correction of the default codecvt class definition and
	correction of the out method 

	(all thanks Richard Peng)

2003-10-16  Francois Dumont  <dums@s...>

	* debug/: add of the iterator range check on all container constructors.

	* _string.h: correction of a bug on string auto referencing throught
	some method like insert and replace. (thanks Tanaka)

	* _valarray.h: correction of the missing slice_array copy constructor
	and assignment operator in the private section (thanks Tanaka)

2003-10-11  Petr Ovtchenkov  <ptr@island...>

	* _sstream.c: [io]?stringstream must do equivalent of seek at end,
	after opened with ios_base::ate; this behaviour useful only when buffer
	initialized by string; thanks Tanaka for the report.
	
2003-10-06  Francois Dumont  <dums@s...>

	* _istreambuf_iterator.h, _ostreambuf_iterator.h: correction
	of the missing iterator base class (Thanks Tanaka)

2003-10-05  Francois Dumont  <dums@s...>

	* _string.h: correction of the replace implementation badling form
	for self referencing

	* _string.h, _string.c: Modification of the _M_copy method
	to _M_move as basic_string do not correctly handled self referecing;
	thanks Tanaka

2003-09-25  Francois Dumont  <dums@s...>

	* como 4.3.0 on linux support (thanks Synge Todo and Karel Gardas)

	* Quazy-leak patch: make memory detection tools happier,
	option _STLP_LEAKS_PEDANTIC in _site_config.h. (thanks Petr Ovtchenkov)

2003-09-19  Francois Dumont  <dums@s...>

	* Support of the Linux Intel C++ support (thanks Blaine Kubesh)

	* FreeBSD support update (thanks Guy Middleton).

  ----

  * codecvt.cpp: charcode correction in the do_in method (thanks J Hamilton report)

  ----

  * _valarray.h: Correction of the missing explicit keyword in front of one of the valarray constructors
                 (thanks Stephen Clamage)

  ----
2003-08-10  Francois Dumont  <dums@s...>

	* stdexcept: Correction of the mysterious 50 messages from VC7.Net (thanks Krish S)

  ----

  * _vector.h: implementation of the max_size method based on the allocator::max_size method 
               (thanks Gennaro Prota from the boost forum).

  ----

  * _vector.c: add of the standard length_error exception to the reserve method (thanks Steven Youngs).

  ----

  * _alloc.h: add of a check of the number of element require to allocator::allocate to avoid a possible
              size_type overflow (thanks Steven Youngs).

  ----

  * _istream.h: move of the ws implementation within the header to avoid undefined symbol
                under NO_CUSTOM_IO mode (thanks Ulrich Eckhardt)

  ----

  * ctype.cpp : charcode correction (thanks Markus Stier reports and Alberto Barbati correction)

  ----

  * _function.h : all function can now be used in a non-const world (thanks Alexey Kirjushkin)

  ----

  * move constructor framework integration (thanks Francois Dumont)

  ----

  * containers interface correction for standard compliance when using explicit
    intanciation of not default constructible type. (thanks Alexei Agafonov report)

  ----

  * iostream.cpp, locale_impl.cpp : static initialization made robust for case of 
    dynamic loader circular dependancies (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 : unused locale variable removed (thanks Petr Ovtchenkov)

	* _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 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 Ovtchenkov), 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 Ovtchenkov 
	
	* 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 Ovtchenkov)

	* Bunch of fixes to compile with gcc on HP-UX 10, 11 (thanks to Petr Ovtchenkov)

	* 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)
	
