Commit 52e07aa1 by Paolo Carlini Committed by Paolo Carlini

2008-07-19 Paolo Carlini <paolo.carlini@oracle.com>

	* include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
	(assert_node_consistent): Avoid ambiguous else warning.

	* include/ext/pb_ds/detail/debug_map_base.hpp: Include <iostream>.

	* include/bits/c++config: In debug-mode (and parallel-mode) set
	_GLIBCXX_EXTERN_TEMPLATE to -1, not 0, thus disabling extern
	templates only for basic_string (per libstdc++/21674).
	* include/bits/basic_string.tcc: Use extern templates when
	_GLIBCXX_EXTERN_TEMPLATE > 0.

From-SVN: r137990
parent a7ea9e29
2008-07-19 Paolo Carlini <paolo.carlini@oracle.com>
* include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
(assert_node_consistent): Avoid ambiguous else warning.
* include/ext/pb_ds/detail/debug_map_base.hpp: Include <iostream>.
* include/bits/c++config: In debug-mode (and parallel-mode) set
_GLIBCXX_EXTERN_TEMPLATE to -1, not 0, thus disabling extern
templates only for basic_string (per libstdc++/21674).
* include/bits/basic_string.tcc: Use extern templates when
_GLIBCXX_EXTERN_TEMPLATE > 0.
2008-07-18 Kris Van Hees <kris.van.hees@oracle.com> 2008-07-18 Kris Van Hees <kris.van.hees@oracle.com>
Holger Hopp <holger.hopp@sap.com> Holger Hopp <holger.hopp@sap.com>
......
...@@ -1104,7 +1104,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -1104,7 +1104,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
// Inhibit implicit instantiations for required instantiations, // Inhibit implicit instantiations for required instantiations,
// which are defined via explicit instantiations elsewhere. // which are defined via explicit instantiations elsewhere.
// NB: This syntax is a GNU extension. // NB: This syntax is a GNU extension.
#if _GLIBCXX_EXTERN_TEMPLATE #if _GLIBCXX_EXTERN_TEMPLATE > 0
extern template class basic_string<char>; extern template class basic_string<char>;
extern template extern template
basic_istream<char>& basic_istream<char>&
......
...@@ -135,7 +135,7 @@ ...@@ -135,7 +135,7 @@
# define _GLIBCXX_STD __cxx1998 # define _GLIBCXX_STD __cxx1998
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) { # define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
# define _GLIBCXX_END_NAMESPACE } # define _GLIBCXX_END_NAMESPACE }
# define _GLIBCXX_EXTERN_TEMPLATE 0 # define _GLIBCXX_EXTERN_TEMPLATE -1
# endif # endif
// parallel // parallel
...@@ -145,7 +145,7 @@ ...@@ -145,7 +145,7 @@
# define _GLIBCXX_STD __cxx1998 # define _GLIBCXX_STD __cxx1998
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) { # define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
# define _GLIBCXX_END_NAMESPACE } # define _GLIBCXX_END_NAMESPACE }
# define _GLIBCXX_EXTERN_TEMPLATE 0 # define _GLIBCXX_EXTERN_TEMPLATE -1
# endif # endif
// debug + parallel // debug + parallel
...@@ -155,7 +155,7 @@ ...@@ -155,7 +155,7 @@
# define _GLIBCXX_STD __cxx1998 # define _GLIBCXX_STD __cxx1998
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) { # define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
# define _GLIBCXX_END_NAMESPACE } # define _GLIBCXX_END_NAMESPACE }
# define _GLIBCXX_EXTERN_TEMPLATE 0 # define _GLIBCXX_EXTERN_TEMPLATE -1
# endif # endif
# if __NO_INLINE__ && !__GXX_WEAK__ # if __NO_INLINE__ && !__GXX_WEAK__
......
// -*- C++ -*- // -*- C++ -*-
// Copyright (C) 2005, 2006 Free Software Foundation, Inc. // Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the terms // software; you can redistribute it and/or modify it under the terms
...@@ -65,13 +65,15 @@ assert_max() const ...@@ -65,13 +65,15 @@ assert_max() const
return; return;
_GLIBCXX_DEBUG_ASSERT(base_type::parent(m_p_max) == NULL); _GLIBCXX_DEBUG_ASSERT(base_type::parent(m_p_max) == NULL);
for (const_iterator it = base_type::begin(); it != base_type::end(); ++it) for (const_iterator it = base_type::begin(); it != base_type::end(); ++it)
_GLIBCXX_DEBUG_ASSERT(!Cmp_Fn::operator()(m_p_max->m_value, it.m_p_nd->m_value)); _GLIBCXX_DEBUG_ASSERT(!Cmp_Fn::operator()(m_p_max->m_value,
it.m_p_nd->m_value));
} }
PB_DS_CLASS_T_DEC PB_DS_CLASS_T_DEC
void void
PB_DS_CLASS_C_DEC:: PB_DS_CLASS_C_DEC::
assert_node_consistent(const_node_pointer p_nd, bool strictly_binomial, bool increasing) const assert_node_consistent(const_node_pointer p_nd, bool strictly_binomial,
bool increasing) const
{ {
_GLIBCXX_DEBUG_ASSERT(increasing || strictly_binomial); _GLIBCXX_DEBUG_ASSERT(increasing || strictly_binomial);
base_type::assert_node_consistent(p_nd, false); base_type::assert_node_consistent(p_nd, false);
...@@ -83,15 +85,20 @@ assert_node_consistent(const_node_pointer p_nd, bool strictly_binomial, bool inc ...@@ -83,15 +85,20 @@ assert_node_consistent(const_node_pointer p_nd, bool strictly_binomial, bool inc
assert_node_consistent(p_nd->m_p_next_sibling, strictly_binomial, increasing); assert_node_consistent(p_nd->m_p_next_sibling, strictly_binomial, increasing);
assert_node_consistent(p_nd->m_p_l_child, true, false); assert_node_consistent(p_nd->m_p_l_child, true, false);
if (p_nd->m_p_next_sibling != NULL) if (p_nd->m_p_next_sibling != NULL)
if (increasing) {
{ if (increasing)
if (strictly_binomial) {
_GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata < p_nd->m_p_next_sibling->m_metadata); if (strictly_binomial)
else _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata
_GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata <= p_nd->m_p_next_sibling->m_metadata); < p_nd->m_p_next_sibling->m_metadata);
} else
else _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata
_GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata > p_nd->m_p_next_sibling->m_metadata); <= p_nd->m_p_next_sibling->m_metadata);
}
else
_GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata
> p_nd->m_p_next_sibling->m_metadata);
}
} }
#endif #endif
// -*- C++ -*- // -*- C++ -*-
// Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc. // Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the terms // software; you can redistribute it and/or modify it under the terms
...@@ -52,6 +52,7 @@ ...@@ -52,6 +52,7 @@
#include <list> #include <list>
#include <utility> #include <utility>
#include <cstdlib> #include <cstdlib>
#include <iostream>
#include <ext/throw_allocator.h> #include <ext/throw_allocator.h>
#include <debug/debug.h> #include <debug/debug.h>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment