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

Unified Diff: mojo/public/system/macros.h

Issue 70273009: Mojo: Add a MOJO_ARRAYSIZE, corresponding to Chromium's arraysize. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | mojo/public/tests/bindings_connector_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/public/system/macros.h
diff --git a/mojo/public/system/macros.h b/mojo/public/system/macros.h
index 49c49f2f1f2802f8130ec9855d2837ebba32a79c..ff73658e74b5dfa5b630460214c8ef3cdf891777 100644
--- a/mojo/public/system/macros.h
+++ b/mojo/public/system/macros.h
@@ -5,10 +5,12 @@
#ifndef MOJO_PUBLIC_SYSTEM_MACROS_H_
#define MOJO_PUBLIC_SYSTEM_MACROS_H_
+#include <stddef.h>
+
#ifdef __cplusplus
-// Annotate a virtual method indicating it must be overriding a virtual
-// method in the parent class.
+// Annotate a virtual method indicating it must be overriding a virtual method
+// in the parent class.
// Use like:
// virtual void foo() OVERRIDE;
#if defined(_MSC_VER) || defined(__clang__)
@@ -17,17 +19,29 @@
#define MOJO_OVERRIDE
#endif
-// A macro to disallow the copy constructor and operator= functions
-// This should be used in the private: declarations for a class
+// A macro to disallow the copy constructor and operator= functions.
+// This should be used in the private: declarations for a class.
#define MOJO_DISALLOW_COPY_AND_ASSIGN(TypeName) \
- TypeName(const TypeName&); \
- void operator=(const TypeName&)
+ TypeName(const TypeName&); \
+ void operator=(const TypeName&)
// Used to assert things at compile time.
namespace mojo { template <bool> struct CompileAssert {}; }
#define MOJO_COMPILE_ASSERT(expr, msg) \
typedef ::mojo::CompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1]
+// Use to calculate the number of elements in an array.
+// (See |arraysize()| in Chromium's base/basictypes.h for more details.)
+namespace mojo {
+template <typename T, size_t N>
+char (&ArraySizeHelper(T (&array)[N]))[N];
+#if !defined(_MSC_VER)
+template <typename T, size_t N>
+char (&ArraySizeHelper(const T (&array)[N]))[N];
+#endif
+} // namespace mojo
+#define MOJO_ARRAYSIZE(array) (sizeof(::mojo::ArraySizeHelper(array)))
+
#endif // __cplusplus
#endif // MOJO_PUBLIC_SYSTEM_MACROS_H_
« no previous file with comments | « no previous file | mojo/public/tests/bindings_connector_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698