VAE - Virtual Audio Engine 1
Small Data Driven Audio Engine
vae_fs.hpp
Go to the documentation of this file.
1#ifndef _VAE_FS
2#define _VAE_FS
3
4#include <stddef.h>
5
6void* vae_file_open(const char* path, const char* mode);
7/**
8 * @brief Seek and return current position
9 *
10 * @param file
11 * @param seek
12 * @return size_t
13 */
14size_t vae_file_seek(void* file, size_t, int seek);
15size_t vae_file_read(char* dest, size_t size, int, void* file);
16size_t vae_file_close(void* file);
17
18
19#ifndef VAE_NO_STDIO
20 #include <stdio.h>
21 void* vae_file_open(const char* path, const char* mode) {
22 return fopen(path, mode);
23 }
24
25 size_t vae_file_seek(void* file, size_t offset, int seek) {
26 fseek((FILE*) file, offset, seek);
27 return ftell((FILE*) file);
28 }
29
30 size_t vae_file_read(char* dest, size_t size, int, void* file) {
31 return fread(dest, size, 1, (FILE*) file);
32 }
33
34 size_t vae_file_close(void* file) {
35 return fclose((FILE*) file);
36 }
37#endif
38
39namespace vae { namespace core { namespace fs {
40 class File {
41 void* mHandle = nullptr;
42 size_t mSize = 0;
43 enum class Seek {
44 #ifdef VAE_NO_STDIO
45 set = 0, cur, end
46 #else
47 set = SEEK_SET, cur = SEEK_CUR, end = SEEK_END
48 #endif
49 };
50 public:
51 enum class Mode {
52 Read,
53 Write,
55 };
56
57 File(const char* path, Mode mode = Mode::Read) {
58 const char* MODES[3] = { "r", "w", "rw" };
59 mHandle = vae_file_open(path, MODES[(size_t) mode]);
60 if (mHandle == 0) { return; }
63 }
64
65 bool valid() const { return mHandle != nullptr; }
66
67 size_t size() {
68 if (mHandle == nullptr) { return 0; }
69 return mSize;
70 }
71
72 bool readAll(char* dest) {
73 if (mHandle == nullptr) { return false; }
74 return vae_file_read(dest, size(), 1, mHandle) == 1;
75 }
76
78 if (mHandle == nullptr) {return; }
80 }
81 };
82} } } // vae::core::fs
83
84#endif
File(const char *path, Mode mode=Mode::Read)
Definition: vae_fs.hpp:57
bool readAll(char *dest)
Definition: vae_fs.hpp:72
bool valid() const
Definition: vae_fs.hpp:65
Contains Typedefinitions and basic structures use by the public API and internally.
Definition: vae.hpp:31
size_t vae_file_seek(void *file, size_t, int seek)
Seek and return current position.
Definition: vae_fs.hpp:25
size_t vae_file_read(char *dest, size_t size, int, void *file)
Definition: vae_fs.hpp:30
void * vae_file_open(const char *path, const char *mode)
Definition: vae_fs.hpp:21
size_t vae_file_close(void *file)
Definition: vae_fs.hpp:34