#ifndef _LINEAR_MERGER_H_ #define _LINEAR_MERGER_H_ #include #include using namespace std; class MatchingComparator; class Phrase; class PhraseLocation; class DataArray; class Vocabulary; class LinearMerger { public: LinearMerger(shared_ptr vocabulary, shared_ptr data_array, shared_ptr comparator); virtual ~LinearMerger(); virtual void Merge( vector& locations, const Phrase& phrase, const Phrase& suffix, vector::iterator prefix_start, vector::iterator prefix_end, vector::iterator suffix_start, vector::iterator suffix_end, int prefix_subpatterns, int suffix_subpatterns); protected: LinearMerger(); private: shared_ptr vocabulary; shared_ptr data_array; shared_ptr comparator; // TODO(pauldb): Remove this eventually. public: double linear_merge_time; }; #endif