| /* |
| * Copyright 2007 The Android Open Source Project |
| * |
| * Simple bit vector. |
| */ |
| #ifndef _WRAPSIM_BITVECTOR_H |
| #define _WRAPSIM_BITVECTOR_H |
| |
| #include <stdint.h> |
| |
| /* |
| * Expanding bitmap, used for tracking resources. Bits are numbered starting |
| * from zero. |
| */ |
| typedef struct BitVector { |
| int isExpandable; /* expand bitmap if we run out? */ |
| int storageSize; /* current size, in 32-bit words */ |
| uint32_t* storage; |
| } BitVector; |
| |
| /* allocate a bit vector with enough space to hold "startBits" bits */ |
| BitVector* wsAllocBitVector(int startBits, int isExpandable); |
| void wsFreeBitVector(BitVector* pBits); |
| |
| /* |
| * Set/clear a single bit; assumes external synchronization. |
| * |
| * We always allocate the first possible bit. If we run out of space in |
| * the bitmap, and it's not marked expandable, dvmAllocBit returns -1. |
| */ |
| int wsAllocBit(BitVector* pBits); |
| void wsFreeBit(BitVector* pBits, int num); |
| |
| #endif /*_WRAPSIM_BITVECTOR_H*/ |