lsnes/src/core/status.cpp
Ilari Liusvaara c298f8eae7 lsnes rr1-β0
2012-01-06 17:28:01 +02:00

63 lines
1.2 KiB
C++

#include "core/status.hpp"
emulator_status::emulator_status() throw(std::bad_alloc)
{
lock = &mutex::aquire();
}
emulator_status::~emulator_status() throw()
{
delete lock;
}
void emulator_status::set(const std::string& key, const std::string& value) throw(std::bad_alloc)
{
mutex::holder h(*lock);
content[key] = value;
}
bool emulator_status::haskey(const std::string& key) throw()
{
mutex::holder h(*lock);
return (content.count(key) != 0);
}
void emulator_status::erase(const std::string& key) throw()
{
mutex::holder h(*lock);
content.erase(key);
}
std::string emulator_status::get(const std::string& key) throw(std::bad_alloc)
{
mutex::holder h(*lock);
return content[key];
}
emulator_status::iterator emulator_status::first() throw(std::bad_alloc)
{
iterator i;
i.not_valid = true;
return i;
}
bool emulator_status::next(iterator& itr) throw(std::bad_alloc)
{
mutex::holder h(*lock);
std::map<std::string, std::string>::iterator j;
if(itr.not_valid)
j = content.lower_bound("");
else
j = content.upper_bound(itr.key);
if(j == content.end()) {
itr.not_valid = true;
itr.key = "";
itr.value = "";
return false;
} else {
itr.not_valid = false;
itr.key = j->first;
itr.value = j->second;
return true;
}
}