[med-svn] [aghermann] 23/85: WIP

andrei zavada hmmr-guest at alioth.debian.org
Thu Sep 26 23:46:25 UTC 2013


This is an automated email from the git hooks/post-receive script.

hmmr-guest pushed a commit to branch master
in repository aghermann.

commit ab9ede1b4bfb5021840a66046fe10f809f80af48
Author: Andrei Zavada <johnhommer at gmail.com>
Date:   Fri Sep 13 19:38:56 2013 +0300

    WIP
---
 upstream/src/aghermann/expdesign/dirlevel.cc       |   10 ++++
 upstream/src/aghermann/expdesign/dirlevel.hh       |   10 ++++
 upstream/src/aghermann/expdesign/expdesign.hh      |   38 +++++++++++++++
 upstream/src/aghermann/patterns/patterns.cc        |   42 -----------------
 upstream/src/aghermann/patterns/patterns.hh        |   49 +++-----------------
 upstream/src/aghermann/rk1968/rk1968-profiles.cc   |   41 ----------------
 upstream/src/aghermann/rk1968/rk1968.cc            |    6 +--
 upstream/src/aghermann/rk1968/rk1968.hh            |    6 +--
 .../src/aghermann/ui/sf/d/patterns-profiles.cc     |    7 ++-
 .../src/aghermann/ui/sf/d/patterns-profiles_cb.cc  |   19 ++------
 upstream/src/aghermann/ui/sf/d/rk1968-profiles.cc  |    2 +-
 11 files changed, 79 insertions(+), 151 deletions(-)

diff --git a/upstream/src/aghermann/expdesign/dirlevel.cc b/upstream/src/aghermann/expdesign/dirlevel.cc
index ffee6fd..c6b44e2 100644
--- a/upstream/src/aghermann/expdesign/dirlevel.cc
+++ b/upstream/src/aghermann/expdesign/dirlevel.cc
@@ -10,6 +10,7 @@
  */
 
 
+#include <dirent.h>
 #include <errno.h>
 #include <string>
 
@@ -21,6 +22,15 @@
 using namespace std;
 using namespace agh;
 
+
+int
+simple_scandir_filter( const struct dirent *e)
+{
+        return strcmp( e->d_name, ".") && strcmp( e->d_name, "..");
+}
+
+
+
 const char*
 agh::
 exp_dir_level_s( TExpDirLevel x)
diff --git a/upstream/src/aghermann/expdesign/dirlevel.hh b/upstream/src/aghermann/expdesign/dirlevel.hh
index 7458255..ac3fa85 100644
--- a/upstream/src/aghermann/expdesign/dirlevel.hh
+++ b/upstream/src/aghermann/expdesign/dirlevel.hh
@@ -15,6 +15,8 @@
 #define AGH_AGHERMANN_EXPDESIGN_DIRLEVEL_H_
 
 
+#include <dirent.h>
+
 #include <string>
 #include <forward_list>
 
@@ -85,6 +87,14 @@ class CStorablePPack {
         forward_list<confval::SValidator<string>>        config_keys_s;
 };
 
+
+
+
+int simple_scandir_filter( const struct dirent*);
+
+
+
+
 } // namespace agh
 
 #endif
diff --git a/upstream/src/aghermann/expdesign/expdesign.hh b/upstream/src/aghermann/expdesign/expdesign.hh
index 0e2d50d..156a173 100644
--- a/upstream/src/aghermann/expdesign/expdesign.hh
+++ b/upstream/src/aghermann/expdesign/expdesign.hh
@@ -323,6 +323,44 @@ const char* CExpDesign::group_of( const T& jid)
 }
 
 
+
+template <class T, class... Args>
+list<T>
+load_profiles_from_location( agh::TExpDirLevel level, agh::CExpDesign& ED, const agh::SExpDirLevelId& level_id,
+                             Args... args)
+{
+        list<T> ret;
+
+        string location = ED.make_dirname( level, level_id);
+
+        struct dirent **eps;
+        int     total = scandir( location.c_str(), &eps, simple_scandir_filter, alphasort);
+
+        if ( total != -1 ) {
+                for ( int i = 0; i < total; ++i ) {
+                        struct stat attr;
+                        const string fname = location + '/' + eps[i]->d_name;
+                        if ( 0 == lstat( fname.c_str(), &attr) && S_ISREG (attr.st_mode) &&
+                             '~' != fname.back() )
+                                try {
+                                        ret.emplace_back(
+                                                eps[i]->d_name, level, ED, level_id,
+                                                args...);
+                                        ret.back().load();
+                                } catch (invalid_argument& ex) {
+                                        ;
+                                }
+                        free( eps[i]);
+                }
+                free( (void*)eps);
+        }
+
+        //printf("found %zu profiles in %s\n", ret.size(), agh::exp_dir_level_s(origin));
+        return move(ret);
+}
+
+
+
 } // namespace agh
 
 #endif
diff --git a/upstream/src/aghermann/patterns/patterns.cc b/upstream/src/aghermann/patterns/patterns.cc
index 2062d51..9ce6dd2 100644
--- a/upstream/src/aghermann/patterns/patterns.cc
+++ b/upstream/src/aghermann/patterns/patterns.cc
@@ -178,48 +178,6 @@ delete_file()
 
 
 
-namespace {
-int
-scandir_filter( const struct dirent *e)
-{
-        return strcmp( e->d_name, ".") && strcmp( e->d_name, "..");
-}
-}
-
-
-template <>
-list<agh::pattern::SPattern<TFloat>>
-load_patterns_from_location<TFloat>( const string& loc, agh::TExpDirLevel origin)
-{
-        list<SPattern<TFloat>>
-                ret;
-
-        struct dirent **eps;
-        int     total = scandir( loc.c_str(), &eps, scandir_filter, alphasort);
-
-        if ( total != -1 ) {
-                for ( int i = 0; i < total; ++i ) {
-                        const string fname = loc + '/' + eps[i]->d_name;
-                        struct stat attr;
-                        if ( 0 == lstat( fname.c_str(), &attr) && S_ISREG (attr.st_mode) &&
-                             '~' != fname.back() )
-                                try {
-                                        ret.emplace_back( fname);
-                                        ret.back().origin = origin;
-                                } catch (invalid_argument& ex) {
-                                        ;
-                                }
-
-                        free( eps[i]);
-                }
-                free( (void*)eps);
-        }
-
-        printf("found %zu patterns in %s\n", ret.size(), agh::exp_dir_level_s(origin));
-        return move(ret);
-}
-
-
 }
 } // namespace agh::pattern
 
diff --git a/upstream/src/aghermann/patterns/patterns.hh b/upstream/src/aghermann/patterns/patterns.hh
index 9085c0d..dacd07f 100644
--- a/upstream/src/aghermann/patterns/patterns.hh
+++ b/upstream/src/aghermann/patterns/patterns.hh
@@ -19,7 +19,7 @@
 #include <gsl/gsl_math.h>
 
 #include "libsigproc/sigproc.hh"
-#include "aghermann/expdesign/dirlevel.hh"  // for enum TExpDirLevel
+#include "aghermann/expdesign/dirlevel.hh"
 
 #if HAVE_CONFIG_H && !defined(VERSION)
 #  include "config.h"
@@ -175,7 +175,7 @@ class CPatternTool
 
 
 template <typename T>
-struct SPattern {
+struct SPattern : public CStorablePPack {
 
         SPattern<T> ()
               : name   ("(unnamed)"),
@@ -186,48 +186,24 @@ struct SPattern {
                 {}
 
         explicit SPattern<T> (const SPattern<T>& rv)
-              : name       (rv.name),
-                path       (rv.path),
-                origin     (rv.origin),
-                saved      (rv.saved),
-                thing      (rv.thing),
+              : thing      (rv.thing),
                 samplerate (rv.samplerate),
                 context    (rv.context),
                 Pp         (rv.Pp),
                 criteria   (rv.criteria)
                 {}
         explicit SPattern<T> (SPattern<T>&& rv)
-              : name       (move(rv.name)),
-                path       (move(rv.path)),
-                origin     (rv.origin),
-                saved      (rv.saved),
-                thing      (move(rv.thing)),
+              : thing      (move(rv.thing)),
                 samplerate (rv.samplerate),
                 context    (rv.context),
                 Pp         (move(rv.Pp)),
                 criteria   (move(rv.criteria))
                 {}
 
-        SPattern<T> (valarray<T>&& thing_,
-                     size_t samplerate_,
-                     const TContext& context_,
-                     const SPatternPPack<TFloat>& Pp_,
-                     CMatch<T> criteria_)
-              : name       ("(unnamed)"),
-                origin     (agh::TExpDirLevel::transient),
-                saved      (false),
-                thing      (move(thing_)),
-                samplerate (samplerate_),
-                context    (context_),
-                Pp         (Pp_),
-                criteria   (criteria_)
+        SPattern<T> (const string& name_, TExpDirLevel level_, CExpDesign& ED_, const SExpDirLevelId& level_id_)
+              : CStorablePPack (".patterns", name_, level_, ED_, level_id_)
                 {}
 
-        explicit SPattern<T> (const string& fname)
-                {
-                        if (load( fname))
-                                throw invalid_argument (string("Bad pattern in ") + fname);
-                }
        ~SPattern<T> ()
                 {
                         save();
@@ -273,14 +249,6 @@ struct SPattern {
         int
         delete_file();
 
-        string  name,
-                path;
-
-        TExpDirLevel
-                origin;
-
-        bool    saved:1;
-
         valarray<T>
                 thing;
         size_t  samplerate;
@@ -296,11 +264,6 @@ struct SPattern {
 };
 
 
-template <typename T>
-list<SPattern<T>>
-load_patterns_from_location( agh::TExpDirLevel level, agh::CExpDesign& ED, const agh::SExpDirLevelId& level_id);
-
-
 #include "patterns.ii"
 
 }
diff --git a/upstream/src/aghermann/rk1968/rk1968-profiles.cc b/upstream/src/aghermann/rk1968/rk1968-profiles.cc
index 58d3b5d..44b0dfd 100644
--- a/upstream/src/aghermann/rk1968/rk1968-profiles.cc
+++ b/upstream/src/aghermann/rk1968/rk1968-profiles.cc
@@ -10,7 +10,6 @@
  */
 
 
-#include <dirent.h>
 #include <sys/stat.h>
 
 #include "common/fs.hh"
@@ -36,46 +35,6 @@ delete_file()
 
 
 
-namespace {
-int
-scandir_filter( const struct dirent *e)
-{
-        return strcmp( e->d_name, ".") && strcmp( e->d_name, "..");
-}
-}
-
-list<CScoreAssistant>
-load_profiles_from_location( agh::TExpDirLevel level, agh::CExpDesign& ED, const agh::SExpDirLevelId& level_id)
-{
-        list<CScoreAssistant>
-                ret;
-
-        string location = ED.make_dirname( level, level_id);
-
-        struct dirent **eps;
-        int     total = scandir( location.c_str(), &eps, scandir_filter, alphasort);
-
-        if ( total != -1 ) {
-                for ( int i = 0; i < total; ++i ) {
-                        try {
-                                ret.emplace_back(
-                                        SScoreAssistantPPack(),
-                                        eps[i]->d_name,
-                                        level, ED, level_id);
-                                ret.back().load();
-                        } catch (invalid_argument& ex) {
-                                ;
-                        }
-                        free( eps[i]);
-                }
-                free( (void*)eps);
-        }
-
-        return move(ret);
-}
-
-
-
 
 // Local Variables:
 // Mode: c++
diff --git a/upstream/src/aghermann/rk1968/rk1968.cc b/upstream/src/aghermann/rk1968/rk1968.cc
index ddaa69a..8888336 100644
--- a/upstream/src/aghermann/rk1968/rk1968.cc
+++ b/upstream/src/aghermann/rk1968/rk1968.cc
@@ -27,9 +27,9 @@ using namespace agh::rk1968;
 
 
 CScoreAssistant::
-CScoreAssistant (const SScoreAssistantPPack& Pp_,
-                 const string& name_,
-                 agh::TExpDirLevel level_, agh::CExpDesign& ED_, const agh::SExpDirLevelId& level_id_)
+CScoreAssistant (const string& name_,
+                 agh::TExpDirLevel level_, agh::CExpDesign& ED_, const agh::SExpDirLevelId& level_id_,
+                 const SScoreAssistantPPack& Pp_)
       : CStorablePPack (".rk1968", name_, level_, ED_, level_id_),
         Pp (Pp_)
 {
diff --git a/upstream/src/aghermann/rk1968/rk1968.hh b/upstream/src/aghermann/rk1968/rk1968.hh
index 7fa52e6..1c4dab2 100644
--- a/upstream/src/aghermann/rk1968/rk1968.hh
+++ b/upstream/src/aghermann/rk1968/rk1968.hh
@@ -33,9 +33,9 @@ class CScoreAssistant
   : public CStorablePPack {
 
     public:
-        CScoreAssistant (const SScoreAssistantPPack&,
-                         const string& name_,
-                         TExpDirLevel, CExpDesign&, const SExpDirLevelId&);
+        CScoreAssistant (const string& name_,
+                         TExpDirLevel, CExpDesign&, const SExpDirLevelId&,
+                         const SScoreAssistantPPack&);
 
         int score( agh::SEpisode&);
 
diff --git a/upstream/src/aghermann/ui/sf/d/patterns-profiles.cc b/upstream/src/aghermann/ui/sf/d/patterns-profiles.cc
index f92f936..36eec72 100644
--- a/upstream/src/aghermann/ui/sf/d/patterns-profiles.cc
+++ b/upstream/src/aghermann/ui/sf/d/patterns-profiles.cc
@@ -107,12 +107,11 @@ load_patterns()
         patterns.clear();
 
         using namespace agh;
-        using pattern::load_patterns_from_location;
         patterns.splice(
                 patterns.end(),
-                load_patterns_from_location<TFloat>(
-                        pattern::make_system_location(),
-                        TExpDirLevel::system));
+                load_profiles_from_location<SPattern<TFloat>>(
+                        TExpDirLevel::system, *_p.ED, SExpDirLevelId(),
+                        ));
         patterns.splice(
                 patterns.end(),
                 load_patterns_from_location<TFloat>(
diff --git a/upstream/src/aghermann/ui/sf/d/patterns-profiles_cb.cc b/upstream/src/aghermann/ui/sf/d/patterns-profiles_cb.cc
index 457b737..00e65b6 100644
--- a/upstream/src/aghermann/ui/sf/d/patterns-profiles_cb.cc
+++ b/upstream/src/aghermann/ui/sf/d/patterns-profiles_cb.cc
@@ -73,23 +73,14 @@ bSFFDProfileSave_clicked_cb(
                         : *(FD.current_pattern = FD.patterns.insert(FD.current_pattern, *FD.current_pattern));
 
                 P.name = gtk_entry_get_text( FD.eSFFDPatternSaveName);
-
-                tie(P.origin, P.path) =
+                P.origin =
                         gtk_toggle_button_get_active( FD.eSFFDPatternSaveOriginSubject)
-                        ? make_tuple(
-                                TExpDirLevel::subject,
-                                pattern::make_subject_location( *FD._p._p.ED, FD._p.csubject()))
+                        ? TExpDirLevel::subject
                         : gtk_toggle_button_get_active( FD.eSFFDPatternSaveOriginExperiment)
-                        ? make_tuple(
-                                TExpDirLevel::experiment,
-                                pattern::make_experiment_location( *FD._p._p.ED))
-                        : make_tuple(
-                                TExpDirLevel::user,
-                                pattern::make_user_location());
-
-                P.path.append( "/").append( P.name);
-                P.saved = false;
+                        ? TExpDirLevel::experiment
+                        : TExpDirLevel::user;
 
+                
                 FD.populate_combo();
                 FD.set_profile_manage_buttons_visibility();
         }
diff --git a/upstream/src/aghermann/ui/sf/d/rk1968-profiles.cc b/upstream/src/aghermann/ui/sf/d/rk1968-profiles.cc
index 72170c8..1ac9e11 100644
--- a/upstream/src/aghermann/ui/sf/d/rk1968-profiles.cc
+++ b/upstream/src/aghermann/ui/sf/d/rk1968-profiles.cc
@@ -80,7 +80,7 @@ populate_combo()
                                 mSFRKProfiles, &iter);
                         gtk_list_store_set(
                                 mSFRKProfiles, &iter,
-                                0, snprintf_buf( "%s %s", agh::exp_dir_level_s(I->origin), I->name.c_str()),
+                                0, snprintf_buf( "%s %s", agh::exp_dir_level_s(I->level), I->name.c_str()),
                                 -1);
                         if ( I == current_profile )
                                 current_profile_iter = iter;

-- 
Alioth's /git/debian-med/git-commit-notice on /srv/git.debian.org/git/debian-med/aghermann.git



More information about the debian-med-commit mailing list