| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #ifndef MERT_FEATURE_DATA_ITERATOR_H_ |
| | #define MERT_FEATURE_DATA_ITERATOR_H_ |
| |
|
| | |
| | |
| | |
| |
|
| | #include <fstream> |
| | #include <map> |
| | #include <stdexcept> |
| | #include <vector> |
| |
|
| | #include <boost/iterator/iterator_facade.hpp> |
| | #include <boost/shared_ptr.hpp> |
| |
|
| | #include "util/exception.hh" |
| | #include "util/string_piece.hh" |
| |
|
| | #include "FeatureStats.h" |
| |
|
| | namespace util |
| | { |
| | class FilePiece; |
| | } |
| |
|
| | namespace MosesTuning |
| | { |
| |
|
| |
|
| | class FileFormatException : public util::Exception |
| | { |
| | public: |
| | explicit FileFormatException(const std::string& filename, const std::string& line) { |
| | *this << "Error in line \"" << line << "\" of " << filename; |
| | } |
| | }; |
| |
|
| |
|
| | |
| | int ParseInt(const StringPiece& str ); |
| |
|
| | |
| | float ParseFloat(const StringPiece& str); |
| |
|
| |
|
| | class FeatureDataItem |
| | { |
| | public: |
| | std::vector<float> dense; |
| | SparseVector sparse; |
| | }; |
| |
|
| | bool operator==(FeatureDataItem const& item1, FeatureDataItem const& item2); |
| | std::size_t hash_value(FeatureDataItem const& item); |
| |
|
| | class FeatureDataIterator : |
| | public boost::iterator_facade<FeatureDataIterator, |
| | const std::vector<FeatureDataItem>, |
| | boost::forward_traversal_tag> |
| | { |
| | public: |
| | FeatureDataIterator(); |
| | explicit FeatureDataIterator(const std::string& filename); |
| | ~FeatureDataIterator(); |
| |
|
| | static FeatureDataIterator end() { |
| | return FeatureDataIterator(); |
| | } |
| |
|
| |
|
| | private: |
| | friend class boost::iterator_core_access; |
| |
|
| | void increment(); |
| | bool equal(const FeatureDataIterator& rhs) const; |
| | const std::vector<FeatureDataItem>& dereference() const; |
| |
|
| | void readNext(); |
| |
|
| | boost::shared_ptr<util::FilePiece> m_in; |
| | std::vector<FeatureDataItem> m_next; |
| | }; |
| |
|
| | } |
| |
|
| | #endif |
| |
|