diff options
author | Chris Robinson <[email protected]> | 2013-10-28 12:48:13 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2013-10-28 12:48:13 -0700 |
commit | 8d9fb5109b55912ef2be7b8d4526eb6ec8154004 (patch) | |
tree | d8db83a2502d4ec0e14a9c912d75b26f4db754dc /Alc/uintmap.h | |
parent | 20bcb68ad6439bebc35bd9bb941916ad151cb690 (diff) |
Move some stuff out of alMain.h
Diffstat (limited to 'Alc/uintmap.h')
-rw-r--r-- | Alc/uintmap.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/Alc/uintmap.h b/Alc/uintmap.h new file mode 100644 index 00000000..d692e878 --- /dev/null +++ b/Alc/uintmap.h @@ -0,0 +1,34 @@ +#ifndef AL_UINTMAP_H +#define AL_UINTMAP_H + +#include "AL/al.h" +#include "rwlock.h" + +typedef struct UIntMap { + struct { + ALuint key; + ALvoid *value; + } *array; + ALsizei size; + ALsizei maxsize; + ALsizei limit; + RWLock lock; +} UIntMap; +extern UIntMap TlsDestructor; + +void InitUIntMap(UIntMap *map, ALsizei limit); +void ResetUIntMap(UIntMap *map); +ALenum InsertUIntMapEntry(UIntMap *map, ALuint key, ALvoid *value); +ALvoid *RemoveUIntMapKey(UIntMap *map, ALuint key); +ALvoid *LookupUIntMapKey(UIntMap *map, ALuint key); + +static inline void LockUIntMapRead(UIntMap *map) +{ ReadLock(&map->lock); } +static inline void UnlockUIntMapRead(UIntMap *map) +{ ReadUnlock(&map->lock); } +static inline void LockUIntMapWrite(UIntMap *map) +{ WriteLock(&map->lock); } +static inline void UnlockUIntMapWrite(UIntMap *map) +{ WriteUnlock(&map->lock); } + +#endif /* AL_UINTMAP_H */ |