Index: native_client_sdk/src/libraries/sdk_util/macros.h |
=================================================================== |
--- native_client_sdk/src/libraries/sdk_util/macros.h (revision 0) |
+++ native_client_sdk/src/libraries/sdk_util/macros.h (revision 0) |
@@ -0,0 +1,50 @@ |
+/* Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+#ifndef LIBRARIES_SDK_UTIL_MACROS_H_ |
+#define LIBRARIES_SDK_UTIL_MACROS_H_ |
+ |
+/** |
+ * A macro to disallow the evil copy constructor and operator= functions |
+ * This should be used in the private: declarations for a class. |
+ */ |
+#define DISALLOW_COPY_AND_ASSIGN(TypeName) \ |
+ TypeName(const TypeName&); \ |
+ void operator=(const TypeName&) |
+ |
+/** returns the size of a member of a struct. */ |
+#define MEMBER_SIZE(struct_name, member) sizeof(((struct_name*)0)->member) |
+ |
+/** |
+ * Macros to prevent name mangling of definitions, allowing them to be |
+ * referenced from C. |
+ */ |
+#ifdef __cplusplus |
+# define EXTERN_C_BEGIN extern "C" { |
+# define EXTERN_C_END } |
+#else |
+# define EXTERN_C_BEGIN |
+# define EXTERN_C_END |
+#endif /* __cplusplus */ |
+ |
+/** |
+ * Macros to help force linkage of symbols that otherwise would not be |
+ * included. |
+ * |
+ * // In a source file that you want to force linkage (file scope): |
+ * FORCE_LINK_THIS(myfilename); |
+ * |
+ * // In a source file that you are sure will be linked (file scope): |
+ * FORCE_LINK_THAT(myfilename) |
+ * |
+ */ |
+#define FORCE_LINK_THIS(x) int force_link_##x = 0; |
+#define FORCE_LINK_THAT(x) \ |
+ void force_link_function_##x() { \ |
+ extern int force_link_##x; \ |
+ force_link_##x = 1; \ |
+ } |
+ |
+#endif /* LIBRARIES_SDK_UTIL_MACROS_H_ */ |
+ |
Property changes on: native_client_sdk/src/libraries/sdk_util/macros.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |