summaryrefslogtreecommitdiff
path: root/extractor/suffix_array_sampler.h
blob: bb3c26537b3f640dc5bcc1d5c0d3fafd68e47b0a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#ifndef _SUFFIX_ARRAY_SAMPLER_H_
#define _SUFFIX_ARRAY_SAMPLER_H_

#include "backoff_sampler.h"

namespace extractor {

class SuffixArray;

class SuffixArrayRangeSampler : public BackoffSampler {
 public:
  SuffixArrayRangeSampler(shared_ptr<SuffixArray> suffix_array,
                          int max_samples);

  SuffixArrayRangeSampler();

 private:
  int GetNumSubpatterns(const PhraseLocation& location) const;

  int GetRangeLow(const PhraseLocation& location) const;

  int GetRangeHigh(const PhraseLocation& location) const;

  int GetPosition(const PhraseLocation& location, int index) const;

  void AppendMatching(vector<int>& samples, int index,
                      const PhraseLocation& location) const;

  shared_ptr<SuffixArray> source_suffix_array;
};

} // namespace extractor

#endif