uintmap.h 859 B

12345678910111213141516171819202122232425262728293031323334
  1. #ifndef AL_UINTMAP_H
  2. #define AL_UINTMAP_H
  3. #include "AL/al.h"
  4. #include "rwlock.h"
  5. typedef struct UIntMap {
  6. struct {
  7. ALuint key;
  8. ALvoid *value;
  9. } *array;
  10. ALsizei size;
  11. ALsizei maxsize;
  12. ALsizei limit;
  13. RWLock lock;
  14. } UIntMap;
  15. extern UIntMap TlsDestructor;
  16. void InitUIntMap(UIntMap *map, ALsizei limit);
  17. void ResetUIntMap(UIntMap *map);
  18. ALenum InsertUIntMapEntry(UIntMap *map, ALuint key, ALvoid *value);
  19. ALvoid *RemoveUIntMapKey(UIntMap *map, ALuint key);
  20. ALvoid *LookupUIntMapKey(UIntMap *map, ALuint key);
  21. inline void LockUIntMapRead(UIntMap *map)
  22. { ReadLock(&map->lock); }
  23. inline void UnlockUIntMapRead(UIntMap *map)
  24. { ReadUnlock(&map->lock); }
  25. inline void LockUIntMapWrite(UIntMap *map)
  26. { WriteLock(&map->lock); }
  27. inline void UnlockUIntMapWrite(UIntMap *map)
  28. { WriteUnlock(&map->lock); }
  29. #endif /* AL_UINTMAP_H */