This is an automated email from the git hooks/post-receive script. hmmr-guest pushed a commit to branch master in repository aghermann.
commit 3f90c126109fc86be576349dd9d77cefcf567480 Author: Andrei Zavada <[email protected]> Date: Sat Sep 7 16:09:41 2013 +0300 ICM --- upstream/src/aghermann/ica/Makefile.am | 1 + upstream/src/aghermann/ica/forward-decls.hh | 28 ++++++++++ upstream/src/aghermann/patterns/patterns.cc | 8 +-- upstream/src/aghermann/patterns/patterns.hh | 2 +- upstream/src/aghermann/ui/sf/channel.hh | 3 +- .../ui/sf/d/artifacts-simple-construct.cc | 2 +- upstream/src/aghermann/ui/sf/d/artifacts-simple.cc | 4 +- upstream/src/aghermann/ui/sf/d/artifacts.cc | 40 +++++++------- upstream/src/aghermann/ui/sf/d/artifacts.hh | 8 +-- upstream/src/aghermann/ui/sf/ica_cb.cc | 2 +- upstream/src/aghermann/ui/sf/sf.cc | 57 ++++++++++++-------- upstream/src/aghermann/ui/sf/sf.hh | 12 +---- upstream/src/aghermann/ui/sf/widgets.hh | 3 +- upstream/src/libsigproc/Makefile.am | 1 + upstream/src/libsigproc/forward-decls.hh | 34 ++++++++++++ upstream/src/libsigproc/sigproc.hh | 54 +++++++++---------- 16 files changed, 164 insertions(+), 95 deletions(-) diff --git a/upstream/src/aghermann/ica/Makefile.am b/upstream/src/aghermann/ica/Makefile.am index fbb50e6..ae814a6 100644 --- a/upstream/src/aghermann/ica/Makefile.am +++ b/upstream/src/aghermann/ica/Makefile.am @@ -3,4 +3,5 @@ AM_CXXFLAGS := \ -I$(top_srcdir)/src EXTRA_DIST := \ + forward-decls.hh \ ica.hh diff --git a/upstream/src/aghermann/ica/forward-decls.hh b/upstream/src/aghermann/ica/forward-decls.hh new file mode 100644 index 0000000..6f92206 --- /dev/null +++ b/upstream/src/aghermann/ica/forward-decls.hh @@ -0,0 +1,28 @@ +/* + * File name: aghermann/ica/forward-decls.hh + * Project: Aghermann + * Author: Andrei Zavada <[email protected]> + * Initial version: 2013-09-07 + * + * Purpose: + * + * License: GPL + */ + +#ifndef AGH_ICA_FORWARD_DECLS_H_ +#define AGH_ICA_FORWARD_DECLS_H_ + +namespace ica { + +class CFastICA; + +} + +#endif + +// Local Variables: +// Mode: c++ +// indent-tabs-mode: nil +// tab-width: 8 +// c-basic-offset: 8 +// End: diff --git a/upstream/src/aghermann/patterns/patterns.cc b/upstream/src/aghermann/patterns/patterns.cc index f0e6146..2ca84b3 100644 --- a/upstream/src/aghermann/patterns/patterns.cc +++ b/upstream/src/aghermann/patterns/patterns.cc @@ -47,8 +47,8 @@ load_pattern( const char* fname) throw(invalid_argument) FILE *fd = fopen( fname, "r"); if ( fd ) { - size_t full_sample; - double t1, t2, t3, t4; + size_t full_sample; + double t1, t2, t3, t4; if ( fscanf( fd, "%lg %u %lg %lg %lg %lg %u" " %lg %lg %lg %lg" @@ -185,7 +185,7 @@ load_patterns_from_location<TFloat>( const string& loc, pattern::TOrigin origin) ret; struct dirent **eps; - int total = scandir( loc.c_str(), &eps, scandir_filter, alphasort); + int total = scandir( loc.c_str(), &eps, scandir_filter, alphasort); if ( total != -1 ) { for ( int i = 0; i < total; ++i ) { @@ -201,7 +201,7 @@ load_patterns_from_location<TFloat>( const string& loc, pattern::TOrigin origin) free( (void*)eps); } - return ret; + return move(ret); } diff --git a/upstream/src/aghermann/patterns/patterns.hh b/upstream/src/aghermann/patterns/patterns.hh index 87b512d..d412864 100644 --- a/upstream/src/aghermann/patterns/patterns.hh +++ b/upstream/src/aghermann/patterns/patterns.hh @@ -140,7 +140,7 @@ class CPatternTool size_t ctx_before, ctx_after; - T crit_linear_unity; + T crit_linear_unity; double crit_dzcdf_unity; }; diff --git a/upstream/src/aghermann/ui/sf/channel.hh b/upstream/src/aghermann/ui/sf/channel.hh index 1a581ca..eb2b52d 100644 --- a/upstream/src/aghermann/ui/sf/channel.hh +++ b/upstream/src/aghermann/ui/sf/channel.hh @@ -20,7 +20,7 @@ #include "common/alg.hh" #include "common/config-validate.hh" -#include "libsigproc/sigproc.hh" +#include "libsigproc/forward-decls.hh" #include "libsigfile/forward-decls.hh" #include "libmetrics/mc-artifacts.hh" #include "libmetrics/page-metrics-base.hh" @@ -28,7 +28,6 @@ #include "aghermann/patterns/forward-decls.hh" #include "aghermann/expdesign/forward-decls.hh" #include "aghermann/expdesign/recording.hh" -// #include "aghermann/ui/ui++.hh" #include "sf.hh" diff --git a/upstream/src/aghermann/ui/sf/d/artifacts-simple-construct.cc b/upstream/src/aghermann/ui/sf/d/artifacts-simple-construct.cc index ea53f47..2b72c74 100644 --- a/upstream/src/aghermann/ui/sf/d/artifacts-simple-construct.cc +++ b/upstream/src/aghermann/ui/sf/d/artifacts-simple-construct.cc @@ -2,7 +2,7 @@ * File name: aghermann/ui/sf/d/artifacts-simple-construct.cc * Project: Aghermann * Author: Andrei Zavada <[email protected]> - * Initial version: 2013-10-25 + * Initial version: 2012-10-25 * * Purpose: scoring facility Artifacts Simple (flat signal detection) construct * diff --git a/upstream/src/aghermann/ui/sf/d/artifacts-simple.cc b/upstream/src/aghermann/ui/sf/d/artifacts-simple.cc index e58203d..8c86525 100644 --- a/upstream/src/aghermann/ui/sf/d/artifacts-simple.cc +++ b/upstream/src/aghermann/ui/sf/d/artifacts-simple.cc @@ -30,8 +30,8 @@ SArtifactsSimpleDialog (SScoringFacility& p_) pad (), _p (p_) { - W_V.reg( eSFADSMinFlatRegionSize, &min_size); - W_V.reg( eSFADSPad, &pad); + W_V.reg( eSFADSMinFlatRegionSize, &min_size); + W_V.reg( eSFADSPad, &pad); } diff --git a/upstream/src/aghermann/ui/sf/d/artifacts.cc b/upstream/src/aghermann/ui/sf/d/artifacts.cc index e39a119..fe8cfec 100644 --- a/upstream/src/aghermann/ui/sf/d/artifacts.cc +++ b/upstream/src/aghermann/ui/sf/d/artifacts.cc @@ -30,21 +30,21 @@ SArtifactsDialog (SScoringFacility& p_) : using_channel (nullptr), _p (p_) { - W_V.reg( eSFADScope, &P.scope); - W_V.reg( eSFADUpperThr, &P.upper_thr); - W_V.reg( eSFADLowerThr, &P.lower_thr); - W_V.reg( eSFADF0, &P.f0); - W_V.reg( eSFADFc, &P.fc); - W_V.reg( eSFADBandwidth, &P.bandwidth); - W_V.reg( eSFADMCGain, &P.mc_gain); - W_V.reg( eSFADBackpolate, &P.iir_backpolate); - W_V.reg( eSFADEstimateE, &P.estimate_E); - W_V.reg( eSFADEValue, &P.E); - W_V.reg( eSFADHistRangeMin, &P.dmin); - W_V.reg( eSFADHistRangeMax, &P.dmax); - W_V.reg( eSFADHistBins, (int*)&P.sssu_hist_size); - W_V.reg( eSFADSmoothSide, (int*)&P.smooth_side); - W_V.reg( eSFADUseThisRange, &P.use_range); + W_V.reg( eSFADScope, &P.scope); + W_V.reg( eSFADUpperThr, &P.upper_thr); + W_V.reg( eSFADLowerThr, &P.lower_thr); + W_V.reg( eSFADF0, &P.f0); + W_V.reg( eSFADFc, &P.fc); + W_V.reg( eSFADBandwidth, &P.bandwidth); + W_V.reg( eSFADMCGain, &P.mc_gain); + W_V.reg( eSFADBackpolate, &P.iir_backpolate); + W_V.reg( eSFADEstimateE, &P.estimate_E); + W_V.reg( eSFADEValue, &P.E); + W_V.reg( eSFADHistRangeMin, &P.dmin); + W_V.reg( eSFADHistRangeMax, &P.dmax); + W_V.reg( eSFADHistBins, (int*)&P.sssu_hist_size); + W_V.reg( eSFADSmoothSide, (int*)&P.smooth_side); + W_V.reg( eSFADUseThisRange, &P.use_range); populate_mSFADProfiles(); } @@ -61,10 +61,12 @@ populate_mSFADProfiles() gtk_list_store_clear( mSFADProfiles); for ( auto &P : _p._p.global_artifact_detection_profiles ) { GtkTreeIter iter; - gtk_list_store_append( mSFADProfiles, &iter); - gtk_list_store_set( mSFADProfiles, &iter, - 0, P.first.c_str(), - -1); + gtk_list_store_append( + mSFADProfiles, &iter); + gtk_list_store_set( + mSFADProfiles, &iter, + 0, P.first.c_str(), + -1); } gtk_combo_box_set_model( eSFADProfiles, (GtkTreeModel*)mSFADProfiles); g_signal_handler_unblock( eSFADProfiles, eSFADProfiles_changed_cb_handler_id); diff --git a/upstream/src/aghermann/ui/sf/d/artifacts.hh b/upstream/src/aghermann/ui/sf/d/artifacts.hh index a780508..d2cf7e3 100644 --- a/upstream/src/aghermann/ui/sf/d/artifacts.hh +++ b/upstream/src/aghermann/ui/sf/d/artifacts.hh @@ -43,7 +43,7 @@ struct SArtifactsDialogWidgets { *mSFADProfiles; GtkComboBox *eSFADProfiles; - gulong eSFADProfiles_changed_cb_handler_id; + gulong eSFADProfiles_changed_cb_handler_id; GtkButton *bSFADProfileSave, *bSFADProfileDelete; @@ -97,10 +97,10 @@ struct SScoringFacility::SArtifactsDialog P; sigfile::SArtifacts artifacts_backup; - bool orig_signal_visible_backup; + bool orig_signal_visible_backup; list<pair<SScoringFacility::SChannel*, bool>> channels_visible_backup; - bool suppress_preview_handler; + bool suppress_preview_handler; SUIVarCollection W_V; @@ -129,7 +129,7 @@ void bSFADApply_clicked_cb( GtkButton*, gpointer); void bSFADCancel_clicked_cb( GtkButton*, gpointer); } -#endif // _AGH_UI_SF_D_ARTIFACTS_H +#endif // Local Variables: // indent-tabs-mode: nil diff --git a/upstream/src/aghermann/ui/sf/ica_cb.cc b/upstream/src/aghermann/ui/sf/ica_cb.cc index 1cece9a..5d5a28e 100644 --- a/upstream/src/aghermann/ui/sf/ica_cb.cc +++ b/upstream/src/aghermann/ui/sf/ica_cb.cc @@ -9,8 +9,8 @@ * License: GPL */ +#include "aghermann/ica/ica.hh" #include "aghermann/ui/misc.hh" - #include "sf.hh" #include "widgets.hh" diff --git a/upstream/src/aghermann/ui/sf/sf.cc b/upstream/src/aghermann/ui/sf/sf.cc index 861ff73..ea3fc1e 100644 --- a/upstream/src/aghermann/ui/sf/sf.cc +++ b/upstream/src/aghermann/ui/sf/sf.cc @@ -15,9 +15,11 @@ #include "common/config-validate.hh" #include "common/fs.hh" #include "libmetrics/bands.hh" +#include "aghermann/ica/ica.hh" #include "aghermann/expdesign/subject.hh" #include "aghermann/ui/misc.hh" #include "aghermann/ui/mw/mw.hh" + #include "channel.hh" #include "sf.hh" #include "sf_cb.hh" @@ -78,17 +80,17 @@ SScoringFacility (agh::CSubject& J, interchannel_gap (IntersignalSpace), n_hidden (0), config_keys_b ({ - SValidator<bool>("show_cur_pos_time_relative", &show_cur_pos_time_relative), - SValidator<bool>("draw.crosshair", &draw_crosshair), - SValidator<bool>("draw.alt_hypnogram", &alt_hypnogram), + SValidator<bool>("show_cur_pos_time_relative", &show_cur_pos_time_relative), + SValidator<bool>("draw.crosshair", &draw_crosshair), + SValidator<bool>("draw.alt_hypnogram", &alt_hypnogram), }), config_keys_d ({ - SValidator<int>("cur_vpage", (int*)&_cur_vpage, SValidator<int>::SVFRangeIn (0, INT_MAX)), - SValidator<int>("pagesize_item", (int*)&pagesize_item, SValidator<int>::SVFRangeIn (0, DisplayPageSizeValues.size()-1)), + SValidator<int>("cur_vpage", (int*)&_cur_vpage, SValidator<int>::SVFRangeIn (0, INT_MAX)), + SValidator<int>("pagesize_item", (int*)&pagesize_item, SValidator<int>::SVFRangeIn (0, DisplayPageSizeValues.size()-1)), }), config_keys_g ({ - SValidator<float>("montage.interchannel_gap", &interchannel_gap, SValidator<float>::SVFRangeIn (0., 400.)), - SValidator<float>("montage.height", &da_ht, SValidator<float>::SVFRangeIn (10., 4000.)), + SValidator<float>("montage.interchannel_gap", &interchannel_gap, SValidator<float>::SVFRangeIn (0., 400.)), + SValidator<float>("montage.height", &da_ht, SValidator<float>::SVFRangeIn (10., 4000.)), }), _patterns_d (nullptr), _filters_d (nullptr), @@ -108,8 +110,8 @@ SScoringFacility (agh::CSubject& J, // add channels, EEGs first, then EOG, EMG, then the rest { - size_t y = interchannel_gap / 2.; - int seq = 1; + size_t y = interchannel_gap / 2.; + int seq = 1; for ( auto &H : _sepisode.recordings ) if ( H.second.signal_type() == sigfile::SChannel::TType::eeg ) { _p.sb_message( snprintf_buf( "Reading and processing EEG channel %s ...", H.first.c_str())); @@ -218,12 +220,14 @@ SScoringFacility (agh::CSubject& J, // g_object_set( (GObject*)cSFSleepStageStats, // "width-request", settings::WidgetSize_SFSpectrumWidth, // NULL); - g_object_set( (GObject*)daSFHypnogram, - "height-request", HypnogramHeight, - NULL); - g_object_set( (GObject*)daSFMontage, - "height-request", (int)da_ht, - NULL); + g_object_set( + (GObject*)daSFHypnogram, + "height-request", HypnogramHeight, + NULL); + g_object_set( + (GObject*)daSFMontage, + "height-request", (int)da_ht, + NULL); // set tooltip set_tooltip( TTipIdx::scoring_mode); @@ -391,7 +395,7 @@ operator[]( const string& ch) { auto iter = find( channels.begin(), channels.end(), ch); if ( unlikely (iter == channels.end()) ) - throw invalid_argument( string ("SScoringFacility::operator[]: bad channel: ") + ch); + throw invalid_argument( "SScoringFacility::operator[]: bad channel"); return *iter; } @@ -402,7 +406,7 @@ channel_by_idx( size_t i) for ( auto &H : channels ) if ( i-- == 0 ) return H; - throw invalid_argument( string ("SScoringFacility::operator[]: bad channel idx: ") + to_string(i)); + throw invalid_argument( "SScoringFacility::operator[]: bad channel idx"); } @@ -432,6 +436,14 @@ channel_near( const int y) +size_t +SScoringFacility:: +n_ics() const +{ + return ica->obj() . get_nrof_independent_components(); +} + + void SScoringFacility:: @@ -491,8 +503,9 @@ calculate_scored_percent() SPage::score_code(SPage::TScore::wake)) / hypnogram.size() * 100; scored_percent = - 100. - (float)count( hypnogram.begin(), hypnogram.end(), - SPage::score_code(SPage::TScore::none)) / hypnogram.size() * 100; + 100. - count( + hypnogram.begin(), hypnogram.end(), + SPage::score_code(SPage::TScore::none)) / hypnogram.size() * 100; } @@ -619,8 +632,8 @@ bool SScoringFacility:: page_has_annotations( const size_t p, const SChannel& H) const { - int half_pad_samples = skirting_run_per1 * vpagesize() * H.samplerate(); - int cvpa = p * pagesize() * H.samplerate() - half_pad_samples, + int half_pad_samples = skirting_run_per1 * vpagesize() * H.samplerate(); + int cvpa = p * pagesize() * H.samplerate() - half_pad_samples, cvpe = (p+1) * pagesize() * H.samplerate() + half_pad_samples; for ( auto &A : H.annotations ) if ( agh::alg::overlap( (int)A.span.a, (int)A.span.z, cvpa, cvpe) ) @@ -657,7 +670,7 @@ draw_current_pos( const double x) const { static const time_t epoch_clockhour = 3 * 60 * 60; if ( isfinite(x) ) { - double clickt = time_at_click( x); + double clickt = time_at_click( x); if ( likely (clickt > 0.) ) { time_t time_at_cur_pos = (time_t)(clickt + (show_cur_pos_time_relative ? -epoch_clockhour : start_time())); diff --git a/upstream/src/aghermann/ui/sf/sf.hh b/upstream/src/aghermann/ui/sf/sf.hh index f698962..0523f42 100644 --- a/upstream/src/aghermann/ui/sf/sf.hh +++ b/upstream/src/aghermann/ui/sf/sf.hh @@ -20,12 +20,10 @@ #include "common/alg.hh" #include "common/config-validate.hh" -//#include "libsigproc/winfun.hh" -//#include "libsigproc/sigproc.hh" #include "libsigfile/page.hh" #include "libsigfile/forward-decls.hh" #include "aghermann/expdesign/forward-decls.hh" -#include "aghermann/ica/ica.hh" +#include "aghermann/ica/forward-decls.hh" #include "aghermann/ui/globals.hh" #include "aghermann/ui/ui++.hh" //#include "aghermann/ui/mw/mw.hh" @@ -437,14 +435,6 @@ set_vpagesize( size_t seconds, bool touch_self) -inline size_t -SScoringFacility:: -n_ics() const -{ - return ica->obj() . get_nrof_independent_components(); -} - - template <class T> float diff --git a/upstream/src/aghermann/ui/sf/widgets.hh b/upstream/src/aghermann/ui/sf/widgets.hh index c4f0099..8567119 100644 --- a/upstream/src/aghermann/ui/sf/widgets.hh +++ b/upstream/src/aghermann/ui/sf/widgets.hh @@ -82,7 +82,7 @@ struct SScoringFacilityWidgets { *lSFPercentScored; GtkStatusbar *sbSF; - guint sbSFContextIdGeneral; + guint sbSFContextIdGeneral; // 2. ICA mode GtkComboBox @@ -186,6 +186,7 @@ struct SScoringFacilityWidgets { *iSFPageProfilesSubmenuSeparator; // more important dialogs + // all now live in d/ // less important dialogs GtkDialog diff --git a/upstream/src/libsigproc/Makefile.am b/upstream/src/libsigproc/Makefile.am index 2023ed8..15948da 100644 --- a/upstream/src/libsigproc/Makefile.am +++ b/upstream/src/libsigproc/Makefile.am @@ -6,6 +6,7 @@ pkglib_LTLIBRARIES := \ libsigproc.la libsigproc_la_SOURCES := \ + forward-decls.hh \ exstrom.cc exstrom.hh \ ext-filters.cc ext-filters.hh ext-filters.ii \ sigproc.cc sigproc.hh sigproc.ii \ diff --git a/upstream/src/libsigproc/forward-decls.hh b/upstream/src/libsigproc/forward-decls.hh new file mode 100644 index 0000000..5e067f3 --- /dev/null +++ b/upstream/src/libsigproc/forward-decls.hh @@ -0,0 +1,34 @@ +/* + * File name: libsigproc/forward-decls.hh + * Project: Aghermann + * Author: Andrei Zavada <[email protected]> + * Initial version: 2013-09-07 + * + * Purpose: + * + * License: GPL + */ + +#ifndef AGH_LIBSIGPROC_FORWARD_DECLS_H_ +#define AGH_LIBSIGPROC_FORWARD_DECLS_H_ + +namespace sigproc { + +template <typename T> struct SSignalRef; + +template <typename T> struct SCachedEnvelope; +template <typename T> struct SCachedDzcdf; +template <typename T> struct SCachedLowPassCourse; +template <typename T> struct SCachedBandPassCourse; + +} // namespace sigproc + + +#endif + +// Local Variables: +// Mode: c++ +// indent-tabs-mode: nil +// tab-width: 8 +// c-basic-offset: 8 +// End: diff --git a/upstream/src/libsigproc/sigproc.hh b/upstream/src/libsigproc/sigproc.hh index 7a1e853..4e7e1d6 100644 --- a/upstream/src/libsigproc/sigproc.hh +++ b/upstream/src/libsigproc/sigproc.hh @@ -60,7 +60,7 @@ resample( const valarray<float>& signal, int alg = SRC_SINC_FASTEST) { return move( - resample_f( signal, start, end, to_size, alg)); + resample_f( signal, start, end, to_size, alg)); } valarray<double> @@ -88,7 +88,7 @@ template <typename T> struct SSignalRef { const valarray<T>& signal; - size_t samplerate; + size_t samplerate; }; @@ -115,9 +115,9 @@ raw_signal_profile( const SSignalRef<T>& sigref, env_u, env_l; envelope( - sigref, - env_dh, env_dt, - &env_l, &env_u); + sigref, + env_dh, env_dt, + &env_l, &env_u); ret.resize( env_l.size()); ret = env_u - env_l; @@ -151,51 +151,51 @@ struct SCachedEnvelope if ( lower.size() == 0 || scope != scope_ ) { envelope( - (SSignalRef<T>)*this, - scope = scope_, - 1./SSignalRef<T>::samplerate, - &lower, - &upper); // don't need anchor points, nor their count + (SSignalRef<T>)*this, + scope = scope_, + 1./SSignalRef<T>::samplerate, + &lower, + &upper); // don't need anchor points, nor their count mid.resize( lower.size()); mid = (upper + lower)/2; } return {lower, upper}; } void - drop() + drop() { upper.resize(0); lower.resize(0); } T - breadth( double scope_, size_t i) + breadth( double scope_, size_t i) { operator()( scope_); return upper[i] - lower[i]; } valarray<T> - breadth( double scope_) + breadth( double scope_) { operator()( scope_); return move(upper - lower); } T - centre( double scope_, size_t i) + centre( double scope_, size_t i) { operator()( scope_); return mid[i]; } valarray<T> - centre( double scope_) + centre( double scope_) { operator()( scope_); return move(mid); } private: - double scope; + double scope; valarray<T> upper, mid, @@ -223,12 +223,12 @@ struct SCachedDzcdf } void - drop() + drop() { data.resize(0); } private: - double step, + double step, sigma; unsigned smooth; @@ -250,19 +250,19 @@ struct SCachedLowPassCourse if ( data.size() == 0 || fcutoff != fcutoff_ || order != order_ ) data = exstrom::low_pass( - SSignalRef<T>::signal, SSignalRef<T>::samplerate, - fcutoff = fcutoff_, order = order_, - true); + SSignalRef<T>::signal, SSignalRef<T>::samplerate, + fcutoff = fcutoff_, order = order_, + true); return data; } void - drop() + drop() { data.resize(0); } private: - double fcutoff; + double fcutoff; unsigned order; valarray<TFloat> @@ -283,9 +283,9 @@ struct SCachedBandPassCourse if ( data.size() == 0 || ffrom != ffrom_ || fupto != fupto_ || order != order_ ) data = exstrom::band_pass( - SSignalRef<T>::signal, SSignalRef<T>::samplerate, - ffrom = ffrom_, fupto = fupto_, order = order_, - true); + SSignalRef<T>::signal, SSignalRef<T>::samplerate, + ffrom = ffrom_, fupto = fupto_, order = order_, + true); return data; } void drop() @@ -294,7 +294,7 @@ struct SCachedBandPassCourse } private: - double ffrom, fupto; + double ffrom, fupto; unsigned order; valarray<TFloat> -- Alioth's /git/debian-med/git-commit-notice on /srv/git.debian.org/git/debian-med/aghermann.git _______________________________________________ debian-med-commit mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-commit
