1 // 2 // Author: 3 // Jb Evain (jbevain@gmail.com) 4 // 5 // Copyright (c) 2008 - 2015 Jb Evain 6 // Copyright (c) 2008 - 2011 Novell, Inc. 7 // 8 // Licensed under the MIT/X11 license. 9 // 10 11 using System; 12 13 using Mono.Collections.Generic; 14 15 namespace Mono.Cecil { 16 17 sealed class ParameterDefinitionCollection : Collection<ParameterDefinition> { 18 19 readonly IMethodSignature method; 20 ParameterDefinitionCollection(IMethodSignature method)21 internal ParameterDefinitionCollection (IMethodSignature method) 22 { 23 this.method = method; 24 } 25 ParameterDefinitionCollection(IMethodSignature method, int capacity)26 internal ParameterDefinitionCollection (IMethodSignature method, int capacity) 27 : base (capacity) 28 { 29 this.method = method; 30 } 31 OnAdd(ParameterDefinition item, int index)32 protected override void OnAdd (ParameterDefinition item, int index) 33 { 34 item.method = method; 35 item.index = index; 36 } 37 OnInsert(ParameterDefinition item, int index)38 protected override void OnInsert (ParameterDefinition item, int index) 39 { 40 item.method = method; 41 item.index = index; 42 43 for (int i = index; i < size; i++) 44 items [i].index = i + 1; 45 } 46 OnSet(ParameterDefinition item, int index)47 protected override void OnSet (ParameterDefinition item, int index) 48 { 49 item.method = method; 50 item.index = index; 51 } 52 OnRemove(ParameterDefinition item, int index)53 protected override void OnRemove (ParameterDefinition item, int index) 54 { 55 item.method = null; 56 item.index = -1; 57 58 for (int i = index + 1; i < size; i++) 59 items [i].index = i - 1; 60 } 61 } 62 } 63