diff options
| author | Dan Willemsen <dwillemsen@google.com> | 2020-06-26 19:20:26 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-06-26 19:20:26 -0700 |
| commit | 10cc982b563c19890872b73e6d8fb44aeda646ae (patch) | |
| tree | 6b5075e832cbdf2a7996a25a26659363527b6e4c /src/find.h | |
| parent | 003cf51e9b6da48063c90cf4c6710fde103c9c4a (diff) | |
| parent | 979e7ae6e417ae4ee45e835104b66191ae16a14c (diff) | |
| download | platform_build_kati-10cc982b563c19890872b73e6d8fb44aeda646ae.tar.gz platform_build_kati-10cc982b563c19890872b73e6d8fb44aeda646ae.tar.bz2 platform_build_kati-10cc982b563c19890872b73e6d8fb44aeda646ae.zip | |
Merge pull request #199 from danw/refactor
Refactor source tree into directories
Diffstat (limited to 'src/find.h')
| -rw-r--r-- | src/find.h | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/find.h b/src/find.h new file mode 100644 index 0000000..2a1abe4 --- /dev/null +++ b/src/find.h @@ -0,0 +1,79 @@ +// Copyright 2015 Google Inc. All rights reserved +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef FIND_H_ +#define FIND_H_ + +#include <memory> +#include <string> +#include <unordered_set> +#include <vector> + +#include "loc.h" +#include "string_piece.h" + +using namespace std; + +class FindCond; + +enum struct FindCommandType { + FIND, + FINDLEAVES, + LS, +}; + +struct FindCommand { + FindCommand(); + ~FindCommand(); + + bool Parse(const string& cmd); + + FindCommandType type; + string chdir; + string testdir; + vector<string> finddirs; + bool follows_symlinks; + unique_ptr<FindCond> print_cond; + unique_ptr<FindCond> prune_cond; + int depth; + int mindepth; + bool redirect_to_devnull; + + unique_ptr<vector<string>> found_files; + unique_ptr<unordered_set<string>> read_dirs; + + private: + FindCommand(const FindCommand&) = delete; + void operator=(FindCommand) = delete; +}; + +class FindEmulator { + public: + virtual ~FindEmulator() = default; + + virtual bool HandleFind(const string& cmd, + const FindCommand& fc, + const Loc& loc, + string* out) = 0; + + static FindEmulator* Get(); + static unsigned int GetNodeCount(); + + protected: + FindEmulator() = default; +}; + +void InitFindEmulator(); + +#endif // FIND_H_ |
