37 lines
		
	
	
		
			717 B
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			717 B
		
	
	
	
		
			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.
 | |
| //
 | |
| 
 | |
| namespace MonoFN.Cecil.Metadata {
 | |
| 
 | |
| 	sealed class UserStringHeap : StringHeap {
 | |
| 
 | |
| 		public UserStringHeap (byte [] data)
 | |
| 			: base (data)
 | |
| 		{
 | |
| 		}
 | |
| 
 | |
| 		protected override string ReadStringAt (uint index)
 | |
| 		{
 | |
| 			int start = (int)index;
 | |
| 
 | |
| 			uint length = (uint)(data.ReadCompressedUInt32 (ref start) & ~1);
 | |
| 			if (length < 1)
 | |
| 				return string.Empty;
 | |
| 
 | |
| 			var chars = new char [length / 2];
 | |
| 
 | |
| 			for (int i = start, j = 0; i < start + length; i += 2)
 | |
| 				chars [j++] = (char)(data [i] | (data [i + 1] << 8));
 | |
| 
 | |
| 			return new string (chars);
 | |
| 		}
 | |
| 	}
 | |
| }
 |