diff options
-rw-r--r-- | source/blender/blenloader/BLO_read_write.h | 16 | ||||
-rw-r--r-- | source/blender/blenloader/intern/writefile.c | 14 |
2 files changed, 30 insertions, 0 deletions
diff --git a/source/blender/blenloader/BLO_read_write.h b/source/blender/blenloader/BLO_read_write.h index 1b86b5668cc..3d3855d1d16 100644 --- a/source/blender/blenloader/BLO_read_write.h +++ b/source/blender/blenloader/BLO_read_write.h @@ -98,6 +98,15 @@ void BLO_write_struct_by_id(BlendWriter *writer, int struct_id, const void *data #define BLO_write_struct(writer, struct_name, data_ptr) \ BLO_write_struct_by_id(writer, BLO_get_struct_id(writer, struct_name), data_ptr) +/* Write single struct at address. */ +void BLO_write_struct_at_address_by_id(BlendWriter *writer, + int struct_id, + const void *address, + const void *data_ptr); +#define BLO_write_struct_at_address(writer, struct_name, address, data_ptr) \ + BLO_write_struct_at_address_by_id( \ + writer, BLO_get_struct_id(writer, struct_name), address, data_ptr) + /* Write struct array. */ void BLO_write_struct_array_by_name(BlendWriter *writer, const char *struct_name, @@ -111,6 +120,13 @@ void BLO_write_struct_array_by_id(BlendWriter *writer, BLO_write_struct_array_by_id( \ writer, BLO_get_struct_id(writer, struct_name), array_size, data_ptr) +/* Write struct array at address. */ +void BLO_write_struct_array_at_address_by_id( + BlendWriter *writer, int struct_id, int array_size, const void *address, const void *data_ptr); +#define BLO_write_struct_array_at_address(writer, struct_name, array_size, address, data_ptr) \ + BLO_write_struct_array_at_address_by_id( \ + writer, BLO_get_struct_id(writer, struct_name), array_size, address, data_ptr) + /* Write struct list. */ void BLO_write_struct_list_by_name(BlendWriter *writer, const char *struct_name, diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index cca560f3890..1498461b728 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -4541,6 +4541,14 @@ void BLO_write_struct_by_id(BlendWriter *writer, int struct_id, const void *data writestruct_nr(writer->wd, DATA, struct_id, 1, data_ptr); } +void BLO_write_struct_at_address_by_id(BlendWriter *writer, + int struct_id, + const void *address, + const void *data_ptr) +{ + writestruct_at_address_nr(writer->wd, DATA, struct_id, 1, address, data_ptr); +} + void BLO_write_struct_array_by_id(BlendWriter *writer, int struct_id, int array_size, @@ -4549,6 +4557,12 @@ void BLO_write_struct_array_by_id(BlendWriter *writer, writestruct_nr(writer->wd, DATA, struct_id, array_size, data_ptr); } +void BLO_write_struct_array_at_address_by_id( + BlendWriter *writer, int struct_id, int array_size, const void *address, const void *data_ptr) +{ + writestruct_at_address_nr(writer->wd, DATA, struct_id, array_size, address, data_ptr); +} + void BLO_write_struct_list_by_id(BlendWriter *writer, int struct_id, ListBase *list) { writelist_nr(writer->wd, DATA, struct_id, list); |