Blender  V3.3
BLO_read_write.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
27 #pragma once
28 
29 /* for SDNA_TYPE_FROM_STRUCT() macro */
30 #include "dna_type_offsets.h"
31 
32 #include "DNA_windowmanager_types.h" /* for eReportType */
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
38 typedef struct BlendDataReader BlendDataReader;
39 typedef struct BlendExpander BlendExpander;
40 typedef struct BlendLibReader BlendLibReader;
41 typedef struct BlendWriter BlendWriter;
42 
43 struct BlendFileReadReport;
44 struct Main;
45 struct ReportList;
46 
47 /* -------------------------------------------------------------------- */
85 int BLO_get_struct_id_by_name(BlendWriter *writer, const char *struct_name);
86 #define BLO_get_struct_id(writer, struct_name) SDNA_TYPE_FROM_STRUCT(struct_name)
87 
91 void BLO_write_struct_by_name(BlendWriter *writer, const char *struct_name, const void *data_ptr);
92 void BLO_write_struct_by_id(BlendWriter *writer, int struct_id, const void *data_ptr);
93 #define BLO_write_struct(writer, struct_name, data_ptr) \
94  BLO_write_struct_by_id(writer, BLO_get_struct_id(writer, struct_name), data_ptr)
95 
100  int struct_id,
101  const void *address,
102  const void *data_ptr);
103 #define BLO_write_struct_at_address(writer, struct_name, address, data_ptr) \
104  BLO_write_struct_at_address_by_id( \
105  writer, BLO_get_struct_id(writer, struct_name), address, data_ptr)
106 
111  BlendWriter *writer, int filecode, int struct_id, const void *address, const void *data_ptr);
112 #define BLO_write_struct_at_address_with_filecode( \
113  writer, filecode, struct_name, address, data_ptr) \
114  BLO_write_struct_at_address_by_id_with_filecode( \
115  writer, filecode, BLO_get_struct_id(writer, struct_name), address, data_ptr)
116 
121  const char *struct_name,
122  int array_size,
123  const void *data_ptr);
125  int struct_id,
126  int array_size,
127  const void *data_ptr);
128 #define BLO_write_struct_array(writer, struct_name, array_size, data_ptr) \
129  BLO_write_struct_array_by_id( \
130  writer, BLO_get_struct_id(writer, struct_name), array_size, data_ptr)
131 
136  BlendWriter *writer, int struct_id, int array_size, const void *address, const void *data_ptr);
137 #define BLO_write_struct_array_at_address(writer, struct_name, array_size, address, data_ptr) \
138  BLO_write_struct_array_at_address_by_id( \
139  writer, BLO_get_struct_id(writer, struct_name), array_size, address, data_ptr)
140 
145  const char *struct_name,
146  struct ListBase *list);
147 void BLO_write_struct_list_by_id(BlendWriter *writer, int struct_id, struct ListBase *list);
148 #define BLO_write_struct_list(writer, struct_name, list_ptr) \
149  BLO_write_struct_list_by_id(writer, BLO_get_struct_id(writer, struct_name), list_ptr)
150 
155  int struct_id,
156  const void *id_address,
157  const struct ID *id);
158 #define BLO_write_id_struct(writer, struct_name, id_address, id) \
159  blo_write_id_struct(writer, BLO_get_struct_id(writer, struct_name), id_address, id)
160 
164 void BLO_write_raw(BlendWriter *writer, size_t size_in_bytes, const void *data_ptr);
165 void BLO_write_int32_array(BlendWriter *writer, uint num, const int32_t *data_ptr);
166 void BLO_write_uint32_array(BlendWriter *writer, uint num, const uint32_t *data_ptr);
167 void BLO_write_float_array(BlendWriter *writer, uint num, const float *data_ptr);
168 void BLO_write_double_array(BlendWriter *writer, uint num, const double *data_ptr);
169 void BLO_write_float3_array(BlendWriter *writer, uint num, const float *data_ptr);
170 void BLO_write_pointer_array(BlendWriter *writer, uint num, const void *data_ptr);
174 void BLO_write_string(BlendWriter *writer, const char *data_ptr);
175 
176 /* Misc. */
177 
182 bool BLO_write_is_undo(BlendWriter *writer);
183 
186 /* -------------------------------------------------------------------- */
211 void *BLO_read_get_new_data_address(BlendDataReader *reader, const void *old_address);
212 void *BLO_read_get_new_data_address_no_us(BlendDataReader *reader, const void *old_address);
213 void *BLO_read_get_new_packed_address(BlendDataReader *reader, const void *old_address);
214 
215 #define BLO_read_data_address(reader, ptr_p) \
216  *((void **)ptr_p) = BLO_read_get_new_data_address((reader), *(ptr_p))
217 #define BLO_read_packed_address(reader, ptr_p) \
218  *((void **)ptr_p) = BLO_read_get_new_packed_address((reader), *(ptr_p))
219 
220 typedef void (*BlendReadListFn)(BlendDataReader *reader, void *data);
227 void BLO_read_list(BlendDataReader *reader, struct ListBase *list);
228 
229 /* Update data pointers and correct byte-order if necessary. */
230 
231 void BLO_read_int32_array(BlendDataReader *reader, int array_size, int32_t **ptr_p);
232 void BLO_read_uint32_array(BlendDataReader *reader, int array_size, uint32_t **ptr_p);
233 void BLO_read_float_array(BlendDataReader *reader, int array_size, float **ptr_p);
234 void BLO_read_float3_array(BlendDataReader *reader, int array_size, float **ptr_p);
235 void BLO_read_double_array(BlendDataReader *reader, int array_size, double **ptr_p);
236 void BLO_read_pointer_array(BlendDataReader *reader, void **ptr_p);
237 
238 /* Misc. */
239 
242 void BLO_read_data_globmap_add(BlendDataReader *reader, void *oldaddr, void *newaddr);
243 void BLO_read_glob_list(BlendDataReader *reader, struct ListBase *list);
245 
248 /* -------------------------------------------------------------------- */
255 ID *BLO_read_get_new_id_address(BlendLibReader *reader, struct Library *lib, struct ID *id);
256 
257 #define BLO_read_id_address(reader, lib, id_ptr_p) \
258  *((void **)id_ptr_p) = (void *)BLO_read_get_new_id_address((reader), (lib), (ID *)*(id_ptr_p))
259 
260 /* Misc. */
261 
263 struct Main *BLO_read_lib_get_main(BlendLibReader *reader);
265 
268 /* -------------------------------------------------------------------- */
275 void BLO_expand_id(BlendExpander *expander, struct ID *id);
276 
277 #define BLO_expand(expander, id) BLO_expand_id(expander, (struct ID *)id)
278 
281 /* -------------------------------------------------------------------- */
294  const char *format,
295  ...) ATTR_PRINTF_FORMAT(3, 4);
296 
299 #ifdef __cplusplus
300 }
301 #endif
size_t ATTR_PRINTF_FORMAT(3, 4)
unsigned int uint
Definition: BLI_sys_types.h:67
void BLO_write_double_array(BlendWriter *writer, uint num, const double *data_ptr)
Definition: writefile.c:1586
void BLO_read_float3_array(BlendDataReader *reader, int array_size, float **ptr_p)
Definition: readfile.c:5201
void BLO_write_uint32_array(BlendWriter *writer, uint num, const uint32_t *data_ptr)
Definition: writefile.c:1576
void BLO_write_float3_array(BlendWriter *writer, uint num, const float *data_ptr)
Definition: writefile.c:1596
void BLO_write_struct_list_by_id(BlendWriter *writer, int struct_id, struct ListBase *list)
Definition: writefile.c:1545
void BLO_write_struct_at_address_by_id_with_filecode(BlendWriter *writer, int filecode, int struct_id, const void *address, const void *data_ptr)
Definition: writefile.c:1525
struct Main * BLO_read_lib_get_main(BlendLibReader *reader)
Definition: readfile.c:5313
void * BLO_read_get_new_packed_address(BlendDataReader *reader, const void *old_address)
Definition: readfile.c:5133
void * BLO_read_get_new_data_address_no_us(BlendDataReader *reader, const void *old_address)
Definition: readfile.c:5128
ID * BLO_read_get_new_id_address(BlendLibReader *reader, struct Library *lib, struct ID *id)
Definition: readfile.c:5138
void BLO_write_struct_by_name(BlendWriter *writer, const char *struct_name, const void *data_ptr)
Definition: writefile.c:1494
void BLO_write_int32_array(BlendWriter *writer, uint num, const int32_t *data_ptr)
Definition: writefile.c:1571
void BLO_read_double_array(BlendDataReader *reader, int array_size, double **ptr_p)
Definition: readfile.c:5206
struct BlendFileReadReport * BLO_read_lib_reports(BlendLibReader *reader)
Definition: readfile.c:5318
bool BLO_read_data_is_undo(BlendDataReader *reader)
Definition: readfile.c:5288
void BLO_read_float_array(BlendDataReader *reader, int array_size, float **ptr_p)
Definition: readfile.c:5193
void BLO_read_int32_array(BlendDataReader *reader, int array_size, int32_t **ptr_p)
Definition: readfile.c:5177
void(* BlendReadListFn)(BlendDataReader *reader, void *data)
void BLO_write_struct_list_by_name(BlendWriter *writer, const char *struct_name, struct ListBase *list)
Definition: writefile.c:1550
void BLO_read_list(BlendDataReader *reader, struct ListBase *list)
Definition: readfile.c:5172
void BLO_write_struct_array_by_id(BlendWriter *writer, int struct_id, int array_size, const void *data_ptr)
Definition: writefile.c:1531
bool BLO_read_lib_is_undo(BlendLibReader *reader)
Definition: readfile.c:5308
void BLO_read_glob_list(BlendDataReader *reader, struct ListBase *list)
Definition: readfile.c:5298
void * BLO_read_get_new_data_address(BlendDataReader *reader, const void *old_address)
Definition: readfile.c:5123
void BLO_read_list_cb(BlendDataReader *reader, struct ListBase *list, BlendReadListFn callback)
Definition: readfile.c:5148
void BLO_read_uint32_array(BlendDataReader *reader, int array_size, uint32_t **ptr_p)
Definition: readfile.c:5185
void BLO_read_data_globmap_add(BlendDataReader *reader, void *oldaddr, void *newaddr)
Definition: readfile.c:5293
void BLO_write_float_array(BlendWriter *writer, uint num, const float *data_ptr)
Definition: writefile.c:1581
void BLO_write_string(BlendWriter *writer, const char *data_ptr)
Definition: writefile.c:1601
int BLO_get_struct_id_by_name(BlendWriter *writer, const char *struct_name)
Definition: writefile.c:1565
void BLO_write_struct_array_by_name(BlendWriter *writer, const char *struct_name, int array_size, const void *data_ptr)
Definition: writefile.c:1499
bool BLO_read_requires_endian_switch(BlendDataReader *reader)
Definition: readfile.c:5143
void BLO_expand_id(BlendExpander *expander, struct ID *id)
Definition: readfile.c:5323
void BLO_write_raw(BlendWriter *writer, size_t size_in_bytes, const void *data_ptr)
Definition: writefile.c:1489
void BLO_write_struct_at_address_by_id(BlendWriter *writer, int struct_id, const void *address, const void *data_ptr)
Definition: writefile.c:1517
struct BlendFileReadReport * BLO_read_data_reports(BlendDataReader *reader)
Definition: readfile.c:5303
void BLO_read_pointer_array(BlendDataReader *reader, void **ptr_p)
Definition: readfile.c:5245
void BLO_write_struct_array_at_address_by_id(BlendWriter *writer, int struct_id, int array_size, const void *address, const void *data_ptr)
Definition: writefile.c:1539
void BLO_reportf_wrap(struct BlendFileReadReport *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
bool BLO_write_is_undo(BlendWriter *writer)
Definition: writefile.c:1608
void BLO_write_struct_by_id(BlendWriter *writer, int struct_id, const void *data_ptr)
Definition: writefile.c:1512
void blo_write_id_struct(BlendWriter *writer, int struct_id, const void *id_address, const struct ID *id)
void BLO_write_pointer_array(BlendWriter *writer, uint num, const void *data_ptr)
Definition: writefile.c:1591
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
DEGForeachIDComponentCallback callback
SyclQueue void void size_t num_bytes void
DRWShaderLibrary * lib
format
Definition: logImageCore.h:38
unsigned int uint32_t
Definition: stdint.h:80
signed int int32_t
Definition: stdint.h:77
struct ReportList * reports
Definition: BLO_readfile.h:80
Definition: DNA_ID.h:368
Definition: BKE_main.h:121