void HuffmanStringProcessor::generateCodes(BitStream& rBS, S32 index, S32 depth) { if (index < 0) { // leaf node, copy the code in, and back out... HuffLeaf& rLeaf = mHuffLeaves[-(index + 1)]; memcpy(&rLeaf.code, rBS.getBuffer(), sizeof(rLeaf.code)); rLeaf.numBits = depth; } else { HuffNode& rNode = mHuffNodes[index]; S32 pos = rBS.getBitPosition(); rBS.writeFlag(false); generateCodes(rBS, rNode.index0, depth + 1); rBS.setBitPosition(pos); rBS.writeFlag(true); generateCodes(rBS, rNode.index1, depth + 1); rBS.setBitPosition(pos); } }