libclod
C library for interacting with NBTs, region files, LOD data and other things.
Loading...
Searching...
No Matches
platform.h
1#ifndef CLOD_REGION_PLATFORM_H
2#define CLOD_REGION_PLATFORM_H
3
4#include "clod_config.h"
5#include <clod/region.h>
6#include <stdint.h>
7#include <time.h>
8
9typedef uintptr_t dir;
10typedef uintptr_t dir_iter;
11typedef uintptr_t file;
12
13enum clod_region_result dir_open(dir *d, const char *path, const struct clod_region_opts *opts);
14enum clod_region_result dir_rename(dir d, const char *old_name, const char *new_name);
15enum clod_region_result dir_close(dir d);
16
17enum clod_region_result dir_iter_open(dir_iter *iter, dir d);
18enum clod_region_result dir_iter_close(dir_iter iter);
19enum clod_region_result dir_iter_next(dir_iter iter, const char **name);
20
21enum clod_region_result file_open(file *f, dir d, const char *name, bool create, const struct clod_region_opts *opts);
22enum clod_region_result file_get(file f, void **data, size_t *size);
23enum clod_region_result file_truncate(file f, size_t new_size);
24enum clod_region_result file_close(file f);
25
26int num_procs();
27
28#define atomic _Atomic
29
30#if HAVE_PTHREAD
31 #include <pthread.h>
32
33 #define mutex pthread_mutex_t
34 #define mutex_init(m) pthread_mutex_init(m, nullptr)
35 #define mutex_destroy(m) pthread_mutex_destroy(m)
36 #define mutex_lock(m) pthread_mutex_lock(m)
37 #define mutex_unlock(m) pthread_mutex_unlock(m)
38
39 #define rwmutex pthread_rwlock_t
40 #define rwmutex_init(rw) pthread_rwlock_init(rw, nullptr)
41 #define rwmutex_destroy(rw) pthread_rwlock_destroy(rw)
42 #define rwmutex_rdlock(rw) pthread_rwlock_rdlock(rw)
43 #define rwmutex_rdunlock(rw) pthread_rwlock_unlock(rw)
44 #define rwmutex_wrlock(rw) pthread_rwlock_wrlock(rw)
45 #define rwmutex_wrunlock(rw) pthread_rwlock_unlock(rw)
46#else
47 #error "Mutex implementation for this platform has not been added"
48#endif
49
50#endif
clod_region_result
Definition region.h:33
Definition file.c:13