00001 00002 // 00003 // SimpleCopier 00004 // 00005 // 24 September 2004 -- tds 00006 // 00007 // SimpleCopier just makes a copy of a query tree and stores it. 00008 // This is useful for keeping a copy of a query tree around. 00009 // 00010 00011 #ifndef INDRI_SIMPLECOPIER_HPP 00012 #define INDRI_SIMPLECOPIER_HPP 00013 00014 #include "Copier.hpp" 00015 00016 class SimpleCopier : public indri::lang::Copier { 00017 private: 00018 std::vector<indri::lang::Node*> _nodes; 00019 00020 public: 00021 ~SimpleCopier() { 00022 delete_vector_contents( _nodes ); 00023 } 00024 00025 indri::lang::Node* defaultAfter( indri::lang::Node* oldNode, indri::lang::Node* newNode ) { 00026 _nodes.push_back(newNode); 00027 return newNode; 00028 } 00029 00030 indri::lang::Node* root() { 00031 if( _nodes.size() ) 00032 return _nodes.back(); 00033 return 0; 00034 } 00035 }; 00036 00037 #endif // INDRI_SIMPLECOPIER_HPP