|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. ! 3: * Copyright (c) 1988, 1989 by Adam de Boor ! 4: * Copyright (c) 1989 by Berkeley Softworks ! 5: * All rights reserved. ! 6: * ! 7: * This code is derived from software contributed to Berkeley by ! 8: * Adam de Boor. ! 9: * ! 10: * Redistribution and use in source and binary forms are permitted ! 11: * provided that: (1) source distributions retain this entire copyright ! 12: * notice and comment, and (2) distributions including binaries display ! 13: * the following acknowledgement: ``This product includes software ! 14: * developed by the University of California, Berkeley and its contributors'' ! 15: * in the documentation or other materials provided with the distribution ! 16: * and in all advertising materials mentioning features or use of this ! 17: * software. Neither the name of the University nor the names of its ! 18: * contributors may be used to endorse or promote products derived ! 19: * from this software without specific prior written permission. ! 20: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ! 21: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! 22: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 23: * ! 24: * @(#)bit.h 5.3 (Berkeley) 6/1/90 ! 25: */ ! 26: ! 27: /* ! 28: * bit.h -- ! 29: * ! 30: * Definition of macros for setting and clearing bits in an array ! 31: * of integers. ! 32: * ! 33: * It is assumed that "int" is 32 bits wide. ! 34: */ ! 35: ! 36: #ifndef _BIT ! 37: #define _BIT ! 38: ! 39: #include "sprite.h" ! 40: ! 41: #define BIT_NUM_BITS_PER_INT 32 ! 42: #define BIT_NUM_BITS_PER_BYTE 8 ! 43: ! 44: #define Bit_NumInts(numBits) \ ! 45: (((numBits)+BIT_NUM_BITS_PER_INT -1)/BIT_NUM_BITS_PER_INT) ! 46: ! 47: #define Bit_NumBytes(numBits) \ ! 48: (Bit_NumInts(numBits) * sizeof(int)) ! 49: ! 50: #define Bit_Alloc(numBits, bitArrayPtr) \ ! 51: bitArrayPtr = (int *)malloc((unsigned)Bit_NumBytes(numBits)); \ ! 52: Bit_Zero((numBits), (bitArrayPtr)) ! 53: ! 54: #define Bit_Free(bitArrayPtr) \ ! 55: free((char *)bitArrayPtr) ! 56: ! 57: #define Bit_Set(numBits, bitArrayPtr) \ ! 58: ((bitArrayPtr)[(numBits)/BIT_NUM_BITS_PER_INT] |= \ ! 59: (1 << ((numBits) % BIT_NUM_BITS_PER_INT))) ! 60: ! 61: #define Bit_IsSet(numBits, bitArrayPtr) \ ! 62: ((bitArrayPtr)[(numBits)/BIT_NUM_BITS_PER_INT] & \ ! 63: (1 << ((numBits) % BIT_NUM_BITS_PER_INT))) ! 64: ! 65: #define Bit_Clear(numBits, bitArrayPtr) \ ! 66: ((bitArrayPtr)[(numBits)/BIT_NUM_BITS_PER_INT] &= \ ! 67: ~(1 << ((numBits) % BIT_NUM_BITS_PER_INT))) ! 68: ! 69: #define Bit_IsClear(numBits, bitArrayPtr) \ ! 70: (!(Bit_IsSet((numBits), (bitArrayPtr)))) ! 71: ! 72: #define Bit_Copy(numBits, srcArrayPtr, destArrayPtr) \ ! 73: bcopy((char *)(srcArrayPtr), (char *)(destArrayPtr), \ ! 74: Bit_NumBytes(numBits)) ! 75: ! 76: #define Bit_Zero(numBits, bitArrayPtr) \ ! 77: bzero((char *)(bitArrayPtr), Bit_NumBytes(numBits)) ! 78: ! 79: extern int Bit_FindFirstSet(); ! 80: extern int Bit_FindFirstClear(); ! 81: extern Boolean Bit_Intersect(); ! 82: extern Boolean Bit_Union(); ! 83: extern Boolean Bit_AnySet(); ! 84: extern int *Bit_Expand(); ! 85: ! 86: #endif _BIT
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.