Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/moses-smt/mosesdecoder.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBarry Haddow <barry.haddow@gmail.com>2012-02-08 21:11:56 +0400
committerBarry Haddow <barry.haddow@gmail.com>2012-02-08 21:11:56 +0400
commit752724594eb22327f446f91b0c9c41d0e631bd75 (patch)
treef3a686df5b2b8ed6a39c1663a55a22146c6b3e20
parent671a2f8c33c5fb079ca86b4a2de17887d4ac1c45 (diff)
Fix sharding bug
-rw-r--r--mert/Data.cpp16
-rw-r--r--mert/Data.h18
-rw-r--r--mert/Optimizer.cpp4
-rw-r--r--mert/Optimizer.h5
4 files changed, 19 insertions, 24 deletions
diff --git a/mert/Data.cpp b/mert/Data.cpp
index 3e723f8be..a4e6c2b24 100644
--- a/mert/Data.cpp
+++ b/mert/Data.cpp
@@ -21,8 +21,8 @@ Data::Data()
: theScorer(NULL),
number_of_scores(0),
_sparse_flag(false),
- scoredata(NULL),
- featdata(NULL) {}
+ scoredata(),
+ featdata() {}
Data::Data(Scorer& ptr)
: theScorer(&ptr),
@@ -36,17 +36,6 @@ Data::Data(Scorer& ptr)
TRACE_ERR("Data::Scorer type from Scorer: " << theScorer->getName() << endl);
}
-Data::~Data() {
- if (featdata) {
- delete featdata;
- featdata = NULL;
- }
- if (scoredata) {
- delete scoredata;
- scoredata = NULL;
- }
-}
-
//ADDED BY TS
void Data::remove_duplicates() {
@@ -128,7 +117,6 @@ void Data::remove_duplicates() {
// }
}
- std::cerr << "removed " << nRemoved << "/" << feat_array.size() << std::endl;
if (nRemoved > 0) {
diff --git a/mert/Data.h b/mert/Data.h
index 56d7ac47d..171c6db41 100644
--- a/mert/Data.h
+++ b/mert/Data.h
@@ -15,12 +15,17 @@ using namespace std;
#include <vector>
#include <iostream>
+#include<boost/shared_ptr.hpp>
+
#include "Util.h"
#include "FeatureData.h"
#include "ScoreData.h"
class Scorer;
+typedef boost::shared_ptr<ScoreData> ScoreDataHandle;
+typedef boost::shared_ptr<FeatureData> FeatureDataHandle;
+
class Data
{
private:
@@ -30,25 +35,26 @@ private:
bool _sparse_flag;
protected:
- // TODO: Use smart pointers for exceptional-safety.
- ScoreData* scoredata;
- FeatureData* featdata;
+ ScoreDataHandle scoredata;
+ FeatureDataHandle featdata;
public:
explicit Data(Scorer& sc);
Data();
- ~Data();
+
+ //Note that there is no copy constructor implemented, so only the
+ //compiler synthesised shallow copy is available
inline void clear() {
scoredata->clear();
featdata->clear();
}
- ScoreData* getScoreData() {
+ ScoreDataHandle getScoreData() {
return scoredata;
}
- FeatureData* getFeatureData() {
+ FeatureDataHandle getFeatureData() {
return featdata;
}
diff --git a/mert/Optimizer.cpp b/mert/Optimizer.cpp
index d848685e6..093c9ac1b 100644
--- a/mert/Optimizer.cpp
+++ b/mert/Optimizer.cpp
@@ -38,13 +38,13 @@ void Optimizer::SetScorer(Scorer *_scorer)
scorer = _scorer;
}
-void Optimizer::SetFData(FeatureData *_FData)
+void Optimizer::SetFData(FeatureDataHandle _FData)
{
FData = _FData;
}
Optimizer::Optimizer(unsigned Pd, vector<unsigned> i2O, vector<parameter_t> start, unsigned int nrandom)
- : scorer(NULL), FData(NULL), number_of_random_directions(nrandom)
+ : scorer(NULL), FData(), number_of_random_directions(nrandom)
{
// Warning: the init vector is a full set of parameters, of dimension pdim!
Point::pdim = Pd;
diff --git a/mert/Optimizer.h b/mert/Optimizer.h
index 7cc785337..69c7a7641 100644
--- a/mert/Optimizer.h
+++ b/mert/Optimizer.h
@@ -3,6 +3,7 @@
#include <vector>
#include <string>
+#include "Data.h"
#include "FeatureData.h"
#include "Scorer.h"
#include "Types.h"
@@ -20,13 +21,13 @@ class Optimizer
{
protected:
Scorer *scorer; // no accessor for them only child can use them
- FeatureData *FData; // no accessor for them only child can use them
+ FeatureDataHandle FData; // no accessor for them only child can use them
unsigned int number_of_random_directions;
public:
Optimizer(unsigned Pd, vector<unsigned> i2O, vector<parameter_t> start, unsigned int nrandom);
void SetScorer(Scorer *_scorer);
- void SetFData(FeatureData *_FData);
+ void SetFData(FeatureDataHandle _FData);
virtual ~Optimizer();
unsigned size() const {