// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef BASE_MAC_SCOPED_IOPLUGININTERFACE_H_
#define BASE_MAC_SCOPED_IOPLUGININTERFACE_H_

#include <IOKit/IOKitLib.h>

#include "base/mac/scoped_typeref.h"
#include "starboard/types.h"

namespace base {
namespace mac {

namespace internal {

template <typename T>
struct ScopedIOPluginInterfaceTraits {
  static T InvalidValue() { return nullptr; }
  static T Retain(T t) {
    (*t)->AddRef(t);
    return t;
  }
  static void Release(T t) { (*t)->Release(t); }
};

}  // namespace internal

// Just like ScopedCFTypeRef but for IOCFPlugInInterface and friends
// (IOUSBInterfaceStruct and IOUSBDeviceStruct320 in particular).
template <typename T>
using ScopedIOPluginInterface =
    ScopedTypeRef<T**, internal::ScopedIOPluginInterfaceTraits<T**>>;

}  // namespace mac
}  // namespace base

#endif  // BASE_MAC_SCOPED_IOPLUGININTERFACE_H_
