// DefaultDatasetMerger.h #ifndef dset__DefaultDatasetMerger_H #define dset__DefaultDatasetMerger_H // David Adams // April 2004 // // This dataset merger merges datasets into the same type using // their merge method. // // All compound datasets returned as results are stored in // the current default dataset repository. // // The merger manages the datasets it returns in its result. // A call to result deletes the dataset returned in the // previous call if it has changed. #include "dataset_util/Text.h" #include "dataset_split/DatasetMerger.h" namespace dset { class Dataset; class DefaultDatasetMerger : public DatasetMerger { private: // data std::string m_dir; int m_err; DatasetList m_dsts; Dataset* m_pdst; Dataset* m_pdstres; DatasetMergeResult* m_pres; bool m_open; private: // No copy or assignment // Copy. DefaultDatasetMerger(const DefaultDatasetMerger& rhs); // Assignment. DefaultDatasetMerger& operator=(const DefaultDatasetMerger& rhs); public: // constructors and destructor. // Constructor. // Argument is the working directory. DefaultDatasetMerger(std::string dir); // Destructor. ~DefaultDatasetMerger(); public: // inherited functions // Validity. bool is_valid() const; // Closed. bool is_open() const; // Append a dataset. int append(const Dataset& dst); // Return the result. // This should not be blocking--if the result will require a long // time to calculate, then this method should quickly return a // (consistent) partial result. DatasetMergeResult result(); // Close. int close(); // Output stream. std::ostream& ostr(std::ostream& str) const; public: // local functions // Set error and return error code. int set_error(int err); // Return the error code. int error() const; }; } // end namespace dset #endif