/Mono.Cecil.Metadata/UserStringHeap.cs

http://github.com/jbevain/cecil · C# · 36 lines · 19 code · 8 blank · 9 comment · 2 complexity · 7d1ce9aa6e87ebb591599442a5b4a303 MD5 · raw file

  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 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. }