Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jul 20th, 2012  |  syntax: Diff  |  size: 1.46 KB  |  hits: 11  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Index: Memory.cs
  2. ===================================================================
  3. --- Memory.cs   (revision 3343)
  4. +++ Memory.cs   (working copy)
  5. @@ -88,18 +88,34 @@
  6.  #if AXIOM_SAFE_ONLY
  7.                         dest.Copy( src, srcOffset, destOffset, length );
  8.  #else
  9. -                       unsafe
  10. -                       {
  11. -                               var pSrc = src.ToBytePointer();
  12. -                               var pDest = dest.ToBytePointer();
  13. +            unsafe
  14. +            {
  15. +                var pSrc = src.ToBytePointer();
  16. +                var pDest = dest.ToBytePointer();
  17.  
  18. -                               for ( var i = 0; i < length; i++ )
  19. -                               {
  20. -                                       pDest[ i + destOffset ] = pSrc[ i + srcOffset ];
  21. -                               }
  22. -                       }
  23. +                //Following code snippet was taken from http://msdn.microsoft.com/en-us/library/28k1s2k6(v=vs.80).aspx
  24. +
  25. +                var ps = pSrc;
  26. +                var pd = pDest;
  27. +
  28. +                // Loop over the count in blocks of 4 bytes, copying an integer (4 bytes) at a time:
  29. +                for ( var i = 0; i < length / 4; i++ )
  30. +                {
  31. +                    *( (int*)pd + destOffset ) = *( (int*)ps + srcOffset );
  32. +                    pd += 4;
  33. +                    ps += 4;
  34. +                }
  35. +
  36. +                // Complete the copy by moving any bytes that weren't moved in blocks of 4:
  37. +                for ( var i = 0; i < length % 4; i++ )
  38. +                {
  39. +                    *pd = *ps;
  40. +                    pd++;
  41. +                    ps++;
  42. +                }
  43. +            }
  44.  #endif
  45. -               }
  46. +        }
  47.  
  48.                 #endregion Copy Method