#ifndef SUBSTRING_OCCURRENCE_HDR #define SUBSTRING_OCCURRENCE_HDR #include "concordia/common/config.hpp" #include #include /*! Class representing occurrence of a searched substring. It holds the following information: - id of the example where the substring was found - offset of the matched substring in this example - length of the example */ class SubstringOccurrence { public: /*! Constructor. */ SubstringOccurrence(); /*! Constructor taking data from a marker. \param marker */ explicit SubstringOccurrence(const SUFFIX_MARKER_TYPE & marker); /*! Constructor with three arguments. \param id example id \param offset offset of the substring in the example \param exampleLength length of the example */ SubstringOccurrence(const SUFFIX_MARKER_TYPE & id, const SUFFIX_MARKER_TYPE & offset, const SUFFIX_MARKER_TYPE & exampleLength); /*! Destructor. */ virtual ~SubstringOccurrence(); /*! Getter for example id. \returns example id */ SUFFIX_MARKER_TYPE getId() const { return _id; } /*! Getter for example offset \returns example offset */ SUFFIX_MARKER_TYPE getOffset() const { return _offset; } /*! Getter for example length. \returns example length */ SUFFIX_MARKER_TYPE getExampleLength() const { return _exampleLength; } /*! Setter of all the fields, based on input marker. \param marker marker to read the data from */ void enterDataFromMarker(const SUFFIX_MARKER_TYPE & marker); friend std::ostream & operator << (std::ostream & o, const SubstringOccurrence & occurrence) { return o << "occurrence(exampleId=" << occurrence.getId() << ", offset=" << occurrence.getOffset() << ")"; } private: SUFFIX_MARKER_TYPE _id; SUFFIX_MARKER_TYPE _offset; // the example SUFFIX_MARKER_TYPE _exampleLength; }; #endif