Turn errc and windows_error into enum classes.
authorRafael Espindola <rafael.espindola@gmail.com>
Sat, 31 May 2014 02:29:28 +0000 (02:29 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Sat, 31 May 2014 02:29:28 +0000 (02:29 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209957 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Support/system_error.h
lib/Support/Unix/Path.inc
lib/Support/Windows/Path.inc
tools/llvm-ar/llvm-ar.cpp

index a18b921ac1f20d3253c5954dfe0de6ed93099cf2..9854a9ee85b287fee6c2ffd9ac19d75343278ad0 100644 (file)
@@ -482,9 +482,7 @@ template <class Tp> struct is_error_condition_enum : public std::false_type {};
 // Some error codes are not present on all platforms, so we provide equivalents
 // for them:
 
-//enum class errc
-struct errc {
-enum _ {
+enum class errc {
   success                             = 0,
   address_family_not_supported        = EAFNOSUPPORT,
   address_in_use                      = EADDRINUSE,
@@ -606,16 +604,9 @@ enum _ {
   wrong_protocol_type                 = EPROTOTYPE
 };
 
-  _ v_;
-
-  errc(_ v) : v_(v) {}
-  operator int() const {return v_;}
-};
 
 template <> struct is_error_condition_enum<errc> : std::true_type { };
 
-template <> struct is_error_condition_enum<errc::_> : std::true_type { };
-
 class error_condition;
 class error_code;
 
@@ -818,8 +809,7 @@ inline bool operator!=(const error_condition& _x, const error_condition& _y) {
 //  To construct an error_code after an API error:
 //
 //      error_code( ::GetLastError(), system_category() )
-struct windows_error {
-enum _ {
+enum class windows_error {
   success = 0,
   // These names and values are based on Windows WinError.h
   // This is not a complete list. Add to this list if you need to explicitly
@@ -876,18 +866,9 @@ enum _ {
   cancel_violation        = 173, // ERROR_CANCEL_VIOLATION,
   already_exists          = 183  // ERROR_ALREADY_EXISTS
 };
-  _ v_;
-
-  windows_error(_ v) : v_(v) {}
-  explicit windows_error(int v) : v_(_(v)) {}
-  operator int() const {return v_;}
-};
-
 
 template <> struct is_error_code_enum<windows_error> : std::true_type { };
 
-template <> struct is_error_code_enum<windows_error::_> : std::true_type { };
-
 inline error_code make_error_code(windows_error e) {
   return error_code(static_cast<int>(e), system_category());
 }
index 2925e6457ae97692ff9bb9008221497b2ea93d12..fbd7ced209b0bc4b10aecadd9858346e245cb237 100644 (file)
@@ -248,7 +248,7 @@ error_code current_path(SmallVectorImpl<char> &result) {
   while (true) {
     if (::getcwd(result.data(), result.capacity()) == nullptr) {
       // See if there was a real error.
-      if (errno != errc::not_enough_memory)
+      if (errno != ENOMEM)
         return error_code(errno, system_category());
       // Otherwise there just wasn't enough space.
       result.reserve(result.capacity() * 2);
@@ -265,7 +265,7 @@ error_code create_directory(const Twine &path, bool IgnoreExisting) {
   StringRef p = path.toNullTerminatedStringRef(path_storage);
 
   if (::mkdir(p.begin(), S_IRWXU | S_IRWXG) == -1) {
-    if (errno != errc::file_exists || !IgnoreExisting)
+    if (errno != EEXIST || !IgnoreExisting)
       return error_code(errno, system_category());
   }
 
@@ -306,7 +306,7 @@ error_code remove(const Twine &path, bool IgnoreNonExisting) {
 
   struct stat buf;
   if (lstat(p.begin(), &buf) != 0) {
-    if (errno != errc::no_such_file_or_directory || !IgnoreNonExisting)
+    if (errno != ENOENT || !IgnoreNonExisting)
       return error_code(errno, system_category());
     return error_code();
   }
@@ -320,7 +320,7 @@ error_code remove(const Twine &path, bool IgnoreNonExisting) {
     return make_error_code(errc::operation_not_permitted);
 
   if (::remove(p.begin()) == -1) {
-    if (errno != errc::no_such_file_or_directory || !IgnoreNonExisting)
+    if (errno != ENOENT || !IgnoreNonExisting)
       return error_code(errno, system_category());
   }
 
@@ -355,7 +355,7 @@ error_code exists(const Twine &path, bool &result) {
   StringRef p = path.toNullTerminatedStringRef(path_storage);
 
   if (::access(p.begin(), F_OK) == -1) {
-    if (errno != errc::no_such_file_or_directory)
+    if (errno != ENOENT)
       return error_code(errno, system_category());
     result = false;
   } else
index 8baa263cb8561a8a59a9b26aa5ee1c621cdbf41c..f04900c0dda38beccaad7f14793a4a56f26ba18e 100644 (file)
@@ -810,7 +810,7 @@ error_code openFileForRead(const Twine &Name, int &ResultFD) {
     if (EC != windows_error::access_denied)
       return EC;
     if (is_directory(Name))
-      return error_code(errc::is_a_directory, posix_category());
+      return make_error_code(errc::is_a_directory);
     return EC;
   }
 
@@ -861,7 +861,7 @@ error_code openFileForWrite(const Twine &Name, int &ResultFD,
     if (EC != windows_error::access_denied)
       return EC;
     if (is_directory(Name))
-      return error_code(errc::is_a_directory, posix_category());
+      return make_error_code(errc::is_a_directory);
     return EC;
   }
 
index ed7291ea0c9187aec0e9ffb059128f45d18a966e..ea85d5d3c95eb34c9974217c910929e5ef791aba 100644 (file)
@@ -453,8 +453,7 @@ int NewArchiveIterator::getFD() const {
   // Linux cannot open directories with open(2), although
   // cygwin and *bsd can.
   if (NewStatus.type() == sys::fs::file_type::directory_file)
-    failIfError(error_code(errc::is_a_directory, posix_category()),
-                NewFilename);
+    failIfError(make_error_code(errc::is_a_directory), NewFilename);
 
   return NewFD;
 }