MCPcopy Create free account
hub / github.com/GarageGames/Torque3D / writeHuffBuffer

Method writeHuffBuffer

Engine/source/core/stream/bitStream.cpp:848–884  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

846}
847
848bool HuffmanProcessor::writeHuffBuffer(BitStream* pStream, const char* out_pBuffer, S32 maxLen)
849{
850 if (out_pBuffer == NULL) {
851 pStream->writeFlag(false);
852 pStream->writeInt(0, 8);
853 return true;
854 }
855
856 if (m_tablesBuilt == false)
857 buildTables();
858
859 S32 len = out_pBuffer ? dStrlen(out_pBuffer) : 0;
860 AssertWarn(len <= 255, "String TOO long for writeString");
861 AssertWarn(len <= 255, out_pBuffer);
862 if (len > maxLen)
863 len = maxLen;
864
865 S32 numBits = 0;
866 S32 i;
867 for (i = 0; i < len; i++)
868 numBits += m_huffLeaves[(unsigned char)out_pBuffer[i]].numBits;
869
870 if (numBits >= (len * 8)) {
871 pStream->writeFlag(false);
872 pStream->writeInt(len, 8);
873 pStream->write(len, out_pBuffer);
874 } else {
875 pStream->writeFlag(true);
876 pStream->writeInt(len, 8);
877 for (i = 0; i < len; i++) {
878 HuffLeaf& rLeaf = m_huffLeaves[((unsigned char)out_pBuffer[i])];
879 pStream->writeBits(rLeaf.numBits, &rLeaf.code);
880 }
881 }
882
883 return true;
884}
885
886const U32 HuffmanProcessor::csm_charFreqs[256] = {
8870 ,

Callers 1

writeStringMethod · 0.80

Calls 5

writeIntMethod · 0.80
dStrlenFunction · 0.50
writeFlagMethod · 0.45
writeMethod · 0.45
writeBitsMethod · 0.45

Tested by

no test coverage detected