public void AddMapping()

in ILRepack/LineNumberWriter.cs [21:76]


        public void AddMapping(int ilOffset, int linenumber)
        {
            if (count == 0)
            {
                if (ilOffset == 0 && linenumber != 0)
                {
                    prevLineNum = linenumber;
                    count++;
                    WritePackedInteger(linenumber - (64 + 50));
                    return;
                }
                else
                {
                    prevLineNum = linenumber & ~3;
                    WritePackedInteger(((-prevLineNum / 4) - (64 + 50)));
                }
            }
            bool pc_overflow;
            bool lineno_overflow;
            byte lead;
            int deltaPC = ilOffset - prevILOffset;
            if (deltaPC >= 0 && deltaPC < 31)
            {
                lead = (byte)deltaPC;
                pc_overflow = false;
            }
            else
            {
                lead = (byte)31;
                pc_overflow = true;
            }
            int deltaLineNo = linenumber - prevLineNum;
            const int bias = 2;
            if (deltaLineNo >= -bias && deltaLineNo < 7 - bias)
            {
                lead |= (byte)((deltaLineNo + bias) << 5);
                lineno_overflow = false;
            }
            else
            {
                lead |= (byte)(7 << 5);
                lineno_overflow = true;
            }
            stream.WriteByte(lead);
            if (pc_overflow)
            {
                WritePackedInteger(deltaPC - (64 + 31));
            }
            if (lineno_overflow)
            {
                WritePackedInteger(deltaLineNo);
            }
            prevILOffset = ilOffset;
            prevLineNum = linenumber;
            count++;
        }