LLDB mainline
SBFile.h
Go to the documentation of this file.
1//===-- SBFile.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_API_SBFILE_H
10#define LLDB_API_SBFILE_H
11
12#include "lldb/API/SBDefines.h"
13
14#include <cstdio>
15
16namespace lldb {
17
19 friend class SBInstruction;
20 friend class SBInstructionList;
21 friend class SBDebugger;
23 friend class SBProcess;
24
25public:
26 SBFile();
27 SBFile(FileSP file_sp);
28#ifndef SWIG
29 SBFile(const SBFile &rhs);
30 LLDB_DEPRECATED_FIXME("Use the constructor that specifies mode instead",
31 "SBFile(FILE*, const char*, bool)")
32 SBFile(FILE *file, bool transfer_ownership);
33 SBFile(FILE *file, const char *mode, bool transfer_ownership);
34#endif
35 SBFile(int fd, const char *mode, bool transfer_ownership);
37
38#ifndef SWIG
39 /// Open a file descriptor in liblldb from a Windows HANDLE.
40 ///
41 /// This is useful for builds that statically link to the C runtime (`/MT`),
42 /// because the fd -> HANDLE mapping is local to liblldb's CRT instance.
43 ///
44 /// On other platforms, this always returns -1.
45 static int OpenFdFromHandle(intptr_t handle, int flags);
46#endif
47
48 SBFile &operator=(const SBFile &rhs);
49
50 SBError Read(uint8_t *buf, size_t num_bytes, size_t *OUTPUT);
51 SBError Write(const uint8_t *buf, size_t num_bytes, size_t *OUTPUT);
52 SBError Flush();
53 bool IsValid() const;
54 SBError Close();
55
56 explicit operator bool() const;
57#ifndef SWIG
58 bool operator!() const;
59#endif
60
61 FileSP GetFile() const;
62
63private:
65};
66
67} // namespace lldb
68
69#endif // LLDB_API_SBFILE_H
#define LLDB_API
Definition SBDefines.h:28
FileSP GetFile() const
Definition SBFile.cpp:146
static int OpenFdFromHandle(intptr_t handle, int flags)
Open a file descriptor in liblldb from a Windows HANDLE.
Definition SBFile.cpp:72
SBError Flush()
Definition SBFile.cpp:111
SBError Write(const uint8_t *buf, size_t num_bytes, size_t *OUTPUT)
Definition SBFile.cpp:96
friend class SBCommandReturnObject
Definition SBFile.h:22
friend class SBProcess
Definition SBFile.h:23
FileSP m_opaque_sp
Definition SBFile.h:64
bool operator!() const
Definition SBFile.cpp:141
friend class SBInstruction
Definition SBFile.h:19
friend class SBDebugger
Definition SBFile.h:21
LLDB_DEPRECATED_FIXME("Use the constructor that specifies mode instead", "SBFile(FILE*, const char*, bool)") SBFile(FILE *file
bool transfer_ownership
Definition SBFile.h:32
SBFile & operator=(const SBFile &rhs)
Definition SBFile.cpp:29
SBError Read(uint8_t *buf, size_t num_bytes, size_t *OUTPUT)
Definition SBFile.cpp:82
SBError Close()
Definition SBFile.cpp:128
friend class SBInstructionList
Definition SBFile.h:20
bool IsValid() const
Definition SBFile.cpp:123
std::shared_ptr< lldb_private::File > FileSP