1 /* 2 * Copyright (c) 2010 The WebM 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 11 #ifndef VPX_VP8_COMMON_COMMON_H_ 12 #define VPX_VP8_COMMON_COMMON_H_ 13 14 #include <assert.h> 15 16 /* Interface header for common constant data structures and lookup tables */ 17 18 #include "vpx_mem/vpx_mem.h" 19 20 #ifdef __cplusplus 21 extern "C" { 22 #endif 23 24 /* Only need this for fixed-size arrays, for structs just assign. */ 25 26 #define vp8_copy(Dest, Src) \ 27 { \ 28 assert(sizeof(Dest) == sizeof(Src)); \ 29 memcpy(Dest, Src, sizeof(Src)); \ 30 } 31 32 /* Use this for variably-sized arrays. */ 33 34 #define vp8_copy_array(Dest, Src, N) \ 35 { \ 36 assert(sizeof(*Dest) == sizeof(*Src)); \ 37 memcpy(Dest, Src, N * sizeof(*Src)); \ 38 } 39 40 #define vp8_zero(Dest) memset(&Dest, 0, sizeof(Dest)); 41 42 #define vp8_zero_array(Dest, N) memset(Dest, 0, N * sizeof(*Dest)); 43 44 #ifdef __cplusplus 45 } // extern "C" 46 #endif 47 48 #endif // VPX_VP8_COMMON_COMMON_H_ 49