00001 // 00002 // aegis - project change supervisor 00003 // Copyright (C) 2004-2008 Peter Miller 00004 // 00005 // This program is free software; you can redistribute it and/or modify 00006 // it under the terms of the GNU General Public License as published by 00007 // the Free Software Foundation; either version 3 of the License, or 00008 // (at your option) any later version. 00009 // 00010 // This program is distributed in the hope that it will be useful, 00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 // GNU General Public License for more details. 00014 // 00015 // You should have received a copy of the GNU General Public License 00016 // along with this program. If not, see 00017 // <http://www.gnu.org/licenses/>. 00018 // 00019 00020 #ifndef LIBAEGIS_CHANGE_FUNCTOR_H 00021 #define LIBAEGIS_CHANGE_FUNCTOR_H 00022 00023 #include <common/ac/time.h> 00024 00025 #include <libaegis/change.h> 00026 00035 class change_functor 00036 { 00037 public: 00041 virtual ~change_functor(); 00042 00049 virtual void operator()(change::pointer cp) = 0; 00050 00056 bool include_branches() const { return include_branches_flag; } 00057 00063 bool all_changes() const { return all_changes_flag; } 00064 00072 virtual time_t earliest(); 00073 00081 virtual time_t latest(); 00082 00091 virtual bool recurse_branches(); 00092 00093 protected: 00098 change_functor(bool include_branches, bool all_changes = false); 00099 00104 change_functor(const change_functor &); 00105 00110 change_functor &operator=(const change_functor &); 00111 00112 private: 00113 bool include_branches_flag; 00114 bool all_changes_flag; 00115 00119 change_functor(); 00120 }; 00121 00122 #endif // LIBAEGIS_CHANGE_FUNCTOR_H