1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
// Auto-generated by tools/generate_error_header.py — DO NOT EDIT
// Source: src/error/mod.rs
#ifndef RW_ERRORS_H
#define RW_ERRORS_H
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
/* ------------------------------------------------------------------ */
/* FFI‑safe error codes — stable, append‑only */
/* ------------------------------------------------------------------ */
/* --- General --- */
#define RW_ERROR_SUCCESS 0
#define RW_ERROR_NOT_IMPLEMENTED 1
#define RW_ERROR_UNSUPPORTED_OPERATION 2
#define RW_ERROR_INVALID_ARGUMENT 3
#define RW_ERROR_GENERAL 999
#define RW_ERROR_NULL_POINTER 4
#define RW_ERROR_OUT_OF_MEMORY 5
#define RW_ERROR_LOCK_POISONED 6
#define RW_ERROR_EW_SUCCESS 0
#define RW_ERROR_EW_NOT_IMPLEMENTED 1
#define RW_ERROR_EW_UNSUPPORTED_OPERATION 2
#define RW_ERROR_EW_INVALID_ARGUMENT 3
#define RW_ERROR_EW_GENERAL 999
#define RW_ERROR_EW_NULL_POINTER 4
#define RW_ERROR_EW_OUT_OF_MEMORY 5
#define RW_ERROR_EW_LOCK_POISONED 6
/* --- Widget --- */
#define RW_ERROR_WIDGET_BASE_NOT_IMPL 100
#define RW_ERROR_WIDGET_NOT_FOUND 101
#define RW_ERROR_WIDGET_INVALID_STATE 102
#define RW_ERROR_WIDGET_DEPRECATED 103
#define RW_ERROR_EW_WIDGET_BASE_NOT_IMPL 100
#define RW_ERROR_EW_WIDGET_NOT_FOUND 101
#define RW_ERROR_EW_WIDGET_INVALID_STATE 102
#define RW_ERROR_EW_WIDGET_DEPRECATED 103
/* --- Platform --- */
#define RW_ERROR_PLATFORM_UNSUPPORTED 200
#define RW_ERROR_PLATFORM_INIT_FAILED 201
#define RW_ERROR_CLIPBOARD_FAILED 202
#define RW_ERROR_DRAG_DROP_FAILED 203
#define RW_ERROR_EW_PLATFORM_UNSUPPORTED 200
#define RW_ERROR_EW_PLATFORM_INIT_FAILED 201
#define RW_ERROR_EW_CLIPBOARD_FAILED 202
#define RW_ERROR_EW_DRAG_DROP_FAILED 203
/* --- Render --- */
#define RW_ERROR_RENDER_CONTEXT_INVALID 300
#define RW_ERROR_RENDER_PIPELINE_FAILED 301
#define RW_ERROR_EW_RENDER_CONTEXT_INVALID 300
#define RW_ERROR_EW_RENDER_PIPELINE_FAILED 301
/* --- I/O --- */
#define RW_ERROR_I18N_LOAD_FAILED 400
#define RW_ERROR_FILE_NOT_FOUND 401
#define RW_ERROR_EW_I18N_LOAD_FAILED 400
#define RW_ERROR_EW_FILE_NOT_FOUND 401
/* --- EW aliases --- */
#define EW_ERROR_SUCCESS RW_ERROR_SUCCESS
#define EW_ERROR_NOT_IMPLEMENTED RW_ERROR_NOT_IMPLEMENTED
#define EW_ERROR_UNSUPPORTED_OPERATION RW_ERROR_UNSUPPORTED_OPERATION
#define EW_ERROR_INVALID_ARGUMENT RW_ERROR_INVALID_ARGUMENT
#define EW_ERROR_GENERAL RW_ERROR_GENERAL
#define EW_ERROR_NULL_POINTER RW_ERROR_NULL_POINTER
#define EW_ERROR_OUT_OF_MEMORY RW_ERROR_OUT_OF_MEMORY
#define EW_ERROR_LOCK_POISONED RW_ERROR_LOCK_POISONED
#define EW_ERROR_EW_SUCCESS RW_ERROR_EW_SUCCESS
#define EW_ERROR_EW_NOT_IMPLEMENTED RW_ERROR_EW_NOT_IMPLEMENTED
#define EW_ERROR_EW_UNSUPPORTED_OPERATION RW_ERROR_EW_UNSUPPORTED_OPERATION
#define EW_ERROR_EW_INVALID_ARGUMENT RW_ERROR_EW_INVALID_ARGUMENT
#define EW_ERROR_EW_GENERAL RW_ERROR_EW_GENERAL
#define EW_ERROR_EW_NULL_POINTER RW_ERROR_EW_NULL_POINTER
#define EW_ERROR_EW_OUT_OF_MEMORY RW_ERROR_EW_OUT_OF_MEMORY
#define EW_ERROR_EW_LOCK_POISONED RW_ERROR_EW_LOCK_POISONED
#define EW_ERROR_WIDGET_BASE_NOT_IMPL RW_ERROR_WIDGET_BASE_NOT_IMPL
#define EW_ERROR_WIDGET_NOT_FOUND RW_ERROR_WIDGET_NOT_FOUND
#define EW_ERROR_WIDGET_INVALID_STATE RW_ERROR_WIDGET_INVALID_STATE
#define EW_ERROR_WIDGET_DEPRECATED RW_ERROR_WIDGET_DEPRECATED
#define EW_ERROR_EW_WIDGET_BASE_NOT_IMPL RW_ERROR_EW_WIDGET_BASE_NOT_IMPL
#define EW_ERROR_EW_WIDGET_NOT_FOUND RW_ERROR_EW_WIDGET_NOT_FOUND
#define EW_ERROR_EW_WIDGET_INVALID_STATE RW_ERROR_EW_WIDGET_INVALID_STATE
#define EW_ERROR_EW_WIDGET_DEPRECATED RW_ERROR_EW_WIDGET_DEPRECATED
#define EW_ERROR_PLATFORM_UNSUPPORTED RW_ERROR_PLATFORM_UNSUPPORTED
#define EW_ERROR_PLATFORM_INIT_FAILED RW_ERROR_PLATFORM_INIT_FAILED
#define EW_ERROR_CLIPBOARD_FAILED RW_ERROR_CLIPBOARD_FAILED
#define EW_ERROR_DRAG_DROP_FAILED RW_ERROR_DRAG_DROP_FAILED
#define EW_ERROR_EW_PLATFORM_UNSUPPORTED RW_ERROR_EW_PLATFORM_UNSUPPORTED
#define EW_ERROR_EW_PLATFORM_INIT_FAILED RW_ERROR_EW_PLATFORM_INIT_FAILED
#define EW_ERROR_EW_CLIPBOARD_FAILED RW_ERROR_EW_CLIPBOARD_FAILED
#define EW_ERROR_EW_DRAG_DROP_FAILED RW_ERROR_EW_DRAG_DROP_FAILED
#define EW_ERROR_RENDER_CONTEXT_INVALID RW_ERROR_RENDER_CONTEXT_INVALID
#define EW_ERROR_RENDER_PIPELINE_FAILED RW_ERROR_RENDER_PIPELINE_FAILED
#define EW_ERROR_EW_RENDER_CONTEXT_INVALID RW_ERROR_EW_RENDER_CONTEXT_INVALID
#define EW_ERROR_EW_RENDER_PIPELINE_FAILED RW_ERROR_EW_RENDER_PIPELINE_FAILED
#define EW_ERROR_I18N_LOAD_FAILED RW_ERROR_I18N_LOAD_FAILED
#define EW_ERROR_FILE_NOT_FOUND RW_ERROR_FILE_NOT_FOUND
#define EW_ERROR_EW_I18N_LOAD_FAILED RW_ERROR_EW_I18N_LOAD_FAILED
#define EW_ERROR_EW_FILE_NOT_FOUND RW_ERROR_EW_FILE_NOT_FOUND
/* ------------------------------------------------------------------ */
/* Function declarations */
/* ------------------------------------------------------------------ */
/*
* `rw_error_message` / `rw_error_code` are declared by the generated ABI header,
* which is the single source of truth for every `rw_*` signature. They used to be
* repeated here with `const char*` / `int32_t`, which contradicts the generated
* `char*` / `int`; including both headers then failed to compile, so a C++ or C
* caller could not use the error codes and the ABI together at all. Including the
* generated header keeps the signatures in one place.
*/
#include <rw_generated.h>
/* ------------------------------------------------------------------ */
/* Helpers */
/* ------------------------------------------------------------------ */
/*
* Reading an error:
*
* rw_error_code(handle) -> the RW_ERROR_* value, or RW_ERROR_SUCCESS
* rw_error_message(handle) -> a string the caller frees with rw_free_string
*/
#ifdef __cplusplus
}
#endif
#endif /* RW_ERRORS_H */