Veritable Lasagna
An Allocator & Data Structure Library for C.
Loading...
Searching...
No Matches
vl_filesys.h
Go to the documentation of this file.
1
58#ifndef VL_FILESYS_H
59#define VL_FILESYS_H
60
61#include "vl_arena.h"
62
74
78typedef struct vl_filesys_iter_* vl_filesys_iter;
79
80#define VL_FS_ITER_INVALID NULL
81
82struct vl_filesys_;
83
87typedef struct
88{
89 struct vl_filesys_* sys;
92 vl_arena_ptr pathStringPtr;
94
101typedef struct
102{
103 struct vl_filesys_* sys;
108 vl_memsize_t fileSize;
114 // Assume we're looking at the path "./foo/bar.txt"
115 vl_arena_ptr baseName;
116 vl_arena_ptr extension;
117 vl_arena_ptr fullName;
119
133
138VL_API void vlFSInit(vl_filesys* sys);
139
144VL_API void vlFSFree(vl_filesys* sys);
145
150VL_API vl_filesys* vlFSNew(void);
151
156VL_API void vlFSDelete(vl_filesys* sys);
157
164
169VL_API void vlFSStatDelete(vl_filesys_stat* stat);
170
178
185VL_API vl_filesys_result vlFSStatIter(vl_filesys_iter iter, vl_filesys_stat* result);
186
193VL_API vl_filesys_path* vlFSPathNew(vl_filesys* sys, const char* path);
194
199VL_API void vlFSPathDelete(vl_filesys_path* path);
200
208
215VL_API vl_bool_t vlFSPathEquals(const vl_filesys_path* pathA, const vl_filesys_path* pathB);
216
222VL_API void vlFSPathSet(vl_filesys_path* path, const char* pathStr);
223
229VL_API const vl_transient* vlFSPathString(const vl_filesys_path* path);
230
237VL_API void vlFSPathJoin(const vl_filesys_path* base, vl_filesys_path* dest, const char* component);
238
246VL_API void vlFSPathNormalize(vl_filesys_path* path);
247
253VL_API void vlFSPathParent(const vl_filesys_path* path, vl_filesys_path* parentOut);
254
259VL_API void vlFSPathAbsolute(vl_filesys_path* path);
260
267
274
281
287VL_API vl_bool_t vlFSPathExists(const vl_filesys_path* path);
288
294VL_API vl_filesys_iter vlFSIterNew(vl_filesys* sys);
295
300VL_API void vlFSIterDelete(vl_filesys_iter iter);
301
308VL_API vl_filesys_result vlFSIterDir(vl_filesys_iter* iter, const vl_filesys_path* path);
309
316VL_API vl_filesys_result vlFSIterDirRecursive(vl_filesys_iter* iterPtr, const vl_filesys_path* path);
317
323VL_API vl_bool_t vlFSIterNext(vl_filesys_iter* iter);
324
325#endif // VL_FILESYS_H
An arena allocator for efficient memory management.
Definition vl_arena.h:84
VL_API void vlFSPathNormalize(vl_filesys_path *path)
Normalizes a filesystem path by resolving relative components.
Definition vl_filesys.c:389
VL_API vl_filesys_result vlFSPathRemove(const vl_filesys_path *path)
Removes a file or directory at the specified path.
Definition vl_filesys_posix.c:381
vl_bool_t isDirectory
Definition vl_filesys.h:106
struct vl_filesys_ * sys
Definition vl_filesys.h:89
VL_API vl_filesys_iter vlFSIterNew(vl_filesys *sys)
Creates a new directory iterator.
Definition vl_filesys_posix.c:425
struct vl_filesys_ * sys
Definition vl_filesys.h:103
vl_arena_ptr pathStringPtr
Definition vl_filesys.h:92
VL_API vl_bool_t vlFSPathIsAbsolute(const vl_filesys_path *path)
Checks if a filesystem path is absolute.
Definition vl_filesys_posix.c:212
VL_API void vlFSPathAbsolute(vl_filesys_path *path)
Converts a relative path to an absolute path.
Definition vl_filesys_posix.c:143
vl_ularge_t accessTime
Definition vl_filesys.h:111
VL_API vl_bool_t vlFSPathExists(const vl_filesys_path *path)
Checks if a file or directory exists at the specified path.
Definition vl_filesys_posix.c:413
vl_arena memory
Definition vl_filesys.h:128
vl_ularge_t createTime
Definition vl_filesys.h:109
VL_API vl_filesys_result vlFSIterDir(vl_filesys_iter *iter, const vl_filesys_path *path)
Initializes an iterator for a directory.
Definition vl_filesys_posix.c:542
VL_API void vlFSDelete(vl_filesys *sys)
Deletes a filesystem context created with vlFSNew.
Definition vl_filesys.c:152
vl_arena_ptr extension
Definition vl_filesys.h:116
vl_memsize_t fileSize
Definition vl_filesys.h:108
vl_pool pathPool
Definition vl_filesys.h:130
vl_pool iterPool
Definition vl_filesys.h:131
vl_filesys_result
Result codes for filesystem operations.
Definition vl_filesys.h:67
@ VL_FS_SUCCESS
Definition vl_filesys.h:68
@ VL_FS_ERROR_NOT_FOUND
Definition vl_filesys.h:71
@ VL_FS_ERROR_PATH_INVALID
Definition vl_filesys.h:70
@ VL_FS_ERROR_IO
Definition vl_filesys.h:72
@ VL_FS_ERROR_ACCESS_DENIED
Definition vl_filesys.h:69
vl_arena_ptr baseName
Definition vl_filesys.h:115
vl_bool_t isReadOnly
Definition vl_filesys.h:107
VL_API vl_bool_t vlFSIterNext(vl_filesys_iter *iter)
Advances the iterator to the next entry.
Definition vl_filesys_posix.c:578
VL_API void vlFSPathSet(vl_filesys_path *path, const char *pathStr)
Sets the path string for a filesystem path object.
Definition vl_filesys.c:280
VL_API vl_filesys * vlFSNew(void)
Creates a new filesystem context.
Definition vl_filesys.c:145
VL_API void vlFSFree(vl_filesys *sys)
Frees resources associated with a filesystem context.
Definition vl_filesys.c:137
vl_arena_ptr fullName
Definition vl_filesys.h:117
VL_API vl_bool_t vlFSPathEquals(const vl_filesys_path *pathA, const vl_filesys_path *pathB)
Compares two filesystem paths for equality.
Definition vl_filesys.c:262
VL_API vl_filesys_result vlFSStatPath(const vl_filesys_path *path, vl_filesys_stat *result)
Gets file status information for a given path.
Definition vl_filesys_posix.c:58
VL_API void vlFSInit(vl_filesys *sys)
Initializes a filesystem context.
Definition vl_filesys.c:129
VL_API vl_filesys_path * vlFSPathNew(vl_filesys *sys, const char *path)
Creates a new filesystem path object.
Definition vl_filesys.c:197
vl_pool_idx pathIndex
Definition vl_filesys.h:91
VL_API vl_filesys_result vlFSIterDirRecursive(vl_filesys_iter *iterPtr, const vl_filesys_path *path)
Initializes an iterator for recursive directory traversal.
Definition vl_filesys_posix.c:560
vl_pool statPool
Definition vl_filesys.h:129
VL_API vl_filesys_result vlFSPathMkDir(const vl_filesys_path *path)
Creates a directory at the specified path.
Definition vl_filesys_posix.c:327
VL_API vl_filesys_path * vlFSPathClone(const vl_filesys_path *src, vl_filesys_path *dest)
Clones a filesystem path.
Definition vl_filesys.c:231
VL_API const vl_transient * vlFSPathString(const vl_filesys_path *path)
Gets the string representation of a filesystem path.
Definition vl_filesys.c:304
VL_API void vlFSPathParent(const vl_filesys_path *path, vl_filesys_path *parentOut)
Gets the parent directory of a filesystem path.
Definition vl_filesys.c:508
VL_API void vlFSPathDelete(vl_filesys_path *path)
Deletes a filesystem path object.
Definition vl_filesys.c:216
VL_API void vlFSIterDelete(vl_filesys_iter iter)
Deletes a directory iterator.
Definition vl_filesys_posix.c:442
vl_pool_idx statIndex
Definition vl_filesys.h:105
VL_API vl_filesys_result vlFSStatIter(vl_filesys_iter iter, vl_filesys_stat *result)
Gets file status information for the current iterator position.
Definition vl_filesys_posix.c:125
vl_ularge_t modifyTime
Definition vl_filesys.h:110
VL_API vl_filesys_stat * vlFSStatNew(vl_filesys *sys)
Creates a new file stat object.
Definition vl_filesys.c:158
VL_API void vlFSPathJoin(const vl_filesys_path *base, vl_filesys_path *dest, const char *component)
Joins a path component to a base path.
Definition vl_filesys.c:313
vl_filesys_path filePath
Definition vl_filesys.h:112
VL_API void vlFSStatDelete(vl_filesys_stat *stat)
Deletes a file stat object.
Definition vl_filesys.c:177
Filesystem context structure.
Definition vl_filesys.h:127
Represents a filesystem path within the filesystem context.
Definition vl_filesys.h:88
File status information structure.
Definition vl_filesys.h:102
Opaque handle for filesystem directory iteration.
Definition vl_filesys_posix.c:7
VL_MEMORY_T vl_transient
Definition vl_memory.h:118
VL_BOOL_T vl_bool_t
Definition vl_numtypes.h:191
VL_ULARGE_T vl_ularge_t
Largest available unsigned integer type.
Definition vl_numtypes.h:136
VL_POOL_INDEX_T vl_pool_idx
Definition vl_pool.h:53
Fixed-size memory pool with stable indices and geometric growth.
Definition vl_pool.h:141