lsnes rr2-β24
[lsnes.git] / src / emulation / sky / lzs.hpp
bloba6334f7e3731a0cc1484bc0be55d728c7bada2dd
1 #ifndef _skycore__lzs__hpp__included__
2 #define _skycore__lzs__hpp__included__
4 #include <cstdint>
5 #include <iostream>
6 #include <cstring>
7 #include <stdexcept>
9 namespace sky
11 struct data_error : public std::runtime_error
13 data_error(const char* errmsg);
16 struct input_stream
18 virtual ~input_stream();
19 virtual int get() = 0;
20 unsigned char read(const char* msg)
22 int r = get();
23 if(r < 0) throw data_error(msg);
24 return (r & 0xFF);
28 struct output_stream
30 virtual void put(unsigned char byte) = 0;
33 void lzs_decompress(input_stream& in, output_stream& out, size_t size);
35 #endif