mirror of
https://github.com/moses-smt/mosesdecoder.git
synced 2024-09-11 19:27:11 +03:00
Refactoring: constructors and copying objects.
This commit is contained in:
parent
87a5c16b55
commit
20e27aab92
@ -81,20 +81,30 @@ SparseVector operator-(const SparseVector& lhs, const SparseVector& rhs) {
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
FeatureStats::FeatureStats()
|
||||
: available_(kAvailableSize), entries_(0),
|
||||
array_(new FeatureStatsType[available_]) {}
|
||||
|
||||
FeatureStats::FeatureStats(const size_t size)
|
||||
: available_(size), entries_(size),
|
||||
array_(new FeatureStatsType[available_])
|
||||
{
|
||||
available_ = kAvailableSize;
|
||||
entries_ = 0;
|
||||
array_ = new FeatureStatsType[available_];
|
||||
memset(array_, 0, GetArraySizeWithBytes());
|
||||
}
|
||||
|
||||
FeatureStats::FeatureStats(std::string &theString)
|
||||
: available_(0), entries_(0), array_(NULL)
|
||||
{
|
||||
set(theString);
|
||||
}
|
||||
|
||||
FeatureStats::~FeatureStats()
|
||||
{
|
||||
delete [] array_;
|
||||
if (array_)
|
||||
delete [] array_;
|
||||
}
|
||||
|
||||
FeatureStats::FeatureStats(const FeatureStats &stats)
|
||||
void FeatureStats::Copy(const FeatureStats &stats)
|
||||
{
|
||||
available_ = stats.available();
|
||||
entries_ = stats.size();
|
||||
@ -103,17 +113,16 @@ FeatureStats::FeatureStats(const FeatureStats &stats)
|
||||
map_ = stats.getSparse();
|
||||
}
|
||||
|
||||
FeatureStats::FeatureStats(const size_t size)
|
||||
FeatureStats::FeatureStats(const FeatureStats &stats)
|
||||
{
|
||||
available_ = size;
|
||||
entries_ = size;
|
||||
array_ = new FeatureStatsType[available_];
|
||||
memset(array_, 0, GetArraySizeWithBytes());
|
||||
Copy(stats);
|
||||
}
|
||||
|
||||
FeatureStats::FeatureStats(std::string &theString)
|
||||
FeatureStats& FeatureStats::operator=(const FeatureStats &stats)
|
||||
{
|
||||
set(theString);
|
||||
delete [] array_;
|
||||
Copy(stats);
|
||||
return *this;
|
||||
}
|
||||
|
||||
void FeatureStats::expand()
|
||||
@ -199,18 +208,6 @@ void FeatureStats::savebin(std::ofstream& outFile)
|
||||
outFile.write((char*) array_, GetArraySizeWithBytes());
|
||||
}
|
||||
|
||||
FeatureStats& FeatureStats::operator=(const FeatureStats &stats)
|
||||
{
|
||||
delete [] array_;
|
||||
available_ = stats.available();
|
||||
entries_ = stats.size();
|
||||
array_ = new FeatureStatsType[available_];
|
||||
memcpy(array_,stats.getArray(), GetArraySizeWithBytes());
|
||||
map_ = stats.getSparse();
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
ostream& operator<<(ostream& o, const FeatureStats& e)
|
||||
{
|
||||
// print regular features
|
||||
|
@ -45,21 +45,23 @@ SparseVector operator-(const SparseVector& lhs, const SparseVector& rhs);
|
||||
class FeatureStats
|
||||
{
|
||||
private:
|
||||
size_t available_;
|
||||
size_t entries_;
|
||||
featstats_t array_;
|
||||
SparseVector map_;
|
||||
size_t entries_;
|
||||
size_t available_;
|
||||
|
||||
public:
|
||||
FeatureStats();
|
||||
explicit FeatureStats(const size_t size);
|
||||
explicit FeatureStats(std::string &theString);
|
||||
|
||||
~FeatureStats();
|
||||
|
||||
// We intentionally allow copying.
|
||||
FeatureStats(const FeatureStats &stats);
|
||||
FeatureStats& operator=(const FeatureStats &stats);
|
||||
|
||||
~FeatureStats();
|
||||
void Copy(const FeatureStats &stats);
|
||||
|
||||
bool isfull() const {
|
||||
return (entries_ < available_) ? 0 : 1;
|
||||
|
@ -9,22 +9,34 @@
|
||||
#include <fstream>
|
||||
#include "ScoreStats.h"
|
||||
|
||||
#define AVAILABLE_ 8;
|
||||
|
||||
namespace {
|
||||
const int kAvailableSize = 8;
|
||||
} // namespace
|
||||
|
||||
ScoreStats::ScoreStats()
|
||||
: available_(kAvailableSize), entries_(0),
|
||||
array_(new ScoreStatsType[available_]) {}
|
||||
|
||||
ScoreStats::ScoreStats(const size_t size)
|
||||
: available_(size), entries_(size),
|
||||
array_(new ScoreStatsType[available_])
|
||||
{
|
||||
available_ = AVAILABLE_;
|
||||
entries_ = 0;
|
||||
array_ = new ScoreStatsType[available_];
|
||||
memset(array_, 0, GetArraySizeWithBytes());
|
||||
}
|
||||
|
||||
ScoreStats::ScoreStats(std::string &theString)
|
||||
: available_(0), entries_(0), array_(NULL)
|
||||
{
|
||||
set(theString);
|
||||
}
|
||||
|
||||
ScoreStats::~ScoreStats()
|
||||
{
|
||||
delete [] array_;
|
||||
if (array_)
|
||||
delete [] array_;
|
||||
}
|
||||
|
||||
ScoreStats::ScoreStats(const ScoreStats &stats)
|
||||
void ScoreStats::Copy(const ScoreStats &stats)
|
||||
{
|
||||
available_ = stats.available();
|
||||
entries_ = stats.size();
|
||||
@ -32,26 +44,25 @@ ScoreStats::ScoreStats(const ScoreStats &stats)
|
||||
memcpy(array_, stats.getArray(), GetArraySizeWithBytes());
|
||||
}
|
||||
|
||||
ScoreStats::ScoreStats(const size_t size)
|
||||
ScoreStats::ScoreStats(const ScoreStats &stats)
|
||||
{
|
||||
available_ = size;
|
||||
entries_ = size;
|
||||
array_ = new ScoreStatsType[available_];
|
||||
memset(array_, 0, GetArraySizeWithBytes());
|
||||
Copy(stats);
|
||||
}
|
||||
|
||||
ScoreStats::ScoreStats(std::string &theString)
|
||||
ScoreStats& ScoreStats::operator=(const ScoreStats &stats)
|
||||
{
|
||||
set(theString);
|
||||
delete [] array_;
|
||||
Copy(stats);
|
||||
return *this;
|
||||
}
|
||||
|
||||
void ScoreStats::expand()
|
||||
{
|
||||
available_ *= 2;
|
||||
scorestats_t t_ = new ScoreStatsType[available_];
|
||||
memcpy(t_, array_, GetArraySizeWithBytes());
|
||||
scorestats_t buf = new ScoreStatsType[available_];
|
||||
memcpy(buf, array_, GetArraySizeWithBytes());
|
||||
delete [] array_;
|
||||
array_ = t_;
|
||||
array_ = buf;
|
||||
}
|
||||
|
||||
void ScoreStats::add(ScoreStatsType v)
|
||||
@ -113,22 +124,9 @@ void ScoreStats::savebin(std::ofstream& outFile)
|
||||
outFile.write((char*)array_, GetArraySizeWithBytes());
|
||||
}
|
||||
|
||||
|
||||
ScoreStats& ScoreStats::operator=(const ScoreStats &stats)
|
||||
{
|
||||
delete [] array_;
|
||||
available_ = stats.available();
|
||||
entries_ = stats.size();
|
||||
array_ = new ScoreStatsType[available_];
|
||||
memcpy(array_, stats.getArray(), GetArraySizeWithBytes());
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
ostream& operator<<(ostream& o, const ScoreStats& e)
|
||||
{
|
||||
for (size_t i=0; i< e.size(); i++)
|
||||
o << e.get(i) << " ";
|
||||
return o;
|
||||
}
|
||||
|
||||
|
@ -21,9 +21,9 @@ using namespace std;
|
||||
class ScoreStats
|
||||
{
|
||||
private:
|
||||
scorestats_t array_;
|
||||
size_t entries_;
|
||||
size_t available_;
|
||||
size_t entries_;
|
||||
scorestats_t array_;
|
||||
|
||||
public:
|
||||
ScoreStats();
|
||||
@ -35,6 +35,8 @@ public:
|
||||
ScoreStats(const ScoreStats &stats);
|
||||
ScoreStats& operator=(const ScoreStats &stats);
|
||||
|
||||
void Copy(const ScoreStats &stats);
|
||||
|
||||
bool isfull() const {
|
||||
return (entries_ < available_) ? 0 : 1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user