Kaynağa Gözat

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

	Rewritten TripletNthType.
	* src/Triplet.h
	* test/TripletTest.cc
Tatsuhiro Tsujikawa 15 yıl önce
ebeveyn
işleme
e07f7207fa
3 değiştirilmiş dosya ile 25 ekleme ve 19 silme
  1. 6 0
      ChangeLog
  2. 16 16
      src/Triplet.h
  3. 3 3
      test/TripletTest.cc

+ 6 - 0
ChangeLog

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

+ 16 - 16
src/Triplet.h

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

+ 3 - 3
test/TripletTest.cc

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