Index: base/mac/scoped_cffiledescriptorref.h |
diff --git a/base/mac/scoped_cffiledescriptorref.h b/base/mac/scoped_cffiledescriptorref.h |
index 00b2f682c7b222d748114bed24402dc2b3005a17..923a159c768652c06b7ff01e3d608582ae517f30 100644 |
--- a/base/mac/scoped_cffiledescriptorref.h |
+++ b/base/mac/scoped_cffiledescriptorref.h |
@@ -7,67 +7,31 @@ |
#include <CoreFoundation/CoreFoundation.h> |
-#include "base/compiler_specific.h" |
-#include "base/macros.h" |
+#include "base/scoped_generic.h" |
namespace base { |
namespace mac { |
+namespace internal { |
+ |
+struct ScopedCFFileDescriptorRefTraits { |
+ static CFFileDescriptorRef InvalidValue() { return nullptr; } |
+ static void Free(CFFileDescriptorRef ref) { |
+ CFFileDescriptorInvalidate(ref); |
+ CFRelease(ref); |
+ } |
+}; |
+ |
+} // namespace internal |
+ |
// ScopedCFFileDescriptorRef is designed after ScopedCFTypeRef<>. On |
// destruction, it will invalidate the file descriptor. |
// ScopedCFFileDescriptorRef (unlike ScopedCFTypeRef<>) does not support RETAIN |
// semantics, copying, or assignment, as doing so would increase the chances |
// that a file descriptor is invalidated while still in use. |
-class ScopedCFFileDescriptorRef { |
- public: |
- explicit ScopedCFFileDescriptorRef(CFFileDescriptorRef fdref = NULL) |
- : fdref_(fdref) { |
- } |
- |
- ~ScopedCFFileDescriptorRef() { |
- if (fdref_) { |
- CFFileDescriptorInvalidate(fdref_); |
- CFRelease(fdref_); |
- } |
- } |
- |
- void reset(CFFileDescriptorRef fdref = NULL) { |
- if (fdref_ == fdref) |
- return; |
- if (fdref_) { |
- CFFileDescriptorInvalidate(fdref_); |
- CFRelease(fdref_); |
- } |
- fdref_ = fdref; |
- } |
- |
- bool operator==(CFFileDescriptorRef that) const { |
- return fdref_ == that; |
- } |
- |
- bool operator!=(CFFileDescriptorRef that) const { |
- return fdref_ != that; |
- } |
- |
- operator CFFileDescriptorRef() const { |
- return fdref_; |
- } |
- |
- CFFileDescriptorRef get() const { |
- return fdref_; |
- } |
- |
- CFFileDescriptorRef release() WARN_UNUSED_RESULT { |
- CFFileDescriptorRef temp = fdref_; |
- fdref_ = NULL; |
- return temp; |
- } |
- |
- private: |
- CFFileDescriptorRef fdref_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ScopedCFFileDescriptorRef); |
-}; |
+using ScopedCFFileDescriptorRef = |
+ ScopedGeneric<CFFileDescriptorRef, |
+ internal::ScopedCFFileDescriptorRefTraits>; |
} // namespace mac |
} // namespace base |