1 | //===-- SBEnvironment.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_SBENVIRONMENT_H |
10 | #define LLDB_API_SBENVIRONMENT_H |
11 | |
12 | #include "lldb/API/SBDefines.h" |
13 | |
14 | namespace lldb { |
15 | |
16 | class LLDB_API SBEnvironment { |
17 | public: |
18 | SBEnvironment(); |
19 | |
20 | SBEnvironment(const lldb::SBEnvironment &rhs); |
21 | |
22 | ~SBEnvironment(); |
23 | |
24 | const lldb::SBEnvironment &operator=(const lldb::SBEnvironment &rhs); |
25 | |
26 | /// Return the value of a given environment variable. |
27 | /// |
28 | /// \param [in] name |
29 | /// The name of the environment variable. |
30 | /// |
31 | /// \return |
32 | /// The value of the environment variable or null if not present. |
33 | /// If the environment variable has no value but is present, a valid |
34 | /// pointer to an empty string will be returned. |
35 | const char *Get(const char *name); |
36 | |
37 | /// \return |
38 | /// The number of environment variables. |
39 | size_t GetNumValues(); |
40 | |
41 | /// Return the name of the environment variable at a given index from the |
42 | /// internal list of environment variables. |
43 | /// |
44 | /// \param [in] index |
45 | /// The index of the environment variable in the internal list. |
46 | /// |
47 | /// \return |
48 | /// The name at the given index or null if the index is invalid. |
49 | const char *GetNameAtIndex(size_t index); |
50 | |
51 | /// Return the value of the environment variable at a given index from the |
52 | /// internal list of environment variables. |
53 | /// |
54 | /// \param [in] index |
55 | /// The index of the environment variable in the internal list. |
56 | /// |
57 | /// \return |
58 | /// The value at the given index or null if the index is invalid. |
59 | /// If the environment variable has no value but is present, a valid |
60 | /// pointer to an empty string will be returned. |
61 | const char *GetValueAtIndex(size_t index); |
62 | |
63 | /// Return all environment variables contained in this object. Each variable |
64 | /// is returned as a string with the following format |
65 | /// name=value |
66 | /// |
67 | /// \return |
68 | /// Return an lldb::SBStringList object with the environment variables. |
69 | SBStringList GetEntries(); |
70 | |
71 | /// Add or replace an existing environment variable. The input must be a |
72 | /// string with the format |
73 | /// name=value |
74 | /// |
75 | /// \param [in] name_and_value |
76 | /// The entry to set which conforms to the format mentioned above. |
77 | void PutEntry(const char *name_and_value); |
78 | |
79 | /// Update this object with the given environment variables. The input is a |
80 | /// list of entries with the same format required by SBEnvironment::PutEntry. |
81 | /// |
82 | /// If append is false, the provided environment will replace the existing |
83 | /// environment. Otherwise, existing values will be updated of left untouched |
84 | /// accordingly. |
85 | /// |
86 | /// \param [in] entries |
87 | /// The environment variable entries. |
88 | /// |
89 | /// \param [in] append |
90 | /// Flag that controls whether to replace the existing environment. |
91 | void SetEntries(const SBStringList &entries, bool append); |
92 | |
93 | /// Set the value of a given environment variable. |
94 | /// If the variable exists, its value is updated only if overwrite is true. |
95 | /// |
96 | /// \param [in] name |
97 | /// The name of the environment variable to set. |
98 | /// |
99 | /// \param [in] value |
100 | /// The value of the environment variable to set. |
101 | /// |
102 | /// \param [in] overwrite |
103 | /// Flag that indicates whether to overwrite an existing environment |
104 | /// variable. |
105 | /// |
106 | /// \return |
107 | /// Return whether the variable was added or modified. |
108 | bool Set(const char *name, const char *value, bool overwrite); |
109 | |
110 | /// Unset an environment variable if exists. |
111 | /// |
112 | /// \param [in] name |
113 | /// The name of the environment variable to unset. |
114 | /// |
115 | /// \return |
116 | /// Return whether a variable was actually unset. |
117 | bool Unset(const char *name); |
118 | |
119 | /// Delete all the environment variables. |
120 | void Clear(); |
121 | |
122 | protected: |
123 | friend class SBPlatform; |
124 | friend class SBTarget; |
125 | friend class SBLaunchInfo; |
126 | |
127 | SBEnvironment(lldb_private::Environment rhs); |
128 | |
129 | lldb_private::Environment &ref() const; |
130 | |
131 | private: |
132 | std::unique_ptr<lldb_private::Environment> m_opaque_up; |
133 | }; |
134 | |
135 | } // namespace lldb |
136 | |
137 | #endif // LLDB_API_SBENVIRONMENT_H |
138 | |