92 void parseStruct(
char* strcPtr,
char* dtPtr,
int old_dna,
int new_dna,
bool fixupPointers);
93 void getMatchingFileDNA(
short* old,
const char* lookupName,
const char* lookupType,
char* strcData,
char* data,
bool fixupPointers);
94 char*
getFileElement(
short* firstStruct,
char* lookupName,
char* lookupType,
char* data,
short** foundPos);
96 void swap(
char* head,
class bChunkInd& ch,
bool ignoreEndianFlag);
97 void swapData(
char* data,
short type,
int arraySize,
bool ignoreEndianFlag);
98 void swapStruct(
int dna_nr,
char* data,
bool ignoreEndianFlag);
105 virtual void parseInternal(
int verboseMode,
char* memDna,
int memDnaLength);
108 bFile(
const char* filename,
const char headerString[7]);
112 bFile(
char* memoryBuffer,
int len,
const char headerString[7]);
141 virtual void parse(
int verboseMode) = 0;
143 virtual int write(
const char* fileName,
bool fixupPointers =
false) = 0;
145 virtual void writeChunks(FILE* fp,
bool fixupPointers);
154 virtual void setFileDNA(
int verboseMode,
char* buffer,
int len);
bFile(const char *filename, const char headerString[7])
virtual void addDataBlock(char *dataBlock)=0
void swap(char *head, class bChunkInd &ch, bool ignoreEndianFlag)
btAlignedObjectArray< char * > m_pointerFixupArray
void resolvePointersChunk(const bChunkInd &dataChunk, int verboseMode)
this loop only works fine if the Blender DNA structure of the file matches the headerfiles
virtual void parseInternal(int verboseMode, char *memDna, int memDnaLength)
void writeFile(const char *fileName)
virtual void parseData()=0
btAlignedObjectArray< char * > m_pointerPtrFixupArray
virtual void setFileDNA(int verboseMode, char *buffer, int len)
virtual void parseHeader()
btAlignedObjectArray< bChunkInd > m_chunks
void parseStruct(char *strcPtr, char *dtPtr, int old_dna, int new_dna, bool fixupPointers)
bPtrMap & getLibPointers()
btHashMap< btHashPtr, bChunkInd > m_chunkPtrPtrMap
void dumpChunks(bDNA *dna)
void resolvePointers(int verboseMode)
Resolve pointers replaces the original pointers in structures, and linked lists by the new in-memory ...
char * readStruct(char *head, class bChunkInd &chunk)
virtual void writeChunks(FILE *fp, bool fixupPointers)
char * getAsString(int code)
void swapLen(char *dataPtr)
void setFileDNAisMemoryDNA()
int getNextBlock(bChunkInd *dataChunk, const char *dataPtr, const int flags)
virtual void parse(int verboseMode)=0
void safeSwapPtr(char *dst, const char *src)
char * getFileElement(short *firstStruct, char *lookupName, char *lookupType, char *data, short **foundPos)
int resolvePointersStructRecursive(char *strcPtr, int old_dna, int verboseMode, int recursion)
void resolvePointersMismatch()
virtual int write(const char *fileName, bool fixupPointers=false)=0
void swapStruct(int dna_nr, char *data, bool ignoreEndianFlag)
void swapData(char *data, short type, int arraySize, bool ignoreEndianFlag)
void * findLibPointer(void *ptr)
virtual void writeDNA(FILE *fp)=0
void getMatchingFileDNA(short *old, const char *lookupName, const char *lookupType, char *strcData, char *data, bool fixupPointers)
@ FD_VERBOSE_DUMP_DNA_TYPE_DEFINITIONS
@ FD_VERBOSE_DUMP_FILE_INFO