[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