Revision Summary Date Revision History Revision Class Comments 12/16/2011 1.0 New Released new document. 3/30/2012 1.0 None No changes to the meaning, language, or formatting of the technical content. 7/12/2012 2.0 Major Significantly changed the technical content. 10/25/2012 3.0 Major Significantly changed the technical content. 1/31/2013 4.0 Major Significantly changed the technical content. 8/8/2013 5.0 Major Significantly changed the technical content. 11/14/2013 6.0 Major Significantly changed the technical content. 2/13/2014 7.0 Major Significantly changed the technical content. 5/15/2014 7.0 None No change to the meaning, language, or formatting of the technical content.
6/30/2015 8.0 Major Significantly changed the technical content. 10/16/2015 9.0 Major Significantly changed the technical content. 7/14/2016 10.0 Major Significantly changed the technical content. 3/16/2017 11.0 Major Significantly changed the technical content. 6/1/2017 11.0 None No changes to the meaning, language, or formatting of the technical content. 9/15/2017 12.0 Major Significantly changed the technical content. 12/1/2017 12.0 None No changes to the meaning, language, or formatting of the technical content.
uint32 count; uint32 distance; // Scan the token table, considering more bits as needed, // until the resulting token is found. for (int opIndex = 0; tokenTable[opIndex].prefixLength != 0; opIndex++) { // get more bits if needed while (haveBits < tokenTable[opIndex].prefixLength) { inPrefix = (inPrefix << 1) + GetBits(1); haveBits++; } if (inPrefix == tokenTable[opIndex].prefixCode) { if (tokenTable[opIndex].tokenType == 0) { c = (byte)(tokenTable[opIndex].valueBase + GetBits(tokenTable[opIndex].valueBits)); goto output_literal; } else { distance = tokenTable[opIndex].valueBase + GetBits(tokenTable[opIndex].valueBits); if (distance != 0) { if (GetBits(1) == 0) { count = 3; } else { count = 4; int extra = 2; while (GetBits(1) == 1) { count *= 2; extra++; } count += GetBits(extra); } goto output_match; } else // distance == 0 is special case { count = GetBits(15); // discard remaining bits m_cBitsRemaining -= m_cBitsCurrent; m_cBitsCurrent = 0; m_BitsCurrent = 0; goto output_unencoded; } } } } output_literal: // Add one byte 'c' to output and history m_historyBuffer[m_historyIndex] = c; if (++m_historyIndex == sizeof(m_historyBuffer)) {
Index A Abstract data model client ( 70, 88) server ( 70, 78) 13 C 13 133 Client abstract data model ( 70, 88) higher-layer triggered events ( 70, 91) initialization ( 70, 91) 70 message processing 70 94 94 92 94 94 93 92 93 93 93 93 94 94 92 93 92 92 91 91 95 sequencing 70 94 94 92 94 94 93 92 93 93 93 93 94 94 92 93 92 92 91 91 timer events ( 70, 95) timers ( 70, 91) D Data model - abstract client ( 70, 88) server ( 70, 78) 69 E 69 F 14 G 8 H Higher-layer triggered events client ( 70, 91) server ( 70, 79) I 131 131 9 Initialization client ( 70, 91) server ( 70, 79) 8 L events 70 70 M Message processing client 70 94 94 92 94 94 93 92 93 93 93 93 94 94 92 93 92
92 91 91 server 70 82 82 80 82 82 80 79 81 81 80 81 81 81 80 81 80 80 79 79 Messages 15 15 N 9 O Other local events 95 83 9 P 131 11 11 132 R 8 9 9 11 S 69 Security 131 131 Sequencing client 70 94 94 92 94 94 93 92 93 93 93 93 94 94 92 93 92 92 91 91 server 70 82 82 80 82 82 80 79 81 81 80 81 81 81 80 81 80 80 79 79 Server abstract data model ( 70, 78) higher-layer triggered events ( 70, 79) initialization ( 70, 79) 70 message processing 70 82 82 80 82 82 80 79 81 81 80 81 81 81 80 81 80 80 79 79 83