mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-04 03:06:28 +00:00
Get rid of template templates that were preventing VC from compiling the
set_intersect template. Thanks to Morten Ofstad and Jeff Cohen for the patch! llvm-svn: 16954
This commit is contained in:
parent
79843fb7d9
commit
a4756fd6be
@ -17,8 +17,8 @@
|
||||
|
||||
namespace llvm {
|
||||
|
||||
// set_union(A, B) - Compute A := A u B, return whether A changed.
|
||||
//
|
||||
/// set_union(A, B) - Compute A := A u B, return whether A changed.
|
||||
///
|
||||
template <class S1Ty, class S2Ty>
|
||||
bool set_union(S1Ty &S1, const S2Ty &S2) {
|
||||
bool Changed = false;
|
||||
@ -31,22 +31,22 @@ bool set_union(S1Ty &S1, const S2Ty &S2) {
|
||||
return Changed;
|
||||
}
|
||||
|
||||
// set_intersect(A, B) - Compute A := A ^ B
|
||||
// Identical to set_intersection, except that it works on set<>'s and
|
||||
// is nicer to use. Functionally, this iterates through S1, removing
|
||||
// elements that are not contained in S2.
|
||||
//
|
||||
template <template<class S1ElTy> class S1Ty, class ETy, class S2Ty>
|
||||
void set_intersect(S1Ty<ETy> &S1, const S2Ty &S2) {
|
||||
for (typename S1Ty<ETy>::iterator I = S1.begin(); I != S1.end();) {
|
||||
const ETy &E = *I;
|
||||
++I;
|
||||
if (!S2.count(E)) S1.erase(E); // Erase element if not in S2
|
||||
}
|
||||
/// set_intersect(A, B) - Compute A := A ^ B
|
||||
/// Identical to set_intersection, except that it works on set<>'s and
|
||||
/// is nicer to use. Functionally, this iterates through S1, removing
|
||||
/// elements that are not contained in S2.
|
||||
///
|
||||
template <class S1Ty, class S2Ty>
|
||||
void set_intersect(S1Ty &S1, const S2Ty &S2) {
|
||||
for (typename S1Ty::iterator I = S1.begin(); I != S1.end();) {
|
||||
const typename S1Ty::key_type &E = *I;
|
||||
++I;
|
||||
if (!S2.count(E)) S1.erase(E); // Erase element if not in S2
|
||||
}
|
||||
}
|
||||
|
||||
// set_difference(A, B) - Return A - B
|
||||
//
|
||||
/// set_difference(A, B) - Return A - B
|
||||
///
|
||||
template <class S1Ty, class S2Ty>
|
||||
S1Ty set_difference(const S1Ty &S1, const S2Ty &S2) {
|
||||
S1Ty Result;
|
||||
@ -57,8 +57,8 @@ S1Ty set_difference(const S1Ty &S1, const S2Ty &S2) {
|
||||
return Result;
|
||||
}
|
||||
|
||||
// set_subtract(A, B) - Compute A := A - B
|
||||
//
|
||||
/// set_subtract(A, B) - Compute A := A - B
|
||||
///
|
||||
template <class S1Ty, class S2Ty>
|
||||
void set_subtract(S1Ty &S1, const S2Ty &S2) {
|
||||
for (typename S2Ty::const_iterator SI = S2.begin(), SE = S2.end();
|
||||
|
Loading…
x
Reference in New Issue
Block a user