//===-- SBEnvironment.h -----------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLDB_API_SBENVIRONMENT_H #define LLDB_API_SBENVIRONMENT_H #include "lldb/API/SBDefines.h" namespace lldb { class LLDB_API SBEnvironment { public: SBEnvironment(); SBEnvironment(const lldb::SBEnvironment &rhs); ~SBEnvironment(); const lldb::SBEnvironment &operator=(const lldb::SBEnvironment &rhs); /// Return the value of a given environment variable. /// /// \param [in] name /// The name of the environment variable. /// /// \return /// The value of the environment variable or null if not present. /// If the environment variable has no value but is present, a valid /// pointer to an empty string will be returned. const char *Get(const char *name); /// \return /// The number of environment variables. size_t GetNumValues(); /// Return the name of the environment variable at a given index from the /// internal list of environment variables. /// /// \param [in] index /// The index of the environment variable in the internal list. /// /// \return /// The name at the given index or null if the index is invalid. const char *GetNameAtIndex(size_t index); /// Return the value of the environment variable at a given index from the /// internal list of environment variables. /// /// \param [in] index /// The index of the environment variable in the internal list. /// /// \return /// The value at the given index or null if the index is invalid. /// If the environment variable has no value but is present, a valid /// pointer to an empty string will be returned. const char *GetValueAtIndex(size_t index); /// Return all environment variables contained in this object. Each variable /// is returned as a string with the following format /// name=value /// /// \return /// Return an lldb::SBStringList object with the environment variables. SBStringList GetEntries(); /// Add or replace an existing environment variable. The input must be a /// string with the format /// name=value /// /// \param [in] name_and_value /// The entry to set which conforms to the format mentioned above. void PutEntry(const char *name_and_value); /// Update this object with the given environment variables. The input is a /// list of entries with the same format required by SBEnvironment::PutEntry. /// /// If append is false, the provided environment will replace the existing /// environment. Otherwise, existing values will be updated of left untouched /// accordingly. /// /// \param [in] entries /// The environment variable entries. /// /// \param [in] append /// Flag that controls whether to replace the existing environment. void SetEntries(const SBStringList &entries, bool append); /// Set the value of a given environment variable. /// If the variable exists, its value is updated only if overwrite is true. /// /// \param [in] name /// The name of the environment variable to set. /// /// \param [in] value /// The value of the environment variable to set. /// /// \param [in] overwrite /// Flag that indicates whether to overwrite an existing environment /// variable. /// /// \return /// Return whether the variable was added or modified. bool Set(const char *name, const char *value, bool overwrite); /// Unset an environment variable if exists. /// /// \param [in] name /// The name of the environment variable to unset. /// /// \return /// Return whether a variable was actually unset. bool Unset(const char *name); /// Delete all the environment variables. void Clear(); protected: friend class SBPlatform; friend class SBTarget; friend class SBLaunchInfo; SBEnvironment(lldb_private::Environment rhs); lldb_private::Environment &ref() const; private: std::unique_ptr m_opaque_up; }; } // namespace lldb #endif // LLDB_API_SBENVIRONMENT_H