• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)24 bool 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) const32 bool 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)37 void 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