Blender
V3.3
|
The DNA module holds all type definitions that are serialized in a blender file. There is an executable that scans all files, looking for struct-s to serialize (hence sdna: Struct Struct DNA (File Format)). From this information, it builds a file with numbers that encode the format, the names of variables, and the place to look for them.
Function pointers:
Because of historical reasons, some function pointers were untyped. The parser/dna generator has been modified to explicitly handle these special cases. Most pointers have been given proper proto's by now. DNA_space_types.h::Spacefile::returnfunc may still be badly defined. The reason for this is that it is called with different types of arguments. It takes a char* at this moment...
Ignoring structs:
Sometimes we need to define structs in DNA which aren't written to disk, and can be excluded from blend file DNA string. in this case, add two '#' chars directly before the struct. eg.
Ignored structs can only be referred to from non-ignored structs when referred to as a pointer (where they're usually allocated and cleared in readfile.c
).
Path to the header files
Also because of historical reasons, there is a path prefix to the headers that need to be scanned. This is the BASE_HEADER define. If you change the file-layout for DNA, you will probably have to change this (Not very flexible, but it is hardly ever changed. Sorry.).
DNA has no external dependencies (except for a few system includes).
PLEASE READ INSTRUCTIONS ABOUT ADDING VARIABLES IN 'DNA' STRUCTS IN
intern/dna_genfile.c (ton)