cxx/include
Howard Hinnant 39213641f4 Debug mode for unordered_set. I believe this to be fairly complete for
unordered_set, however it is not complete yet for unordered_multiset,
unordered_map or unordered_multimap.  There has been a lot of work done
for these other three containers, however that work was done just to
keep all of the tests passing.

You can try this out with -D_LIBCPP_DEBUG2.  You will have to link to a
libc++.dylib that has been compiled with src/debug.cpp.  So far, vector
(but not vector<bool>), list, and unordered_set are treated.  I hope to
get the other three unordered containers up fairly quickly now that
unordered_set is done.

The flag _LIBCPP_DEBUG2 will eventually be changed to _LIBCPP_DEBUG, but
not today.  This is my second effort at getting debug mode going for
libc++, and I'm not quite yet ready to throw all of the work under the
first attempt away.

The basic design is that all of the debug information is kept in a
central database, instead of in the containers.  This has been done as
an attempt to have debug mode and non-debug mode be ABI compatible with
each other.  There are some circumstances where if you construct a
container in an environment without debug mode and pass it into debug
mode, the checking will get confused and let you know with a readable
error message.  Passing containers the other way: from debug mode out to
a non-debugging mode container should be 100% safe (at least that is the
goal).

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@186991 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-23 22:01:58 +00:00
..
ext No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
support Glen: This patch gets the string conversion functions working on Windows. It also refactors repetitive code in string.cpp do greatly reduce the repetitiveness, increasing maintainability. 2013-05-16 17:13:40 +00:00
__bit_reference Implement full support for non-pointer pointers in custom allocators for vector. 2013-06-27 19:35:32 +00:00
__config Add macro _LIBCPP_CONSTEXPR_AFTER_CXX11 for functions that have been marked constexpr post C++11 2013-07-15 14:57:19 +00:00
__debug Debug mode: learning to crawl. I need to set up some tests that actually test that the debug mode is working, but that won't cause problems when debug mode isn't on. This is my first prototype of such a test. It should call std::terminate() because it's comparing iterators from different containers. And std::terminate() is rigged up to exit normally. If debug mode fails, and doesn't call terminate, then the program asserts. The test is a no-op if _LIBCPP_DEBUG2 is not defined or is defined to be 0. 2013-03-25 19:29:35 +00:00
__functional_03 Add some missing cv-qualifiers. 2013-07-23 01:24:30 +00:00
__functional_base Constrain __invoke functions more accurately. This fixes http://llvm.org/bugs/show_bug.cgi?id=15861 . 2013-05-07 23:40:12 +00:00
__functional_base_03 No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
__hash_table Debug mode for unordered_set. I believe this to be fairly complete for 2013-07-23 22:01:58 +00:00
__locale Add NetBSD support. 2013-05-17 21:17:34 +00:00
__mutex_base No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
__split_buffer Implement full support for non-pointer pointers in custom allocators for deque. 2013-06-23 21:17:24 +00:00
__sso_allocator Further macro protection by replacing _[A-Z] with _[A-Z]p 2011-11-29 18:15:50 +00:00
__std_stream Make cout a little more thread-safe. This fixes http://llvm.org/bugs/show_bug.cgi?id=12158 2013-06-28 21:40:28 +00:00
__tree Implement full support for non-pointer types in custom allocators. This is for the associative containers only. This work still needs to be done on the unordered and sequence containers. Fixes http://llvm.org/bugs/show_bug.cgi?id=15978 2013-06-19 21:29:40 +00:00
__tuple Make std::get constexpr 2013-07-17 18:25:36 +00:00
__tuple_03 No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
__undef_min_max Some minor mingw64 porting tweaks from Glen. 2012-09-03 18:13:11 +00:00
algorithm Fix a bug in std::fill_n where memset would end up being called in cases when it shouldn’t. 2013-07-22 21:08:00 +00:00
array Make std::get constexpr 2013-07-17 18:25:36 +00:00
atomic Stephan Tolksdorf: fixes the issue in the <atomic> header and adds corresponding tests. I've used macros to fall back to a user-provided default constructor if _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS (though I suspect that there won't be many users defining that macro). 2013-05-02 20:18:43 +00:00
bitset No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
cassert Windows support by Ruben Van Boxem. 2011-10-17 20:05:10 +00:00
ccomplex Windows support by Ruben Van Boxem. 2011-10-17 20:05:10 +00:00
cctype More windows port work by Ruben Van Boxem 2011-10-22 20:59:45 +00:00
cerrno Windows support by Ruben Van Boxem. 2011-10-17 20:05:10 +00:00
cfenv Windows support by Ruben Van Boxem. 2011-10-17 20:05:10 +00:00
cfloat Windows support by Ruben Van Boxem. 2011-10-17 20:05:10 +00:00
chrono War on tabs. 2013-07-08 21:06:38 +00:00
cinttypes Windows support by Ruben Van Boxem. 2011-10-17 20:05:10 +00:00
ciso646 Windows support by Ruben Van Boxem. 2011-10-17 20:05:10 +00:00
climits Windows support by Ruben Van Boxem. 2011-10-17 20:05:10 +00:00
clocale Windows support by Ruben Van Boxem. 2011-10-17 20:05:10 +00:00
cmath Make <cmath> classification macros work with integral types. 2013-01-14 20:56:22 +00:00
codecvt No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
complex No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
complex.h Windows support by Ruben Van Boxem. 2011-10-17 20:05:10 +00:00
condition_variable No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
csetjmp Windows support by Ruben Van Boxem. 2011-10-17 20:05:10 +00:00
csignal Windows support by Ruben Van Boxem. 2011-10-17 20:05:10 +00:00
cstdarg Windows support by Ruben Van Boxem. 2011-10-17 20:05:10 +00:00
cstdbool Windows support by Ruben Van Boxem. 2011-10-17 20:05:10 +00:00
cstddef No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
cstdint Windows support by Ruben Van Boxem. 2011-10-17 20:05:10 +00:00
cstdio Patch by Andrew C. Morrow: shims to work around macroized getc and putc on linux. On my eglibc 2.13 based Debian system 'getc' is a macro defined in 2012-07-26 20:01:13 +00:00
cstdlib Dimitry Andric: When using libc++ headers on FreeBSD, in combination with -std=c++98, 2012-11-26 21:18:17 +00:00
cstring Change <cwchar> and <cstring> to look out for flags which may or may not be set by the C headers <wchar.h> and <string.h> indicating C support for the C++-altered wcschr, wcspbrk, wcsrchr, wcsstr, wmemchr, strchr, strpbrk, strrchr, memchr, and strstr. This was already done in <cstring> for other platforms using other flags, so just had to add one more flag to the list there. 2013-04-08 18:59:28 +00:00
ctgmath Windows support by Ruben Van Boxem. 2011-10-17 20:05:10 +00:00
ctime Windows support by Ruben Van Boxem. 2011-10-17 20:05:10 +00:00
cwchar Change <cwchar> and <cstring> to look out for flags which may or may not be set by the C headers <wchar.h> and <string.h> indicating C support for the C++-altered wcschr, wcspbrk, wcsrchr, wcsstr, wmemchr, strchr, strpbrk, strrchr, memchr, and strstr. This was already done in <cstring> for other platforms using other flags, so just had to add one more flag to the list there. 2013-04-08 18:59:28 +00:00
cwctype Windows support by Ruben Van Boxem. 2011-10-17 20:05:10 +00:00
deque Implement full support for non-pointer pointers in custom allocators for deque. 2013-06-23 21:17:24 +00:00
exception No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
forward_list Implement full support for non-pointer pointers in custom allocators for forward_list. 2013-06-24 17:17:28 +00:00
fstream Reference: http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20130325/077133.html 2013-04-02 22:14:51 +00:00
functional The bind and function functor constructors and assignment operators were overly general and getting confused with the copy constructor and copy assignment operators. Constrained them. This fixes http://llvm.org/bugs/show_bug.cgi?id=16385 2013-07-01 00:01:51 +00:00
future Constrain launch ~ operator to defined bits. 2013-07-02 18:01:41 +00:00
initializer_list No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
iomanip Further macro protection by replacing _[A-Z] with _[A-Z]p 2011-11-29 18:15:50 +00:00
ios move __save_flags from <random> to <ios> in preparation for reuse; no functionality change 2013-07-09 20:34:14 +00:00
iosfwd No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
iostream No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
istream In istream::ignore, check the delimeter as an int_type, not as a char_type, so as to correctly handle EOF. This fixes http://llvm.org/bugs/show_bug.cgi?id=16427 2013-07-01 00:37:50 +00:00
iterator Implement full support for non-pointer pointers in custom allocators for vector. 2013-06-27 19:35:32 +00:00
limits No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
list Implement full support for non-pointer pointers in custom allocators for list. 2013-06-25 16:08:47 +00:00
locale Matthew Dempsky: In libc++'s <locale>, there's already dependence on an snprintf_l 2013-07-02 18:42:28 +00:00
map Remove implicit conversion from __value_type to value_type in [unordered_][multi]map. This fixes http://llvm.org/bugs/show_bug.cgi?id=16549 2013-07-05 18:06:00 +00:00
memory Matthew Dempsky: Attached patch replaces the type punning with memcpy(), which on 2013-07-03 17:39:28 +00:00
mutex No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
new No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
numeric More windows port work by Ruben Van Boxem 2011-10-22 20:59:45 +00:00
ostream No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
queue No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
random move __save_flags from <random> to <ios> in preparation for reuse; no functionality change 2013-07-09 20:34:14 +00:00
ratio No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
regex Bill Fisher: This patch fixes a bug where std::regex in ECMAScript mode was ignoring capture groups inside lookahead assertions. 2013-07-23 16:18:04 +00:00
scoped_allocator No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
set No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
sstream The move / swap members were not correctly taking all of the possible states of the basic_stringbuf into account. Just rewrote these members. Test included. This fixes http://llvm.org/bugs/show_bug.cgi?id=15659. 2013-04-03 20:21:29 +00:00
stack No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
stdexcept Windows support by Ruben Van Boxem. 2011-10-17 20:05:10 +00:00
streambuf No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
string Implement string suffixes from N3642 2013-07-23 17:05:24 +00:00
strstream No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
system_error No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
tgmath.h Windows support by Ruben Van Boxem. 2011-10-17 20:05:10 +00:00
thread Fix stupid but harmless type-o. Fixes http://llvm.org/bugs/show_bug.cgi?id=15657. 2013-04-03 20:29:45 +00:00
tuple Make tuple's constructor and std::get<>(tuple) constexpr. Final stage of fixing bug #16599. Thanks to Howard for the review and updates. 2013-07-22 16:02:19 +00:00
type_traits Make std::forward and std::move (and std::move_if_noexcept) constexpr in C++14 2013-07-15 20:46:11 +00:00
typeindex No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
typeinfo Windows support by Ruben Van Boxem. 2011-10-17 20:05:10 +00:00
unordered_map Debug mode for unordered_set. I believe this to be fairly complete for 2013-07-23 22:01:58 +00:00
unordered_set Debug mode for unordered_set. I believe this to be fairly complete for 2013-07-23 22:01:58 +00:00
utility Make std::get constexpr 2013-07-17 18:25:36 +00:00
valarray No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute. 2013-03-06 23:30:19 +00:00
vector Implement full support for non-pointer pointers in custom allocators for vector. 2013-06-27 19:35:32 +00:00