1 #include "streamcompress.hpp"
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
;
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())
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
;
50 auto x
= regex("([^=]+)=([^,]+)(,(.*)|$)", v
);