Some tweaks to Lua docs
[lsnes.git] / src / library / streamcompress.cpp
blob302953433be18d4a2471b22eb57892ae6a6c6800
1 #include "streamcompress.hpp"
2 #include "string.hpp"
3 #include <stdexcept>
5 namespace
7 std::map<std::string, std::function<stream_compressor_base*(const std::string&)>>& compressors()
9 static std::map<std::string, std::function<stream_compressor_base*(const std::string&)>> x;
10 return x;
14 stream_compressor_base::~stream_compressor_base()
18 std::set<std::string> stream_compressor_base::get_compressors()
20 std::set<std::string> r;
21 for(auto& i : compressors())
22 r.insert(i.first);
23 return r;
26 stream_compressor_base* stream_compressor_base::create_compressor(const std::string& name,
27 const std::string& args)
29 if(!compressors().count(name))
30 throw std::runtime_error("No such compressor");
31 compressors()[name](args);
34 void stream_compressor_base::do_register(const std::string& name,
35 std::function<stream_compressor_base*(const std::string&)> ctor)
37 compressors()[name] = ctor;
40 void stream_compressor_base::do_unregister(const std::string& name)
42 compressors().erase(name);
45 std::map<std::string, std::string> stream_compressor_parse_attributes(const std::string& val)
47 std::map<std::string, std::string> r;
48 std::string v = val;
49 while(v != "") {
50 auto x = regex("([^=]+)=([^,]+)(,(.*)|$)", v);
51 r[x[1]] = x[2];
52 v = x[4];
54 return r;