aboutsummaryrefslogtreecommitdiff
path: root/libstdc++/stl/stl_config.h
diff options
context:
space:
mode:
Diffstat (limited to 'libstdc++/stl/stl_config.h')
-rw-r--r--libstdc++/stl/stl_config.h170
1 files changed, 170 insertions, 0 deletions
diff --git a/libstdc++/stl/stl_config.h b/libstdc++/stl/stl_config.h
new file mode 100644
index 00000000000..fa29fdd3253
--- /dev/null
+++ b/libstdc++/stl/stl_config.h
@@ -0,0 +1,170 @@
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation. Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose. It is provided "as is" without express or implied warranty.
+ *
+ * Copyright (c) 1997
+ * Silicon Graphics
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation. Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose. It is provided "as is" without express or implied warranty.
+ *
+ */
+
+#ifndef __STL_CONFIG_H
+# define __STL_CONFIG_H
+
+// What this file does.
+// (1) Defines bool, true, and false if the compiler doesn't do so already.
+// (2) Defines __STL_NO_DRAND48 if the compiler's standard library does
+// not support the drand48() function.
+// (3) Defines __STL_STATIC_TEMPLATE_MEMBER_BUG if the compiler can't
+// handle static members of template classes.
+// (4) Defines 'typename' as a null macro if the compiler does not support
+// the typename keyword.
+// (5) Defines __STL_CLASS_PARTIAL_SPECIALIZATION if the compiler
+// supports partial specialization of template classes.
+// (6) Defines __STL_MEMBER_TEMPLATES if the compiler supports
+// template members of classes.
+// (7) Defines 'explicit' as a null macro if the compiler does not support
+// the explicit keyword.
+// (8) Defines __STL_LIMITED_DEFAULT_TEMPLATES if the compiler is
+// unable to handle default template parameters that depend on
+// previous template parameters.
+// (9) Defines __STL_NON_TYPE_TMPL_PARAM_BUG if the compiler has
+// trouble performing function template argument deduction for
+// non-type template parameters.
+// (10) Defines __STL_USE_EXCEPTIONS if the compiler (in the current
+// compilation mode) supports exceptions.
+// (11) Defines __STL_SGI_THREADS if this is being compiled on an SGI
+// compiler, and if the user hasn't selected pthreads or no threads
+// instead.
+// (12) Defines __STL_WIN32THREADS if this is being compiled on a
+// WIN32 compiler in multithreaded mode.
+// (13) Defines __stl_assert either as a test or as a null macro,
+// depending on whether or not __STL_ASSERTIONS is defined.
+
+# if defined(__sgi) && !defined(__GNUC__)
+# if !defined(_BOOL)
+# define __STL_NEED_BOOL
+# endif
+# if !defined(_TYPENAME_IS_KEYWORD)
+# define __STL_NEED_TYPENAME
+# endif
+# ifdef _PARTIAL_SPECIALIZATION_OF_CLASS_TEMPLATES
+# define __STL_CLASS_PARTIAL_SPECIALIZATION
+# endif
+# ifdef _MEMBER_TEMPLATES
+# define __STL_MEMBER_TEMPLATES
+# endif
+# if !defined(_EXPLICIT_IS_KEYWORD)
+# define __STL_NEED_EXPLICIT
+# endif
+# ifdef __EXCEPTIONS
+# define __STL_USE_EXCEPTIONS
+# endif
+# if !defined(_NOTHREADS) && !defined(_PTHREADS)
+# define __STL_SGI_THREADS
+# endif
+# endif
+
+# ifdef __GNUC__
+# if 0 && (__GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8))
+# define __STL_STATIC_TEMPLATE_MEMBER_BUG
+# define __STL_NEED_TYPENAME
+# define __STL_NEED_EXPLICIT
+# else
+# define __STL_CLASS_PARTIAL_SPECIALIZATION
+# endif
+# ifdef __EXCEPTIONS
+# define __STL_USE_EXCEPTIONS
+# endif
+# endif
+
+# if defined(__SUNPRO_CC)
+# define __STL_NEED_BOOL
+# define __STL_NEED_TYPENAME
+# define __STL_NEED_EXPLICIT
+# define __STL_USE_EXCEPTIONS
+# endif
+
+# if defined(__COMO__)
+# define __STL_MEMBER_TEMPLATES
+# define __STL_CLASS_PARTIAL_SPECIALIZATION
+# define __STL_USE_EXCEPTIONS
+# endif
+
+# if defined(_MSC_VER)
+# if _MSC_VER > 1000
+# include <yvals.h>
+# else
+# define __STL_NEED_BOOL
+# endif
+# define __STL_NO_DRAND48
+# define __STL_NEED_TYPENAME
+# if _MSC_VER < 1100
+# define __STL_NEED_EXPLICIT
+# endif
+# define __STL_NON_TYPE_TMPL_PARAM_BUG
+# ifdef _CPPUNWIND
+# define __STL_USE_EXCEPTIONS
+# endif
+# ifdef _MT
+# define __STL_WIN32THREADS
+# endif
+# endif
+
+# if defined(__BORLANDC__)
+# define __STL_NO_DRAND48
+# define __STL_NEED_TYPENAME
+# define __STL_LIMITED_DEFAULT_TEMPLATES
+# define __STL_NON_TYPE_TMPL_PARAM_BUG
+# ifdef _CPPUNWIND
+# define __STL_USE_EXCEPTIONS
+# endif
+# ifdef __MT__
+# define __STL_WIN32THREADS
+# endif
+# endif
+
+
+# if defined(__STL_NEED_BOOL)
+ typedef int bool;
+# define true 1
+# define false 0
+# undef __STL_NEED_BOOL
+# endif
+
+# ifdef __STL_NEED_TYPENAME
+# define typename
+# undef __STL_NEED_TYPENAME
+# endif
+
+# ifdef __STL_NEED_EXPLICIT
+# define explicit
+# undef __STL_NEED_EXPLICIT
+# endif
+
+#ifdef __STL_ASSERTIONS
+# include <stdio.h>
+# define __stl_assert(expr) \
+ if (!(expr)) { fprintf(stderr, "%s:%d STL assertion failure: %s\n", \
+ __FILE__, __LINE__, # expr); abort(); }
+#else
+# define __stl_assert(expr)
+#endif
+
+#endif /* __STL_CONFIG_H */