https://github.com/Kitware/CMake
Tip revision: 3b4bd019ffb088bbf34fbdbc7512a086d652c7d4 authored by Brad King on 14 June 2022, 16:11:11 UTC
CMake 3.24.0-rc1
CMake 3.24.0-rc1
Tip revision: 3b4bd01
cmFileLockResult.h
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
file Copyright.txt or https://cmake.org/licensing for details. */
#pragma once
#include "cmConfigure.h" // IWYU pragma: keep
#include <string>
#if defined(_WIN32)
# include <windows.h> // DWORD
#endif
/**
* @brief Result of the locking/unlocking file.
* @note See @c cmFileLock
*/
class cmFileLockResult
{
public:
#if defined(_WIN32)
using Error = DWORD;
#else
using Error = int;
#endif
/**
* @brief Successful lock/unlock.
*/
static cmFileLockResult MakeOk();
/**
* @brief Lock/Unlock failed. Read error/GetLastError.
*/
static cmFileLockResult MakeSystem();
/**
* @brief Lock/Unlock failed. Timeout reached.
*/
static cmFileLockResult MakeTimeout();
/**
* @brief File already locked.
*/
static cmFileLockResult MakeAlreadyLocked();
/**
* @brief Internal error.
*/
static cmFileLockResult MakeInternal();
/**
* @brief Try to lock with function guard outside of the function
*/
static cmFileLockResult MakeNoFunction();
bool IsOk() const;
std::string GetOutputMessage() const;
private:
enum ErrorType
{
OK,
SYSTEM,
TIMEOUT,
ALREADY_LOCKED,
INTERNAL,
NO_FUNCTION
};
cmFileLockResult(ErrorType type, Error errorValue);
ErrorType Type;
Error ErrorValue;
};