| /* 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> |
| |
| /** |
| * @brief Result of the locking/unlocking file. |
| * @note See @c cmFileLock |
| */ |
| class cmFileLockResult |
| { |
| public: |
| using Error = int; |
| |
| /** |
| * @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; |
| }; |