kodi
Directory.h
1 /*
2  * Copyright (C) 2005-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "IDirectory.h"
12 
13 #include <functional>
14 #include <memory>
15 #include <string>
16 
17 class CFileItem;
18 
19 namespace XFILE
20 {
26 {
27 public:
28  CDirectory(void);
29  virtual ~CDirectory(void);
30 
31  class CHints
32  {
33  public:
34  std::string mask;
35  int flags = DIR_FLAG_DEFAULTS;
36  };
37 
38  static bool GetDirectory(const CURL& url
39  , CFileItemList &items
40  , const std::string &strMask
41  , int flags);
42 
43  static bool GetDirectory(const CURL& url,
44  const std::shared_ptr<IDirectory>& pDirectory,
45  CFileItemList& items,
46  const CHints& hints);
47 
48  static bool GetDirectory(const CURL& url
49  , CFileItemList &items
50  , const CHints &hints);
51 
52  static bool Create(const CURL& url);
53  static bool Exists(const CURL& url, bool bUseCache = true);
54  static bool Remove(const CURL& url);
55  static bool RemoveRecursive(const CURL& url);
56 
57  static bool GetDirectory(const std::string& strPath
58  , CFileItemList &items
59  , const std::string &strMask
60  , int flags);
61 
62  static bool GetDirectory(const std::string& strPath,
63  const std::shared_ptr<IDirectory>& pDirectory,
64  CFileItemList& items,
65  const std::string& strMask,
66  int flags);
67 
68  static bool GetDirectory(const std::string& strPath
69  , CFileItemList &items
70  , const CHints &hints);
71 
72  using DirectoryEnumerationCallback = std::function<void(const std::shared_ptr<CFileItem>& item)>;
73  using DirectoryFilter = std::function<bool(const std::shared_ptr<CFileItem>& folder)>;
74 
85  static bool EnumerateDirectory(
86  const std::string& path,
87  const DirectoryEnumerationCallback& callback,
88  const DirectoryFilter& filter = [](const std::shared_ptr<CFileItem>&) { return true; },
89  bool fileOnly = false,
90  const std::string& mask = "",
91  int flags = DIR_FLAG_DEFAULTS);
92 
93  static bool Create(const std::string& strPath);
94  static bool Exists(const std::string& strPath, bool bUseCache = true);
95  static bool Remove(const std::string& strPath);
96  static bool RemoveRecursive(const std::string& strPath);
97 
103  static void FilterFileDirectories(CFileItemList &items, const std::string &mask,
104  bool expandImages=false);
105 };
106 }
Definition: Scraper.h:41
static void FilterFileDirectories(CFileItemList &items, const std::string &mask, bool expandImages=false)
Filter files that act like directories from the list, replacing them with their directory counterpart...
Definition: Directory.cpp:466
Represents a list of files.
Definition: FileItem.h:702
Definition: URL.h:21
static bool EnumerateDirectory(const std::string &path, const DirectoryEnumerationCallback &callback, const DirectoryFilter &filter=[](const std::shared_ptr< CFileItem > &) { return true;}, bool fileOnly=false, const std::string &mask="", int flags=DIR_FLAG_DEFAULTS)
Enumerates files and folders in and below a directory. Every applicable gets passed to the callback...
Definition: Directory.cpp:311
Wrappers for IDirectory.
Definition: Directory.h:25
Definition: Directory.h:31
Represents a file on a share.
Definition: FileItem.h:102