#ifndef CONCORDIA_INDEX_HDR #define CONCORDIA_INDEX_HDR #include #include #include #include #include #include "concordia/common/config.hpp" #include "concordia/example.hpp" #include "concordia/hash_generator.hpp" #include "concordia/concordia_exception.hpp" #include /*! Class for creating and maintaining the index. */ class ConcordiaIndex { public: explicit ConcordiaIndex(const std::string & hashedIndexFilePath, const std::string & markersFilePath) throw(ConcordiaException); /*! Destructor. */ virtual ~ConcordiaIndex(); void addExample( boost::shared_ptr hashGenerator, boost::shared_ptr > T, boost::shared_ptr > markers, const Example & example); void addAllExamples( boost::shared_ptr hashGenerator, boost::shared_ptr > T, boost::shared_ptr > markers, const std::vector & examples); boost::shared_ptr > generateSuffixArray( boost::shared_ptr > T); private: // Add example to disk index and update RAM index. void _addSingleExample(std::ofstream & hashedIndexFile, std::ofstream & markersFile, boost::shared_ptr hashGenerator, boost::shared_ptr > T, boost::shared_ptr > markers, const Example & example); std::string _hashedIndexFilePath; std::string _markersFilePath; }; #endif