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