manifest.h 1.4 KB

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