41 if (chunk->is_identical ==
false) {
55 data.sharing_info->remove_user_and_delete_if_last();
67 if (sc->is_identical) {
68 buffer_to_second_memchunk.
add(sc->buf, sc);
75 if (!fc->is_identical) {
78 sc->is_identical =
false;
79 fc->is_identical =
true;
93 chunk->is_identical_future =
false;
112 if (reference_memfile !=
nullptr) {
116 current_session_uid = mem_chunk->id_session_uid;
135 curchunk->
buf =
nullptr;
145 if (*compchunk_step !=
nullptr) {
147 if (compchunk->
size == curchunk->
size) {
148 if (memcmp(compchunk->
buf, buf,
size) == 0) {
149 curchunk->
buf = compchunk->
buf;
158 if (curchunk->
buf ==
nullptr) {
160 memcpy(buf_new, buf,
size);
161 curchunk->
buf = buf_new;
168 Main *bmain_undo =
nullptr;
174 bmain_undo = bfd->
main;
190 static size_t offset = 0;
192 size_t chunkoffset, readsize, totread;
220 if (seek - offset == chunk->
size) {
221 offset += chunk->
size;
226 if (chunk ==
nullptr) {
227 printf(
"illegal read, chunk zero\n");
231 chunkoffset = seek - offset;
232 readsize =
size - totread;
237 if (chunkoffset + readsize > chunk->
size) {
238 readsize = chunk->
size - chunkoffset;
252 }
while (totread <
size);
#define MAIN_ID_SESSION_UID_UNSET
const char * BKE_main_blendfile_path(const Main *bmain) ATTR_NONNULL()
#define LISTBASE_FOREACH(type, var, list)
void BLI_addtail(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void * BLI_pophead(ListBase *listbase) ATTR_NONNULL(1)
#define POINTER_OFFSET(v, ofs)
external readfile function prototypes.
BlendFileData * BLO_read_from_memfile(Main *oldmain, const char *filepath, MemFile *memfile, const BlendFileReadParams *params, ReportList *reports)
These structs are the foundation for all linked lists in the library system.
Read Guarded memory(de)allocation.
BMesh const char void * data
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void add_new(const Key &key, const Value &value)
bool add(const Key &key, const Value &value)
Value lookup_default(const Key &key, const Value &default_value) const
void * MEM_mallocN(size_t len, const char *str)
void * MEM_callocN(size_t len, const char *str)
void * MEM_malloc_arrayN(size_t len, size_t size, const char *str)
void MEM_freeN(void *vmemh)
blender::Map< uint64_t, blender::ImplicitSharingInfoAndData > sharing_info_by_address_id
MemFile * reference_memfile
blender::Map< uint, MemFileChunk * > id_session_uid_mapping
MemFile * written_memfile
uint current_id_session_uid
MemFileChunk * reference_current_chunk
MemFileSharedStorage * shared_storage
static void undo_close(FileReader *reader)
FileReader * BLO_memfile_new_filereader(MemFile *memfile, int undo_direction)
void BLO_memfile_chunk_add(MemFileWriteData *mem_data, const char *buf, size_t size)
void BLO_memfile_write_init(MemFileWriteData *mem_data, MemFile *written_memfile, MemFile *reference_memfile)
static int64_t undo_read(FileReader *reader, void *buffer, size_t size)
Main * BLO_memfile_main_get(MemFile *memfile, Main *bmain, Scene **r_scene)
void BLO_memfile_clear_future(MemFile *memfile)
void BLO_memfile_free(MemFile *memfile)
void BLO_memfile_merge(MemFile *first, MemFile *second)
void BLO_memfile_write_finalize(MemFileWriteData *mem_data)