Mono.Cecil.Cil.CodeReader.PatchRawExceptionHandlers C# (CSharp) Method

PatchRawExceptionHandlers() private method

private PatchRawExceptionHandlers ( ByteBuffer buffer, MetadataBuilder metadata, int count, bool fat_entry ) : void
buffer ByteBuffer
metadata MetadataBuilder
count int
fat_entry bool
return void
        void PatchRawExceptionHandlers(ByteBuffer buffer, MetadataBuilder metadata, int count, bool fat_entry)
        {
            const int fat_entry_size = 16;
            const int small_entry_size = 6;

            for (int i = 0; i < count; i++) {
                ExceptionHandlerType handler_type;
                if (fat_entry) {
                    var type = ReadUInt32 ();
                    handler_type = (ExceptionHandlerType) (type & 0x7);
                    buffer.WriteUInt32 (type);
                } else {
                    var type = ReadUInt16 ();
                    handler_type = (ExceptionHandlerType) (type & 0x7);
                    buffer.WriteUInt16 (type);
                }

                buffer.WriteBytes (ReadBytes (fat_entry ? fat_entry_size : small_entry_size));

                switch (handler_type) {
                case ExceptionHandlerType.Catch:
                    var exception = reader.LookupToken (ReadToken ());
                    buffer.WriteUInt32 (metadata.LookupToken (exception).ToUInt32 ());
                    break;
                default:
                    buffer.WriteUInt32 (ReadUInt32 ());
                    break;
                }
            }
        }