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

Rewritten TripletNthType.
	* src/Triplet.h
	* test/TripletTest.cc
pull/1/head
Tatsuhiro Tsujikawa 2010-09-26 06:46:12 +00:00
parent aabd7b75f9
commit e07f7207fa
3 changed files with 25 additions and 19 deletions

View File

@ -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.

View File

@ -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));
}
};

View File

@ -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);
}