windows_throw_last_error.cpp 824 B

123456789101112131415161718192021222324252627282930
  1. //
  2. // $Id$
  3. //
  4. #include<__vic/windows/throw_last_error.h>
  5. #include<__vic/windows/error.h>
  6. #include<windows.h>
  7. namespace __vic { namespace windows {
  8. //----------------------------------------------------------------------------
  9. void throw_last_error(const char *prompt, unsigned err_code)
  10. {
  11. #if __cpp_static_assert
  12. static_assert(sizeof err_code >= sizeof(DWORD),
  13. "err_code is unable to hold all DWORD values");
  14. #else
  15. typedef char assert_[sizeof err_code >= sizeof(DWORD) ? 1 : -1];
  16. #endif
  17. throw error(prompt, err_code);
  18. }
  19. //----------------------------------------------------------------------------
  20. void throw_last_error(const char *prompt)
  21. {
  22. throw_last_error(prompt, ::GetLastError());
  23. }
  24. //----------------------------------------------------------------------------
  25. }} // namespace