1// Copyright 2014 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 MOJO_EMBEDDER_PLATFORM_HANDLE_VECTOR_H_
6#define MOJO_EMBEDDER_PLATFORM_HANDLE_VECTOR_H_
7
8#include <vector>
9
10#include "base/memory/scoped_ptr.h"
11#include "mojo/embedder/platform_handle.h"
12#include "mojo/embedder/platform_handle_utils.h"
13#include "mojo/system/system_impl_export.h"
14
15namespace mojo {
16namespace embedder {
17
18typedef std::vector<PlatformHandle> PlatformHandleVector;
19
20// A deleter (for use with |scoped_ptr|) which closes all handles and then
21// |delete|s the |PlatformHandleVector|.
22struct MOJO_SYSTEM_IMPL_EXPORT PlatformHandleVectorDeleter {
23  void operator()(PlatformHandleVector* platform_handles) const {
24    CloseAllPlatformHandles(platform_handles);
25    delete platform_handles;
26  }
27};
28
29typedef scoped_ptr<PlatformHandleVector, PlatformHandleVectorDeleter>
30    ScopedPlatformHandleVectorPtr;
31
32}  // namespace embedder
33}  // namespace mojo
34
35#endif  // MOJO_EMBEDDER_PLATFORM_HANDLE_VECTOR_H_
36