vgl 1.0.0
Virtual Globe Library: API reference
Loading...
Searching...
No Matches
foundation.h
Go to the documentation of this file.
1/*
2 * SPDX-License-Identifier: MIT
3 * Copyright (c) 2026 Jeremiah van Oosten
4 *
5 * vgl foundation: allocator, logging, I/O and task interfaces (docs/c-api.md, sections 10,
6 * 12 and 13; design document, section 7.5).
7 */
8#ifndef VGL_FOUNDATION_H
9#define VGL_FOUNDATION_H
10
11#include <vgl/base.h>
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
28
39typedef void (*vgl_log_fn)(void* user_data, vgl_log_level level, const char* message);
40
41#define VGL_ALLOCATOR_INTERFACE_VERSION 1
42
49{
50 uint32_t version;
51 uint32_t reserved;
52 void* user_data;
53
60 void* (*allocate)(void* user_data, size_t size, size_t alignment);
61
68 void (*deallocate)(void* user_data, void* memory, size_t size, size_t alignment);
70
71/* ---------------------------------------------------------------------------------------- */
72/* I/O */
73/* ---------------------------------------------------------------------------------------- */
74
77
79#define VGL_IO_SIZE_TO_END UINT64_MAX
80
82typedef struct vgl_io_read
83{
86 const char* uri;
87 VGL_POINTER_PADDING(uri_padding)
88 uint64_t offset;
91 uint64_t size;
93
94#define VGL_IO_INTERFACE_VERSION 1
95
101typedef struct vgl_io_interface
102{
103 uint32_t version;
104 uint32_t reserved;
106
113 void (*read)(void* user_data, vgl_io_request* request, const vgl_io_read* read);
114
121 void (*cancel)(void* user_data, vgl_io_request* request);
122
129 void (*destroy)(void* user_data);
131
158 vgl_result result,
159 const void* data,
160 size_t size);
161
169typedef void (*vgl_io_complete_fn)(void* user_data,
170 vgl_result result,
171 const void* data,
172 size_t size);
173
175{
176 uint32_t struct_size;
177 uint32_t reserved;
180 VGL_POINTER_PADDING(complete_padding)
181 void* user_data;
182 VGL_POINTER_PADDING(user_data_padding)
185 const vgl_allocator_interface* allocator;
186 VGL_POINTER_PADDING(allocator_padding)
188
211 vgl_io_request** out_request);
212
213/* ---------------------------------------------------------------------------------------- */
214/* Tasks */
215/* ---------------------------------------------------------------------------------------- */
216
222typedef void (*vgl_task_fn)(void* user_data);
223
224#define VGL_TASK_INTERFACE_VERSION 1
225
231typedef struct vgl_task_interface
232{
233 uint32_t version;
234 uint32_t reserved;
236
245 vgl_result (*submit)(void* user_data, vgl_task_fn function, void* task_data);
246
253 void (*destroy)(void* user_data);
255
256#ifdef __cplusplus
257}
258#endif
259
260#endif /* VGL_FOUNDATION_H */
vgl_result
Definition base.h:98
#define VGL_API
Definition base.h:28
#define VGL_POINTER_PADDING(name)
Definition base.h:46
vgl_result vgl_io_request_complete(vgl_io_request *request, vgl_result result, const void *data, size_t size)
struct vgl_io_request vgl_io_request
Definition foundation.h:76
vgl_result vgl_io_request_create(const vgl_io_request_create_info *info, vgl_io_request **out_request)
void(* vgl_task_fn)(void *user_data)
Definition foundation.h:222
vgl_log_level
Definition foundation.h:19
@ VGL_LOG_LEVEL_DEFAULT
Definition foundation.h:21
@ VGL_LOG_LEVEL_ERROR
Definition foundation.h:22
@ VGL_LOG_LEVEL_MAX_ENUM
Definition foundation.h:26
@ VGL_LOG_LEVEL_DEBUG
Definition foundation.h:25
@ VGL_LOG_LEVEL_WARNING
Definition foundation.h:23
@ VGL_LOG_LEVEL_INFO
Definition foundation.h:24
void(* vgl_io_complete_fn)(void *user_data, vgl_result result, const void *data, size_t size)
Definition foundation.h:169
void(* vgl_log_fn)(void *user_data, vgl_log_level level, const char *message)
Definition foundation.h:39
Definition foundation.h:49
uint32_t version
Definition foundation.h:50
void * user_data
Definition foundation.h:52
void(* deallocate)(void *user_data, void *memory, size_t size, size_t alignment)
Definition foundation.h:68
uint32_t reserved
Definition foundation.h:51
Definition foundation.h:102
uint32_t version
Definition foundation.h:103
uint32_t reserved
Definition foundation.h:104
void(* read)(void *user_data, vgl_io_request *request, const vgl_io_read *read)
Definition foundation.h:113
void * user_data
Definition foundation.h:105
Definition foundation.h:83
const char * uri
Definition foundation.h:86
uint64_t size
Definition foundation.h:91
uint64_t offset
Definition foundation.h:88
Definition foundation.h:175
uint32_t struct_size
Definition foundation.h:176
uint32_t reserved
Definition foundation.h:177
vgl_io_complete_fn complete
Definition foundation.h:179
Definition foundation.h:232
uint32_t reserved
Definition foundation.h:234
void * user_data
Definition foundation.h:235
uint32_t version
Definition foundation.h:233