1 /* 2 * Copyright (c) 1988 Regents of the University of California. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms are permitted 6 * provided that the above copyright notice and this paragraph are 7 * duplicated in all such forms and that any documentation, 8 * advertising materials, and other materials related to such 9 * distribution and use acknowledge that the software was developed 10 * by the University of California, Berkeley. The name of the 11 * University may not be used to endorse or promote products derived 12 * from this software without specific prior written permission. 13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 15 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 16 * 17 * @(#)general.h 4.1 (Berkeley) 12/04/88 18 */ 19 20 /* 21 * Some general definitions. 22 */ 23 24 #define numberof(x) (sizeof x/sizeof x[0]) 25 #define highestof(x) (numberof(x)-1) 26 27 #if defined(unix) 28 #define ClearElement(x) bzero((char *)&x, sizeof x) 29 #define ClearArray(x) bzero((char *)x, sizeof x) 30 #else /* defined(unix) */ 31 #define ClearElement(x) memset((char *)&x, 0, sizeof x) 32 #define ClearArray(x) memset((char *)x, 0, sizeof x) 33 #endif /* defined(unix) */ 34 35 #if defined(unix) /* Define BSD equivalent mem* functions */ 36 #define memcpy(dest,src,n) bcopy(src,dest,n) 37 #define memmove(dest,src,n) bcopy(src,dest,n) 38 #define memset(s,c,n) if (c == 0) { \ 39 bzero(s,n); \ 40 } else { \ 41 register char *src = s; \ 42 register int count = n; \ 43 \ 44 while (count--) { \ 45 *src++ = c; \ 46 } \ 47 } 48 #define memcmp(s1,s2,n) bcmp(s1,s2,n) 49 #endif /* defined(unix) */ 50