Commit 1f1a03ef by Benjamin Kosnik Committed by Benjamin Kosnik

basic_types.hpp (comp_hash_): Remove, format.

2006-10-02  Benjamin Kosnik  <bkoz@redhat.com>

	* include/ext/pb_ds/detail/basic_types.hpp (comp_hash_): Remove,
	format.	
	* include/ext/pb_ds/detail/types_traits.hpp
	(types_traits::comp_hash): Use pair typedef.	
	* include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp: Same.
	* include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp: Same.

From-SVN: r117371
parent 93a8f49b
2006-10-02 Benjamin Kosnik <bkoz@redhat.com>
* include/ext/pb_ds/detail/basic_types.hpp (comp_hash_): Remove,
format.
* include/ext/pb_ds/detail/types_traits.hpp
(types_traits::comp_hash): Use pair typedef.
* include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp: Same.
* include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp: Same.
2006-10-01 Paolo Carlini <pcarlini@suse.de>
* include/tr1/random (xor_combine<>::_M_initialize_max_aux): New.
......
......@@ -59,12 +59,6 @@ namespace pb_ds
template<typename Key, typename Mapped, typename Allocator, bool Store_Hash>
struct value_type_base;
#define PB_DS_CLASS_T_DEC \
template<typename Key, typename Mapped, typename Allocator>
#define PB_DS_CLASS_C_DEC \
value_type_base<Key, Mapped, Allocator, false>
/**
* Specialization of value_type_base for the case where the hash value
* is not stored alongside each value.
......@@ -92,15 +86,6 @@ namespace pb_ds
};
};
#undef PB_DS_CLASS_T_DEC
#undef PB_DS_CLASS_C_DEC
#define PB_DS_CLASS_T_DEC \
template<typename Key, typename Mapped, typename Allocator>
#define PB_DS_CLASS_C_DEC \
value_type_base<Key, Mapped, Allocator, true>
/**
* Specialization of value_type_base for the case where the hash value
* is stored alongside each value.
......@@ -129,9 +114,6 @@ namespace pb_ds
};
};
#undef PB_DS_CLASS_T_DEC
#undef PB_DS_CLASS_C_DEC
#define PB_DS_CLASS_T_DEC \
template<typename Key, typename Allocator>
......@@ -218,14 +200,9 @@ namespace pb_ds
#undef PB_DS_CLASS_C_DEC
template<typename Key, typename Mapped>
struct no_throw_copies;
template<typename Key, typename Mapped>
struct no_throw_copies
{
typedef
integral_constant<int, is_simple<Key>::value && is_simple<Mapped>::value>
indicator;
typedef integral_constant<int, is_simple<Key>::value && is_simple<Mapped>::value> indicator;
};
template<typename Key>
......@@ -233,12 +210,6 @@ namespace pb_ds
{
typedef integral_constant<int, is_simple<Key>::value> indicator;
};
template<typename Size_Type>
struct comp_hash_
{
typedef std::pair<Size_Type, Size_Type> comp_hash;
};
} // namespace detail
} // namespace pb_ds
......
......@@ -56,12 +56,8 @@ namespace pb_ds
{
namespace detail
{
template<typename Key,
typename Hash_Fn,
typename Allocator,
typename Comb_Probe_Fn,
typename Probe_Fn,
bool Store_Hash>
template<typename Key, typename Hash_Fn, typename Allocator,
typename Comb_Probe_Fn, typename Probe_Fn, bool Store_Hash>
class ranged_probe_fn;
#define PB_DS_CLASS_T_DEC \
......@@ -72,8 +68,9 @@ namespace pb_ds
ranged_probe_fn<Key, Hash_Fn, Allocator, Comb_Probe_Fn, Probe_Fn, false>
/**
* Specialization 1- The client supplies a probe function and a ranged
* probe function, and requests that hash values not be stored.
* Specialization 1
* The client supplies a probe function and a ranged probe
* function, and requests that hash values not be stored.
**/
template<typename Key, typename Hash_Fn, typename Allocator,
typename Comb_Probe_Fn, typename Probe_Fn>
......@@ -83,37 +80,32 @@ namespace pb_ds
{
protected:
typedef typename Allocator::size_type size_type;
typedef Comb_Probe_Fn comb_probe_fn_base;
typedef Hash_Fn hash_fn_base;
typedef Probe_Fn probe_fn_base;
typedef typename Allocator::template rebind<Key>::other key_allocator;
typedef typename key_allocator::const_reference const_key_reference;
protected:
ranged_probe_fn(size_type size);
ranged_probe_fn(size_type);
ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn);
ranged_probe_fn(size_type, const Hash_Fn&);
ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn, const Comb_Probe_Fn& r_comb_probe_fn);
ranged_probe_fn(size_type, const Hash_Fn&, const Comb_Probe_Fn&);
ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn, const Comb_Probe_Fn& r_comb_probe_fn, const Probe_Fn& r_probe_fn);
ranged_probe_fn(size_type, const Hash_Fn&, const Comb_Probe_Fn&,
const Probe_Fn&);
void
swap(PB_DS_CLASS_C_DEC& other);
swap(PB_DS_CLASS_C_DEC&);
void
notify_resized(size_type size);
notify_resized(size_type);
inline size_type
operator()(const_key_reference r_key) const;
operator()(const_key_reference) const;
inline size_type
operator()(const_key_reference r_key, size_type hash, size_type i) const;
operator()(const_key_reference, size_type, size_type) const;
};
PB_DS_CLASS_T_DEC
......@@ -123,23 +115,23 @@ namespace pb_ds
PB_DS_CLASS_T_DEC
PB_DS_CLASS_C_DEC::
ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn) :
Hash_Fn(r_hash_fn)
ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn)
: Hash_Fn(r_hash_fn)
{ Comb_Probe_Fn::notify_resized(size); }
PB_DS_CLASS_T_DEC
PB_DS_CLASS_C_DEC::
ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn, const Comb_Probe_Fn& r_comb_probe_fn) :
Hash_Fn(r_hash_fn),
Comb_Probe_Fn(r_comb_probe_fn)
ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn,
const Comb_Probe_Fn& r_comb_probe_fn)
: Hash_Fn(r_hash_fn), Comb_Probe_Fn(r_comb_probe_fn)
{ comb_probe_fn_base::notify_resized(size); }
PB_DS_CLASS_T_DEC
PB_DS_CLASS_C_DEC::
ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn, const Comb_Probe_Fn& r_comb_probe_fn, const Probe_Fn& r_probe_fn) :
Hash_Fn(r_hash_fn),
Comb_Probe_Fn(r_comb_probe_fn),
Probe_Fn(r_probe_fn)
ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn,
const Comb_Probe_Fn& r_comb_probe_fn,
const Probe_Fn& r_probe_fn)
: Hash_Fn(r_hash_fn), Comb_Probe_Fn(r_comb_probe_fn), Probe_Fn(r_probe_fn)
{ comb_probe_fn_base::notify_resized(size); }
PB_DS_CLASS_T_DEC
......@@ -175,8 +167,8 @@ namespace pb_ds
#undef PB_DS_CLASS_C_DEC
#define PB_DS_CLASS_T_DEC \
template<typename Key, class Hash_Fn, class Allocator, \
class Comb_Probe_Fn, class Probe_Fn>
template<typename Key, typename Hash_Fn, typename Allocator, \
typename Comb_Probe_Fn, typename Probe_Fn>
#define PB_DS_CLASS_C_DEC \
ranged_probe_fn<Key, Hash_Fn, Allocator, Comb_Probe_Fn, Probe_Fn, true>
......@@ -193,44 +185,37 @@ namespace pb_ds
{
protected:
typedef typename Allocator::size_type size_type;
typedef typename comp_hash_<size_type>::comp_hash comp_hash;
typedef std::pair<size_type, size_type> comp_hash;
typedef Comb_Probe_Fn comb_probe_fn_base;
typedef Hash_Fn hash_fn_base;
typedef Probe_Fn probe_fn_base;
typedef typename Allocator::template rebind<Key>::other key_allocator;
typedef typename key_allocator::const_reference const_key_reference;
ranged_probe_fn(size_type size);
ranged_probe_fn(size_type);
ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn);
ranged_probe_fn(size_type, const Hash_Fn&);
ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn,
const Comb_Probe_Fn& r_comb_probe_fn);
ranged_probe_fn(size_type, const Hash_Fn&,
const Comb_Probe_Fn&);
ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn,
const Comb_Probe_Fn& r_comb_probe_fn,
const Probe_Fn& r_probe_fn);
ranged_probe_fn(size_type, const Hash_Fn&, const Comb_Probe_Fn&,
const Probe_Fn&);
void
swap(PB_DS_CLASS_C_DEC& other);
swap(PB_DS_CLASS_C_DEC&);
void
notify_resized(size_type size);
notify_resized(size_type);
inline comp_hash
operator()(const_key_reference r_key) const;
operator()(const_key_reference) const;
inline size_type
operator()(const_key_reference r_key, size_type hash, size_type i) const;
operator()(const_key_reference, size_type, size_type) const;
inline size_type
operator()(const_key_reference r_key, size_type hash) const;
operator()(const_key_reference, size_type) const;
};
PB_DS_CLASS_T_DEC
......@@ -240,26 +225,23 @@ namespace pb_ds
PB_DS_CLASS_T_DEC
PB_DS_CLASS_C_DEC::
ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn) :
Hash_Fn(r_hash_fn)
ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn)
: Hash_Fn(r_hash_fn)
{ Comb_Probe_Fn::notify_resized(size); }
PB_DS_CLASS_T_DEC
PB_DS_CLASS_C_DEC::
ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn,
const Comb_Probe_Fn& r_comb_probe_fn) :
Hash_Fn(r_hash_fn),
Comb_Probe_Fn(r_comb_probe_fn)
const Comb_Probe_Fn& r_comb_probe_fn)
: Hash_Fn(r_hash_fn), Comb_Probe_Fn(r_comb_probe_fn)
{ comb_probe_fn_base::notify_resized(size); }
PB_DS_CLASS_T_DEC
PB_DS_CLASS_C_DEC::
ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn,
const Comb_Probe_Fn& r_comb_probe_fn,
const Probe_Fn& r_probe_fn) :
Hash_Fn(r_hash_fn),
Comb_Probe_Fn(r_comb_probe_fn),
Probe_Fn(r_probe_fn)
const Probe_Fn& r_probe_fn)
: Hash_Fn(r_hash_fn), Comb_Probe_Fn(r_comb_probe_fn), Probe_Fn(r_probe_fn)
{ comb_probe_fn_base::notify_resized(size); }
PB_DS_CLASS_T_DEC
......@@ -312,8 +294,9 @@ namespace pb_ds
#undef PB_DS_CLASS_C_DEC
/**
* Specialization 3 and 4- The client does not supply a hash function or
* probe function, and requests that hash values not be stored.
* Specialization 3 and 4
* The client does not supply a hash function or probe function,
* and requests that hash values not be stored.
**/
template<typename Key, typename Allocator, typename Comb_Probe_Fn>
class ranged_probe_fn<Key, null_hash_fn, Allocator, Comb_Probe_Fn,
......@@ -322,23 +305,20 @@ namespace pb_ds
{
protected:
typedef typename Allocator::size_type size_type;
typedef Comb_Probe_Fn comb_probe_fn_base;
typedef typename Allocator::template rebind<Key>::other key_allocator;
typedef typename key_allocator::const_reference const_key_reference;
ranged_probe_fn(size_type size)
{ Comb_Probe_Fn::notify_resized(size); }
ranged_probe_fn(size_type size, const Comb_Probe_Fn& r_comb_probe_fn)
ranged_probe_fn(size_type, const Comb_Probe_Fn& r_comb_probe_fn)
: Comb_Probe_Fn(r_comb_probe_fn)
{ }
ranged_probe_fn(size_type size, const null_hash_fn& r_null_hash_fn,
ranged_probe_fn(size_type, const null_hash_fn&,
const Comb_Probe_Fn& r_comb_probe_fn,
const null_probe_fn& r_null_probe_fn)
const null_probe_fn&)
: Comb_Probe_Fn(r_comb_probe_fn)
{ }
......
......@@ -65,8 +65,7 @@ namespace pb_ds
struct types_traits
: public vt_base_selector<Key, Mapped, Alloc, Store_Extra>::type
{
typedef typename Alloc::template rebind< Key>::other key_allocator;
typedef typename Alloc::template rebind<Key>::other key_allocator;
typedef typename key_allocator::value_type key_type;
typedef typename key_allocator::pointer key_pointer;
typedef typename key_allocator::const_pointer const_key_pointer;
......@@ -74,11 +73,11 @@ namespace pb_ds
typedef typename key_allocator::const_reference const_key_reference;
typedef typename Alloc::size_type size_type;
// Extra value (used when the extra value is stored with each value).
typedef std::pair<size_type, size_type> comp_hash;
integral_constant<int, Store_Extra> m_store_extra_indicator;
typename no_throw_copies<Key, Mapped>::indicator m_no_throw_copies_indicator;
// Extra value (used when the extra value is stored with each value).
typedef typename comp_hash_<size_type>::comp_hash comp_hash;
};
} // namespace detail
} // namespace pb_ds
......
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