diff options
author | Tetsuo Kiso <tetsuo-s@is.naist.jp> | 2011-11-12 17:04:22 +0400 |
---|---|---|
committer | Tetsuo Kiso <tetsuo-s@is.naist.jp> | 2011-11-12 17:04:22 +0400 |
commit | 3d70b2e1a5d66a6387b3b4fd023fc3bed2bb28a8 (patch) | |
tree | 190e42b3561f56207082a42d2fc28dd964e61154 /mert | |
parent | eecfb171da01a090aed40317ebd8dcebdee9e57c (diff) |
Small change: modify initialization of the Data class.
Diffstat (limited to 'mert')
-rw-r--r-- | mert/Data.cpp | 14 | ||||
-rw-r--r-- | mert/Data.h | 11 | ||||
-rw-r--r-- | mert/FeatureStats.cpp | 8 | ||||
-rw-r--r-- | mert/FeatureStats.h | 14 | ||||
-rw-r--r-- | mert/ScoreStats.cpp | 4 | ||||
-rw-r--r-- | mert/ScoreStats.h | 14 | ||||
-rw-r--r-- | mert/evaluator.cpp | 2 |
7 files changed, 39 insertions, 28 deletions
diff --git a/mert/Data.cpp b/mert/Data.cpp index 3aeacf30e..4c8bd1904 100644 --- a/mert/Data.cpp +++ b/mert/Data.cpp @@ -15,16 +15,16 @@ #include "ScorerFactory.h" #include "Util.h" -Data::Data(Scorer& ptr): - theScorer(&ptr), - _sparse_flag(false) +Data::Data(Scorer& ptr) + : theScorer(&ptr), + score_type(theScorer->getName()), + number_of_scores(0), + _sparse_flag(false), + scoredata(new ScoreData(*theScorer)), + featdata(new FeatureData) { - score_type = (*theScorer).getName(); TRACE_ERR("Data::score_type " << score_type << std::endl); - TRACE_ERR("Data::Scorer type from Scorer: " << theScorer->getName() << endl); - featdata = new FeatureData; - scoredata = new ScoreData(*theScorer); } Data::~Data() { diff --git a/mert/Data.h b/mert/Data.h index c0945a6b6..ea2ddd33d 100644 --- a/mert/Data.h +++ b/mert/Data.h @@ -23,16 +23,17 @@ class Scorer; class Data { -protected: - ScoreData* scoredata; - FeatureData* featdata; - private: Scorer* theScorer; std::string score_type; - size_t number_of_scores; // number of scores + size_t number_of_scores; bool _sparse_flag; +protected: + // TODO: Use smart pointers for exceptional-safety. + ScoreData* scoredata; + FeatureData* featdata; + public: explicit Data(Scorer& sc); ~Data(); diff --git a/mert/FeatureStats.cpp b/mert/FeatureStats.cpp index 65c25abb1..7f6f66d14 100644 --- a/mert/FeatureStats.cpp +++ b/mert/FeatureStats.cpp @@ -100,8 +100,10 @@ FeatureStats::FeatureStats(std::string &theString) FeatureStats::~FeatureStats() { - if (array_) + if (array_) { delete [] array_; + array_ = NULL; + } } void FeatureStats::Copy(const FeatureStats &stats) @@ -127,11 +129,11 @@ FeatureStats& FeatureStats::operator=(const FeatureStats &stats) void FeatureStats::expand() { - available_*=2; + available_ *= 2; featstats_t t_ = new FeatureStatsType[available_]; memcpy(t_, array_, GetArraySizeWithBytes()); delete [] array_; - array_=t_; + array_ = t_; } void FeatureStats::add(FeatureStatsType v) diff --git a/mert/FeatureStats.h b/mert/FeatureStats.h index 753578bee..6b1f475b5 100644 --- a/mert/FeatureStats.h +++ b/mert/FeatureStats.h @@ -47,6 +47,8 @@ class FeatureStats private: size_t available_; size_t entries_; + + // TODO: Use smart pointer for exceptional-safety. featstats_t array_; SparseVector map_; @@ -70,11 +72,16 @@ public: void add(FeatureStatsType v); void addSparse(string name, FeatureStatsType v); - inline void clear() { + void clear() { memset((void*)array_, 0, GetArraySizeWithBytes()); map_.clear(); } + void reset() { + entries_ = 0; + clear(); + } + inline FeatureStatsType get(size_t i) { return array_[i]; } @@ -117,11 +124,6 @@ public: void loadtxt(ifstream& inFile); void loadbin(ifstream& inFile); - inline void reset() { - entries_ = 0; - clear(); - } - /** * Write the whole object to a stream. */ diff --git a/mert/ScoreStats.cpp b/mert/ScoreStats.cpp index c410f857c..3d7ac42a1 100644 --- a/mert/ScoreStats.cpp +++ b/mert/ScoreStats.cpp @@ -32,8 +32,10 @@ ScoreStats::ScoreStats(std::string &theString) ScoreStats::~ScoreStats() { - if (array_) + if (array_) { delete [] array_; + array_ = NULL; + } } void ScoreStats::Copy(const ScoreStats &stats) diff --git a/mert/ScoreStats.h b/mert/ScoreStats.h index b2e64e79e..3a609120d 100644 --- a/mert/ScoreStats.h +++ b/mert/ScoreStats.h @@ -23,6 +23,8 @@ class ScoreStats private: size_t available_; size_t entries_; + + // TODO: Use smart pointer for exceptional-safety. scorestats_t array_; public: @@ -44,10 +46,15 @@ public: void expand(); void add(ScoreStatsType v); - inline void clear() { + void clear() { memset((void*)array_, 0, GetArraySizeWithBytes()); } + void reset() { + entries_ = 0; + clear(); + } + inline ScoreStatsType get(size_t i) { return array_[i]; } @@ -86,11 +93,6 @@ public: void loadtxt(ifstream& inFile); void loadbin(ifstream& inFile); - inline void reset() { - entries_ = 0; - clear(); - } - /** * Write the whole object to a stream. */ diff --git a/mert/evaluator.cpp b/mert/evaluator.cpp index c0c10f444..8545f086a 100644 --- a/mert/evaluator.cpp +++ b/mert/evaluator.cpp @@ -156,6 +156,7 @@ void evaluate(const string& candFile) vector<float> scores; for (int i = 0; i < bootstrap; ++i) { + // TODO: Use smart pointer for exceptional-safety. ScoreData* scoredata = new ScoreData(*scorer); for (int j = 0; j < n; ++j) { @@ -179,6 +180,7 @@ void evaluate(const string& candFile) } else { + // TODO: Use smart pointer for exceptional-safety. ScoreData* scoredata = new ScoreData(*scorer); for (int sid = 0; sid < n; ++sid) { |