00001 // Predefined symbols and macros -*- C++ -*- 00002 00003 // Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. 00004 // 00005 // This file is part of the GNU ISO C++ Library. This library is free 00006 // software; you can redistribute it and/or modify it under the 00007 // terms of the GNU General Public License as published by the 00008 // Free Software Foundation; either version 2, or (at your option) 00009 // any later version. 00010 00011 // This library is distributed in the hope that it will be useful, 00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 // GNU General Public License for more details. 00015 00016 // You should have received a copy of the GNU General Public License along 00017 // with this library; see the file COPYING. If not, write to the Free 00018 // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 00019 // USA. 00020 00021 // As a special exception, you may use this file as part of a free software 00022 // library without restriction. Specifically, if other files instantiate 00023 // templates or use macros or inline functions from this file, or you compile 00024 // this file and link it with other files to produce an executable, this 00025 // file does not by itself cause the resulting executable to be covered by 00026 // the GNU General Public License. This exception does not however 00027 // invalidate any other reasons why the executable file might be covered by 00028 // the GNU General Public License. 00029 00030 #ifndef _CPP_CPPCONFIG 00031 #define _CPP_CPPCONFIG 1 00032 00033 // Pick up any OS-specific definitions. 00034 #include <bits/os_defines.h> 00035 00036 // The current version of the C++ library in compressed ISO date format. 00037 #define __GLIBCPP__ 20010417 00038 00039 // This is necessary until GCC supports separate template 00040 // compilation. 00041 #define _GLIBCPP_NO_TEMPLATE_EXPORT 1 00042 00043 // This is a hack around not having either pre-compiled headers or 00044 // export compilation. If defined, the io, string, and valarray 00045 // headers will include all the necessary bits. If not defined, the 00046 // implementation optimizes the headers for the most commonly-used 00047 // types. For the io library, this means that larger, out-of-line 00048 // member functions are only declared, and definitions are not parsed 00049 // by the compiler, but instead instantiated into the library binary. 00050 #define _GLIBCPP_FULLY_COMPLIANT_HEADERS 1 00051 00052 // Define this to permit user-level control of the expansion of string 00053 // buffers (via a fn pointer), see basic_string.* for more. 00054 //#define _GLIBCPP_ALLOC_CONTROL 00055 00056 // To enable older, ARM-style iostreams and other anachronisms use this. 00057 //#define _GLIBCPP_DEPRECATED 1 00058 00059 // Use corrected code from the committee library group's issues list. 00060 #define _GLIBCPP_RESOLVE_LIB_DEFECTS 1 00061 00062 // Enable concept checking code from the boost libraries. 00063 //#define _GLIBCPP_CONCEPT_CHECKS 1 00064 00065 // From SGI's stl_config.h; generic settings and user hooks (_NOTHREADS). 00066 #ifdef _REENTRANT 00067 # define __STL_THREADS 00068 #endif 00069 00070 #if defined(_PTHREADS) && !defined(_NOTHREADS) 00071 # define __STL_PTHREADS 00072 #endif 00073 00074 #if defined(_UITHREADS) && !defined(_PTHREADS) && !defined(_NOTHREADS) 00075 # define __STL_UITHREADS 00076 #endif 00077 00078 #if defined(__STL_WIN32THREADS) || defined(__STL_SGI_THREADS) \ 00079 || defined(__STL_PTHREADS) || defined(__STL_UITHREADS) 00080 # define __STL_THREADS 00081 # define __STL_VOLATILE volatile 00082 #else 00083 # define __STL_VOLATILE 00084 #endif 00085 00086 // This is also a user hook, but via -f[no-]exceptions, not direct #defines. 00087 #ifdef __EXCEPTIONS 00088 # define __STL_USE_EXCEPTIONS 00089 # define __STL_TRY try 00090 # define __STL_CATCH_ALL catch(...) 00091 # define __STL_THROW(x) throw x 00092 # define __STL_RETHROW throw 00093 # define __STL_NOTHROW throw() 00094 # define __STL_UNWIND(action) catch(...) { action; throw; } 00095 #else 00096 # define __STL_TRY 00097 # define __STL_CATCH_ALL if (false) 00098 # define __STL_THROW(x) 00099 # define __STL_RETHROW 00100 # define __STL_NOTHROW 00101 # define __STL_UNWIND(action) 00102 #endif 00103 00104 // This is the "underlying allocator" for STL. The alternatives are 00105 // homegrown schemes involving a kind of mutex and free list; see stl_alloc.h. 00106 #define __USE_MALLOC 00107 00108 // The remainder of the prewritten config is mostly automatic; all the 00109 // user hooks are listed above. 00110 00111 // XXX 00112 // Only used in the SGI rope extensions; this is from stl_config.h and 00113 // should be cleaned up. 00114 # define __stl_assert(expr) 00115 00116 // End of prewritten config; the discovered settings follow.