libclod
C library for interacting with NBTs, region files, LOD data and other things.
Loading...
Searching...
No Matches
region.h
Go to the documentation of this file.
1
16
17#ifndef CLOD_REGION_H
18#define CLOD_REGION_H
19
20#include <clod/compression.h>
21#include <clod/lib.h>
22#include <stdint.h>
23#include <time.h>
24
30#define CLOD_REGION_VERSION 1
31
32struct clod_region;
33struct clod_region_opts;
34struct clod_region_iter;
35
58
65CLOD_API CLOD_USE_RETURN
66struct clod_region *
67clod_region_open(const char *path, const struct clod_region_opts *opts);
68
81CLOD_API CLOD_USE_RETURN CLOD_NONNULL(1, 2, 3)
83clod_region_read(struct clod_region *region, const int64_t *pos, uint8_t *buff, size_t buff_size, size_t *size);
84
96CLOD_API CLOD_USE_RETURN CLOD_NONNULL(1, 2)
98clod_region_write(struct clod_region *region, const int64_t *pos, const uint8_t *buff, size_t buff_size);
99
110CLOD_API CLOD_USE_RETURN CLOD_NONNULL(1, 2)
112clod_region_mtime(struct clod_region *region, const int64_t *pos, time_t *mtime);
113
119CLOD_API CLOD_USE_RETURN CLOD_NONNULL(1)
120struct clod_region_iter *
122
130CLOD_API CLOD_USE_RETURN CLOD_NONNULL(1, 2)
131bool
132clod_region_iter_next(struct clod_region_iter *iter, int64_t *pos);
133
139CLOD_API CLOD_NONNULL(1)
140void
141clod_region_iter_end(struct clod_region_iter *iter);
142
147CLOD_API CLOD_NONNULL(1)
149clod_region_close(struct clod_region *region);
150
153#define CLOD_REGION_MODE_RDONLY 1
154#define CLOD_REGION_MODE_RDWR 2
156
159#define CLOD_REGION_PREFIX_MAX 30
160#define CLOD_REGION_EXTENSION_MAX 10
161#define CLOD_REGION_DIMENSIONS_MAX 10
163
170 uint8_t version;
171
173 uint8_t dims;
174
176 uint8_t mode;
177
182
186 uint32_t sector_size;
187
192
196
199 char prefix[CLOD_REGION_PREFIX_MAX + 1];
200
203 char region_ext[CLOD_REGION_EXTENSION_MAX + 1];
204
207 char chunk_ext[CLOD_REGION_EXTENSION_MAX + 1];
208};
209
211#endif
clod_compression_method
Definition compression.h:32
enum clod_region_result clod_region_read(struct clod_region *region, const int64_t *pos, uint8_t *buff, size_t buff_size, size_t *size)
Definition region_read.c:6
enum clod_region_result clod_region_mtime(struct clod_region *region, const int64_t *pos, time_t *mtime)
void clod_region_iter_end(struct clod_region_iter *iter)
clod_region_result
Definition region.h:43
enum clod_region_result clod_region_write(struct clod_region *region, const int64_t *pos, const uint8_t *buff, size_t buff_size)
struct clod_region_iter * clod_region_iter_start(struct clod_region *region)
bool clod_region_iter_next(struct clod_region_iter *iter, int64_t *pos)
struct clod_region * clod_region_open(const char *path, const struct clod_region_opts *opts)
Definition region_open.c:98
enum clod_region_result clod_region_close(struct clod_region *region)
@ CLOD_REGION_NOT_FOUND
Definition region.h:56
@ CLOD_REGION_MALFORMED
Definition region.h:53
@ CLOD_REGION_INVALID_USAGE
Definition region.h:49
@ CLOD_REGION_OK
Definition region.h:45
uint8_t dims
Definition region.h:173
uint8_t mode
Definition region.h:176
enum clod_compression_method compression
Definition region.h:181
char chunk_ext[10+1]
Definition region.h:207
uint8_t version
Definition region.h:170
char region_ext[10+1]
Definition region.h:203
uint32_t unix_file_perms
Definition region.h:195
char prefix[30+1]
Definition region.h:199
uint32_t sector_size
Definition region.h:186