[SDK] One step further towards ReactOS source code tree restructure: the sdk folder...
[reactos.git] / reactos / lib / 3rdparty / stlport / doc / stlport_namespaces.txt
diff --git a/reactos/lib/3rdparty/stlport/doc/stlport_namespaces.txt b/reactos/lib/3rdparty/stlport/doc/stlport_namespaces.txt
deleted file mode 100644 (file)
index d243b03..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-This document present the STLport namespace schema and give additionnal
-information about how STLport replace the native C++ Standard library
-coming with your compiler.
-
-1. What is the STLport namespace ?
-
-  As STLport is a C++ Standard library implementation the STLport namespace
-is 'std'. In normal use this is all you need to know and you can stop reading
-here.
-
-2. How does STLport replace native C++ Standard library ?
-
-  STLport defines a macro 'std' that replaces all references of std in the
-user code by a different name. This technique has has some drawback but also
-advantages. The drawback is that you cannot declared Standard component like
-that:
-
-
-//foo.h
-namespace std
-{
-  template <class _Tp>
-  class allocator;
-}
-
-void f1(const std::allocator<int>&);
-
-
-//foo.cpp
-#include "foo.h"
-#include <memory>
-
-void f1(const std::allocator<int>& alloc)
-{
-  //implementation
-}
-
-//bar.cpp
-#include "foo.h"
-#include <memory>
-
-int main(int, char**)
-{
-  std::allocator<int> alloc;
-  f1(alloc);
-}
-
-  If you build this code you will surely have a compilation error as f1 is declared
-as taking a std::allocator parameter but you are calling it using an STLport allocator
-instance that is not in the std namespace. The good news is that this drawback is easy
-to detect as it will generate compilation error or at least link time error. The only
-workaround is to include an arbitrary Standard header before the allocator declaration.
-Good candidates for that are <utility> or <cerrno> as they are small headers. Including
-those headers will replace std with the STLport namespace.
-
-  The advantage of this macro replacement is that we can customize the STLport namespace
-depending on the compilation options. For instance the STLport safe mode you can use by
-defining _STLP_DEBUG is not binary compatible with a normal debug build. To ensure that
-no one will ever build code without _STLP_DEBUG and link with STLport library built with
-this option the namespace is different so that it will generate link time error rather
-than random crashes during application execution.
-
-3. Why not having use namespace injection ?
-
-  An other way to replace native Standard C++ library implementation would have been to
-use namespace injection:
-
-namespace std
-{
-  using namespace stlport;
-}
-
-  This solution has a first major drawback which is that STLport would be much more sensible
-to native headers. If you include a C++ native headers that indirectly define for instance
-the vector class it is going to conflict with the STLport vector definition.
-
-  Moreover this solution just does not work for a very simple reason. The C++ Standard 
-allows users to specialized some of the Standard algorithms. This specialization has to 
-be done in the same namespace as the main template declaration:
-
-//In an STLport header:
-namespace stlport
-{
-  template <class _Tp>
-  struct less
-  {
-    bool operator () (const _Tp& x, const _Tp& y) const;
-  };
-}
-
-//User code:
-
-struct MyStruct;
-
-namespace std
-{
-  template <>
-  struct less<MyStruct>
-  {
-  };
-}
-
-As you can see the specialization is not in the STLport less namespace and it
-won't be used in associative containers for instance.
-
-4. What is the STLport specific namespace ?
-
-  The official STLport namespace is: stlport. Once again this is not the real namespace
-where all the Standard stuff are. As the real STLport namespace change depending on compilation
-options you cannot use it directly. So stlport is an alias of the real STLport namespace.
-
-5. What are the other STLport namespaces ?
-
-  Those names are given for information purpose and should never be used in any user code. The
-default STLport namespace is: stlp_std. Here is the list of the customized namespaces:
-
-  - stlpd_std : when _STLP_DEBUG is defined
-  - stlpx_std : when you use STLport as a shared library linked to the static version of the native
-    runtime or when you build the static STLport library linked with the dynamic version. This option
-    is only supported by a limited number of compilers.
-  - stlpmtx_std : when building STLport as not thread safe.
-
-  You can also have combination of those extension like stlpdxmtx_std or stlpdmtx_std...
-
-  There is also an other STLport namespace for STLport internal functions or struct/class: priv.
-
-namespace stlport
-{
-  namespace priv
-  {
-  }
-}