|  | @@ | 
|  | type T; | 
|  | T *dst; | 
|  | T *src; | 
|  | expression n; | 
|  | @@ | 
|  | - memcpy(dst, src, (n) * sizeof(*dst)); | 
|  | + COPY_ARRAY(dst, src, n); | 
|  |  | 
|  | @@ | 
|  | type T; | 
|  | T *dst; | 
|  | T *src; | 
|  | expression n; | 
|  | @@ | 
|  | - memcpy(dst, src, (n) * sizeof(*src)); | 
|  | + COPY_ARRAY(dst, src, n); | 
|  |  | 
|  | @@ | 
|  | type T; | 
|  | T *dst; | 
|  | T *src; | 
|  | expression n; | 
|  | @@ | 
|  | - memcpy(dst, src, (n) * sizeof(T)); | 
|  | + COPY_ARRAY(dst, src, n); | 
|  |  | 
|  | @@ | 
|  | type T; | 
|  | T *dst; | 
|  | T *src; | 
|  | expression n; | 
|  | @@ | 
|  | ( | 
|  | - memmove(dst, src, (n) * sizeof(*dst)); | 
|  | + MOVE_ARRAY(dst, src, n); | 
|  | | | 
|  | - memmove(dst, src, (n) * sizeof(*src)); | 
|  | + MOVE_ARRAY(dst, src, n); | 
|  | | | 
|  | - memmove(dst, src, (n) * sizeof(T)); | 
|  | + MOVE_ARRAY(dst, src, n); | 
|  | ) | 
|  |  | 
|  | @@ | 
|  | type T; | 
|  | T *ptr; | 
|  | expression n; | 
|  | @@ | 
|  | - ptr = xmalloc((n) * sizeof(*ptr)); | 
|  | + ALLOC_ARRAY(ptr, n); | 
|  |  | 
|  | @@ | 
|  | type T; | 
|  | T *ptr; | 
|  | expression n; | 
|  | @@ | 
|  | - ptr = xmalloc((n) * sizeof(T)); | 
|  | + ALLOC_ARRAY(ptr, n); |