romfs.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #pragma once
  2. #include <stdint.h>
  3. class ROMFS_Stream;
  4. class ROMFS {
  5. public:
  6. static bool exists(const char *fname);
  7. static ROMFS_Stream *find_stream(const char *fname);
  8. static const char *find_string(const char *name);
  9. struct embedded_file {
  10. const char *filename;
  11. uint32_t size;
  12. const uint8_t *contents;
  13. };
  14. private:
  15. static const struct embedded_file *find(const char *fname);
  16. static const struct embedded_file files[];
  17. };
  18. class ROMFS_Stream : public Stream
  19. {
  20. public:
  21. ROMFS_Stream(const ROMFS::embedded_file &_f) :
  22. f(_f) {}
  23. size_t write(const uint8_t *buffer, size_t size) override { return 0; }
  24. size_t write(uint8_t data) override { return 0; }
  25. size_t size(void) const;
  26. const char *name(void) const;
  27. int available() override;
  28. int read() override;
  29. int peek() override;
  30. void flush() override {}
  31. size_t readBytes(char *buffer, size_t length) override {
  32. return read((uint8_t*)buffer, length);
  33. }
  34. private:
  35. size_t read(uint8_t* buf, size_t size);
  36. const ROMFS::embedded_file &f;
  37. uint32_t offset = 0;
  38. };