Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Side by Side Diff: mojo/public/c/system/macros.h

Issue 2062323002: Mojo C bindings library pt1: MojomBuffer (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: MojomBuffer_Allocate(0) succeeds Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « mojo/public/c/system/handle.h ('k') | mojo/public/c/system/message_pipe.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 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_C_SYSTEM_MACROS_H_ 5 #ifndef MOJO_PUBLIC_C_SYSTEM_MACROS_H_
6 #define MOJO_PUBLIC_C_SYSTEM_MACROS_H_ 6 #define MOJO_PUBLIC_C_SYSTEM_MACROS_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 9
10 // Annotate a variable indicating it's okay if it's unused. 10 // Annotate a variable indicating it's okay if it's unused.
11 // Use like: 11 // Use like:
12 // int x = ...; 12 // int x = ...;
13 // MOJO_ALLOW_UNUSED_LOCAL(x); 13 // MOJO_ALLOW_UNUSED_LOCAL(x);
14 #define MOJO_ALLOW_UNUSED_LOCAL(x) false ? (void)x : (void)0 14 #define MOJO_ALLOW_UNUSED_LOCAL(x) false ? (void)x : (void)0
15 15
16 // Annotate a function indicating that the caller must examine the return value. 16 // Annotate a function indicating that the caller must examine the return value.
17 // Use like: 17 // Use like:
18 // int foo() MOJO_WARN_UNUSED_RESULT; 18 // int foo() MOJO_WARN_UNUSED_RESULT;
19 // Note that it can only be used on the prototype, and not the definition. 19 // Note that it can only be used on the prototype, and not the definition.
20 #if defined(__GNUC__) 20 #if defined(__GNUC__)
21 #define MOJO_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) 21 #define MOJO_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
22 #else 22 #else
23 #define MOJO_WARN_UNUSED_RESULT 23 #define MOJO_WARN_UNUSED_RESULT
24 #endif 24 #endif
25 25
26 // Assert things at compile time. (|msg| should be a valid identifier name.) 26 // Assert things at compile time. (|msg| should be a valid identifier name.)
27 // This macro is currently C++-only, but we want to use it in the C core.h.
28 // Use like: 27 // Use like:
29 // MOJO_STATIC_ASSERT(sizeof(Foo) == 12, "Foo has invalid size"); 28 // MOJO_STATIC_ASSERT(sizeof(Foo) == 12, "Foo has invalid size");
30 #if defined(__cplusplus) 29 #if defined(__cplusplus)
31 #define MOJO_STATIC_ASSERT(expr, msg) static_assert(expr, msg) 30 #define MOJO_STATIC_ASSERT(expr, msg) static_assert(expr, msg)
32 #else 31 #else
33 #define MOJO_STATIC_ASSERT(expr, msg) 32 #define MOJO_STATIC_ASSERT(expr, msg) _Static_assert(expr, msg)
34 #endif 33 #endif
35 34
36 // Like the C++11 |alignof| operator. 35 // Like the C++11 |alignof| operator.
37 #if defined(__cplusplus) && __cplusplus >= 201103L 36 #if defined(__cplusplus) && __cplusplus >= 201103L
38 #define MOJO_ALIGNOF(type) alignof(type) 37 #define MOJO_ALIGNOF(type) alignof(type)
39 #elif defined(__GNUC__) 38 #elif defined(__GNUC__)
40 #define MOJO_ALIGNOF(type) __alignof__(type) 39 #define MOJO_ALIGNOF(type) __alignof__(type)
41 #elif defined(_MSC_VER) 40 #elif defined(_MSC_VER)
42 // The use of |sizeof| is to work around a bug in MSVC 2010 (see 41 // The use of |sizeof| is to work around a bug in MSVC 2010 (see
43 // http://goo.gl/isH0C; supposedly fixed since then). 42 // http://goo.gl/isH0C; supposedly fixed since then).
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 // using |MOJO_RESTRICT| unless aliasing is explicitly allowed. 80 // using |MOJO_RESTRICT| unless aliasing is explicitly allowed.
82 #if defined(__GNUC__) || defined(_MSC_VER) 81 #if defined(__GNUC__) || defined(_MSC_VER)
83 // Use |__restrict|, since it works both in C++ and when compiling as C90 82 // Use |__restrict|, since it works both in C++ and when compiling as C90
84 // (|restrict| is only available in C99 and later, and never in C++). 83 // (|restrict| is only available in C99 and later, and never in C++).
85 #define MOJO_RESTRICT __restrict 84 #define MOJO_RESTRICT __restrict
86 #else 85 #else
87 #error "Please define MOJO_RESTRICT for your compiler." 86 #error "Please define MOJO_RESTRICT for your compiler."
88 #endif 87 #endif
89 88
90 #endif // MOJO_PUBLIC_C_SYSTEM_MACROS_H_ 89 #endif // MOJO_PUBLIC_C_SYSTEM_MACROS_H_
OLDNEW
« no previous file with comments | « mojo/public/c/system/handle.h ('k') | mojo/public/c/system/message_pipe.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698