2008-12-18 22:28:57 +01:00
/*
2009-01-21 21:04:20 +01:00
* Cppcheck - A tool for static C / C + + code analysis
2010-04-13 21:23:17 +02:00
* Copyright ( C ) 2007 - 2010 Daniel Marjamäki and Cppcheck team .
2008-12-18 22:28:57 +01:00
*
* 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
2009-09-27 17:08:31 +02:00
* along with this program . If not , see < http : //www.gnu.org/licenses/>.
2008-12-18 22:28:57 +01:00
*/
# ifndef FileListerH
# define FileListerH
# include <vector>
# include <string>
2009-07-17 10:49:01 +02:00
/// @addtogroup Core
/// @{
2010-03-14 18:55:33 +01:00
/** @brief Base class for Cppcheck filelisters. Used to recursively search for source files. This class defines a platform independant interface and subclasses will provide platform dependant implementation. */
2008-12-18 22:28:57 +01:00
class FileLister
{
public :
2010-04-07 23:07:03 +02:00
/**
* @ brief destructor of class filelister
*/
2010-04-08 17:41:22 +02:00
virtual ~ FileLister ( ) { }
2010-03-14 18:55:33 +01:00
/**
* @ brief Add source files to a vector ( * . c ; * . cpp ; * . cxx ; * . c + + ; * . cc ; * . txx )
* @ param filenames output vector that filenames are written to
* @ param path root path
* @ param recursive Should files be added recursively or not ?
*/
2010-02-28 19:24:16 +01:00
virtual void recursiveAddFiles ( std : : vector < std : : string > & filenames , const std : : string & path , bool recursive ) = 0 ;
2010-03-14 18:55:33 +01:00
/**
* @ brief simplify path " foo/bar/.. " = > " foo "
* @ param originalPath path to be simplified
* @ return simplified path
*/
2010-03-11 20:58:59 +01:00
virtual std : : string simplifyPath ( const char * originalPath ) ;
2010-03-14 18:55:33 +01:00
/**
* @ brief compare filenames to see if they are the same . On Linux the comparison is case - sensitive . On Windows it is case - insensitive .
* @ param fname1 one filename
* @ param fname2 other filename
* @ return true if the filenames match on the current platform
*/
2010-02-28 19:41:16 +01:00
virtual bool sameFileName ( const std : : string & fname1 , const std : : string & fname2 ) = 0 ;
2010-03-14 18:55:33 +01:00
/**
* @ brief check if the file extension indicates that it ' s a source file - * . c ; * . cpp ; * . cxx ; * . c + + ; * . cc ; * . txx
* @ param filename filename
* @ return returns true if the file extension indicates it should be checked
*/
2010-03-11 20:58:59 +01:00
virtual bool acceptFile ( const std : : string & filename ) ;
2009-03-02 20:56:51 +01:00
2008-12-18 22:28:57 +01:00
} ;
2010-03-14 18:55:33 +01:00
/** @brief get filelister (platform dependent implementation) */
2010-03-11 20:58:59 +01:00
FileLister * getFileLister ( ) ;
2009-07-17 10:49:01 +02:00
/// @}
2010-03-11 20:58:59 +01:00
# endif // #ifndef FileListerH