61 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| //
 | |
| // Author:
 | |
| //   Jb Evain (jbevain@gmail.com)
 | |
| //
 | |
| // Copyright (c) 2008 - 2015 Jb Evain
 | |
| // Copyright (c) 2008 - 2011 Novell, Inc.
 | |
| //
 | |
| // Licensed under the MIT/X11 license.
 | |
| //
 | |
| 
 | |
| using MonoFN.Collections.Generic;
 | |
| 
 | |
| namespace MonoFN.Cecil {
 | |
| 
 | |
| 	sealed class ParameterDefinitionCollection : Collection<ParameterDefinition> {
 | |
| 
 | |
| 		readonly IMethodSignature method;
 | |
| 
 | |
| 		internal ParameterDefinitionCollection (IMethodSignature method)
 | |
| 		{
 | |
| 			this.method = method;
 | |
| 		}
 | |
| 
 | |
| 		internal ParameterDefinitionCollection (IMethodSignature method, int capacity)
 | |
| 			: base (capacity)
 | |
| 		{
 | |
| 			this.method = method;
 | |
| 		}
 | |
| 
 | |
| 		protected override void OnAdd (ParameterDefinition item, int index)
 | |
| 		{
 | |
| 			item.method = method;
 | |
| 			item.index = index;
 | |
| 		}
 | |
| 
 | |
| 		protected override void OnInsert (ParameterDefinition item, int index)
 | |
| 		{
 | |
| 			item.method = method;
 | |
| 			item.index = index;
 | |
| 
 | |
| 			for (int i = index; i < size; i++)
 | |
| 				items [i].index = i + 1;
 | |
| 		}
 | |
| 
 | |
| 		protected override void OnSet (ParameterDefinition item, int index)
 | |
| 		{
 | |
| 			item.method = method;
 | |
| 			item.index = index;
 | |
| 		}
 | |
| 
 | |
| 		protected override void OnRemove (ParameterDefinition item, int index)
 | |
| 		{
 | |
| 			item.method = null;
 | |
| 			item.index = -1;
 | |
| 
 | |
| 			for (int i = index + 1; i < size; i++)
 | |
| 				items [i].index = i - 1;
 | |
| 		}
 | |
| 	}
 | |
| }
 |