filemap.h 740 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #pragma once
  2. #include "libc.h"
  3. struct AFileMap {
  4. const void *map;
  5. size_t size;
  6. struct {
  7. #ifndef _WIN32
  8. int fd;
  9. #else
  10. HANDLE handle;
  11. #endif
  12. } impl_;
  13. };
  14. struct AFileMap aFileMapOpen(const char *filename);
  15. void aFileMapClose(struct AFileMap *file);
  16. struct AFile {
  17. size_t size;
  18. struct {
  19. #ifndef _WIN32
  20. int fd;
  21. #else
  22. HANDLE handle;
  23. #endif
  24. } impl_;
  25. };
  26. #define AFileError ((size_t)-1)
  27. enum AFileResult {
  28. AFile_Success,
  29. AFile_Fail
  30. };
  31. /* reset file to default state, useful for initialization */
  32. void aFileReset(struct AFile *file);
  33. enum AFileResult aFileOpen(struct AFile *file, const char *filename);
  34. size_t aFileReadAtOffset(struct AFile *file, size_t off, size_t size, void *buffer);
  35. void aFileClose(struct AFile *file);