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