diff options
author | Oussama <o.boukhelf@gmail.com> | 2019-01-03 14:26:51 +0100 |
---|---|---|
committer | RĂ©mi Verschelde <rverschelde@gmail.com> | 2019-01-07 12:30:35 +0100 |
commit | 22b7c9dfa80d0f7abca40f061865c2ab3c136a74 (patch) | |
tree | 311cd3f22b012329160f9d43810aea429994af48 /thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.h | |
parent | a6722cf36251ddcb538e6ebed9fa4950342b68ba (diff) |
Update Bullet to the latest commit 126b676
Diffstat (limited to 'thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.h')
-rw-r--r-- | thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.h | 253 |
1 files changed, 123 insertions, 130 deletions
diff --git a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.h index 861056806d..bda229cfbd 100644 --- a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.h +++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.h @@ -20,146 +20,139 @@ subject to the following restrictions: #include "b3Chunk.h" #include <stdio.h> -namespace bParse { - - // ----------------------------------------------------- // - enum bFileFlags - { - FD_INVALID =0, - FD_OK =1, - FD_VOID_IS_8 =2, - FD_ENDIAN_SWAP =4, - FD_FILE_64 =8, - FD_BITS_VARIES =16, - FD_VERSION_VARIES = 32, - FD_DOUBLE_PRECISION =64, - FD_BROKEN_DNA = 128 - }; - - enum bFileVerboseMode +namespace bParse +{ +// ----------------------------------------------------- // +enum bFileFlags +{ + FD_INVALID = 0, + FD_OK = 1, + FD_VOID_IS_8 = 2, + FD_ENDIAN_SWAP = 4, + FD_FILE_64 = 8, + FD_BITS_VARIES = 16, + FD_VERSION_VARIES = 32, + FD_DOUBLE_PRECISION = 64, + FD_BROKEN_DNA = 128 +}; + +enum bFileVerboseMode +{ + FD_VERBOSE_EXPORT_XML = 1, + FD_VERBOSE_DUMP_DNA_TYPE_DEFINITIONS = 2, + FD_VERBOSE_DUMP_CHUNKS = 4, + FD_VERBOSE_DUMP_FILE_INFO = 8, +}; +// ----------------------------------------------------- // +class bFile +{ +protected: + char m_headerString[7]; + + bool mOwnsBuffer; + char *mFileBuffer; + int mFileLen; + int mVersion; + + bPtrMap mLibPointers; + + int mDataStart; + bDNA *mFileDNA; + bDNA *mMemoryDNA; + + b3AlignedObjectArray<char *> m_pointerFixupArray; + b3AlignedObjectArray<char *> m_pointerPtrFixupArray; + + b3AlignedObjectArray<bChunkInd> m_chunks; + b3HashMap<b3HashPtr, bChunkInd> m_chunkPtrPtrMap; + + // + + bPtrMap mDataPointers; + + int mFlags; + + // //////////////////////////////////////////////////////////////////////////// + + // buffer offset util + int getNextBlock(bChunkInd *dataChunk, const char *dataPtr, const int flags); + void safeSwapPtr(char *dst, const char *src); + + virtual void parseHeader(); + + virtual void parseData() = 0; + + void resolvePointersMismatch(); + void resolvePointersChunk(const bChunkInd &dataChunk, int verboseMode); + + int resolvePointersStructRecursive(char *strcPtr, int old_dna, int verboseMode, int recursion); + //void swapPtr(char *dst, char *src); + + void parseStruct(char *strcPtr, char *dtPtr, int old_dna, int new_dna, bool fixupPointers); + void getMatchingFileDNA(short *old, const char *lookupName, const char *lookupType, char *strcData, char *data, bool fixupPointers); + char *getFileElement(short *firstStruct, char *lookupName, char *lookupType, char *data, short **foundPos); + + void swap(char *head, class bChunkInd &ch, bool ignoreEndianFlag); + void swapData(char *data, short type, int arraySize, bool ignoreEndianFlag); + void swapStruct(int dna_nr, char *data, bool ignoreEndianFlag); + void swapLen(char *dataPtr); + void swapDNA(char *ptr); + + char *readStruct(char *head, class bChunkInd &chunk); + char *getAsString(int code); + + void parseInternal(int verboseMode, char *memDna, int memDnaLength); + +public: + bFile(const char *filename, const char headerString[7]); + + //todo: make memoryBuffer const char + //bFile( const char *memoryBuffer, int len); + bFile(char *memoryBuffer, int len, const char headerString[7]); + virtual ~bFile(); + + bDNA *getFileDNA() { - FD_VERBOSE_EXPORT_XML = 1, - FD_VERBOSE_DUMP_DNA_TYPE_DEFINITIONS = 2, - FD_VERBOSE_DUMP_CHUNKS = 4, - FD_VERBOSE_DUMP_FILE_INFO=8, - }; - // ----------------------------------------------------- // - class bFile - { - protected: - - char m_headerString[7]; - - bool mOwnsBuffer; - char* mFileBuffer; - int mFileLen; - int mVersion; - - - bPtrMap mLibPointers; - - int mDataStart; - bDNA* mFileDNA; - bDNA* mMemoryDNA; - - b3AlignedObjectArray<char*> m_pointerFixupArray; - b3AlignedObjectArray<char*> m_pointerPtrFixupArray; - - b3AlignedObjectArray<bChunkInd> m_chunks; - b3HashMap<b3HashPtr, bChunkInd> m_chunkPtrPtrMap; - - // - - bPtrMap mDataPointers; - - - int mFlags; - - // //////////////////////////////////////////////////////////////////////////// - - // buffer offset util - int getNextBlock(bChunkInd *dataChunk, const char *dataPtr, const int flags); - void safeSwapPtr(char *dst, const char *src); - - virtual void parseHeader(); - - virtual void parseData() = 0; - - void resolvePointersMismatch(); - void resolvePointersChunk(const bChunkInd& dataChunk, int verboseMode); + return mFileDNA; + } - int resolvePointersStructRecursive(char *strcPtr, int old_dna, int verboseMode, int recursion); - //void swapPtr(char *dst, char *src); + virtual void addDataBlock(char *dataBlock) = 0; - void parseStruct(char *strcPtr, char *dtPtr, int old_dna, int new_dna, bool fixupPointers); - void getMatchingFileDNA(short* old, const char* lookupName, const char* lookupType, char *strcData, char *data, bool fixupPointers); - char* getFileElement(short *firstStruct, char *lookupName, char *lookupType, char *data, short **foundPos); - - - void swap(char *head, class bChunkInd& ch, bool ignoreEndianFlag); - void swapData(char *data, short type, int arraySize, bool ignoreEndianFlag); - void swapStruct(int dna_nr, char *data, bool ignoreEndianFlag); - void swapLen(char *dataPtr); - void swapDNA(char* ptr); - - - char* readStruct(char *head, class bChunkInd& chunk); - char *getAsString(int code); - - void parseInternal(int verboseMode, char* memDna,int memDnaLength); - - public: - bFile(const char *filename, const char headerString[7]); - - //todo: make memoryBuffer const char - //bFile( const char *memoryBuffer, int len); - bFile( char *memoryBuffer, int len, const char headerString[7]); - virtual ~bFile(); - - bDNA* getFileDNA() - { - return mFileDNA; - } - - virtual void addDataBlock(char* dataBlock) = 0; - - int getFlags() const - { - return mFlags; - } - - bPtrMap& getLibPointers() - { - return mLibPointers; - } - - void* findLibPointer(void *ptr); + int getFlags() const + { + return mFlags; + } - bool ok(); + bPtrMap &getLibPointers() + { + return mLibPointers; + } - virtual void parse(int verboseMode) = 0; + void *findLibPointer(void *ptr); - virtual int write(const char* fileName, bool fixupPointers=false) = 0; + bool ok(); - virtual void writeChunks(FILE* fp, bool fixupPointers ); + virtual void parse(int verboseMode) = 0; - virtual void writeDNA(FILE* fp) = 0; + virtual int write(const char *fileName, bool fixupPointers = false) = 0; - void updateOldPointers(); - void resolvePointers(int verboseMode); + virtual void writeChunks(FILE *fp, bool fixupPointers); - void dumpChunks(bDNA* dna); - - int getVersion() const - { - return mVersion; - } - //pre-swap the endianness, so that data loaded on a target with different endianness doesn't need to be swapped - void preSwap(); - void writeFile(const char* fileName); + virtual void writeDNA(FILE *fp) = 0; - }; -} + void updateOldPointers(); + void resolvePointers(int verboseMode); + void dumpChunks(bDNA *dna); -#endif//__BFILE_H__ + int getVersion() const + { + return mVersion; + } + //pre-swap the endianness, so that data loaded on a target with different endianness doesn't need to be swapped + void preSwap(); + void writeFile(const char *fileName); +}; +} // namespace bParse + +#endif //__BFILE_H__ |