--- /dev/null
+#ifndef MSP_DATAFILE_RAWDATA_H_
+#define MSP_DATAFILE_RAWDATA_H_
+
+#include <string>
+#include <msp/core/noncopyable.h>
+#include <msp/io/base.h>
+
+namespace Msp {
+namespace DataFile {
+
+class Collection;
+
+class RawData: public NonCopyable
+{
+private:
+ enum Flags
+ {
+ COMPRESSED = 1
+ };
+
+ std::string src_name;
+ IO::Base *in = nullptr;
+ bool in_owned = false;
+ IO::Base *compressed = nullptr;
+ std::size_t size = 0;
+ char *data = nullptr;
+ char *owned_data = nullptr;
+
+public:
+ ~RawData();
+
+ void open_file(Collection &, const std::string &);
+ void open_io(IO::Base &, const std::string &);
+ void load();
+ void load_into(void *);
+
+ std::size_t get_size() const { return size; }
+ const void *get_data() const { return data; }
+};
+
+} // namespace DataFile
+} // namespace Msp
+
+#endif