Blender  V3.3
BLO_undofile.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2004 Blender Foundation. All rights reserved. */
3 
4 #pragma once
5 
11 #include "BLI_filereader.h"
12 
13 struct GHash;
14 struct Scene;
15 
16 typedef struct {
17  void *next, *prev;
18  const char *buf;
20  size_t size;
30 } MemFileChunk;
31 
32 typedef struct MemFile {
34  size_t size;
36 
37 typedef struct MemFileWriteData {
40 
43 
47 
48 typedef struct MemFileUndoData {
49  char filepath[1024]; /* FILE_MAX */
51  size_t undo_size;
53 
54 /* FileReader-compatible wrapper for reading MemFiles */
55 typedef struct {
57 
60 
62 } UndoReader;
63 
64 /* Actually only used `writefile.c`. */
65 
67  MemFile *written_memfile,
68  MemFile *reference_memfile);
70 
71 void BLO_memfile_chunk_add(MemFileWriteData *mem_data, const char *buf, size_t size);
72 
73 /* exports */
74 
78 /* **************** support for memory-write, for undo buffers *************** */
79 
80 extern void BLO_memfile_free(MemFile *memfile);
85 extern void BLO_memfile_merge(MemFile *first, MemFile *second);
89 extern void BLO_memfile_clear_future(MemFile *memfile);
90 
91 /* Utilities. */
92 
93 extern struct Main *BLO_memfile_main_get(struct MemFile *memfile,
94  struct Main *bmain,
95  struct Scene **r_scene);
101 extern bool BLO_memfile_write_file(struct MemFile *memfile, const char *filepath);
102 
103 FileReader *BLO_memfile_new_filereader(MemFile *memfile, int undo_direction);
Wrapper for reading from various sources (e.g. raw files, compressed files, memory....
unsigned int uint
Definition: BLI_sys_types.h:67
FileReader * BLO_memfile_new_filereader(MemFile *memfile, int undo_direction)
Definition: undofile.c:332
void BLO_memfile_chunk_add(MemFileWriteData *mem_data, const char *buf, size_t size)
Definition: undofile.c:137
void BLO_memfile_write_init(MemFileWriteData *mem_data, MemFile *written_memfile, MemFile *reference_memfile)
Definition: undofile.c:96
bool BLO_memfile_write_file(struct MemFile *memfile, const char *filepath)
Definition: undofile.c:198
struct Main * BLO_memfile_main_get(struct MemFile *memfile, struct Main *bmain, struct Scene **r_scene)
Definition: undofile.c:175
struct MemFileWriteData MemFileWriteData
void BLO_memfile_clear_future(MemFile *memfile)
Definition: undofile.c:89
struct MemFileUndoData MemFileUndoData
void BLO_memfile_free(MemFile *memfile)
Definition: undofile.c:41
struct MemFile MemFile
void BLO_memfile_merge(MemFile *first, MemFile *second)
Definition: undofile.c:54
void BLO_memfile_write_finalize(MemFileWriteData *mem_data)
Definition: undofile.c:130
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition: btDbvt.cpp:52
SymEdge< T > * prev(const SymEdge< T > *se)
Definition: delaunay_2d.cc:105
Definition: BKE_main.h:121
char filepath[1024]
Definition: BKE_main.h:124
bool is_identical_future
Definition: BLO_undofile.h:26
uint id_session_uuid
Definition: BLO_undofile.h:29
bool is_identical
Definition: BLO_undofile.h:22
const char * buf
Definition: BLO_undofile.h:18
char filepath[1024]
Definition: BLO_undofile.h:49
MemFile * reference_memfile
Definition: BLO_undofile.h:39
MemFile * written_memfile
Definition: BLO_undofile.h:38
struct GHash * id_session_uuid_mapping
Definition: BLO_undofile.h:45
MemFileChunk * reference_current_chunk
Definition: BLO_undofile.h:42
uint current_id_session_uuid
Definition: BLO_undofile.h:41
ListBase chunks
Definition: BLO_undofile.h:33
size_t size
Definition: BLO_undofile.h:34
bool memchunk_identical
Definition: BLO_undofile.h:61
int undo_direction
Definition: BLO_undofile.h:59
MemFile * memfile
Definition: BLO_undofile.h:58
FileReader reader
Definition: BLO_undofile.h:56