1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file.
4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#ifndef MOJO_EMBEDDER_PLATFORM_HANDLE_VECTOR_H_
6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#define MOJO_EMBEDDER_PLATFORM_HANDLE_VECTOR_H_
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include <vector>
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "mojo/embedder/platform_handle.h"
12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "mojo/embedder/platform_handle_utils.h"
13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "mojo/system/system_impl_export.h"
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace mojo {
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace embedder {
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)typedef std::vector<PlatformHandle> PlatformHandleVector;
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// A deleter (for use with |scoped_ptr|) which closes all handles and then
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// |delete|s the |PlatformHandleVector|.
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)struct MOJO_SYSTEM_IMPL_EXPORT PlatformHandleVectorDeleter {
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  void operator()(PlatformHandleVector* platform_handles) const {
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    CloseAllPlatformHandles(platform_handles);
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    delete platform_handles;
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  }
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)typedef scoped_ptr<PlatformHandleVector, PlatformHandleVectorDeleter>
30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    ScopedPlatformHandleVectorPtr;
31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}  // namespace embedder
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}  // namespace mojo
34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif  // MOJO_EMBEDDER_PLATFORM_HANDLE_VECTOR_H_
36