1 // Copyright 2016 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_PUBLIC_CPP_SYSTEM_TRAP_H_ 6 #define MOJO_PUBLIC_CPP_SYSTEM_TRAP_H_ 7 8 #include "mojo/public/c/system/trap.h" 9 #include "mojo/public/c/system/types.h" 10 #include "mojo/public/cpp/system/handle.h" 11 #include "mojo/public/cpp/system/system_export.h" 12 13 namespace mojo { 14 15 // A strongly-typed representation of a |MojoHandle| for a trap. 16 class TrapHandle : public Handle { 17 public: 18 TrapHandle() = default; TrapHandle(MojoHandle value)19 explicit TrapHandle(MojoHandle value) : Handle(value) {} 20 21 // Copying and assignment allowed. 22 }; 23 24 static_assert(sizeof(TrapHandle) == sizeof(Handle), 25 "Bad size for C++ TrapHandle"); 26 27 typedef ScopedHandleBase<TrapHandle> ScopedTrapHandle; 28 static_assert(sizeof(ScopedTrapHandle) == sizeof(TrapHandle), 29 "Bad size for C++ ScopedTrapHandle"); 30 31 MOJO_CPP_SYSTEM_EXPORT MojoResult CreateTrap(MojoTrapEventHandler handler, 32 ScopedTrapHandle* trap_handle); 33 34 } // namespace mojo 35 36 #endif // MOJO_PUBLIC_CPP_SYSTEM_TRAP_H_ 37