[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r4397 - gnuradio/branches/developers/michaelld/tt/gr-t
From: |
michaelld |
Subject: |
[Commit-gnuradio] r4397 - gnuradio/branches/developers/michaelld/tt/gr-trellis/src/lib |
Date: |
Tue, 6 Feb 2007 11:58:05 -0700 (MST) |
Author: michaelld
Date: 2007-02-06 11:58:05 -0700 (Tue, 06 Feb 2007)
New Revision: 4397
Modified:
gnuradio/branches/developers/michaelld/tt/gr-trellis/src/lib/interleaver.cc
gnuradio/branches/developers/michaelld/tt/gr-trellis/src/lib/quicksort_index.cc
gnuradio/branches/developers/michaelld/tt/gr-trellis/src/lib/quicksort_index.h
Log:
Added template instantiation of quicksort_index.
Modified:
gnuradio/branches/developers/michaelld/tt/gr-trellis/src/lib/interleaver.cc
===================================================================
--- gnuradio/branches/developers/michaelld/tt/gr-trellis/src/lib/interleaver.cc
2007-02-06 17:46:37 UTC (rev 4396)
+++ gnuradio/branches/developers/michaelld/tt/gr-trellis/src/lib/interleaver.cc
2007-02-06 18:58:05 UTC (rev 4397)
@@ -97,12 +97,11 @@
d_INTER[i]=i;
tmp[i] = rand();
}
- //quicksort_index <int> (tmp,d_INTER,0,d_K-1); //got to resolve this...
- quicksort_index1 (tmp,d_INTER,0,d_K-1);
+ quicksort_index <int> (tmp,d_INTER,0,d_K-1); //got to resolve this...
+ // quicksort_index1 (tmp,d_INTER,0,d_K-1);
// generate DEINTER table
for(int i=0;i<d_K;i++) {
d_DEINTER[d_INTER[i]]=i;
}
}
-
Modified:
gnuradio/branches/developers/michaelld/tt/gr-trellis/src/lib/quicksort_index.cc
===================================================================
---
gnuradio/branches/developers/michaelld/tt/gr-trellis/src/lib/quicksort_index.cc
2007-02-06 17:46:37 UTC (rev 4396)
+++
gnuradio/branches/developers/michaelld/tt/gr-trellis/src/lib/quicksort_index.cc
2007-02-06 18:58:05 UTC (rev 4397)
@@ -22,45 +22,59 @@
#include "quicksort_index.h"
-template <class T> void SWAP (T & a, T & b)
+template <class T>
+void
+SWAP
+(T & a, T & b)
{
-T temp=a;
-a=b;
-b=temp;
+ T temp = a;
+ a = b;
+ b = temp;
}
-
-// standard quicksorting but also return the indices of the sorted data
-// don't know how to make it work with swig...
-template <class T> void quicksort_index(std::vector<T> & p, std::vector<int> &
index, int left, int right)
+template <class T>
+void
+quicksort_index
+(std::vector<T> & p, std::vector<int> & index, int left, int right)
{
-
-if (left < right) {
+ if (left < right) {
int i = left;
int j = right + 1;
T pivot = p[left];
do {
- do
- i++;
- while ((p[i] < pivot) && (i < right));
- do
- j--;
- while ((p[j] > pivot) && (j > left));
- if (i < j) {
- SWAP <T> (p[i],p[j]);
- SWAP <int> (index[i],index[j]);
- }
+ do
+ i++;
+ while ((p[i] < pivot) && (i < right));
+ do
+ j--;
+ while ((p[j] > pivot) && (j > left));
+ if (i < j) {
+ SWAP <T> (p[i],p[j]);
+ SWAP <int> (index[i],index[j]);
+ }
} while (i < j);
SWAP <T> (p[left], p[j]);
SWAP <int> (index[left], index[j]);
quicksort_index <T> (p,index, left, j-1);
quicksort_index <T> (p,index, j+1, right);
+ }
}
-}
+#if 1
+// instantiate an <int> version of the quicksort_index
+template <int>
+void
+SWAP
+(int & a, int & b);
-// Same as above (only works for int data)
+template
+void
+quicksort_index<int>
+(std::vector<int> & p, std::vector<int> & index, int left, int right);
+
+#else
+
void quicksort_index1(std::vector<int> & p, std::vector<int> & index, int
left, int right)
{
@@ -87,3 +101,4 @@
}
}
+#endif
Modified:
gnuradio/branches/developers/michaelld/tt/gr-trellis/src/lib/quicksort_index.h
===================================================================
---
gnuradio/branches/developers/michaelld/tt/gr-trellis/src/lib/quicksort_index.h
2007-02-06 17:46:37 UTC (rev 4396)
+++
gnuradio/branches/developers/michaelld/tt/gr-trellis/src/lib/quicksort_index.h
2007-02-06 18:58:05 UTC (rev 4397)
@@ -25,8 +25,12 @@
#include <vector>
-template <class T> void SWAP (T & a, T & b);
-template <class T> void quicksort_index(std::vector<T> & p, std::vector<int> &
index, int left, int right);
-void quicksort_index1(std::vector<int> & p, std::vector<int> & index, int
left, int right);
+template <class T>
+void SWAP (T & a, T & b);
+template <class T>
+void quicksort_index (std::vector<T> & p, std::vector<int> & index,
+ int left, int right);
+// void quicksort_index1(std::vector<int> & p, std::vector<int> & index, int
left, int right);
+
#endif
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r4397 - gnuradio/branches/developers/michaelld/tt/gr-trellis/src/lib,
michaelld <=