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

Method writeHuffBuffer

Engine/source/core/stream/bitStream.cpp:911–947  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

909}
910
911bool HuffmanProcessor::writeHuffBuffer(BitStream* pStream, const char* out_pBuffer, S32 maxLen)
912{
913 if (out_pBuffer == NULL) {
914 pStream->writeFlag(false);
915 pStream->writeInt(0, 8);
916 return true;
917 }
918
919 if (m_tablesBuilt == false)
920 buildTables();
921
922 S32 len = out_pBuffer ? dStrlen(out_pBuffer) : 0;
923 AssertWarn(len <= 255, "String TOO long for writeString");
924 AssertWarn(len <= 255, out_pBuffer);
925 if (len > maxLen)
926 len = maxLen;
927
928 S32 numBits = 0;
929 S32 i;
930 for (i = 0; i < len; i++)
931 numBits += m_huffLeaves[(unsigned char)out_pBuffer[i]].numBits;
932
933 if (numBits >= (len * 8)) {
934 pStream->writeFlag(false);
935 pStream->writeInt(len, 8);
936 pStream->write(len, out_pBuffer);
937 } else {
938 pStream->writeFlag(true);
939 pStream->writeInt(len, 8);
940 for (i = 0; i < len; i++) {
941 HuffLeaf& rLeaf = m_huffLeaves[((unsigned char)out_pBuffer[i])];
942 pStream->writeBits(rLeaf.numBits, &rLeaf.code);
943 }
944 }
945
946 return true;
947}
948
949const U32 HuffmanProcessor::csm_charFreqs[256] = {
9500 ,

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