PERWAPI.PEWriter.CalcOffsets C# (CSharp) Method

CalcOffsets() private method

private CalcOffsets ( ) : void
return void
        private void CalcOffsets()
        {
            if (sdata != null) numSections++;
            if (rsrc != null) numSections++;
            headerSize = FileImage.fileHeaderSize + (numSections * FileImage.sectionHeaderSize);
            headerPadding = NumToAlign(headerSize,verInfo.fileAlign);
            headerSize += headerPadding;
            uint offset = headerSize;
            uint rva = FileImage.SectionAlignment;
            text.SetOffset(offset);
            text.SetRVA(rva);
            if (pdbWriter != null) debugRVA = rva + debugOffset;
            offset += text.Size();
            rva  = GetNextSectStart(rva,text.Tide());
            // Console.WriteLine("headerSize = " + headerSize);
            // Console.WriteLine("headerPadding = " + headerPadding);
            // Console.WriteLine("textOffset = " + Hex.Int(text.Offset()));
            if (sdata != null) {
                sdata.SetOffset(offset);
                sdata.SetRVA(rva);
                for (int i = 0; i < data.Count; i++) {
                    DataConstant cVal = (DataConstant)data[i];
                    cVal.DataOffset = sdata.Tide();
                    sdata.IncTide(cVal.GetSize());
                }
                sdata.SetSize(NumToAlign(sdata.Tide(),verInfo.fileAlign));
                offset += sdata.Size();
                rva = GetNextSectStart(rva,sdata.Tide());
                initDataSize += sdata.Size();
            }
            if (rsrc != null) {
                //Console.WriteLine("Resource section is not null");
                rsrc.SetSize(NumToAlign(rsrc.Tide(),verInfo.fileAlign));
                rsrc.SetOffset(offset);
                rsrc.SetRVA(rva);
                offset += rsrc.Size();
                rva = GetNextSectStart(rva,rsrc.Tide());
                initDataSize += rsrc.Size();
            }
            relocOffset = offset;
            relocRVA = rva;
        }