checksum_windows.go 978 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. //go:build windows
  2. package yu_deflate
  3. // /*
  4. // #include "libdeflate.h"
  5. // */
  6. // import "C"
  7. // import "unsafe"
  8. //
  9. // /*
  10. // Adler32 works as described in native/libs/libdeflate.h.
  11. // Returns 1 for in == nil
  12. // */
  13. // func Adler32(adler32 uint32, in []byte) uint32 {
  14. // if in == nil {
  15. // return 1
  16. // }
  17. //
  18. // addr := startMemAddr(in)
  19. //
  20. // checksum := C.libdeflate_adler32(
  21. // toUInt32(adler32),
  22. // unsafe.Pointer(addr),
  23. // toInt64(int64(len(in))),
  24. // )
  25. //
  26. // return uint32(checksum)
  27. // }
  28. //
  29. // /*
  30. // Crc32 works as described in native/libs/libdeflate.h.
  31. // Returns 0 for in == nil
  32. // */
  33. // func Crc32(buf []byte) uint32 {
  34. // if buf == nil {
  35. // return 0
  36. // }
  37. // checksum, _, _ := syscall.SyscallN(addrlibdeflate_crc32, 0,
  38. // uintptr(unsafe.Pointer(&buf[0])), uintptr(len(buf)),
  39. // )
  40. // return uint32(checksum)
  41. // }
  42. //
  43. // func startMemAddr(b []byte) *byte {
  44. // if len(b) > 0 {
  45. // return &b[0]
  46. // }
  47. //
  48. // b = append(b, 0)
  49. // ptr := &b[0]
  50. // b = b[0:0]
  51. //
  52. // return ptr
  53. // }