aboutsummaryrefslogtreecommitdiffstats
path: root/src/find.h
diff options
context:
space:
mode:
authorDan Willemsen <dwillemsen@google.com>2020-06-26 19:20:26 -0700
committerGitHub <noreply@github.com>2020-06-26 19:20:26 -0700
commit10cc982b563c19890872b73e6d8fb44aeda646ae (patch)
tree6b5075e832cbdf2a7996a25a26659363527b6e4c /src/find.h
parent003cf51e9b6da48063c90cf4c6710fde103c9c4a (diff)
parent979e7ae6e417ae4ee45e835104b66191ae16a14c (diff)
downloadplatform_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.h79
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_