]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/include/lldb/Host/FileAction.h
Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / include / lldb / Host / FileAction.h
1 //===-- FileAction.h --------------------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8
9 #ifndef LLDB_HOST_FILEACTION_H
10 #define LLDB_HOST_FILEACTION_H
11
12 #include "lldb/Utility/FileSpec.h"
13 #include <string>
14
15 namespace lldb_private {
16
17 class FileAction {
18 public:
19   enum Action {
20     eFileActionNone,
21     eFileActionClose,
22     eFileActionDuplicate,
23     eFileActionOpen
24   };
25
26   FileAction();
27
28   void Clear();
29
30   bool Close(int fd);
31
32   bool Duplicate(int fd, int dup_fd);
33
34   bool Open(int fd, const FileSpec &file_spec, bool read, bool write);
35
36   int GetFD() const { return m_fd; }
37
38   Action GetAction() const { return m_action; }
39
40   int GetActionArgument() const { return m_arg; }
41
42   llvm::StringRef GetPath() const;
43
44   const FileSpec &GetFileSpec() const;
45
46   void Dump(Stream &stream) const;
47
48 protected:
49   Action m_action; // The action for this file
50   int m_fd;        // An existing file descriptor
51   int m_arg; // oflag for eFileActionOpen*, dup_fd for eFileActionDuplicate
52   FileSpec
53       m_file_spec; // A file spec to use for opening after fork or posix_spawn
54 };
55
56 } // namespace lldb_private
57
58 #endif