Skip to content

Commit 3f26f1a

Browse files
[ADT] Reduce boilerplate in DenseSet (NFC) (#158456)
The class definitions of DenseSet and SmallDenseSet contain a lot of boilerplate code, repeating the lengthy base class name twice in each definition. This patch simplifies the two definitions by making them type aliases.
1 parent 31c4eb0 commit 3f26f1a

File tree

1 file changed

+16
-20
lines changed

1 file changed

+16
-20
lines changed

llvm/include/llvm/ADT/DenseSet.h

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -250,20 +250,24 @@ bool operator!=(const DenseSetImpl<ValueT, MapTy, ValueInfoT> &LHS,
250250
return !(LHS == RHS);
251251
}
252252

253+
template <typename ValueT, typename ValueInfoT>
254+
using DenseSet = DenseSetImpl<
255+
ValueT, DenseMap<ValueT, DenseSetEmpty, ValueInfoT, DenseSetPair<ValueT>>,
256+
ValueInfoT>;
257+
258+
template <typename ValueT, unsigned InlineBuckets, typename ValueInfoT>
259+
using SmallDenseSet =
260+
DenseSetImpl<ValueT,
261+
SmallDenseMap<ValueT, DenseSetEmpty, InlineBuckets, ValueInfoT,
262+
DenseSetPair<ValueT>>,
263+
ValueInfoT>;
264+
253265
} // end namespace detail
254266

255267
/// Implements a dense probed hash-table based set.
256268
template <typename ValueT, typename ValueInfoT = DenseMapInfo<ValueT>>
257-
class DenseSet : public detail::DenseSetImpl<
258-
ValueT,
259-
DenseMap<ValueT, detail::DenseSetEmpty, ValueInfoT,
260-
detail::DenseSetPair<ValueT>>,
261-
ValueInfoT> {
262-
using BaseT =
263-
detail::DenseSetImpl<ValueT,
264-
DenseMap<ValueT, detail::DenseSetEmpty, ValueInfoT,
265-
detail::DenseSetPair<ValueT>>,
266-
ValueInfoT>;
269+
class DenseSet : public detail::DenseSet<ValueT, ValueInfoT> {
270+
using BaseT = detail::DenseSet<ValueT, ValueInfoT>;
267271

268272
public:
269273
using BaseT::BaseT;
@@ -274,16 +278,8 @@ class DenseSet : public detail::DenseSetImpl<
274278
template <typename ValueT, unsigned InlineBuckets = 4,
275279
typename ValueInfoT = DenseMapInfo<ValueT>>
276280
class SmallDenseSet
277-
: public detail::DenseSetImpl<
278-
ValueT,
279-
SmallDenseMap<ValueT, detail::DenseSetEmpty, InlineBuckets,
280-
ValueInfoT, detail::DenseSetPair<ValueT>>,
281-
ValueInfoT> {
282-
using BaseT = detail::DenseSetImpl<
283-
ValueT,
284-
SmallDenseMap<ValueT, detail::DenseSetEmpty, InlineBuckets, ValueInfoT,
285-
detail::DenseSetPair<ValueT>>,
286-
ValueInfoT>;
281+
: public detail::SmallDenseSet<ValueT, InlineBuckets, ValueInfoT> {
282+
using BaseT = detail::SmallDenseSet<ValueT, InlineBuckets, ValueInfoT>;
287283

288284
public:
289285
using BaseT::BaseT;

0 commit comments

Comments
 (0)