Пример #1
0
 public static void __hx_ctor_encode_block_splitter_BlockSplitIterator(global::encode.block_splitter.BlockSplitIterator __hx_this, global::encode.metablock.BlockSplit split)
 {
     __hx_this.split_  = split;
     __hx_this.idx_    = 0;
     __hx_this.type_   = 0;
     __hx_this.length_ = 0;
     if ((split.lengths.length != 0))
     {
         __hx_this.length_ = split.lengths[0];
     }
 }
Пример #2
0
        public static void BuildHistograms(global::Array <object> cmds, int num_commands, global::encode.metablock.BlockSplit literal_split, global::encode.metablock.BlockSplit insert_and_copy_split, global::encode.metablock.BlockSplit dist_split, uint[] ringbuffer, int start_pos, int mask, uint prev_byte, uint prev_byte2, global::Array <int> context_modes, global::Array <object> literal_histograms, global::Array <object> insert_and_copy_histograms, global::Array <object> copy_dist_histograms)
        {
            unchecked {
                int pos = start_pos;
                global::encode.block_splitter.BlockSplitIterator literal_it         = new global::encode.block_splitter.BlockSplitIterator(((global::encode.metablock.BlockSplit)(literal_split)));
                global::encode.block_splitter.BlockSplitIterator insert_and_copy_it = new global::encode.block_splitter.BlockSplitIterator(((global::encode.metablock.BlockSplit)(insert_and_copy_split)));
                global::encode.block_splitter.BlockSplitIterator dist_it            = new global::encode.block_splitter.BlockSplitIterator(((global::encode.metablock.BlockSplit)(dist_split)));
                {
                    int _g1 = 0;
                    while ((_g1 < num_commands))
                    {
                        global::encode.command.Command cmd = ((global::encode.command.Command)(cmds[_g1++]));
                        insert_and_copy_it.Next();
                        ((global::encode.histogram.Histogram)(insert_and_copy_histograms[insert_and_copy_it.type_])).Add1(((int)(cmd.cmd_prefix_[0])));
                        {
                            int _g3 = 0;
                            int _g2 = cmd.insert_len_;
                            while ((_g3 < _g2))
                            {
                                ++_g3;
                                literal_it.Next();
                                ((global::encode.histogram.Histogram)(literal_histograms[((int)(((uint)((global::encode.Context.ContextFunction(prev_byte, prev_byte2, context_modes[literal_it.type_]) + ((literal_it.type_ << 6)))))))])).Add1(((int)(((uint)(((uint[])(ringbuffer))[(pos & mask)])))));
                                prev_byte2 = prev_byte;
                                prev_byte  = ((uint)(((uint[])(ringbuffer))[(pos & mask)]));
                                ++pos;
                            }
                        }

                        pos += cmd.copy_len_;
                        if ((cmd.copy_len_ > 0))
                        {
                            prev_byte2 = ((uint)(((uint[])(ringbuffer))[((pos - 2) & mask)]));
                            prev_byte  = ((uint)(((uint[])(ringbuffer))[((pos - 1) & mask)]));
                            if (((bool)((cmd.cmd_prefix_[0] >= 128))))
                            {
                                dist_it.Next();
                                ((global::encode.histogram.Histogram)(copy_dist_histograms[(((dist_it.type_ << 2)) + cmd.DistanceContext())])).Add1(((int)(cmd.dist_prefix_[0])));
                            }
                        }
                    }
                }
            }
        }