#ifndef AL_UINTMAP_H
#define AL_UINTMAP_H

#include <unordered_map>
#include <mutex>

#include "AL/al.h"

template<typename T0, typename T1>
class ThrSafeMap {
    std::unordered_map<T0, T1> mValues;
    std::mutex mLock;

public:
    void InsertEntry(T0 key, T1 value) noexcept
    {
        std::lock_guard<std::mutex> _{mLock};
        mValues[key] = value;
    }

    T1 RemoveKey(T0 key) noexcept
    {
        T1 retval{};

        std::lock_guard<std::mutex> _{mLock};
        auto iter = mValues.find(key);
        if(iter != mValues.end())
            retval = iter->second;
        mValues.erase(iter);

        return retval;
    }
};

#endif /* AL_UINTMAP_H */