Partially handle the irom sub-chunk
[openal-soft.git] / Alc / uintmap.h
blob2c70f161076f981fdc970a794df87f03c0048aca
1 #ifndef AL_UINTMAP_H
2 #define AL_UINTMAP_H
4 #include "AL/al.h"
5 #include "rwlock.h"
7 typedef struct UIntMap {
8 struct {
9 ALuint key;
10 ALvoid *value;
11 } *array;
12 ALsizei size;
13 ALsizei maxsize;
14 ALsizei limit;
15 RWLock lock;
16 } UIntMap;
17 extern UIntMap TlsDestructor;
19 void InitUIntMap(UIntMap *map, ALsizei limit);
20 void ResetUIntMap(UIntMap *map);
21 ALenum InsertUIntMapEntry(UIntMap *map, ALuint key, ALvoid *value);
22 ALvoid *RemoveUIntMapKey(UIntMap *map, ALuint key);
23 ALvoid *LookupUIntMapKey(UIntMap *map, ALuint key);
25 inline void LockUIntMapRead(UIntMap *map)
26 { ReadLock(&map->lock); }
27 inline void UnlockUIntMapRead(UIntMap *map)
28 { ReadUnlock(&map->lock); }
29 inline void LockUIntMapWrite(UIntMap *map)
30 { WriteLock(&map->lock); }
31 inline void UnlockUIntMapWrite(UIntMap *map)
32 { WriteUnlock(&map->lock); }
34 #endif /* AL_UINTMAP_H */