bmk_bank.bmx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. Strict
  2. Import "bmk_config.bmx"
  3. Import Pub.ZLib
  4. Import BRL.SocketStream
  5. Function CompressBank:TBank( bank:TBank )
  6. ?bmxng
  7. Local size:ULongInt=bank.Size()
  8. Local out_size:ULongInt=size+size/10+32
  9. Local out:TBank=TBank.Create( Size_T(out_size) )
  10. ?Not bmxng
  11. Local size=bank.Size()
  12. Local out_size=size+size/10+32
  13. Local out:TBank=TBank.Create( out_size )
  14. ?
  15. compress out.Buf()+4,out_size,bank.Buf(),size
  16. out.PokeByte 0,Int(size)
  17. out.PokeByte 1,Int(size Shr 8)
  18. out.PokeByte 2,Int(size Shr 16)
  19. out.PokeByte 3,Int(size Shr 24)
  20. ?bmxng
  21. out.Resize Size_T(out_size+4)
  22. ?Not bmxng
  23. out.Resize out_size+4
  24. ?
  25. Return out
  26. End Function
  27. Function UncompressBank:TBank( bank:TBank )
  28. ?bmxng
  29. Local out_size:ULongInt
  30. ?Not bmxng
  31. Local out_size
  32. ?
  33. out_size:|bank.PeekByte(0)
  34. out_size:|bank.PeekByte(1) Shl 8
  35. out_size:|bank.PeekByte(2) Shl 16
  36. out_size:|bank.PeekByte(3) Shl 24
  37. ?bmxng
  38. Local out:TBank=TBank.Create( Size_T(out_size) )
  39. uncompress out.Buf(),out_size,bank.Buf()+4,ULongInt(bank.Size()-4)
  40. ?Not bmxng
  41. Local out:TBank=TBank.Create( out_size )
  42. uncompress out.Buf(),out_size,bank.Buf()+4,bank.Size()-4
  43. ?
  44. Return out
  45. End Function
  46. Function SplitUrl( url$,server$ Var,file$ Var )
  47. Local i=url.Find( "/",0 )
  48. If i<>-1
  49. server=url[..i]
  50. file=url[i..]
  51. Else
  52. server=url
  53. file="/"
  54. EndIf
  55. End Function