UserStringHeap.cs 728 B

123456789101112131415161718192021222324252627282930313233343536
  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. namespace ILRuntime.Mono.Cecil.Metadata {
  11. sealed class UserStringHeap : StringHeap {
  12. public UserStringHeap (byte [] data)
  13. : base (data)
  14. {
  15. }
  16. protected override string ReadStringAt (uint index)
  17. {
  18. int start = (int) index;
  19. uint length = (uint) (data.ReadCompressedUInt32 (ref start) & ~1);
  20. if (length < 1)
  21. return string.Empty;
  22. var chars = new char [length / 2];
  23. for (int i = start, j = 0; i < start + length; i += 2)
  24. chars [j++] = (char) (data [i] | (data [i + 1] << 8));
  25. return new string (chars);
  26. }
  27. }
  28. }