mirror of
https://github.com/reactos/CMake.git
synced 2024-12-04 09:54:15 +00:00
ae5e97a005
They are unused, but if someone used them they would lead to problems since they would copy the internal raw pointers and the destructor would cause double delete
46 lines
1.5 KiB
C++
46 lines
1.5 KiB
C++
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
file Copyright.txt or https://cmake.org/licensing for details. */
|
|
#ifndef cmWorkingDirectory_h
|
|
#define cmWorkingDirectory_h
|
|
|
|
#include "cmConfigure.h" // IWYU pragma: keep
|
|
|
|
#include <string>
|
|
|
|
/** \class cmWorkingDirectory
|
|
* \brief An RAII class to manipulate the working directory.
|
|
*
|
|
* The current working directory is set to the location given to the
|
|
* constructor. The working directory can be changed again as needed
|
|
* by calling SetDirectory(). When the object is destroyed, the destructor
|
|
* will restore the working directory to what it was when the object was
|
|
* created, regardless of any calls to SetDirectory() in the meantime.
|
|
*/
|
|
class cmWorkingDirectory
|
|
{
|
|
public:
|
|
cmWorkingDirectory(std::string const& newdir);
|
|
~cmWorkingDirectory();
|
|
|
|
cmWorkingDirectory(const cmWorkingDirectory&) = delete;
|
|
cmWorkingDirectory& operator=(const cmWorkingDirectory&) = delete;
|
|
|
|
bool SetDirectory(std::string const& newdir);
|
|
void Pop();
|
|
bool Failed() const { return ResultCode != 0; }
|
|
|
|
/** \return 0 if the last attempt to set the working directory was
|
|
* successful. If it failed, the value returned will be the
|
|
* \c errno value associated with the failure. A description
|
|
* of the error code can be obtained by passing the result
|
|
* to \c std::strerror().
|
|
*/
|
|
int GetLastResult() const { return ResultCode; }
|
|
|
|
private:
|
|
std::string OldDir;
|
|
int ResultCode;
|
|
};
|
|
|
|
#endif
|