manifest.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #pragma once
  2. #include <storage/storage.h>
  3. #include <stdbool.h>
  4. #include <stdint.h>
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif
  8. typedef enum {
  9. ResourceManifestEntryTypeUnknown = 0,
  10. ResourceManifestEntryTypeDirectory,
  11. ResourceManifestEntryTypeFile,
  12. } ResourceManifestEntryType;
  13. typedef struct {
  14. ResourceManifestEntryType type;
  15. FuriString* name;
  16. uint32_t size;
  17. uint8_t hash[16];
  18. } ResourceManifestEntry;
  19. typedef struct ResourceManifestReader ResourceManifestReader;
  20. /**
  21. * @brief Initialize resource manifest reader
  22. * @param storage Storage API pointer
  23. * @return allocated object
  24. */
  25. ResourceManifestReader* resource_manifest_reader_alloc(Storage* storage);
  26. /**
  27. * @brief Release resource manifest reader
  28. * @param resource_manifest allocated object
  29. */
  30. void resource_manifest_reader_free(ResourceManifestReader* resource_manifest);
  31. /**
  32. * @brief Initialize resource manifest reader iteration
  33. * @param resource_manifest allocated object
  34. * @param filename manifest file name
  35. * @return true if file opened
  36. */
  37. bool resource_manifest_reader_open(ResourceManifestReader* resource_manifest, const char* filename);
  38. /**
  39. * @brief Read next file/dir entry from manifest
  40. * @param resource_manifest allocated object
  41. * @return entry or NULL if end of file
  42. */
  43. ResourceManifestEntry* resource_manifest_reader_next(ResourceManifestReader* resource_manifest);
  44. #ifdef __cplusplus
  45. } // extern "C"
  46. #endif