Blender V4.3
readfile.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
10#pragma once
11
12#include <cstdio> /* Include header using off_t before poisoning it below. */
13
14#ifdef WIN32
15# include "BLI_winstuff.h"
16#endif
17
18#include "BLI_filereader.h"
19#include "DNA_sdna_types.h"
20#include "DNA_space_types.h"
21#include "DNA_windowmanager_types.h" /* for eReportType */
22
23#include "BLO_readfile.hh"
24
25struct BlendFileData;
29struct BLOCacheStorage;
30struct BHeadSort;
32struct IDNameLib_Map;
33struct Key;
34struct Main;
35struct MemFile;
36struct Object;
37struct OldNewMap;
38struct UserDef;
39
53
54/* Disallow since it's 32bit on ms-windows. */
55#ifdef __GNUC__
56# pragma GCC poison off_t
57#endif
58
154
155#define SIZEOFBLENDERHEADER 12
156
157/***/
158void blo_join_main(ListBase *mainlist);
159void blo_split_main(ListBase *mainlist, Main *main);
160
162
168FileData *blo_filedata_from_file(const char *filepath, BlendFileReadReport *reports);
169FileData *blo_filedata_from_memory(const void *mem, int memsize, BlendFileReadReport *reports);
172 BlendFileReadReport *reports);
173
179
181 ATTR_NONNULL(1, 2);
182
186
188
190BHead *blo_bhead_next(FileData *fd, BHead *thisblock) ATTR_NONNULL(1);
192
196const char *blo_bhead_id_name(const FileData *fd, const BHead *bhead);
201
202/* do versions stuff */
203
213void blo_do_versions_dna(SDNA *sdna, int versionfile, int subversionfile);
214
215void blo_do_versions_oldnewmap_insert(OldNewMap *onm, const void *oldaddr, void *newaddr, int nr);
220 ID *self_id,
221 const bool is_linked_only,
222 const void *adr);
223
230
234void blo_do_versions_userdef(UserDef *userdef);
235
237void blo_do_versions_250(FileData *fd, Library *lib, Main *bmain);
238void blo_do_versions_260(FileData *fd, Library *lib, Main *bmain);
239void blo_do_versions_270(FileData *fd, Library *lib, Main *bmain);
240void blo_do_versions_280(FileData *fd, Library *lib, Main *bmain);
241void blo_do_versions_290(FileData *fd, Library *lib, Main *bmain);
242void blo_do_versions_300(FileData *fd, Library *lib, Main *bmain);
243void blo_do_versions_400(FileData *fd, Library *lib, Main *bmain);
245
254
255void do_versions_after_setup(Main *new_bmain,
256 BlendfileLinkAppendContext *lapp_context,
257 BlendFileReadReport *reports);
258
265void *blo_read_get_new_globaldata_address(FileData *fd, const void *adr) ATTR_NONNULL(1);
266
267/* Mark the Main data as invalid (.blend file reading should be aborted ASAP, and the already read
268 * data should be discarded). Also add an error report to `fd` including given `message`. */
269void blo_readfile_invalidate(FileData *fd, Main *bmain, const char *message) ATTR_NONNULL(1, 2, 3);
#define ATTR_NONNULL(...)
Wrapper for reading from various sources (e.g. raw files, compressed files, memory....
#define FILE_MAX
#define ENUM_OPERATORS(_type, _max)
Compatibility-like things for windows.
external readfile function prototypes.
eBLOReadSkip
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]
int main()
void blo_do_versions_oldnewmap_insert(OldNewMap *onm, const void *oldaddr, void *newaddr, int nr)
Definition readfile.cc:278
void * blo_do_versions_newlibadr(FileData *fd, ID *self_id, const bool is_linked_only, const void *adr)
Definition readfile.cc:1489
FileData * blo_filedata_from_memory(const void *mem, int memsize, BlendFileReadReport *reports)
Definition readfile.cc:1312
void blo_do_versions_400(FileData *fd, Library *lib, Main *bmain)
void blo_do_versions_300(FileData *fd, Library *lib, Main *bmain)
void blo_do_version_old_trackto_to_constraints(Object *ob)
void blo_readfile_invalidate(FileData *fd, Main *bmain, const char *message) ATTR_NONNULL(1
void do_versions_after_linking_300(FileData *fd, Main *bmain)
void BHead void void blo_cache_storage_old_bmain_clear(FileData *fd, Main *bmain_old) ATTR_NONNULL(1
void blo_do_versions_dna(SDNA *sdna, int versionfile, int subversionfile)
void blo_do_versions_250(FileData *fd, Library *lib, Main *bmain)
void BHead void blo_cache_storage_init(FileData *fd, Main *bmain) ATTR_NONNULL(1
BHead const char * blo_bhead_id_name(const FileData *fd, const BHead *bhead)
Definition readfile.cc:934
void do_versions_after_linking_400(FileData *fd, Main *bmain)
void do_versions_after_linking_250(Main *bmain)
void do_versions_after_linking_290(FileData *fd, Main *bmain)
BHead * blo_bhead_next(FileData *fd, BHead *thisblock) ATTR_NONNULL(1)
Definition readfile.cc:867
eFileDataFlag
Definition readfile.hh:40
@ FD_FLAGS_FILE_POINTSIZE_IS_4
Definition readfile.hh:42
@ FD_FLAGS_POINTSIZE_DIFFERS
Definition readfile.hh:43
@ FD_FLAGS_IS_MEMFILE
Definition readfile.hh:45
@ FD_FLAGS_FILE_OK
Definition readfile.hh:44
@ FD_FLAGS_SWITCH_ENDIAN
Definition readfile.hh:41
@ FD_FLAGS_FILE_FUTURE
Definition readfile.hh:50
void blo_do_versions_userdef(UserDef *userdef)
AssetMetaData * blo_bhead_id_asset_data_address(const FileData *fd, const BHead *bhead)
Definition readfile.cc:939
FileData * blo_filedata_from_memfile(MemFile *memfile, const BlendFileReadParams *params, BlendFileReadReport *reports)
Definition readfile.cc:1342
void do_versions_after_linking_cycles(Main *bmain)
BlendFileData FileData * blo_filedata_from_file(const char *filepath, BlendFileReadReport *reports)
Definition readfile.cc:1282
void BHead void void void blo_cache_storage_end(FileData *fd) ATTR_NONNULL(1)
Definition readfile.cc:1692
void do_versions_after_linking_280(FileData *fd, Main *bmain)
void blo_do_versions_290(FileData *fd, Library *lib, Main *bmain)
void blo_filedata_free(FileData *fd) ATTR_NONNULL(1)
Definition readfile.cc:1359
void blo_do_versions_270(FileData *fd, Library *lib, Main *bmain)
void do_versions_after_linking_270(Main *bmain)
void BHead * blo_read_asset_data_block(FileData *fd, BHead *bhead, AssetMetaData **r_asset_data) ATTR_NONNULL(1
BHead * blo_bhead_first(FileData *fd) ATTR_NONNULL(1)
Definition readfile.cc:839
void blo_split_main(ListBase *mainlist, Main *main)
Definition readfile.cc:397
void blo_do_versions_key_uidgen(Key *key)
Definition readfile.cc:2211
BHead * blo_bhead_prev(FileData *fd, BHead *thisblock) ATTR_NONNULL(1
void do_versions_after_setup(Main *new_bmain, BlendfileLinkAppendContext *lapp_context, BlendFileReadReport *reports)
BlendFileData * blo_read_file_internal(FileData *fd, const char *filepath) ATTR_NONNULL(1
void do_versions_after_linking_260(Main *bmain)
void blo_do_versions_cycles(FileData *fd, Library *lib, Main *bmain)
void blo_do_versions_260(FileData *fd, Library *lib, Main *bmain)
void * blo_read_get_new_globaldata_address(FileData *fd, const void *adr) ATTR_NONNULL(1)
Definition readfile.cc:1478
void blo_make_old_idmap_from_main(FileData *fd, Main *bmain) ATTR_NONNULL(1
void blo_do_versions_pre250(FileData *fd, Library *lib, Main *bmain)
void blo_do_versions_280(FileData *fd, Library *lib, Main *bmain)
void blo_join_main(ListBase *mainlist)
Definition readfile.cc:350
The meta-data of an asset. By creating and giving this for a data-block (ID.asset_data),...
eBLOReadSkip skip_flags
Definition readfile.hh:103
int undo_direction
Definition readfile.hh:75
int id_asset_data_offset
Definition readfile.hh:98
ListBase * old_mainlist
Definition readfile.hh:133
GHash * bhead_idname_hash
Definition readfile.hh:129
enum eFileDataFlag flags
Definition readfile.hh:68
ListBase bhead_list
Definition readfile.hh:67
int fileversion
Definition readfile.hh:93
void * storage_handle
Definition readfile.hh:152
int fileflags
Definition readfile.hh:100
DNA_ReconstructInfo * reconstruct_info
Definition readfile.hh:91
BHeadSort * bheadmap
Definition readfile.hh:125
ListBase * mainlist
Definition readfile.hh:131
IDNameLib_Map * new_idmap_uid
Definition readfile.hh:147
OldNewMap * globmap
Definition readfile.hh:114
OldNewMap * datamap
Definition readfile.hh:113
int id_tag_extra
Definition readfile.hh:111
FileReader * file
Definition readfile.hh:71
char relabase[FILE_MAX]
Definition readfile.hh:84
const char * compflags
Definition readfile.hh:90
BLOCacheStorage * cache_storage
Definition readfile.hh:123
int globalf
Definition readfile.hh:100
int id_name_offset
Definition readfile.hh:95
OldNewMap * libmap
Definition readfile.hh:121
BlendFileReadReport * reports
Definition readfile.hh:149
bool is_eof
Definition readfile.hh:69
int tot_bheadmap
Definition readfile.hh:126
const SDNA * memsdna
Definition readfile.hh:88
IDNameLib_Map * old_idmap_uid
Definition readfile.hh:137
SDNA * filesdna
Definition readfile.hh:87
Definition DNA_ID.h:413
static DynamicLibrary lib