Home | History | Annotate | Download | only in mac
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef BASE_MAC_SCOPED_IOOBJECT_H_
      6 #define BASE_MAC_SCOPED_IOOBJECT_H_
      7 
      8 #include <IOKit/IOKitLib.h>
      9 
     10 #include "base/mac/scoped_typeref.h"
     11 
     12 namespace base {
     13 namespace mac {
     14 
     15 namespace internal {
     16 
     17 template <typename IOT>
     18 struct ScopedIOObjectTraits {
     19   static IOT InvalidValue() { return IO_OBJECT_NULL; }
     20   static IOT Retain(IOT iot) {
     21     IOObjectRetain(iot);
     22     return iot;
     23   }
     24   static void Release(IOT iot) { IOObjectRelease(iot); }
     25 };
     26 
     27 }  // namespce internal
     28 
     29 // Just like ScopedCFTypeRef but for io_object_t and subclasses.
     30 template <typename IOT>
     31 using ScopedIOObject = ScopedTypeRef<IOT, internal::ScopedIOObjectTraits<IOT>>;
     32 
     33 }  // namespace mac
     34 }  // namespace base
     35 
     36 #endif  // BASE_MAC_SCOPED_IOOBJECT_H_
     37