commit 886affabe8fa941254ca6acbab046753f38c08f8 Author: Beman Dawes Date: Fri Jul 7 16:04:40 2000 +0000 This commit was generated by cvs2svn to compensate for changes in r4, which included commits to RCS files with non-trunk default branches. [SVN r7621] diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..3e84d7c7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,96 @@ +* text=auto !eol svneol=native#text/plain +*.gitattributes text svneol=native#text/plain + +# Scriptish formats +*.bat text svneol=native#text/plain +*.bsh text svneol=native#text/x-beanshell +*.cgi text svneol=native#text/plain +*.cmd text svneol=native#text/plain +*.js text svneol=native#text/javascript +*.php text svneol=native#text/x-php +*.pl text svneol=native#text/x-perl +*.pm text svneol=native#text/x-perl +*.py text svneol=native#text/x-python +*.sh eol=lf svneol=LF#text/x-sh +configure eol=lf svneol=LF#text/x-sh + +# Image formats +*.bmp binary svneol=unset#image/bmp +*.gif binary svneol=unset#image/gif +*.ico binary svneol=unset#image/ico +*.jpeg binary svneol=unset#image/jpeg +*.jpg binary svneol=unset#image/jpeg +*.png binary svneol=unset#image/png +*.tif binary svneol=unset#image/tiff +*.tiff binary svneol=unset#image/tiff +*.svg text svneol=native#image/svg%2Bxml + +# Data formats +*.pdf binary svneol=unset#application/pdf +*.avi binary svneol=unset#video/avi +*.doc binary svneol=unset#application/msword +*.dsp text svneol=crlf#text/plain +*.dsw text svneol=crlf#text/plain +*.eps binary svneol=unset#application/postscript +*.gz binary svneol=unset#application/gzip +*.mov binary svneol=unset#video/quicktime +*.mp3 binary svneol=unset#audio/mpeg +*.ppt binary svneol=unset#application/vnd.ms-powerpoint +*.ps binary svneol=unset#application/postscript +*.psd binary svneol=unset#application/photoshop +*.rdf binary svneol=unset#text/rdf +*.rss text svneol=unset#text/xml +*.rtf binary svneol=unset#text/rtf +*.sln text svneol=native#text/plain +*.swf binary svneol=unset#application/x-shockwave-flash +*.tgz binary svneol=unset#application/gzip +*.vcproj text svneol=native#text/xml +*.vcxproj text svneol=native#text/xml +*.vsprops text svneol=native#text/xml +*.wav binary svneol=unset#audio/wav +*.xls binary svneol=unset#application/vnd.ms-excel +*.zip binary svneol=unset#application/zip + +# Text formats +.htaccess text svneol=native#text/plain +*.bbk text svneol=native#text/xml +*.cmake text svneol=native#text/plain +*.css text svneol=native#text/css +*.dtd text svneol=native#text/xml +*.htm text svneol=native#text/html +*.html text svneol=native#text/html +*.ini text svneol=native#text/plain +*.log text svneol=native#text/plain +*.mak text svneol=native#text/plain +*.qbk text svneol=native#text/plain +*.rst text svneol=native#text/plain +*.sql text svneol=native#text/x-sql +*.txt text svneol=native#text/plain +*.xhtml text svneol=native#text/xhtml%2Bxml +*.xml text svneol=native#text/xml +*.xsd text svneol=native#text/xml +*.xsl text svneol=native#text/xml +*.xslt text svneol=native#text/xml +*.xul text svneol=native#text/xul +*.yml text svneol=native#text/plain +boost-no-inspect text svneol=native#text/plain +CHANGES text svneol=native#text/plain +COPYING text svneol=native#text/plain +INSTALL text svneol=native#text/plain +Jamfile text svneol=native#text/plain +Jamroot text svneol=native#text/plain +Jamfile.v2 text svneol=native#text/plain +Jamrules text svneol=native#text/plain +Makefile* text svneol=native#text/plain +README text svneol=native#text/plain +TODO text svneol=native#text/plain + +# Code formats +*.c text svneol=native#text/plain +*.cpp text svneol=native#text/plain +*.h text svneol=native#text/plain +*.hpp text svneol=native#text/plain +*.ipp text svneol=native#text/plain +*.tpp text svneol=native#text/plain +*.jam text svneol=native#text/plain +*.java text svneol=native#text/plain diff --git a/config_test.cpp b/config_test.cpp new file mode 100644 index 00000000..bf252c7e --- /dev/null +++ b/config_test.cpp @@ -0,0 +1,115 @@ +// Boost config.hpp configuration test program file ------------------------------// + +// (C) Copyright Boost.org 2000. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for the most recent version. + +#include +#include + +using std::cout; + +int main() +{ + +# ifdef BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS + cout << "BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS defined\n"; +# endif + +# ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZER + cout << "BOOST_NO_INCLASS_MEMBER_INITIALIZER defined\n"; +# endif + +# ifdef BOOST_NO_ITERATOR_TRAITS + cout << "BOOST_NO_ITERATOR_TRAITS defined\n"; +# endif + +# ifdef BOOST_NO_MEMBER_TEMPLATES + cout << "BOOST_NO_MEMBER_TEMPLATES defined\n"; +# endif + +# ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS + cout << "BOOST_NO_MEMBER_TEMPLATE_FRIENDS defined\n"; +# endif + +# ifdef BOOST_NO_OPERATORS_IN_NAMESPACE + cout << "BOOST_NO_OPERATORS_IN_NAMESPACE defined\n"; +# endif + +# ifdef BOOST_NO_STD_ITERATOR + cout << "BOOST_NO_STD_ITERATOR defined\n"; +# endif + +# ifdef BOOST_NO_STDC_NAMESPACE + cout << "BOOST_NO_STDC_NAMESPACE defined\n"; +# endif + +# ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + cout << "BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION defined\n"; +# endif + +# ifdef BOOST_NO_USING_TEMPLATE + cout << "BOOST_NO_USING_TEMPLATE defined\n"; +# endif + +# ifdef BOOST_DECL_EXPORTS + cout << "BOOST_DECL_EXPORTS defined\n"; +# endif + +# ifdef BOOST_SYSTEM_HAS_STDINT_H + cout << "BOOST_SYSTEM_HAS_STDINT_H defined\n"; +# endif + +# ifdef __GNUC__ + cout << "__GNUC__ defined as " << __GNUC__ << "\n"; +# endif + +# ifdef __BORLANDC__ + cout << "__BORLANDC__ defined as " << __BORLANDC__ << "\n"; +# endif + +# ifdef __MWERKS__ + cout << "__MWERKS__ defined as " << __MWERKS__ << "\n"; +# endif + +# ifdef __SUNPRO_CC + cout << "__SUNPRO_CC defined as " << __SUNPRO_CC << "\n"; +# endif + +# ifdef _MSC_VER + cout << "_MSC_VER defined as " << _MSC_VER << "\n"; +# endif + +# ifdef BOOST_MSVC + cout << "BOOST_MSVC defined as " << BOOST_MSVC << "\n"; +# endif + +# ifdef BOOST_MSVC6_MEMBER_TEMPLATES + cout << "BOOST_MSVC6_MEMBER_TEMPLATES defined\n"; +# endif + +# ifdef BOOST_MSVC_STD_ITERATOR + cout << "BOOST_MSVC_STD_ITERATOR defined\n"; +# endif + +# ifdef __SGI_STL_PORT + cout << "__SGI_STL_PORT defined\n"; +# endif + +# ifdef __STL_NO_NAMESPACES + cout << "__STL_NO_NAMESPACES defined\n"; +# endif + +# ifdef __STL_USE_NAMESPACES + cout << "__STL_USE_NAMESPACES defined\n"; +# endif + +# ifdef __STL_IMPORT_VENDOR_CSTD + cout << "__STL_IMPORT_VENDOR_CSTD defined\n"; +# endif + + return 0; +} \ No newline at end of file diff --git a/include/boost/config.hpp b/include/boost/config.hpp new file mode 100644 index 00000000..b0edc228 --- /dev/null +++ b/include/boost/config.hpp @@ -0,0 +1,281 @@ +// Boost config.hpp configuration header file ------------------------------// + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// Boost config.hpp policy and rationale documentation has been moved to +// http://www.boost.org/libs/config + +// Revision History (excluding minor changes for specific compilers) +// 26 Jun 00 BOOST_NO_STD_ITERATOR, BOOST_MSVC_STD_ITERATOR, +// BOOST_NO_ITERATOR_TRAITS, BOOST_NO_USING_TEMPLATE, +// added (Jeremy Siek) +// 20 Jun 00 BOOST_MSVC added (Aleksey Gurtovoy) +// 14 Jun 00 BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS (Jens M.) +// 22 Mar 00 BOOST_MSVC6_MEMBER_TEMPLATES added (Dave Abrahams) +// 18 Feb 00 BOOST_NO_INCLASS_MEMBER_INITIALIZATION added (Jens Maurer) +// 26 Jan 00 Borland compiler support added (John Maddock) +// 26 Jan 00 Sun compiler support added (Jörg Schaible) +// 30 Dec 99 BOOST_NMEMBER_TEMPLATES compatibility moved here from +// smart_ptr.hpp. (Dave Abrahams) +// 15 Nov 99 BOOST_NO_OPERATORS_IN_NAMESPACE, +// BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION added (Beman Dawes) +// 11 Oct 99 BOOST_NO_STDC_NAMESPACE refined; supplied +// 29 Sep 99 BOOST_NO_STDC_NAMESPACE added (Ed Brey) +// 24 Sep 99 BOOST_DECL added (Ed Brey) +// 10 Aug 99 Endedness flags added, GNU CC support added +// 22 Jul 99 Initial version + + +#ifndef BOOST_CONFIG_HPP +#define BOOST_CONFIG_HPP + +// Conformance Flag Macros -------------------------------------------------// +// +// Conformance flag macros should identify the absence of C++ Standard +// conformance rather than its presence. This ensures that standard conforming +// compilers do not require a lot of configuration flag macros. It places the +// burden where it should be, on non-conforming compilers. In the future, +// hopefully, less rather than more conformance flags will have to be defined. + +// BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS: Template value +// parameters cannot have a dependent type, for example +// "template class X { ... };" + +// BOOST_NO_INCLASS_MEMBER_INITIALIZER: Compiler violates std::9.4.2/4. + +// BOOST_NO_ITERATOR_TRAITS: The compiler does not provide a standard +// compliant implementation of std::iterator_traits. Note that +// the compiler may still have a non-standard implementation. + +// BOOST_NO_MEMBER_TEMPLATES: Member template functions not fully supported. +// Also see BOOST_MSVC6_MEMBER_TEMPLATES in the Compiler Control section below. + +// BOOST_NO_MEMBER_TEMPLATE_FRIENDS: Member template friend syntax +// ("template friend class frd;") described in the C++ Standard, +// 14.5.3, not supported. + +// BOOST_NO_OPERATORS_IN_NAMESPACE: Compiler requires inherited operator +// friend functions to be defined at namespace scope, then using'ed to boost. +// Probably GCC specific. See boost/operators.hpp for example. + +// BOOST_NO_STD_ITERATOR: The C++ implementation fails to provide the +// std::iterator class. + +// BOOST_NO_STDC_NAMESPACE: The contents of C++ standard headers for C library +// functions (the headers) have not been placed in namespace std. +// Because the use of std::size_t is so common, a specific workaround for +// (and thus std::size_t) is provided in this header (see below). +// For other headers, a workaround must be provided in the boost header: +// +// #include // for abs +// #ifdef BOOST_NO_STDC_NAMESPACE +// namespace std { using ::abs; } +// #endif + +// BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION. Class template partial +// specialization (14.5.4 [temp.class.spec]) not supported. + +// BOOST_NO_USING_TEMPLATE: This needs some docs! + +// Compiler Control or Information Macros ----------------------------------// +// +// Compilers often supply features outside of the C++ Standard which need to be +// controlled or detected. As usual, reasonable default behavior should occur +// if any of these macros are not defined. + +// BOOST_DECL: Certain compilers for Microsoft operating systems require +// non-standard class and function decoration if dynamic load library linking +// is desired. BOOST_DECL supplies that decoration, defaulting to a nul string +// so that it is harmless when not required. Boost does not encourage the use +// of BOOST_DECL - it is non-standard and to be avoided if practical to do so. + +// BOOST_DECL_EXPORTS: User defined, BOOST_DECL_EXPORTS causes BOOST_DECL to +// be defined as __declspec(dllexport) rather than __declspec(dllimport). + +// BOOST_MSVC6_MEMBER_TEMPLATES: Microsoft Visual C++ 6.0 has enough member +// template idiosyncrasies (being polite) that BOOST_NO_MEMBER_TEMPLATES is +// defined for this compiler. BOOST_MSVC6_MEMBER_TEMPLATES is defined to allow +// compiler specific workarounds. + +// BOOST_MSVC: defined as _MSC_VER for the Microsoft compiler only. In general, +// boost headers should test for a specific conformance flag macro (for +// example, BOOST_NO_MEMBER_TEMPLATE_FRIENDS) rather than a specific compiler. +// VC++ is a special case, however, since many libraries try to support it yet +// it has so many conformance issues that sometimes it is just easier to test +// for it directly. On the other hand, the obvious way to do this doesn't work, +// as many non-Microsoft compilers define _MSC_VER. Thus BOOST_MSVC. + +// BOOST_MSVC_STD_ITERATOR: Microsoft's broken version of std::iterator +// is being used. + +// BOOST_SYSTEM_HAS_STDINT_H: There are no 1998 C++ Standard headers +// or , although the 1999 C Standard does include . +// If is present, can make good use of it, +// so a flag is supplied (signalling presence; thus the default is not +// present, conforming to the current C++ standard). + +// Compilers are listed in alphabetic order (except VC++ last - see below)---// + +// GNU CC (also known as GCC and G++) --------------------------------------// + +# if defined __GNUC__ +# if __GNUC__ == 2 && __GNUC_MINOR__ <= 95 +# include // not sure this is the right way to do this -JGS +# if !defined(_CXXRT_STD) && !defined(__SGI_STL) // need to ask Dietmar about this -JGS +# define BOOST_NO_STD_ITERATOR +# endif +# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS +# define BOOST_NO_OPERATORS_IN_NAMESPACE +# endif +# if __GNUC__ == 2 && __GNUC_MINOR__ <= 8 +# define BOOST_NO_MEMBER_TEMPLATES +# endif + +// Borland ------------------------------------------------------------------// + +#elif defined __BORLANDC__ +# if __BORLANDC__ <= 0x0550 +// Borland C++ Builder 4 and 5: +# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS +# if __BORLANDC__ == 0x0550 +// Borland C++ Builder 5, command-line compiler 5.5: +# define BOOST_NO_OPERATORS_IN_NAMESPACE +# define BOOST_NO_USING_TEMPLATE +# endif +# endif +# if defined BOOST_DECL_EXPORTS +# define BOOST_DECL __declspec(dllexport) +# else +# define BOOST_DECL __declspec(dllimport) +# endif +# if __BORLANDC__ == 0x550 +# define BOOST_NO_OPERATORS_IN_NAMESPACE +# endif + +// Intel -------------------------------------------------------------------// + +# elif defined __ICL +# include // not sure this is the right way to do this -JGS +# if __SGI_STL_PORT >= 0x400 || __SGI_STL_PORT >= 0x321 && defined(__STL_USE_NAMESPACES) + // a perfectly good implementation of std::iterator is supplied +# elif defined(__SGI_STL_ITERATOR) +# define BOOST_NO_STD_ITERATOR // No std::iterator in this case +# else // assume using dinkumware's STL that comes with VC++ 6.0 +# define BOOST_MSVC_STD_ITERATOR +# define BOOST_NO_STD_ITERATOR_TRAITS +# define BOOST_NO_STDC_NAMESPACE +# endif + + +// Metrowerks CodeWarrior --------------------------------------------------// + +# elif defined __MWERKS__ +# if __MWERKS__ <= 0x2301 +# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS +# endif +# if __MWERKS__ >= 0x2300 +# define BOOST_SYSTEM_HAS_STDINT_H +# endif +# if defined BOOST_DECL_EXPORTS +# define BOOST_DECL __declspec(dllexport) +# else +# define BOOST_DECL __declspec(dllimport) +# endif + +// Sun Workshop Compiler C++ ------------------------------------------------// + +# elif defined __SUNPRO_CC +# if __SUNPRO_CC <= 0x500 +# define BOOST_NO_MEMBER_TEMPLATES +# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +# endif + +// Microsoft Visual C++ (excluding Intel/EDG front end) --------------------// +// +// Must remain the last #elif since some other vendors (Metrowerks, for +// example) also #define _MSC_VER + +# elif defined _MSC_VER +# define BOOST_MSVC _MSC_VER +# if _MSC_VER <= 1200 // 1200 == VC++ 6.0 +# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION + +// VC++ 6.0 has member templates but they have numerous problems including +// cases of silent failure, so for safety we define: +# define BOOST_NO_MEMBER_TEMPLATES +// For VC++ experts wishing to attempt workarounds, we define: +# define BOOST_MSVC6_MEMBER_TEMPLATES + +# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS +# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS + +# include // not sure this is the right way to do this -JGS +# if __SGI_STL_PORT >= 0x400 || __SGI_STL_PORT >= 0x321 && defined(__STL_USE_NAMESPACES) + // a perfectly good implementation of std::iterator is supplied +# elif defined(__SGI_STL_ITERATOR) +# define BOOST_NO_STD_ITERATOR // No std::iterator in this case +# else +# define BOOST_MSVC_STD_ITERATOR 1 +# endif +# define BOOST_NO_STD_ITERATOR_TRAITS + + +// Make sure at least one standard library header is included so that library +// implementation detection will work, even if no standard headers have been +// included in front of a boost header. (Ed Brey 5 Jun 00) +# include + +// Determine if the standard library implementation is already pulling names +// into std. STLport defines the following if so. (Ed Brey 5 Jun 00) +# ifndef __STL_IMPORT_VENDOR_CSTD +# define BOOST_NO_STDC_NAMESPACE +# endif + +# endif + +# if defined BOOST_DECL_EXPORTS +# define BOOST_DECL __declspec(dllexport) +# else +# define BOOST_DECL __declspec(dllimport) +# endif + +# pragma warning( disable : 4786 ) // ident trunc to '255' chars in debug info + +# endif // Microsoft (excluding Intel/EDG frontend) + +# ifndef BOOST_DECL +# define BOOST_DECL // default for compilers not needing this decoration. +# endif + +// end of compiler specific portion ----------------------------------------// + +// Check for old name "BOOST_NMEMBER_TEMPLATES" for compatibility -----------// +// Don't use BOOST_NMEMBER_TEMPLATES. It is deprecated and will be removed soon. +#if defined( BOOST_NMEMBER_TEMPLATES ) && !defined( BOOST_NO_MEMBER_TEMPLATES ) + #define BOOST_NO_MEMBER_TEMPLATES +#endif + +// BOOST_NO_STDC_NAMESPACE workaround --------------------------------------// +// +// Because std::size_t usage is so common, even in boost headers which do not +// otherwise use the C library, the workaround is included here so +// that ugly workaround code need not appear in many other boost headers. +// NOTE WELL: This is a workaround for non-conforming compilers; +// must still be #included in the usual places so that inclusion +// works as expected with standard conforming compilers. The resulting +// double inclusion of is harmless. + +# ifdef BOOST_NO_STDC_NAMESPACE +# include + namespace std { using ::ptrdiff_t; using ::size_t; } + // using ::wchar_t; removed to work around old compilers (Ed Brey) +# endif + + +#endif // BOOST_CONFIG_HPP