1 // Copyright 2013 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/files/file_enumerator.h" 6 7 #include "base/files/file_util.h" 8 #include "base/functional/function_ref.h" 9 10 namespace base { 11 12 FileEnumerator::FileInfo::~FileInfo() = default; 13 14 FileEnumerator::FileInfo::FileInfo(const FileEnumerator::FileInfo&) = default; 15 16 FileEnumerator::FileInfo::FileInfo(FileEnumerator::FileInfo&&) = default; 17 18 FileEnumerator::FileInfo& FileEnumerator::FileInfo::operator=( 19 const FileEnumerator::FileInfo& that) = default; 20 21 FileEnumerator::FileInfo& FileEnumerator::FileInfo::operator=( 22 FileEnumerator::FileInfo&& that) = default; 23 ShouldSkip(const FilePath & path)24bool FileEnumerator::ShouldSkip(const FilePath& path) { 25 FilePath base_path = path.BaseName(); 26 const FilePath::StringType& basename = base_path.value(); 27 return basename == FILE_PATH_LITERAL(".") || 28 (basename == FILE_PATH_LITERAL("..") && 29 !(INCLUDE_DOT_DOT & file_type_)); 30 } 31 IsTypeMatched(bool is_dir) const32bool FileEnumerator::IsTypeMatched(bool is_dir) const { 33 return (file_type_ & 34 (is_dir ? FileEnumerator::DIRECTORIES : FileEnumerator::FILES)) != 0; 35 } 36 ForEach(FunctionRef<void (const FilePath & path)> ref)37void FileEnumerator::ForEach(FunctionRef<void(const FilePath& path)> ref) { 38 for (FilePath name = Next(); !name.empty(); name = Next()) { 39 ref(name); 40 } 41 } 42 43 } // namespace base 44