| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef MOJO_PUBLIC_SYSTEM_CORE_H_ | 5 #ifndef MOJO_PUBLIC_SYSTEM_CORE_H_ |
| 6 #define MOJO_PUBLIC_SYSTEM_CORE_H_ | 6 #define MOJO_PUBLIC_SYSTEM_CORE_H_ |
| 7 | 7 |
| 8 // Note: This header should be compilable as C. | 8 // Note: This header should be compilable as C. |
| 9 | 9 |
| 10 #include <stdint.h> | 10 #include <stdint.h> |
| 11 | 11 |
| 12 #include "mojo/public/system/macros.h" |
| 12 #include "mojo/public/system/system_export.h" | 13 #include "mojo/public/system/system_export.h" |
| 13 | 14 |
| 14 // Types ----------------------------------------------------------------------- | 15 // Types ----------------------------------------------------------------------- |
| 15 | 16 |
| 16 // TODO(vtl): Notes: Use of undefined flags will lead to undefined behavior | 17 // TODO(vtl): Notes: Use of undefined flags will lead to undefined behavior |
| 17 // (typically they'll be ignored), not necessarily an error. | 18 // (typically they'll be ignored), not necessarily an error. |
| 18 | 19 |
| 19 // Handles to Mojo objects. | 20 // Handles to Mojo objects. |
| 20 typedef uint32_t MojoHandle; | 21 typedef uint32_t MojoHandle; |
| 21 | 22 |
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 252 #ifdef __cplusplus | 253 #ifdef __cplusplus |
| 253 } // extern "C" | 254 } // extern "C" |
| 254 #endif | 255 #endif |
| 255 | 256 |
| 256 // C++ wrapper functions ------------------------------------------------------- | 257 // C++ wrapper functions ------------------------------------------------------- |
| 257 | 258 |
| 258 #ifdef __cplusplus | 259 #ifdef __cplusplus |
| 259 | 260 |
| 260 namespace mojo { | 261 namespace mojo { |
| 261 | 262 |
| 262 // Used to assert things at compile time. (Use our own copy instead of | |
| 263 // Chromium's, since we can't depend on Chromium.) | |
| 264 template <bool> struct CompileAssert {}; | |
| 265 #define MOJO_COMPILE_ASSERT(expr, msg) \ | |
| 266 typedef CompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1] | |
| 267 | |
| 268 struct Handle { MojoHandle value; }; | 263 struct Handle { MojoHandle value; }; |
| 269 | 264 |
| 270 const Handle kInvalidHandle = { MOJO_HANDLE_INVALID }; | 265 const Handle kInvalidHandle = { MOJO_HANDLE_INVALID }; |
| 271 | 266 |
| 272 // A |mojo::Handle| must take no extra space, since we'll treat arrays of them | 267 // A |mojo::Handle| must take no extra space, since we'll treat arrays of them |
| 273 // as if they were arrays of |MojoHandle|s. | 268 // as if they were arrays of |MojoHandle|s. |
| 274 MOJO_COMPILE_ASSERT(sizeof(Handle) == sizeof(MojoHandle), | 269 MOJO_COMPILE_ASSERT(sizeof(Handle) == sizeof(MojoHandle), |
| 275 bad_size_for_cplusplus_handle); | 270 bad_size_for_cplusplus_handle); |
| 276 | 271 |
| 277 inline MojoResult Close(Handle handle) { | 272 inline MojoResult Close(Handle handle) { |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 312 return MojoReadMessage(handle.value, | 307 return MojoReadMessage(handle.value, |
| 313 bytes, num_bytes, | 308 bytes, num_bytes, |
| 314 &handles[0].value, num_handles, | 309 &handles[0].value, num_handles, |
| 315 flags); | 310 flags); |
| 316 } | 311 } |
| 317 | 312 |
| 318 } // namespace mojo | 313 } // namespace mojo |
| 319 #endif | 314 #endif |
| 320 | 315 |
| 321 #endif // MOJO_PUBLIC_SYSTEM_CORE_H_ | 316 #endif // MOJO_PUBLIC_SYSTEM_CORE_H_ |
| OLD | NEW |