mirror of
https://github.com/moses-smt/mosesdecoder.git
synced 2024-11-10 10:59:21 +03:00
Fix warning: an array subscript is of type char (-Wchar-subscripts).
According to gcc documentation, this is a common cause of error. See: http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
This commit is contained in:
parent
e2f01d7451
commit
d3e5e68735
@ -40,7 +40,7 @@ void Alignment::Create(const string& fileName)
|
|||||||
cerr << m_size << " alignment points" << endl;
|
cerr << m_size << " alignment points" << endl;
|
||||||
|
|
||||||
// allocate memory
|
// allocate memory
|
||||||
m_array = (char*) calloc( sizeof( char ), m_size*2 );
|
m_array = (int*) calloc( sizeof(int), m_size*2 );
|
||||||
m_sentenceEnd = (INDEX*) calloc( sizeof( INDEX ), m_sentenceCount );
|
m_sentenceEnd = (INDEX*) calloc( sizeof( INDEX ), m_sentenceCount );
|
||||||
|
|
||||||
if (m_array == NULL) {
|
if (m_array == NULL) {
|
||||||
@ -121,13 +121,11 @@ vector<string> Alignment::Tokenize( const char input[] )
|
|||||||
return token;
|
return token;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Alignment::PhraseAlignment( INDEX sentence, char target_length,
|
bool Alignment::PhraseAlignment( INDEX sentence, int target_length,
|
||||||
char source_start, char source_end,
|
int source_start, int source_end,
|
||||||
char &target_start, char &target_end,
|
int &target_start, int &target_end,
|
||||||
char &pre_null, char &post_null )
|
int &pre_null, int &post_null )
|
||||||
{
|
{
|
||||||
vector< char > alignedTargetWords;
|
|
||||||
|
|
||||||
// get index for first alignment point
|
// get index for first alignment point
|
||||||
INDEX sentenceStart = 0;
|
INDEX sentenceStart = 0;
|
||||||
if (sentence > 0) {
|
if (sentence > 0) {
|
||||||
@ -138,9 +136,9 @@ bool Alignment::PhraseAlignment( INDEX sentence, char target_length,
|
|||||||
target_start = target_length;
|
target_start = target_length;
|
||||||
target_end = 0;
|
target_end = 0;
|
||||||
for(INDEX ap = sentenceStart; ap <= m_sentenceEnd[ sentence ]; ap += 2 ) {
|
for(INDEX ap = sentenceStart; ap <= m_sentenceEnd[ sentence ]; ap += 2 ) {
|
||||||
char source = m_array[ ap ];
|
int source = m_array[ ap ];
|
||||||
if (source >= source_start && source <= source_end ) {
|
if (source >= source_start && source <= source_end ) {
|
||||||
char target = m_array[ ap+1 ];
|
int target = m_array[ ap+1 ];
|
||||||
if (target < target_start) target_start = target;
|
if (target < target_start) target_start = target;
|
||||||
if (target > target_end ) target_end = target;
|
if (target > target_end ) target_end = target;
|
||||||
}
|
}
|
||||||
@ -151,9 +149,9 @@ bool Alignment::PhraseAlignment( INDEX sentence, char target_length,
|
|||||||
|
|
||||||
// check consistency
|
// check consistency
|
||||||
for(INDEX ap = sentenceStart; ap <= m_sentenceEnd[ sentence ]; ap += 2 ) {
|
for(INDEX ap = sentenceStart; ap <= m_sentenceEnd[ sentence ]; ap += 2 ) {
|
||||||
char target = m_array[ ap+1 ];
|
int target = m_array[ ap+1 ];
|
||||||
if (target >= target_start && target <= target_end ) {
|
if (target >= target_start && target <= target_end ) {
|
||||||
char source = m_array[ ap ];
|
int source = m_array[ ap ];
|
||||||
if (source < source_start || source > source_end) {
|
if (source < source_start || source > source_end) {
|
||||||
return false; // alignment point out of range
|
return false; // alignment point out of range
|
||||||
}
|
}
|
||||||
@ -165,19 +163,19 @@ bool Alignment::PhraseAlignment( INDEX sentence, char target_length,
|
|||||||
m_unaligned[i] = true;
|
m_unaligned[i] = true;
|
||||||
}
|
}
|
||||||
for(INDEX ap = sentenceStart; ap <= m_sentenceEnd[ sentence ]; ap += 2 ) {
|
for(INDEX ap = sentenceStart; ap <= m_sentenceEnd[ sentence ]; ap += 2 ) {
|
||||||
char target = m_array[ ap+1 ];
|
int target = m_array[ ap+1 ];
|
||||||
m_unaligned[ target ] = false;
|
m_unaligned[ target ] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// prior unaligned words
|
// prior unaligned words
|
||||||
pre_null = 0;
|
pre_null = 0;
|
||||||
for(char target = target_start-1; target >= 0 && m_unaligned[ target ]; target--) {
|
for(int target = target_start-1; target >= 0 && m_unaligned[ target ]; target--) {
|
||||||
pre_null++;
|
pre_null++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// post unaligned words;
|
// post unaligned words;
|
||||||
post_null = 0;
|
post_null = 0;
|
||||||
for(char target = target_end+1; target < target_length && m_unaligned[ target ]; target++) {
|
for(int target = target_end+1; target < target_length && m_unaligned[ target ]; target++) {
|
||||||
post_null++;
|
post_null++;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -192,7 +190,7 @@ void Alignment::Save(const string& fileName ) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
fwrite( &m_size, sizeof(INDEX), 1, pFile );
|
fwrite( &m_size, sizeof(INDEX), 1, pFile );
|
||||||
fwrite( m_array, sizeof(char), m_size*2, pFile ); // corpus
|
fwrite( m_array, sizeof(int), m_size*2, pFile ); // corpus
|
||||||
|
|
||||||
fwrite( &m_sentenceCount, sizeof(INDEX), 1, pFile );
|
fwrite( &m_sentenceCount, sizeof(INDEX), 1, pFile );
|
||||||
fwrite( m_sentenceEnd, sizeof(INDEX), m_sentenceCount, pFile); // sentence index
|
fwrite( m_sentenceEnd, sizeof(INDEX), m_sentenceCount, pFile); // sentence index
|
||||||
@ -211,8 +209,8 @@ void Alignment::Load(const string& fileName )
|
|||||||
|
|
||||||
fread( &m_size, sizeof(INDEX), 1, pFile );
|
fread( &m_size, sizeof(INDEX), 1, pFile );
|
||||||
cerr << "alignment points in corpus: " << m_size << endl;
|
cerr << "alignment points in corpus: " << m_size << endl;
|
||||||
m_array = (char*) calloc( sizeof(char), m_size*2 );
|
m_array = (int*) calloc( sizeof(int), m_size*2 );
|
||||||
fread( m_array, sizeof(char), m_size*2, pFile ); // corpus
|
fread( m_array, sizeof(int), m_size*2, pFile ); // corpus
|
||||||
|
|
||||||
fread( &m_sentenceCount, sizeof(INDEX), 1, pFile );
|
fread( &m_sentenceCount, sizeof(INDEX), 1, pFile );
|
||||||
cerr << "sentences in corpus: " << m_sentenceCount << endl;
|
cerr << "sentences in corpus: " << m_sentenceCount << endl;
|
||||||
|
@ -8,7 +8,7 @@ public:
|
|||||||
typedef unsigned int INDEX;
|
typedef unsigned int INDEX;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
char *m_array;
|
int *m_array;
|
||||||
INDEX *m_sentenceEnd;
|
INDEX *m_sentenceEnd;
|
||||||
INDEX m_size;
|
INDEX m_size;
|
||||||
INDEX m_sentenceCount;
|
INDEX m_sentenceCount;
|
||||||
@ -23,10 +23,10 @@ public:
|
|||||||
~Alignment();
|
~Alignment();
|
||||||
|
|
||||||
void Create(const std::string& fileName );
|
void Create(const std::string& fileName );
|
||||||
bool PhraseAlignment( INDEX sentence, char target_length,
|
bool PhraseAlignment( INDEX sentence, int target_length,
|
||||||
char source_start, char source_end,
|
int source_start, int source_end,
|
||||||
char &target_start, char &target_end,
|
int &target_start, int &target_end,
|
||||||
char &pre_null, char &post_null );
|
int &pre_null, int &post_null );
|
||||||
void Load(const std::string& fileName );
|
void Load(const std::string& fileName );
|
||||||
void Save(const std::string& fileName ) const;
|
void Save(const std::string& fileName ) const;
|
||||||
std::vector<std::string> Tokenize( const char input[] );
|
std::vector<std::string> Tokenize( const char input[] );
|
||||||
@ -38,10 +38,10 @@ public:
|
|||||||
INDEX GetNumberOfAlignmentPoints( INDEX sentence ) const {
|
INDEX GetNumberOfAlignmentPoints( INDEX sentence ) const {
|
||||||
return ( m_sentenceEnd[ sentence ] - GetSentenceStart( sentence ) ) / 2;
|
return ( m_sentenceEnd[ sentence ] - GetSentenceStart( sentence ) ) / 2;
|
||||||
}
|
}
|
||||||
char GetSourceWord( INDEX sentence, INDEX alignment_point ) const {
|
int GetSourceWord( INDEX sentence, INDEX alignment_point ) const {
|
||||||
return m_array[ GetSentenceStart( sentence ) + alignment_point*2 ];
|
return m_array[ GetSentenceStart( sentence ) + alignment_point*2 ];
|
||||||
}
|
}
|
||||||
char GetTargetWord( INDEX sentence, INDEX alignment_point ) const {
|
int GetTargetWord( INDEX sentence, INDEX alignment_point ) const {
|
||||||
return m_array[ GetSentenceStart( sentence ) + alignment_point*2 + 1 ];
|
return m_array[ GetSentenceStart( sentence ) + alignment_point*2 + 1 ];
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -22,7 +22,7 @@ enum {
|
|||||||
ALIGNED = 5
|
ALIGNED = 5
|
||||||
};
|
};
|
||||||
|
|
||||||
Mismatch::Mismatch( SuffixArray *sa, TargetCorpus *tc, Alignment *a, INDEX sentence_id, INDEX position, char source_length, char target_length, char source_start, char source_end )
|
Mismatch::Mismatch( SuffixArray *sa, TargetCorpus *tc, Alignment *a, INDEX sentence_id, INDEX position, int source_length, int target_length, int source_start, int source_end )
|
||||||
:m_suffixArray(sa)
|
:m_suffixArray(sa)
|
||||||
,m_targetCorpus(tc)
|
,m_targetCorpus(tc)
|
||||||
,m_alignment(a)
|
,m_alignment(a)
|
||||||
@ -58,7 +58,7 @@ Mismatch::~Mismatch () {}
|
|||||||
|
|
||||||
void Mismatch::PrintClippedHTML( ostream* out, int width )
|
void Mismatch::PrintClippedHTML( ostream* out, int width )
|
||||||
{
|
{
|
||||||
char source_annotation[256], target_annotation[256];
|
int source_annotation[256], target_annotation[256];
|
||||||
vector< string > label_class;
|
vector< string > label_class;
|
||||||
label_class.push_back( "" );
|
label_class.push_back( "" );
|
||||||
label_class.push_back( "mismatch_pre_aligned" );
|
label_class.push_back( "mismatch_pre_aligned" );
|
||||||
@ -281,7 +281,7 @@ void Mismatch::PrintClippedHTML( ostream* out, int width )
|
|||||||
*out << "</td></tr>";
|
*out << "</td></tr>";
|
||||||
}
|
}
|
||||||
|
|
||||||
void Mismatch::LabelSourceMatches( char *source_annotation, char *target_annotation, char source_id, char label ) {
|
void Mismatch::LabelSourceMatches(int *source_annotation, int *target_annotation, int source_id, int label ) {
|
||||||
for(INDEX ap=0; ap<m_num_alignment_points; ap++) {
|
for(INDEX ap=0; ap<m_num_alignment_points; ap++) {
|
||||||
if (m_alignment->GetSourceWord( m_sentence_id, ap ) == source_id) {
|
if (m_alignment->GetSourceWord( m_sentence_id, ap ) == source_id) {
|
||||||
source_annotation[ source_id ] = label;
|
source_annotation[ source_id ] = label;
|
||||||
|
@ -17,11 +17,11 @@ private:
|
|||||||
Alignment *m_alignment;
|
Alignment *m_alignment;
|
||||||
INDEX m_sentence_id;
|
INDEX m_sentence_id;
|
||||||
INDEX m_num_alignment_points;
|
INDEX m_num_alignment_points;
|
||||||
char m_source_length;
|
int m_source_length;
|
||||||
char m_target_length;
|
int m_target_length;
|
||||||
INDEX m_source_position;
|
INDEX m_source_position;
|
||||||
char m_source_start;
|
int m_source_start;
|
||||||
char m_source_end;
|
int m_source_end;
|
||||||
bool m_source_unaligned[ 256 ];
|
bool m_source_unaligned[ 256 ];
|
||||||
bool m_target_unaligned[ 256 ];
|
bool m_target_unaligned[ 256 ];
|
||||||
bool m_unaligned;
|
bool m_unaligned;
|
||||||
@ -31,10 +31,10 @@ private:
|
|||||||
void operator=(const Mismatch&);
|
void operator=(const Mismatch&);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Mismatch( SuffixArray *sa, TargetCorpus *tc, Alignment *a, INDEX sentence_id, INDEX position, char source_length, char target_length, char source_start, char source_end );
|
Mismatch( SuffixArray *sa, TargetCorpus *tc, Alignment *a, INDEX sentence_id, INDEX position, int source_length, int target_length, int source_start, int source_end );
|
||||||
~Mismatch();
|
~Mismatch();
|
||||||
|
|
||||||
bool Unaligned() const { return m_unaligned; }
|
bool Unaligned() const { return m_unaligned; }
|
||||||
void PrintClippedHTML(std::ostream* out, int width );
|
void PrintClippedHTML(std::ostream* out, int width );
|
||||||
void LabelSourceMatches( char *source_annotation, char *target_annotation, char source_id, char label );
|
void LabelSourceMatches(int *source_annotation, int *target_annotation, int source_id, int label );
|
||||||
};
|
};
|
||||||
|
@ -50,16 +50,16 @@ bool PhrasePairCollection::GetCollection( const vector< string >& sourceString )
|
|||||||
<< ", starting at word " << source_start
|
<< ", starting at word " << source_start
|
||||||
<< " of " << sentence_length
|
<< " of " << sentence_length
|
||||||
<< ". target sentence has " << target_length << " words.";
|
<< ". target sentence has " << target_length << " words.";
|
||||||
char target_start, target_end, pre_null, post_null;
|
int target_start, target_end, pre_null, post_null;
|
||||||
if (m_alignment->PhraseAlignment( sentence_id, target_length, source_start, source_end, target_start, target_end, pre_null, post_null)) {
|
if (m_alignment->PhraseAlignment( sentence_id, target_length, source_start, source_end, target_start, target_end, pre_null, post_null)) {
|
||||||
cerr << " aligned to [" << (int)target_start << "," << (int)target_end << "]";
|
cerr << " aligned to [" << (int)target_start << "," << (int)target_end << "]";
|
||||||
cerr << " +(" << (int)pre_null << "," << (int)post_null << ")";
|
cerr << " +(" << (int)pre_null << "," << (int)post_null << ")";
|
||||||
bool null_boundary_words = false;
|
bool null_boundary_words = false;
|
||||||
for( char pre = 0; pre <= pre_null && (pre==0||null_boundary_words); pre++ ) {
|
for (int pre = 0; pre <= pre_null && (pre == 0 || null_boundary_words); pre++ ) {
|
||||||
for( char post = 0; post <= post_null && (post==0||null_boundary_words); post++ ) {
|
for (int post = 0; post <= post_null && (post == 0 || null_boundary_words); post++ ) {
|
||||||
vector< WORD_ID > targetString;
|
vector< WORD_ID > targetString;
|
||||||
cerr << "; ";
|
cerr << "; ";
|
||||||
for( char target = target_start-pre; target <= target_end+post; target++ ) {
|
for (int target = target_start - pre; target <= target_end + post; target++) {
|
||||||
targetString.push_back( m_targetCorpus->GetWordId( sentence_id, target) );
|
targetString.push_back( m_targetCorpus->GetWordId( sentence_id, target) );
|
||||||
cerr << m_targetCorpus->GetWord( sentence_id, target) << " ";
|
cerr << m_targetCorpus->GetWord( sentence_id, target) << " ";
|
||||||
}
|
}
|
||||||
|
@ -97,12 +97,12 @@ WORD TargetCorpus::GetWordFromId( const WORD_ID id ) const
|
|||||||
return m_vcb.GetWord( id );
|
return m_vcb.GetWord( id );
|
||||||
}
|
}
|
||||||
|
|
||||||
WORD TargetCorpus::GetWord( INDEX sentence, char word ) const
|
WORD TargetCorpus::GetWord( INDEX sentence, int word ) const
|
||||||
{
|
{
|
||||||
return m_vcb.GetWord( GetWordId( sentence, word ) );
|
return m_vcb.GetWord( GetWordId( sentence, word ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
WORD_ID TargetCorpus::GetWordId( INDEX sentence, char word ) const
|
WORD_ID TargetCorpus::GetWordId( INDEX sentence, int word ) const
|
||||||
{
|
{
|
||||||
if (sentence == 0) {
|
if (sentence == 0) {
|
||||||
return m_array[ word ];
|
return m_array[ word ];
|
||||||
|
@ -24,8 +24,8 @@ public:
|
|||||||
|
|
||||||
void Create(const std::string& fileName );
|
void Create(const std::string& fileName );
|
||||||
WORD GetWordFromId( const WORD_ID id ) const;
|
WORD GetWordFromId( const WORD_ID id ) const;
|
||||||
WORD GetWord( INDEX sentence, char word ) const;
|
WORD GetWord( INDEX sentence, int word ) const;
|
||||||
WORD_ID GetWordId( INDEX sentence, char word ) const;
|
WORD_ID GetWordId( INDEX sentence, int word ) const;
|
||||||
char GetSentenceLength( INDEX sentence ) const;
|
char GetSentenceLength( INDEX sentence ) const;
|
||||||
void Load(const std::string& fileName );
|
void Load(const std::string& fileName );
|
||||||
void Save(const std::string& fileName ) const;
|
void Save(const std::string& fileName ) const;
|
||||||
|
Loading…
Reference in New Issue
Block a user