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 <[email protected]> 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 _______________________________________________ debian-med-commit mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-commit
