Пример #1
0
        public int CalculateLiteralPrice(IMatchState state, int position, int value)
        {
            var literalCount = state.CountLiterals(position) % 3 + 1;

            if (literalCount == 3)
            {
                return(6);
            }

            return(10);
        }
Пример #2
0
        public int CalculateLiteralPrice(IMatchState state, int position, int value)
        {
            var literals = state.CountLiterals(position) + 1;

            if (literals % 0x1FFF == 1)
            {
                return(16);
            }
            if (literals % 0x1FFF == 0x20)
            {
                return(16);
            }

            return(8);
        }
        public int CalculateLiteralPrice(IMatchState state, int position, int value)
        {
            var literalCount = state.CountLiterals(position) % 0x100BE + 1;

            if (literalCount == 0xC0)
            {
                return(16);
            }
            if (literalCount == 0x40)
            {
                return(16);
            }

            return(8);
        }
Пример #4
0
        public int CalculateLiteralPrice(IMatchState state, int position, int value)
        {
            var literals = state.CountLiterals(position) + 1;

            if (!state.HasMatches(position))
            {
                // Special first raw data read
                if (literals == 1)
                {
                    return(16);
                }
                if (literals == 0xef)
                {
                    return(16);
                }
                if (literals > 0xef && (literals - 3 - 0xF) % 0xFF == 1)
                {
                    return(16);
                }

                return(8);
            }

            if (literals == 4)
            {
                return(16);
            }
            if (literals == 0x13)
            {
                return(16);
            }
            if (literals > 0x13 && (literals - 3 - 0xF) % 0xFF == 1)
            {
                return(16);
            }

            return(8);
        }