// boost/system/windows_error.hpp ------------------------------------------// // Copyright Beman Dawes 2007 // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // See library home page at http://www.boost.org/libs/system #ifndef BOOST_SYSTEM_WINDOWS_ERROR_HPP #define BOOST_SYSTEM_WINDOWS_ERROR_HPP // This header is effectively empty for compiles on operating systems where // it is not applicable. #include #ifdef BOOST_WINDOWS_API #include //// Neither MinGW or Cygwin versions of winerror.h work if used alone, so on //// either of those platforms include the full windows.h // //#if defined(__MINGW32__) || defined(__CYGWIN__) //#include //#else //#include //#endif #include namespace boost { namespace system { // Microsoft Windows ---------------------------------------------------// // To construct an error_code after a API error: // // error_code( ::GetLastError(), system_category() ) namespace windows_error { enum windows_error_code { success = 0, // These names and values are based on Windows winerror.h invalid_function = boost::winapi::ERROR_INVALID_FUNCTION_, file_not_found = boost::winapi::ERROR_FILE_NOT_FOUND_, path_not_found = boost::winapi::ERROR_PATH_NOT_FOUND_, too_many_open_files = boost::winapi::ERROR_TOO_MANY_OPEN_FILES_, access_denied = boost::winapi::ERROR_ACCESS_DENIED_, invalid_handle = boost::winapi::ERROR_INVALID_HANDLE_, arena_trashed = boost::winapi::ERROR_ARENA_TRASHED_, not_enough_memory = boost::winapi::ERROR_NOT_ENOUGH_MEMORY_, invalid_block = boost::winapi::ERROR_INVALID_BLOCK_, bad_environment = boost::winapi::ERROR_BAD_ENVIRONMENT_, bad_format = boost::winapi::ERROR_BAD_FORMAT_, invalid_access = boost::winapi::ERROR_INVALID_ACCESS_, outofmemory = boost::winapi::ERROR_OUTOFMEMORY_, invalid_drive = boost::winapi::ERROR_INVALID_DRIVE_, current_directory = boost::winapi::ERROR_CURRENT_DIRECTORY_, not_same_device = boost::winapi::ERROR_NOT_SAME_DEVICE_, no_more_files = boost::winapi::ERROR_NO_MORE_FILES_, write_protect = boost::winapi::ERROR_WRITE_PROTECT_, bad_unit = boost::winapi::ERROR_BAD_UNIT_, not_ready = boost::winapi::ERROR_NOT_READY_, bad_command = boost::winapi::ERROR_BAD_COMMAND_, crc = boost::winapi::ERROR_CRC_, bad_length = boost::winapi::ERROR_BAD_LENGTH_, seek = boost::winapi::ERROR_SEEK_, not_dos_disk = boost::winapi::ERROR_NOT_DOS_DISK_, sector_not_found = boost::winapi::ERROR_SECTOR_NOT_FOUND_, out_of_paper = boost::winapi::ERROR_OUT_OF_PAPER_, write_fault = boost::winapi::ERROR_WRITE_FAULT_, read_fault = boost::winapi::ERROR_READ_FAULT_, gen_failure = boost::winapi::ERROR_GEN_FAILURE_, sharing_violation = boost::winapi::ERROR_SHARING_VIOLATION_, lock_violation = boost::winapi::ERROR_LOCK_VIOLATION_, wrong_disk = boost::winapi::ERROR_WRONG_DISK_, sharing_buffer_exceeded = boost::winapi::ERROR_SHARING_BUFFER_EXCEEDED_, handle_eof = boost::winapi::ERROR_HANDLE_EOF_, handle_disk_full= boost::winapi::ERROR_HANDLE_DISK_FULL_, rem_not_list = boost::winapi::ERROR_REM_NOT_LIST_, dup_name = boost::winapi::ERROR_DUP_NAME_, bad_net_path = boost::winapi::ERROR_BAD_NETPATH_, network_busy = boost::winapi::ERROR_NETWORK_BUSY_, // ... file_exists = boost::winapi::ERROR_FILE_EXISTS_, cannot_make = boost::winapi::ERROR_CANNOT_MAKE_, // ... broken_pipe = boost::winapi::ERROR_BROKEN_PIPE_, open_failed = boost::winapi::ERROR_OPEN_FAILED_, buffer_overflow = boost::winapi::ERROR_BUFFER_OVERFLOW_, disk_full= boost::winapi::ERROR_DISK_FULL_, // ... lock_failed = boost::winapi::ERROR_LOCK_FAILED_, busy = boost::winapi::ERROR_BUSY_, cancel_violation = boost::winapi::ERROR_CANCEL_VIOLATION_, already_exists = boost::winapi::ERROR_ALREADY_EXISTS_ // ... // TODO: add more Windows errors }; } // namespace windows # ifdef BOOST_SYSTEM_ENABLE_DEPRECATED namespace windows = windows_error; # endif template<> struct is_error_code_enum { static const bool value = true; }; namespace windows_error { inline error_code make_error_code( windows_error_code e ) { return error_code( e, system_category() ); } } } // namespace system } // namespace boost #endif // BOOST_WINDOWS_API #endif // BOOST_SYSTEM_WINDOWS_ERROR_HPP