The following commit has been merged in the master branch:
commit 0f805171017e35a54cf8ba9631b3191a22824e5f
Author: Andrei Zavada <[email protected]>
Date:   Sat Nov 17 23:21:36 2012 +0200

    winfun.hh, to avoid #includ'ing mighty sigproc.hh

diff --git a/src/expdesign/primaries.hh b/src/expdesign/primaries.hh
index 65334e2..f4cba26 100644
--- a/src/expdesign/primaries.hh
+++ b/src/expdesign/primaries.hh
@@ -24,7 +24,7 @@
 #include <stdexcept>
 
 #include "common/config-validate.hh"
-#include "sigproc/sigproc.hh" // for TWinType
+#include "sigproc/winfun.hh"
 #include "model/achermann.hh"
 #include "recording.hh"
 #include "forward-decls.hh"
diff --git a/src/libsigfile/source-base.hh b/src/libsigfile/source-base.hh
index cc60386..343bda2 100644
--- a/src/libsigfile/source-base.hh
+++ b/src/libsigfile/source-base.hh
@@ -15,7 +15,7 @@
 
 #include "common/fs.hh"
 #include "common/alg.hh"
-#include "sigproc/sigproc.hh"
+#include "sigproc/winfun.hh"
 #include "channel.hh"
 
 #if HAVE_CONFIG_H && !defined(VERSION)
diff --git a/src/metrics/psd.hh b/src/metrics/psd.hh
index 0cff6f1..b69a9e4 100644
--- a/src/metrics/psd.hh
+++ b/src/metrics/psd.hh
@@ -18,7 +18,7 @@
 #include <list>
 #include <valarray>
 
-#include "sigproc/sigproc.hh"
+#include "sigproc/winfun.hh"
 #include "forward-decls.hh"
 #include "page-metrics-base.hh"
 
diff --git a/src/sigproc/Makefile.am b/src/sigproc/Makefile.am
index b91c016..a718648 100644
--- a/src/sigproc/Makefile.am
+++ b/src/sigproc/Makefile.am
@@ -7,12 +7,14 @@ noinst_LIBRARIES := liba.a
 liba_a_SOURCES := \
        exstrom.cc exstrom.hh \
        ext-filters.cc ext-filters.hh \
-       sigproc.cc sigproc.hh
+       sigproc.cc sigproc.hh \
+       winfun.cc winfun.hh
 
 if DO_PCH
 BUILT_SOURCES := \
        ext-filters.hh.gch \
        exstrom.hh.gch \
+       winfun.hh.gch \
        sigproc.hh.gch
 %.hh.gch: %.hh
        $(CXXCOMPILE) -c $<
diff --git a/src/sigproc/sigproc.cc b/src/sigproc/sigproc.cc
index 841a12c..3a28440 100644
--- a/src/sigproc/sigproc.cc
+++ b/src/sigproc/sigproc.cc
@@ -19,15 +19,6 @@
 
 using namespace std;
 
-// must match those defined in glade
-const char*
-       sigproc::welch_window_type_names[sigproc::TWinType::_total] = {
-       "Bartlett", "Blackman", "Blackman-Harris",
-       "Hamming",  "Hanning",  "Parzen",
-       "Square",   "Welch"
-};
-
-
 
 template void sigproc::smooth( valarray<TFloat>&, size_t);
 template void sigproc::normalize( valarray<TFloat>&);
@@ -149,118 +140,4 @@ interpolate( const vector<size_t>& xi,
        return out;
 }
 
-
-
-
-
-
-
-
-// window functions
-
-// The following window functions have been taken from fft.c, part of WFDB 
package
-
-#define TWOPI (M_PI*2)
-
-/* See Oppenheim & Schafer, Digital Signal Processing, p. 241 (1st ed.) */
-TFloat
-__attribute__ ((const))
-win_bartlett( size_t j, size_t n)
-{
-       TFloat a = 2.0/(n-1), w;
-       if ( (w = j*a) > 1. )
-               w = 2. - w;
-       return w;
-}
-
-/* See Oppenheim & Schafer, Digital Signal Processing, p. 242 (1st ed.) */
-TFloat
-__attribute__ ((const))
-win_blackman( size_t j, size_t n)
-{
-       TFloat a = TWOPI/(n-1), w;
-       w = 0.42 - .5 * cos(a * j) + .08 * cos(2 * a * j);
-       return w;
-}
-
-/* See Harris, F.J., "On the use of windows for harmonic analysis with the
-   discrete Fourier transform", Proc. IEEE, Jan. 1978 */
-TFloat
-__attribute__ ((const))
-win_blackman_harris( size_t j, size_t n)
-{
-       TFloat a = TWOPI/(n-1), w;
-       w = 0.35875 - 0.48829 * cos(a * j) + 0.14128 * cos(2 * a * j) - 0.01168 
* cos(3 * a * j);
-       return w;
-}
-
-/* See Oppenheim & Schafer, Digital Signal Processing, p. 242 (1st ed.) */
-TFloat
-__attribute__ ((const))
-win_hamming( size_t j, size_t n)
-{
-       TFloat a = TWOPI/(n-1), w;
-       w = 0.54 - 0.46*cos(a*j);
-       return w;
-}
-
-/* See Oppenheim & Schafer, Digital Signal Processing, p. 242 (1st ed.)
-   The second edition of Numerical Recipes calls this the "Hann" window. */
-TFloat
-__attribute__ ((const))
-win_hanning( size_t j, size_t n)
-{
-       TFloat a = TWOPI/(n-1), w;
-       w = 0.5 - 0.5*cos(a*j);
-       return w;
-}
-
-/* See Press, Flannery, Teukolsky, & Vetterling, Numerical Recipes in C,
-   p. 442 (1st ed.) */
-TFloat
-__attribute__ ((const))
-win_parzen( size_t j, size_t n)
-{
-       TFloat a = (n-1)/2.0, w;
-       if ( (w = (j-a)/(a+1)) > 0.0 )
-               w = 1 - w;
-       else
-               w = 1 + w;
-       return w;
-}
-
-/* See any of the above references. */
-TFloat
-__attribute__ ((const))
-win_square( size_t, size_t)
-{
-       return 1.0;
-}
-
-/* See Press, Flannery, Teukolsky, & Vetterling, Numerical Recipes in C,
-   p. 442 (1st ed.) or p. 554 (2nd ed.) */
-TFloat
-__attribute__ ((const))
-win_welch( size_t j, size_t n)
-{
-       TFloat a = (n-1)/2.0, w;
-       w = (j-a)/(a+1);
-       w = 1 - w*w;
-       return w;
-}
-
-
-
-TFloat (*sigproc::winf[])(size_t, size_t) = {
-       win_bartlett,
-       win_blackman,
-       win_blackman_harris,
-       win_hamming,
-       win_hanning,
-       win_parzen,
-       win_square,
-       win_welch
-};
-
-
 // eof
diff --git a/src/sigproc/sigproc.hh b/src/sigproc/sigproc.hh
index 441f26e..f658265 100644
--- a/src/sigproc/sigproc.hh
+++ b/src/sigproc/sigproc.hh
@@ -31,25 +31,6 @@ using namespace std;
 
 namespace sigproc {
 
-enum TWinType : int {
-       bartlett,
-       blackman,
-       blackman_harris,
-       hamming,
-       hanning,
-       parzen,
-       square,
-       welch,
-       _total
-};
-
-extern const char*
-       welch_window_type_names[TWinType::_total];
-
-
-extern TFloat (*winf[])(size_t, size_t);
-
-
 template <typename T>
 void
 smooth( valarray<T>&, size_t side);
diff --git a/src/sigproc/winfun.cc b/src/sigproc/winfun.cc
new file mode 100644
index 0000000..77282ff
--- /dev/null
+++ b/src/sigproc/winfun.cc
@@ -0,0 +1,136 @@
+// ;-*-C++-*-
+/*
+ *       File name:  sigproc/winfun.cc
+ *         Project:  Aghermann
+ *          Author:  Andrei Zavada <[email protected]>
+ * Initial version:  2011-11-17
+ *
+ *         Purpose:  windowing functions
+ *
+ *         License:  GPL
+ */
+
+#include <cmath>
+#include "winfun.hh"
+
+#if HAVE_CONFIG_H && !defined(VERSION)
+#  include "config.h"
+#endif
+
+using namespace std;
+
+// must match those defined in glade
+const char*
+       sigproc::welch_window_type_names[sigproc::TWinType::_total] = {
+       "Bartlett", "Blackman", "Blackman-Harris",
+       "Hamming",  "Hanning",  "Parzen",
+       "Square",   "Welch"
+};
+
+
+// The following window functions have been taken from fft.c, part of WFDB 
package
+
+#define TWOPI (M_PI*2)
+
+/* See Oppenheim & Schafer, Digital Signal Processing, p. 241 (1st ed.) */
+TFloat
+__attribute__ ((const))
+win_bartlett( size_t j, size_t n)
+{
+       TFloat a = 2.0/(n-1), w;
+       if ( (w = j*a) > 1. )
+               w = 2. - w;
+       return w;
+}
+
+/* See Oppenheim & Schafer, Digital Signal Processing, p. 242 (1st ed.) */
+TFloat
+__attribute__ ((const))
+win_blackman( size_t j, size_t n)
+{
+       TFloat a = TWOPI/(n-1), w;
+       w = 0.42 - .5 * cos(a * j) + .08 * cos(2 * a * j);
+       return w;
+}
+
+/* See Harris, F.J., "On the use of windows for harmonic analysis with the
+   discrete Fourier transform", Proc. IEEE, Jan. 1978 */
+TFloat
+__attribute__ ((const))
+win_blackman_harris( size_t j, size_t n)
+{
+       TFloat a = TWOPI/(n-1), w;
+       w = 0.35875 - 0.48829 * cos(a * j) + 0.14128 * cos(2 * a * j) - 0.01168 
* cos(3 * a * j);
+       return w;
+}
+
+/* See Oppenheim & Schafer, Digital Signal Processing, p. 242 (1st ed.) */
+TFloat
+__attribute__ ((const))
+win_hamming( size_t j, size_t n)
+{
+       TFloat a = TWOPI/(n-1), w;
+       w = 0.54 - 0.46*cos(a*j);
+       return w;
+}
+
+/* See Oppenheim & Schafer, Digital Signal Processing, p. 242 (1st ed.)
+   The second edition of Numerical Recipes calls this the "Hann" window. */
+TFloat
+__attribute__ ((const))
+win_hanning( size_t j, size_t n)
+{
+       TFloat a = TWOPI/(n-1), w;
+       w = 0.5 - 0.5*cos(a*j);
+       return w;
+}
+
+/* See Press, Flannery, Teukolsky, & Vetterling, Numerical Recipes in C,
+   p. 442 (1st ed.) */
+TFloat
+__attribute__ ((const))
+win_parzen( size_t j, size_t n)
+{
+       TFloat a = (n-1)/2.0, w;
+       if ( (w = (j-a)/(a+1)) > 0.0 )
+               w = 1 - w;
+       else
+               w = 1 + w;
+       return w;
+}
+
+/* See any of the above references. */
+TFloat
+__attribute__ ((const))
+win_square( size_t, size_t)
+{
+       return 1.0;
+}
+
+/* See Press, Flannery, Teukolsky, & Vetterling, Numerical Recipes in C,
+   p. 442 (1st ed.) or p. 554 (2nd ed.) */
+TFloat
+__attribute__ ((const))
+win_welch( size_t j, size_t n)
+{
+       TFloat a = (n-1)/2.0, w;
+       w = (j-a)/(a+1);
+       w = 1 - w*w;
+       return w;
+}
+
+
+
+TFloat (*sigproc::winf[])(size_t, size_t) = {
+       win_bartlett,
+       win_blackman,
+       win_blackman_harris,
+       win_hamming,
+       win_hanning,
+       win_parzen,
+       win_square,
+       win_welch
+};
+
+
+// eof
diff --git a/src/sigproc/winfun.hh b/src/sigproc/winfun.hh
new file mode 100644
index 0000000..920c4be
--- /dev/null
+++ b/src/sigproc/winfun.hh
@@ -0,0 +1,46 @@
+// ;-*-C++-*-
+/*
+ *       File name:  sigproc/winfun.hh
+ *         Project:  Aghermann
+ *          Author:  Andrei Zavada <[email protected]>
+ * Initial version:  2012-11-17
+ *
+ *         Purpose:  windowing functions
+ *
+ *         License:  GPL
+ */
+
+#ifndef _SIGPROC_WINFUN_H
+#define _SIGPROC_WINFUN_H
+
+#if HAVE_CONFIG_H && !defined(VERSION)
+#  include "config.h"
+#endif
+
+using namespace std;
+
+namespace sigproc {
+
+enum TWinType {
+       bartlett,
+       blackman,
+       blackman_harris,
+       hamming,
+       hanning,
+       parzen,
+       square,
+       welch,
+       _total
+};
+
+extern const char*
+       welch_window_type_names[TWinType::_total];
+
+extern TFloat (*winf[])(size_t, size_t);
+
+} // namespace sigproc
+
+
+#endif
+
+// eof
diff --git a/src/ui/sf/sf.hh b/src/ui/sf/sf.hh
index ecdf85b..0dd9d17 100644
--- a/src/ui/sf/sf.hh
+++ b/src/ui/sf/sf.hh
@@ -18,7 +18,7 @@
 #include <gtk/gtk.h>
 
 #include "common/config-validate.hh"
-#include "sigproc/sigproc.hh"
+#include "sigproc/winfun.hh"
 #include "metrics/page-metrics-base.hh"
 #include "expdesign/primaries.hh"
 #include "ica/ica.hh"

-- 
Sleep experiment manager

_______________________________________________
debian-med-commit mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-commit

Reply via email to