mirror of https://github.com/aria2/aria2
2010-09-26 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Rewritten TripletNthType. * src/Triplet.h * test/TripletTest.ccpull/1/head
parent
aabd7b75f9
commit
e07f7207fa
|
@ -1,3 +1,9 @@
|
|||
2010-09-26 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||
|
||||
Rewritten TripletNthType.
|
||||
* src/Triplet.h
|
||||
* test/TripletTest.cc
|
||||
|
||||
2010-09-26 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||
|
||||
Sort usedHosts by least used and faster download speed.
|
||||
|
|
|
@ -84,22 +84,22 @@ Triplet<T1, T2, T3> makeTriplet(const T1& t1, const T2& t2, const T3& t3)
|
|||
return Triplet<T1, T2, T3>(t1, t2, t3);
|
||||
}
|
||||
|
||||
template<typename T1, typename T2, typename T3, size_t N>
|
||||
template<typename Triplet, size_t N>
|
||||
struct TripletNthType;
|
||||
|
||||
template<typename T1, typename T2, typename T3>
|
||||
struct TripletNthType<T1, T2, T3, 1> {
|
||||
typedef T1 type;
|
||||
template<typename Triplet>
|
||||
struct TripletNthType<Triplet, 1> {
|
||||
typedef typename Triplet::first_type type;
|
||||
};
|
||||
|
||||
template<typename T1, typename T2, typename T3>
|
||||
struct TripletNthType<T1, T2, T3, 2> {
|
||||
typedef T2 type;
|
||||
template<typename Triplet>
|
||||
struct TripletNthType<Triplet, 2> {
|
||||
typedef typename Triplet::second_type type;
|
||||
};
|
||||
|
||||
template<typename T1, typename T2, typename T3>
|
||||
struct TripletNthType<T1, T2, T3, 3> {
|
||||
typedef T3 type;
|
||||
template<typename Triplet>
|
||||
struct TripletNthType<Triplet, 3> {
|
||||
typedef typename Triplet::third_type type;
|
||||
};
|
||||
|
||||
template<size_t N>
|
||||
|
@ -135,13 +135,13 @@ struct TripletGet<3> {
|
|||
template<size_t N1, size_t N2>
|
||||
class Triplet2Pair {
|
||||
public:
|
||||
template<typename T1, typename T2, typename T3>
|
||||
std::pair<typename TripletNthType<T1, T2, T3, N1>::type,
|
||||
typename TripletNthType<T1, T2, T3, N2>::type>
|
||||
operator()(const Triplet<T1, T2, T3>& tri) const
|
||||
template<typename Triplet>
|
||||
std::pair<typename TripletNthType<Triplet, N1>::type,
|
||||
typename TripletNthType<Triplet, N2>::type>
|
||||
operator()(const Triplet& tri) const
|
||||
{
|
||||
return std::make_pair<typename TripletNthType<T1, T2, T3, N1>::type,
|
||||
typename TripletNthType<T1, T2, T3, N2>::type>
|
||||
return std::make_pair<typename TripletNthType<Triplet, N1>::type,
|
||||
typename TripletNthType<Triplet, N2>::type>
|
||||
(TripletGet<N1>::get(tri), TripletGet<N2>::get(tri));
|
||||
}
|
||||
};
|
||||
|
|
|
@ -54,11 +54,11 @@ void TripletTest::testTripletGet()
|
|||
|
||||
void TripletTest::testTripletNthType()
|
||||
{
|
||||
TripletNthType<int, double, std::string, 1>::type x = 1;
|
||||
TripletNthType<Triplet<int, double, std::string>, 1>::type x = 1;
|
||||
CPPUNIT_ASSERT_EQUAL(1, x);
|
||||
TripletNthType<int, double, std::string, 2>::type y = 3.14;
|
||||
TripletNthType<Triplet<int, double, std::string>, 2>::type y = 3.14;
|
||||
CPPUNIT_ASSERT_EQUAL((double)3.14, y);
|
||||
TripletNthType<int, double, std::string, 3>::type z = "foo";
|
||||
TripletNthType<Triplet<int, double, std::string>, 3>::type z = "foo";
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("foo"), z);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue