Chromium Code Reviews| Index: third_party/WebKit/Source/wtf/SizeAssertions.h |
| diff --git a/third_party/WebKit/Source/wtf/SizeAssertions.h b/third_party/WebKit/Source/wtf/SizeAssertions.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..d321392ba1bdfd09b217ce66018c9af51bd40c49 |
| --- /dev/null |
| +++ b/third_party/WebKit/Source/wtf/SizeAssertions.h |
| @@ -0,0 +1,25 @@ |
| +#ifndef WTF_SizeAssertions_h |
|
esprehn
2016/09/08 22:25:28
missing the short copyright header
sashab
2016/09/09 01:23:47
Thanks! Also removed unused #include below.
Still
|
| +#define WTF_SizeAssertions_h |
| + |
| +#include "wtf/CPU.h" |
| + |
| +namespace WTF { |
| + |
| +// The ASSERT_SIZE macro can be used to check that a given struct is the same |
| +// size as a class. This is useful to visualize where the space is being used in |
| +// a class, as well as give a useful compile error message when the size doesn't |
| +// match the expected value. |
| +template<class T, class U> struct assert_size { |
| + template<int ActualSize, int ExpectedSize> struct assertSizeEqual { |
| + static_assert(ActualSize == ExpectedSize, "Class should stay small"); |
| + static const bool innerValue = true; |
| + }; |
| + static const bool value = assertSizeEqual<sizeof(T), sizeof(U)>::innerValue; |
| +}; |
| + |
| +} // namespace WTF |
| + |
| +#define ASSERT_SIZE(className, sameSizeAsClassName) \ |
| + static_assert(WTF::assert_size<className, sameSizeAsClassName>::value, ""); |
| + |
| +#endif // WTF_SizeAssertions_h |