2010-09-26 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

Renamed TripletGet as TupleGet. Renamed TripletNthType as
	TupleNthType. Renamed Triplet2Pair as Tuple2Pair.
	* src/RequestGroupMan.cc
	* src/Triplet.h
	* test/TripletTest.cc
pull/1/head
Tatsuhiro Tsujikawa 2010-09-26 07:23:00 +00:00
parent 6a07182b0d
commit 6c348f0493
4 changed files with 55 additions and 47 deletions

View File

@ -1,3 +1,11 @@
2010-09-26 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Renamed TripletGet as TupleGet. Renamed TripletNthType as
TupleNthType. Renamed Triplet2Pair as Tuple2Pair.
* src/RequestGroupMan.cc
* src/Triplet.h
* test/TripletTest.cc
2010-09-26 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net> 2010-09-26 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Use class instead of typename for Triplet template parameter. Use class instead of typename for Triplet template parameter.

View File

@ -932,7 +932,7 @@ void RequestGroupMan::getUsedHosts
} }
std::sort(tempHosts.begin(), tempHosts.end()); std::sort(tempHosts.begin(), tempHosts.end());
std::transform(tempHosts.begin(), tempHosts.end(), std::transform(tempHosts.begin(), tempHosts.end(),
std::back_inserter(usedHosts), Triplet2Pair<1, 3>()); std::back_inserter(usedHosts), Tuple2Pair<1, 3>());
} }
} // namespace aria2 } // namespace aria2

View File

@ -84,65 +84,65 @@ Triplet<T1, T2, T3> makeTriplet(const T1& t1, const T2& t2, const T3& t3)
return Triplet<T1, T2, T3>(t1, t2, t3); return Triplet<T1, T2, T3>(t1, t2, t3);
} }
template<class Triplet, size_t N> template<class Tuple, size_t N>
struct TripletNthType; struct TupleNthType;
template<class Triplet> template<class Tuple>
struct TripletNthType<Triplet, 1> { struct TupleNthType<Tuple, 1> {
typedef typename Triplet::first_type type; typedef typename Tuple::first_type type;
}; };
template<class Triplet> template<class Tuple>
struct TripletNthType<Triplet, 2> { struct TupleNthType<Tuple, 2> {
typedef typename Triplet::second_type type; typedef typename Tuple::second_type type;
}; };
template<class Triplet> template<class Tuple>
struct TripletNthType<Triplet, 3> { struct TupleNthType<Tuple, 3> {
typedef typename Triplet::third_type type; typedef typename Tuple::third_type type;
}; };
template<size_t N> template<size_t N>
struct TripletGet; struct TupleGet;
template<> template<>
struct TripletGet<1> { struct TupleGet<1> {
template<class Triplet> template<class Tuple>
static typename TripletNthType<Triplet, 1>::type get(const Triplet& tri) static typename TupleNthType<Tuple, 1>::type get(const Tuple& tri)
{ {
return tri.first; return tri.first;
} }
}; };
template<> template<>
struct TripletGet<2> { struct TupleGet<2> {
template<class Triplet> template<class Tuple>
static typename TripletNthType<Triplet, 2>::type get(const Triplet& tri) static typename TupleNthType<Tuple, 2>::type get(const Tuple& tri)
{ {
return tri.second; return tri.second;
} }
}; };
template<> template<>
struct TripletGet<3> { struct TupleGet<3> {
template<class Triplet> template<class Tuple>
static typename TripletNthType<Triplet, 3>::type get(const Triplet& tri) static typename TupleNthType<Tuple, 3>::type get(const Tuple& tri)
{ {
return tri.third; return tri.third;
} }
}; };
template<size_t N1, size_t N2> template<size_t N1, size_t N2>
class Triplet2Pair { class Tuple2Pair {
public: public:
template<class Triplet> template<class Tuple>
std::pair<typename TripletNthType<Triplet, N1>::type, std::pair<typename TupleNthType<Tuple, N1>::type,
typename TripletNthType<Triplet, N2>::type> typename TupleNthType<Tuple, N2>::type>
operator()(const Triplet& tri) const operator()(const Tuple& tri) const
{ {
return std::make_pair<typename TripletNthType<Triplet, N1>::type, return std::make_pair<typename TupleNthType<Tuple, N1>::type,
typename TripletNthType<Triplet, N2>::type> typename TupleNthType<Tuple, N2>::type>
(TripletGet<N1>::get(tri), TripletGet<N2>::get(tri)); (TupleGet<N1>::get(tri), TupleGet<N2>::get(tri));
} }
}; };

View File

@ -8,9 +8,9 @@ class TripletTest:public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(TripletTest); CPPUNIT_TEST_SUITE(TripletTest);
CPPUNIT_TEST(testLess); CPPUNIT_TEST(testLess);
CPPUNIT_TEST(testTripletGet); CPPUNIT_TEST(testTupleGet);
CPPUNIT_TEST(testTripletNthType); CPPUNIT_TEST(testTupleNthType);
CPPUNIT_TEST(testTriplet2Pair); CPPUNIT_TEST(testTuple2Pair);
CPPUNIT_TEST_SUITE_END(); CPPUNIT_TEST_SUITE_END();
public: public:
void setUp() {} void setUp() {}
@ -18,9 +18,9 @@ public:
void tearDown() {} void tearDown() {}
void testLess(); void testLess();
void testTripletGet(); void testTupleGet();
void testTripletNthType(); void testTupleNthType();
void testTriplet2Pair(); void testTuple2Pair();
}; };
CPPUNIT_TEST_SUITE_REGISTRATION(TripletTest); CPPUNIT_TEST_SUITE_REGISTRATION(TripletTest);
@ -44,32 +44,32 @@ void TripletTest::testLess()
CPPUNIT_ASSERT(!(tri6 < tri5)); CPPUNIT_ASSERT(!(tri6 < tri5));
} }
void TripletTest::testTripletGet() void TripletTest::testTupleGet()
{ {
Triplet<int, double, std::string> x(1, 3.14, "foo"); Triplet<int, double, std::string> x(1, 3.14, "foo");
CPPUNIT_ASSERT_EQUAL(1, (TripletGet<1>::get(x))); CPPUNIT_ASSERT_EQUAL(1, (TupleGet<1>::get(x)));
CPPUNIT_ASSERT_EQUAL((double)3.14, (TripletGet<2>::get(x))); CPPUNIT_ASSERT_EQUAL((double)3.14, (TupleGet<2>::get(x)));
CPPUNIT_ASSERT_EQUAL(std::string("foo"), (TripletGet<3>::get(x))); CPPUNIT_ASSERT_EQUAL(std::string("foo"), (TupleGet<3>::get(x)));
} }
void TripletTest::testTripletNthType() void TripletTest::testTupleNthType()
{ {
TripletNthType<Triplet<int, double, std::string>, 1>::type x = 1; TupleNthType<Triplet<int, double, std::string>, 1>::type x = 1;
CPPUNIT_ASSERT_EQUAL(1, x); CPPUNIT_ASSERT_EQUAL(1, x);
TripletNthType<Triplet<int, double, std::string>, 2>::type y = 3.14; TupleNthType<Triplet<int, double, std::string>, 2>::type y = 3.14;
CPPUNIT_ASSERT_EQUAL((double)3.14, y); CPPUNIT_ASSERT_EQUAL((double)3.14, y);
TripletNthType<Triplet<int, double, std::string>, 3>::type z = "foo"; TupleNthType<Triplet<int, double, std::string>, 3>::type z = "foo";
CPPUNIT_ASSERT_EQUAL(std::string("foo"), z); CPPUNIT_ASSERT_EQUAL(std::string("foo"), z);
} }
void TripletTest::testTriplet2Pair() void TripletTest::testTuple2Pair()
{ {
Triplet<int, double, std::string> x(1, 3.14, "foo"); Triplet<int, double, std::string> x(1, 3.14, "foo");
std::pair<int, double> p1 = Triplet2Pair<1, 2>()(x); std::pair<int, double> p1 = Tuple2Pair<1, 2>()(x);
CPPUNIT_ASSERT_EQUAL(1, p1.first); CPPUNIT_ASSERT_EQUAL(1, p1.first);
CPPUNIT_ASSERT_EQUAL((double)3.14, p1.second); CPPUNIT_ASSERT_EQUAL((double)3.14, p1.second);
std::pair<double, std::string> p2 = Triplet2Pair<2, 3>()(x); std::pair<double, std::string> p2 = Tuple2Pair<2, 3>()(x);
CPPUNIT_ASSERT_EQUAL((double)3.14, p2.first); CPPUNIT_ASSERT_EQUAL((double)3.14, p2.first);
CPPUNIT_ASSERT_EQUAL(std::string("foo"), p2.second); CPPUNIT_ASSERT_EQUAL(std::string("foo"), p2.second);
} }