// // aegis - project change supervisor // Copyright (C) 2007, 2008 Peter Miller // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see // . // #ifndef AEDE_POLICY_VALIDATION_FILES_H #define AEDE_POLICY_VALIDATION_FILES_H #include /** * The validation_files class is used to represent an abstract * interface to validations which check all of the files in a change * set. */ class validation_files: public validation { public: /** * The destructor. */ virtual ~validation_files(); /** * The default constructor. */ validation_files(); protected: // See base class for documentation. bool run(change::pointer cp); /** * The is_a_text_file method may be used to determine whether * or not the given file is a text file. This is based on the * file's content-type attribute, if present, or the file itself * otherwise. * * @param src * Details of the file in question. * @param cp * the containing change set * @returns * bool; true if the file is a text file, false if it is a binary file */ static bool is_a_text_file(fstate_src_ty *src, change::pointer cp); /** * The check method is used to check a single file. * * @param cp * The change in question. * @param src * The file in question. * @returns * bool; true if the file is OK, false if it has a problem */ virtual bool check(change::pointer cp, fstate_src_ty *src) = 0; /** * The check_branches method is used to determine whether or not * branches are to be checked by aede-policy. * * The default implementation returns true. * * @returns * bool; true if branches should be checked, false if should not be. */ virtual bool check_branches() const; /** * The check_downloaded method is used to determine whether or not * downloaded change sets are to be checked by aede-policy. * * The default implementation returns true. * * @returns * bool; true if downloaded change sets should be checked, * false if should not be. */ virtual bool check_downloaded() const; /** * The check_foreign_copyright method is used to determine whether * or not change sets and files with the foreign-copyright=true * attribute are to be checked by aede-policy. * * The default implementation returns true. * * @returns * bool; true if foreign copyright change sets should be * checked, false if should not be. */ virtual bool check_foreign_copyright() const; /** * The check_binaries method is used to determine whether or not * files which are NOT text (as determined by is_a_text_file) are * to be checked by aede-policy. * * The default implementation returns true. * * @returns * bool; true if binary files should be checked, false if * should not be. */ virtual bool check_binaries() const; private: /** * The copy constructor. Do not use. */ validation_files(const validation_files &); /** * The assignment operator. Do not use. */ validation_files &operator=(const validation_files &); }; #endif // AEDE_POLICY_VALIDATION_FILES_H