arraysize.h 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. /*
  2. * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
  3. *
  4. * Use of this source code is governed by a BSD-style license
  5. * that can be found in the LICENSE file in the root of the source
  6. * tree. An additional intellectual property rights grant can be found
  7. * in the file PATENTS. All contributing project authors may
  8. * be found in the AUTHORS file in the root of the source tree.
  9. */
  10. #ifndef RTC_BASE_ARRAYSIZE_H_
  11. #define RTC_BASE_ARRAYSIZE_H_
  12. #include <stddef.h>
  13. // This file defines the arraysize() macro and is derived from Chromium's
  14. // base/macros.h.
  15. // The arraysize(arr) macro returns the # of elements in an array arr.
  16. // The expression is a compile-time constant, and therefore can be
  17. // used in defining new arrays, for example. If you use arraysize on
  18. // a pointer by mistake, you will get a compile-time error.
  19. // This template function declaration is used in defining arraysize.
  20. // Note that the function doesn't need an implementation, as we only
  21. // use its type.
  22. template <typename T, size_t N>
  23. char (&ArraySizeHelper(T (&array)[N]))[N];
  24. #define arraysize(array) (sizeof(ArraySizeHelper(array)))
  25. #endif // RTC_BASE_ARRAYSIZE_H_