code: protected List<File> getProjectSources( VCProject vcProject, boolean includeHeaders, List<String> excludes )
              throws MojoExecutionException
      {
          final DirectoryScanner directoryScanner = new DirectoryScanner();
          List<String> sourceFilePatterns = new ArrayList<String>();
          String relProjectDir = calculateProjectRelativeDirectory( vcProject );
  
          sourceFilePatterns.add( relProjectDir + "**\\*.c" );
          sourceFilePatterns.add( relProjectDir + "**\\*.cpp" );
          
          if ( includeHeaders )
          {
              sourceFilePatterns.add( relProjectDir + "**\\*.h" );
              sourceFilePatterns.add( relProjectDir + "**\\*.hpp" );
          }
  
          //Make sure we use case-insensitive matches as this plugin runs on a Windows platform 
          directoryScanner.setCaseSensitive( false );
          directoryScanner.setIncludes( sourceFilePatterns.toArray( new String[0] ) );
          directoryScanner.setExcludes( excludes.toArray( new String[excludes.size()] ) );
          directoryScanner.setBasedir( vcProject.getBaseDirectory() );
          directoryScanner.scan();
          
          List<File> sourceFiles = new ArrayList<File>();
          for ( String fileName : directoryScanner.getIncludedFiles() )
          {
              sourceFiles.add( new File( vcProject.getBaseDirectory(), fileName ) );
          }
          
          return sourceFiles;
      }
docs: Generate a list of source files in the project directory and sub-directories
  @param vcProject the parsed project
  @param includeHeaders set to true to include header files (*.h and *.hpp)
  @param excludes a List of pathname patterns to exclude from results
  @return a list of abstract paths representing each source file